texlive[57251] Master: gost (28dec20)

commits+karl at tug.org commits+karl at tug.org
Tue Dec 29 03:19:51 CET 2020


Revision: 57251
          http://tug.org/svn/texlive?view=revision&revision=57251
Author:   karl
Date:     2020-12-29 03:19:51 +0100 (Tue, 29 Dec 2020)
Log Message:
-----------
gost (28dec20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/bibtex/bst/gost/gost2003.bst
    trunk/Master/texmf-dist/bibtex/bst/gost/gost2003s.bst
    trunk/Master/texmf-dist/bibtex/bst/gost/gost2008.bst
    trunk/Master/texmf-dist/bibtex/bst/gost/gost2008l.bst
    trunk/Master/texmf-dist/bibtex/bst/gost/gost2008ls.bst
    trunk/Master/texmf-dist/bibtex/bst/gost/gost2008n.bst
    trunk/Master/texmf-dist/bibtex/bst/gost/gost2008ns.bst
    trunk/Master/texmf-dist/bibtex/bst/gost/gost2008s.bst
    trunk/Master/texmf-dist/bibtex/bst/gost/ugost2003.bst
    trunk/Master/texmf-dist/bibtex/bst/gost/ugost2003s.bst
    trunk/Master/texmf-dist/bibtex/bst/gost/ugost2008.bst
    trunk/Master/texmf-dist/bibtex/bst/gost/ugost2008l.bst
    trunk/Master/texmf-dist/bibtex/bst/gost/ugost2008ls.bst
    trunk/Master/texmf-dist/bibtex/bst/gost/ugost2008n.bst
    trunk/Master/texmf-dist/bibtex/bst/gost/ugost2008ns.bst
    trunk/Master/texmf-dist/bibtex/bst/gost/ugost2008s.bst
    trunk/Master/texmf-dist/doc/bibtex/gost/README.md
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex07.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex08.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex09.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex10.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex11.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex15.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex16.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex17.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex18.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex19.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex20.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex21.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex23.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex24.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex25.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex26.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex28.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex29.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex30.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex31.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost2003.pdf
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost2003.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost2008-customized.pdf
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost2008-customized.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost2008.pdf
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost2008.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost2008l.pdf
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost2008l.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost2008n.pdf
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost2008n.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost2008ns.pdf
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost2008ns.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/make-examples-on-win-cp1251.cmd
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex07.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex08.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex09.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex10.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex11.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex15.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex16.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex17.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex18.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex19.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex20.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex21.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex22.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex23.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex24.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex25.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex26.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex28.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex29.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex30.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex31.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/make-examples-on-win-utf8.cmd
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/ugost.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/ugost2003.pdf
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/ugost2003.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/ugost2008-customized.pdf
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/ugost2008-customized.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/ugost2008.pdf
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/ugost2008.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/ugost2008l.pdf
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/ugost2008l.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/ugost2008n.pdf
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/ugost2008n.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/ugost2008ns.pdf
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/ugost2008ns.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/ugost2008s.pdf
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/ugost2008s.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/gost.pdf
    trunk/Master/texmf-dist/source/bibtex/gost/gost.dtx
    trunk/Master/texmf-dist/source/bibtex/gost/gost.ins
    trunk/Master/tlpkg/libexec/ctan2tds

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/bibtex/gost/README
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex22.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex27.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex32.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex33.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex34.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex35.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex36.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex37.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex38.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex39.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex40.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex41.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex42.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex43.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex44.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex45.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex46.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex47.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex48.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex49.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex50.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex51.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex52.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex53.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex54.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex55.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex56.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex57.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex58.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex59.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex60.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex61.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex62.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex63.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex64.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex65.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex66.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex67.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex68.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex69.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex70.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex71.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex72.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex73.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex74.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex75.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex76.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost2008s.pdf
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost2008s.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex27.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex32.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex33.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex34.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex35.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex36.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex37.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex38.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex39.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex40.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex41.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex42.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex43.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex44.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex45.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex46.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex47.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex48.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex49.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex50.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex51.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex52.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex53.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex54.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex55.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex56.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex57.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex58.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex59.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex60.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex61.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex62.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex63.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex64.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex65.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex66.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex67.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex68.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex69.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex70.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex71.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex72.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex73.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex74.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex75.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex76.bib

Removed Paths:
-------------
    trunk/Master/texmf-dist/bibtex/bst/gost/gost780.bst
    trunk/Master/texmf-dist/bibtex/bst/gost/gost780s.bst
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex06a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex14a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex17a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex17b.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex20a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex20b.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex20c.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex21a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex21b.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex24a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex24b.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex27a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex27b.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex27c.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/ex28a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/bib/examples.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost780.pdf
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/cp1251/gost780.tex
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex06a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex14a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex17a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex17b.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex20a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex20b.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex20c.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex21a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex21b.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex22a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex24a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex24b.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex27a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex27b.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex27c.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/ex28a.bib
    trunk/Master/texmf-dist/doc/bibtex/gost/examples/utf8/bib/examples.bib

Modified: trunk/Master/texmf-dist/bibtex/bst/gost/gost2003.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/gost/gost2003.bst	2020-12-29 00:54:00 UTC (rev 57250)
+++ trunk/Master/texmf-dist/bibtex/bst/gost/gost2003.bst	2020-12-29 02:19:51 UTC (rev 57251)
@@ -6,28 +6,20 @@
 %%
 %% gost.dtx  (with options: `bst,strict,eprint')
 %% 
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%   http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
+%% IMPORTANT NOTICE:
 %% 
-%% This file has the LPPL maintenance status "maintained".
-%% Maintained by Igor A. Kotelnikov.
+%% For the copyright see the source file.
 %% 
-%% Current version: 1.2j, 2017.01.12
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from gost2003.bst.
 %% 
-%% Please, send bug report via e-mail:
-%%   kia999 at mail dot ru <Igor Kotelnikov>
-%% or
-%%   polyama at yahoo dot com <Maksym Polyakov>
+%% For distribution of the original source see the terms
+%% for copying and modification in the file gost.dtx.
 %% 
-
-
-
-%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
 %% This bibstyle attempts to format bibliography according to
 %% GOST 7.1-2003 for bibliographic records.
 
@@ -67,15 +59,15 @@
     language
     langid          % new in v1.2c
     booklanguage
-    %date            % not implemented yet...
+    date            % new in v1.2i
     pagetotal
     url
     urldate
     isbn
     doi
+    eprint
     eprinttype      % = archivePrefix
     eprintclass     % = primaryClass
-    eprint
     % new in v1.2f:
     % appear in biblatex:
     %addendum       % not implemented yet...
@@ -100,9 +92,24 @@
   {}
   { label }
 
-INTEGERS { output.state before.all mid.sentence after.sentence after.block
-after.dblslash after.slash after.colon after.semicolon }
+INTEGERS {
+    output.state
+    before.all
+    mid.sentence
+    after.sentence
+    after.block
+    after.dblslash
+    after.slash
+    after.colon
+    after.semicolon
+}
 
+STRINGS { curlanguage }
+
+STRINGS { s t }
+
+STRINGS { y m d }   % new in v.1.2j
+
 FUNCTION {init.state.consts}
 { #0 'before.all :=
   #1 'mid.sentence :=
@@ -114,11 +121,18 @@
   #7 'after.semicolon :=
 }
 
-STRINGS { s t }
+FUNCTION {set.language}
+{ langid empty$
+    { language empty$
+        { "english" 'curlanguage := }
+        { language  'curlanguage := }
+      if$
+    }
+    { langid  'curlanguage := }
+  if$
+}
 
-STRINGS { curlanguage }
-
-FUNCTION {change.language}
+FUNCTION {reset.language}
 { booklanguage empty$
     { "" }
     { booklanguage  'curlanguage :=
@@ -143,7 +157,7 @@
         { output.state before.all =
             'write$
             { output.state after.dblslash =
-                { "~//" * change.language * " " * write$ }
+                { "~//" * reset.language * " " * write$ }
                 { output.state after.slash =
                     { "~/ " * write$ }
                     { output.state after.colon =
@@ -177,7 +191,9 @@
 FUNCTION {output.check}
 { 't :=
   duplicate$ empty$
-    { pop$ "empty " t * " in " * cite$ * warning$ }
+    { pop$
+      "empty " t * " in " * cite$ * warning$
+    }
     'output.nonnull
   if$
 }
@@ -256,13 +272,6 @@
   if$
 }
 
-
-FUNCTION {non.stop}
-{ duplicate$
-   "}" * add.period$
-   #-1 #1 substring$ "." =
-}
-
 FUNCTION {new.block.checka}
 { empty$
     'skip$
@@ -309,9 +318,21 @@
   if$
 }
 
+%%
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {spaces.around}
+{ " " swap$ * " " * }
+
 FUNCTION {emphasize}
 { duplicate$ empty$
-    { pop$ "" }
+    %{ pop$ "" }
+    'skip$       % v.1.2k
     { "\BibEmph{" swap$ * "}" * }
   if$
 }
@@ -323,7 +344,7 @@
   if$
 }
 
-FUNCTION {enclose.square.brackets}
+FUNCTION {bracketise}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -331,7 +352,7 @@
   if$
 }
 
-FUNCTION {enclose.round.brackets}
+FUNCTION {paranthesify}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -339,25 +360,82 @@
   if$
 }
 
-FUNCTION {space.word}
-{ " " swap$ * " " * }
 
-FUNCTION {bbl.edby}    %  { "\bbledby{}" }
+FUNCTION {tie.connect}
+ {"~" swap$ * *
+ }
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { t #1 #2 substring$ "--" = not
+            { "--" *
+              t #2 global.max$ substring$ 't :=
+            }
+            {   { t #1 #1 substring$ "-" = }
+                { "-" *
+                  t #2 global.max$ substring$ 't :=
+                }
+              while$
+            }
+          if$
+        }
+        { t #1 #1 substring$ *
+          t #2 global.max$ substring$ 't :=
+        }
+      if$
+    }
+  while$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+        { #1 'multiresult := }
+        { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {bbl.edby}
 { curlanguage "english" =
-   {"Ed.\ by"}
+   {"ed.\ by"}
    { curlanguage "ukrainian" =
-      {"{\cyr\CYRP\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
+      {"{\cyr\cyrp\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
       { curlanguage "russian" =
-         {"{\cyr\CYRP\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
+         {"{\cyr\cyrp\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
          { curlanguage "german" =
             { "ed." }
-            {"language is not defined: " language "edby" * * warning$ "Ed.\ by"}
+            {"language is not defined: " curlanguage " in bbl.edby" * * warning$ "Ed.\ by"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.cmplr}
+FUNCTION {bbl.compiler}
 { curlanguage "english" =
    { "Compiler"}
    { curlanguage "german" =
@@ -366,15 +444,15 @@
          {"{\cyr\CYRU\cyrk\cyrl.}"}
          { curlanguage "russian" =
             {"{\cyr\CYRS\cyro\cyrs\cyrt.}"}
-            {"language is not defined: " language  "cmplr" * * warning$ "Compiler"}
+            {"language is not defined: " curlanguage  " in bbl.compiler" * * warning$ "Compiler"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.edition} %  { "\bbledition{}" }
+FUNCTION {bbl.edition}
 { curlanguage "english" =
-   {"edition"}
+   {"ed."}
    { curlanguage "ukrainian" =
       {"{\cyr\cyrv\cyri\cyrd.}"}
       { curlanguage "russian" =
@@ -385,7 +463,7 @@
                {"edizione"}
                { curlanguage "french" =
                   {"\'{e}dition"}
-                  {"language is not defined: " language  "edition" * * warning$ "edition"}
+                  {"language is not defined: " curlanguage  " in bbl.edition" * * warning$ "ed."}
                if$}
             if$}
          if$}
@@ -393,7 +471,7 @@
    if$}
 if$}
 
-FUNCTION {bbl.vvolume} %  { "\bblVolume{}" }
+FUNCTION {bbl.vvolume}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Volume"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -400,12 +478,12 @@
       { "\CYRT\cyro\cyrm" }
       { curlanguage "german" =
          {"{Band}"} %%%% { "Volumen" }
-         {"language is not defined: " language  "vvolume" * * warning$ "Volume"}
+         {"language is not defined: " curlanguage  " in bbl.vvolume" * * warning$ "Volume"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.vvol}    %  { "\bblVol{}" }
+FUNCTION {bbl.vvol}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Vol."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -412,12 +490,12 @@
       {"\CYRT."}
       { curlanguage "german" =
          {"{Bd.}"} %%%% { "Vol." }
-         {"language is not defined: " language  "vvol" * * warning$ "Vol."}
+         {"language is not defined: " curlanguage  " in bbl.vvol" * * warning$ "Vol."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iissue}  %  { "\bblIssue{}" }
+FUNCTION {bbl.iissue}
 { curlanguage "english" =
    {"Issue"}
    { curlanguage "ukrainian" =
@@ -426,13 +504,13 @@
          {"\CYRV\cyrery\cyrp\cyru\cyrs\cyrk"}
          { curlanguage "german" =
             {"{Heft}"} %%%% { "Ausgabe" }
-            {"language is not defined: " language "iissue" * * warning$ "Issue"}
+            {"language is not defined: " curlanguage " in bbl.iissue" * * warning$ "Issue"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iiss}  %  { "\bblIss{}" }
+FUNCTION {bbl.iiss}
 { curlanguage "english" =
    {"Iss."}
    { curlanguage "ukrainian" =
@@ -441,13 +519,13 @@
          {"\CYRV\cyrery\cyrp."}
          { curlanguage "german" =
             {"{H.}"}
-            {"language is not defined: " language "iiss" * * warning$ "Iss."}
+            {"language is not defined: " curlanguage " in bbl.iiss" * * warning$ "Iss."}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.of}      %  { "\bblof{}" }
+FUNCTION {bbl.of}
 { curlanguage "english" =
    {"of"}
    { curlanguage "german" =
@@ -456,13 +534,13 @@
          { "{\cyr\cyrii\cyrz}" }
          { curlanguage "russian" =
             { "{\cyr\cyri\cyrz}" }
-            {"language is not defined: " language "of" * * warning$ "of"}
+            {"language is not defined: " curlanguage " in bbl.of" * * warning$ "of"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.etal}      %  { "\bblof{}" }
+FUNCTION {bbl.etal}
 { curlanguage "english" =
    {"et~al."}
    { curlanguage "german" =
@@ -471,14 +549,31 @@
          {"{\cyr\cyrt\cyra~\cyrii\cyrn.}"}
          { curlanguage "russian" =
             {"{\cyr\cyri~\cyrd\cyrr.}"}
-            {"language is not defined: " language  "et~al" * * warning$ "et~al."}
+            {"language is not defined: " curlanguage  " in bbl.etal" * * warning$ "et~al."}
          if$}
       if$}
    if$}
 if$}
 
+FUNCTION {bbl.and}
+{ curlanguage "english" =
+  {"and"}
+   { curlanguage "german" =
+      { "und" }
+      { curlanguage "ukrainian" =
+         {"{\cyrii}"}
+         { curlanguage "russian" =
+            {"{\cyri}"}
+            { curlanguage "french" =
+                {"et"}
+                {"language is not defined: " curlanguage  " in bbl.and" * * warning$ "and"}
+            if$}
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {bbl.nnumber} %  { "\bblNumber{}" }
+FUNCTION {bbl.nnumber}
 { curlanguage "english" =
    {"Number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -485,12 +580,12 @@
       { "\CYRN\cyro\cyrm\cyre\cyrr" }
       { curlanguage "german" =
          {"{Heft}"} %%% { "Anzahl" }
-         {"language is not defined: " language  "nnumber" * * warning$ "Number"}
+         {"language is not defined: " curlanguage  " in bbl.nnumber" * * warning$ "Number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.number}  %  { "\bblnumber{}" }
+FUNCTION {bbl.number}
 { curlanguage "english" =
    {"number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -497,27 +592,30 @@
       {"{\cyr\cyrn\cyro\cyrm\cyre\cyrr}"}
       { curlanguage "german" =
          {"{Heft}"} %%% { "anzahl" }???
-         {"language is not defined: " language  "number" * * warning$ "number"}
+         {"language is not defined: " curlanguage  " in bbl.number" * * warning$ "number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nr}     %   { "\bblno{}" }
+FUNCTION {bbl.nr}
 { curlanguage "english" =
    {"no."}
    { curlanguage "italian" =
-      { "no" }
+      { "no." }
       { curlanguage "ukrainian" = curlanguage "russian" = or
          { "{\cyr\textnumero}" }
          { curlanguage "german" =
-            {"{H.}"} %%% { "an." }
-            {"language is not defined: " language "nr" * * warning$ "no."}
+            {"{nu.}"} %%% { "an." }
+            { curlanguage "french" =
+                { "no." }
+                {"language is not defined: " curlanguage " in bbl.nr" * * warning$ "no."}
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nnr}     %   { "\bblno{}" }
+FUNCTION {bbl.nnr}
 { curlanguage "english" =
    {"No."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -524,30 +622,30 @@
       { "{\cyr\textnumero}" }
       { curlanguage "german" =
          {"{H.}"} %%% { "an." }
-         {"language is not defined: " language  "nnr" * * warning$ "No."}
+         {"language is not defined: " curlanguage  " in bbl.nnr" * * warning$ "No."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.in}    %    { "\bblin{}" }
+FUNCTION {bbl.in}
 { curlanguage "english" = curlanguage "german" = or
    {"in"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "{\cyr\cyrv}" }
-      {"language is not defined: " language  "in" * * warning$ "in"}
+      {"language is not defined: " curlanguage  " in bbl.in" * * warning$ "in"}
    if$}
 if$}
 
-FUNCTION {bbl.iin}  %     { "\bblIn{}" }
+FUNCTION {bbl.iin}
 { curlanguage "english" = curlanguage "german" = or
    {"In"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "\CYRV" }
-      {"language is not defined: " language  "iin" * * warning$ "In"}
+      {"language is not defined: " curlanguage  " in bbl.iin" * * warning$ "In"}
    if$}
 if$}
 
-FUNCTION {bbl.pages}    % { "\bblpp." }
+FUNCTION {bbl.pages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."} %%% {"pp."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -554,12 +652,12 @@
       {"{\cyr\cyrs.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "pages" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.pages" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.page}   %   { "\bblp."
+FUNCTION {bbl.page}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -566,12 +664,12 @@
       {"{\cyr\cyrs.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "page" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.page" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppages}%    { "\bblPp." }
+FUNCTION {bbl.ppages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."} %%%% { "Pp." }
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -578,12 +676,12 @@
       {"{\cyr\CYRS.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language "ppages" * * warning$ "P."}
+         {"language is not defined: " curlanguage " in bbl.ppages" * * warning$ "P."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppage}  %   { "\bblP." }
+FUNCTION {bbl.ppage}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -590,7 +688,7 @@
       {"{\cyr\CYRS.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language  "ppage" * * warning$ "P."}
+         {"language is not defined: " curlanguage  " in bbl.ppage" * * warning$ "P."}
       if$}
    if$}
 if$}
@@ -604,7 +702,10 @@
          { "{\CYRR\cyre\cyrzh\cyri\cyrm\ \cyrd\cyro\cyrs\cyrt\cyru\cyrp\cyra}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "Mode d'acc\`{e}s" }
+                { "language is not defined: " curlanguage " in bbl.url" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
@@ -618,13 +719,16 @@
          { "{\cyrd\cyra\cyrt\cyra\ \cyro\cyrb\cyrr\cyra\cyrshch\cyre\cyrn\cyri\cyrya}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "{en ligne; acc\'{e}d\'{e}}" }
+                { "language is not defined: " curlanguage " in bbl.urldate" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.techreport} % rename to bbl.techreport
+FUNCTION {bbl.techreport}
 { curlanguage "english" =
    { "Rep." }
    { curlanguage "german" =
@@ -631,7 +735,7 @@
       { "Bericht" }
       { curlanguage "russian" =
          { "{\cyr\CYRO\cyrt\cyrch\cyre\cyrt}" }
-         { "language is not defined: " language "techrep" * * warning$ "Rep." }
+         { "language is not defined: " curlanguage " in bbl.techrep" * * warning$ "Rep." }
       if$}
    if$}
 if$}
@@ -640,12 +744,12 @@
 { curlanguage "english" =
    { "Master's thesis" }
    { curlanguage "german" =
-      { "Diss.~Mag." }
+      { "diss.~mag." }
       { curlanguage "russian" =
-        { "{\cyr\CYRK\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
+        { "{\cyr\cyrk\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
           "\cyro\cyrn\cyrn\cyra\cyrya\ \cyrr\cyra\cyrb\cyro\cyrt\cyra\ " *
           "\cyrm\cyra\cyrg\cyri\cyrs\cyrt\cyrr\cyra}" * }
-         { "language is not defined: " language "mthesis" * * warning$ "Master's thesis" }
+         { "language is not defined: " curlanguage " in bbl.mthesis" * * warning$ "Master's thesis" }
       if$}
    if$}
 if$}
@@ -654,13 +758,13 @@
 { curlanguage "english" =
    { "Ph.\,D. thesis" }
    { curlanguage "german" =
-      { "Diss.~Ph.\,D." }
+      { "diss.~Ph.\,D." }
       { curlanguage "russian" =
          { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrk\cyra\cyrn\cyrd. "
            "\cyrn\cyra\cyru\cyrk}" * }
          { curlanguage "french" =
-           { "Th\`{e}se de doctorat" }
-           { "language is not defined: " language "phdthesis" * * warning$ "Ph.\,D. thesis" }
+           { "th\`{e}se de doctorat" }
+           { "language is not defined: " curlanguage " in bbl.phdthesis" * * warning$ "Ph.\,D. thesis" }
          if$}
       if$}
    if$}
@@ -668,36 +772,23 @@
 
 FUNCTION {bbl.docthesis}
 { curlanguage "english" =
-   { "Dr.\,Sci. dissertation" }
+   { "dr.\,sci. dissertation" }
    { curlanguage "german" =
-      { "Diss.~Dr." }
+      { "diss.~dr." }
       { curlanguage "russian" =
          { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrd-\cyrr\cyra\ "
            "\cyrn\cyra\cyru\cyrk}" * }
-         { "language is not defined: " language "docthesis" * * warning$ "Dr.\,Sci. dissertation" }
+         { "language is not defined: " curlanguage " in bbl.docthesis" * * warning$ "Dr.\,Sci. dissertation" }
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.thesis.type}
-{ type "mathesis" =
-  { bbl.mathesis }
-  { type "phdthesis" =
-    { bbl.phdthesis }
-    { type "docthesis" =
-      { bbl.docthesis }
-      %%{ "!!!" type * "t" change.case$ }
-      { type "t" change.case$ }
-    if$}
-  if$}
-if$}
-
 FUNCTION {bbl.nnoaddress}
 { curlanguage "english" =
    { "S.\ l." }
    { curlanguage "russian" =
       { "{\cyr\CYRB.\ \cyrm.}" }
-      { "language is not defined: " language "nnoaddress" * * warning$ "S.\ l." }
+      { "language is not defined: " curlanguage " in bbl.nnoaddress" * * warning$ "S.\ l." }
    if$}
 if$}
 
@@ -706,7 +797,7 @@
    { "s.\ n." }
    { curlanguage "russian" =
       { "{\cyr\cyrb.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "s.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "s.\ n." }
    if$}
 if$}
 
@@ -715,7 +806,7 @@
    { "S.\ n." }
    { curlanguage "russian" =
       { "{\cyr\CYRB.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "S.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "S.\ n." }
    if$}
 if$}
 
@@ -724,7 +815,7 @@
    { "Text" }
    { curlanguage "russian" = curlanguage "ukrainian" = or
       { "{\cyr\CYRT\cyre\cyrk\cyrs\cyrt}" }
-      { "language is not defined: " language "media" * * warning$ "Text" }
+      { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Text" }
    if$}
 if$}
 
@@ -737,7 +828,7 @@
       { curlanguage "ukrainian" =
         { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
           "\cyrr\cyre\cyrs\cyru\cyrr\cyrs}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -751,7 +842,7 @@
       { curlanguage "ukrainian" =
         { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
           "\cyrr\cyre\cyrs\cyru\cyrr\cyrs\ \cyro\cyrn\cyrl\cyra\cyrishrt\cyr}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -763,7 +854,7 @@
       { "\cyrr\cyru\cyrk." }
       { curlanguage "ukrainian" =
         { "\cyrr\cyru\cyrk." }
-        { "language is not defined: " language "chief" * * warning$ "chief" }
+        { "language is not defined: " curlanguage " in bbl.chief" * * warning$ "chief" }
       if$}
    if$}
 if$}
@@ -770,12 +861,12 @@
 
 FUNCTION {bbl.executor}
 { curlanguage "english" =
-   { "Executor" }
+   { "executor" }
    { curlanguage "russian" =
       { "{\cyr\cyri\cyrs\cyrp\cyro\cyrl\cyrn.}" }
       { curlanguage "ukrainian" =
         { "{\cyr\cyrv\cyri\cyrk\cyro\cyrn\cyra\cyrv\cyre\cyrc\cyrsftsn}" }
-        { "language is not defined: " language "executor" * * warning$ "executor" }
+        { "language is not defined: " curlanguage " in bbl.executor" * * warning$ "executor" }
       if$}
    if$}
 if$}
@@ -797,7 +888,7 @@
       { "ang." }
       { curlanguage "russian" =
         { "{\cyr\cyrz\cyra\cyrya\cyrv\cyrl.}" }
-        { "language is not defined: " language "req" * * warning$ "req" }
+        { "language is not defined: " curlanguage " in bbl.req" * * warning$ "req" }
       if$
       }
     if$
@@ -813,7 +904,7 @@
       { "ausg." }
       { curlanguage "russian" =
         { "{\cyr\cyro\cyrp\cyru\cyrb\cyrl.}" }
-        { "language is not defined: " language "publication" * * warning$ "publication" }
+        { "language is not defined: " curlanguage " in bbl.publication" * * warning$ "publication" }
       if$
       }
     if$
@@ -829,7 +920,7 @@
       { "Prioritat" }
       { curlanguage "russian" =
         { "{\cyr\cyrp\cyrr\cyri\cyro\cyrr\cyri\cyrt\cyre\cyrt}" }
-        { "language is not defined: " language "priority" * * warning$ "priority" }
+        { "language is not defined: " curlanguage " in bbl.priority" * * warning$ "priority" }
       if$
       }
     if$
@@ -837,113 +928,346 @@
   if$
 }
 
-INTEGERS { nameptr namesleft numnames }
+FUNCTION {bbl.jan}
+{ curlanguage "english" =
+   {"Jan."}
+   { curlanguage "ukrainian" =
+      {"\CYRS\cyrii\cyrch."}
+      { curlanguage "russian" =
+         { "\CYRYA\cyrn\cyrv." }
+         { curlanguage "german" =
+            { "Jan." } % Januar
+            { "language is not defined: bbl.jan for " curlanguage * warning$ "Jan." }
+         if$}
+      if$}
+   if$}
+if$}
 
+FUNCTION {bbl.feb}
+{ curlanguage "english" =
+   {"Feb."}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyryu\cyrt."}
+      { curlanguage "russian" =
+         { "\CYRF\cyre\cyrv\cyrr." }
+         { curlanguage "german" =
+            {"Feb."} % Februar
+            {"language is not defined: bbl.feb for " curlanguage * warning$ "Feb."}
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.names}
-{
-  #1 "{vv~}{ll}{~jj}{,~f.}" format.name$
-}
+FUNCTION {bbl.mar}
+{ curlanguage "english" =
+   {"Mar."}
+   { curlanguage "ukrainian" =
+      {"\CYRB\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRM\cyra\cyrr\cyrt" }
+         { curlanguage "german" =
+            {"März"} % März
+            {"language is not defined: bbl.mar for " curlanguage * warning$ "Mar."}
+         if$}
+      if$}
+   if$}
+if$}
 
+FUNCTION {bbl.apr}
+{ curlanguage "english" =
+   {"Apr."}
+   { curlanguage "ukrainian" =
+      {"\CYRK\cyrv\cyrii\cyrt."}
+      { curlanguage "russian" =
+            { "\CYRA\cyrp\cyrr." }
+         { curlanguage "german" =
+            {"Apr."} % April
+            { "language is not defined: bbl.apr for " curlanguage * warning$ "Apr." }
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.names.rev}
-{
-  's :=
-  #1 'nameptr :=
-  s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr
-      %"{f.}{~vv}{~ll}{, jj}" format.name$ 't :=
-      "{ff}{~vv}{~ll}{, jj}" format.name$ 't :=
-      nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
-          if$
-          namesleft #1 >
-            { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
-                { " " * bbl.etal enclose.square.brackets * }
-                { ", " * t * }
-              if$
-            }
-          if$
-        }
-        't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
-  while$
-}
+FUNCTION {bbl.may}
+{ curlanguage "english" =
+   {"May"}
+   { curlanguage "ukrainian" =
+      {"\CYRT\cyrr\cyra\cyrv."}
+      { curlanguage "russian" =
+            { "\CYRM\cyra\cyrishrt" }
+         { curlanguage "german" =
+            {"Mai"}
+            { "language is not defined: bbl.may for " curlanguage * warning$ "May" }
+         if$}
+      if$}
+   if$}
+if$}
 
+FUNCTION {bbl.jun}
+{ curlanguage "english" =
+   {"June"}
+   { curlanguage "ukrainian" =
+      {"\CYRCH\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRI\cyryu\cyrn\cyrsftsn" }
+         { curlanguage "german" =
+            {"Juni"}
+            { "language is not defined: bbl.jun for " curlanguage * warning$ "June" }
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.authors}
-{ author empty$
-    { "" }
-    { author format.names emphasize}
-  if$
-}
+FUNCTION {bbl.jul}
+{ curlanguage "english" =
+   {"July"}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyri\cyrp."}
+      { curlanguage "russian" =
+            { "\CYRI\cyryu\cyrl\cyrsftsn" }
+         { curlanguage "german" =
+            {"Juli"}
+            { "language is not defined: bbl.jul for " curlanguage * warning$ "July" }
+         if$}
+      if$}
+   if$}
+if$}
 
+FUNCTION {bbl.aug}
+{ curlanguage "english" =
+   {"Aug."}
+   { curlanguage "ukrainian" =
+      {"\CYRS\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRA\cyrv\cyrg\." }
+         { curlanguage "german" =
+            {"Aug."} % August
+            { "language is not defined: bbl.aug for " curlanguage * warning$ "Aug." }
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.bookauthors}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names}
-  if$
-}
+FUNCTION {bbl.sep}
+{ curlanguage "english" =
+   {"Sep."}
+   { curlanguage "ukrainian" =
+      {"\CYRV\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRS\cyre\cyrn\cyrt." }
+         { curlanguage "german" =
+            {"Sep."} % September
+            { "language is not defined: bbl.sep for " curlanguage * warning$ "Sep." }
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.authors.after}
-{ author empty$
-    { "" }
-    { author format.names.rev}
+FUNCTION {bbl.oct}
+{ curlanguage "english" =
+   {"Oct."}
+   { curlanguage "ukrainian" =
+      {"\CYRZH\cyro\cyrn."}
+      { curlanguage "russian" =
+            { "\CYRO\cyrk\cyrt." }
+         { curlanguage "german" =
+            {"Okt."} % Oktober
+            { "language is not defined: bbl.oct for " curlanguage * warning$ "Oct." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.nov}
+{ curlanguage "english" =
+   {"Nov."}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyri\cyrs."}
+      { curlanguage "russian" =
+            { "\CYRN\cyro\cyrya\cyrb." }
+         { curlanguage "german" =
+            {"Nov."} % November
+            { "language is not defined: bbl.nov for " curlanguage * warning$ "Nov." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.dec}
+{ curlanguage "english" =
+   {"Dec."}
+   { curlanguage "ukrainian" =
+      {"\CYRG\cyrr\cyru\cyrd."}
+      { curlanguage "russian" =
+            { "\CYRD\cyre\cyrk." }
+         { curlanguage "german" =
+            {"Dez."} % Dezember
+            { "language is not defined: bbl.dec for " curlanguage * warning$ "Dec." }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {bbl.arxiv}
+{ curlanguage "english" =
+   { "ArXiv" }
+   { curlanguage "ukrainian" =
+      {"ArXiv"}
+      { curlanguage "russian" =
+         { "ArXiv" }
+         { curlanguage "german" =
+            { "ArXiv" }
+            { "language is not defined: bbl.arxiv for " curlanguage * warning$ "ArXiv" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jstor}
+{ curlanguage "english" =
+   { "JSTOR" }
+   { curlanguage "ukrainian" =
+      {"JSTOR"}
+      { curlanguage "russian" =
+         { "JSTOR" }
+         { curlanguage "german" =
+            { "JSTOR" }
+            { "language is not defined: bbl.jstor for " curlanguage * warning$ "JSTOR" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.pubmed}
+{ curlanguage "english" =
+   { "PubMed" }
+   { curlanguage "ukrainian" =
+      {"PubMed"}
+      { curlanguage "russian" =
+         { "PubMed" }
+         { curlanguage "german" =
+            { "PubMed" }
+            { "language is not defined: bbl.pubmed for " curlanguage * warning$ "PubMed" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.googlebooks}
+{ curlanguage "english" =
+   { "Google Books" }
+   { curlanguage "ukrainian" =
+      {"Google \CYRK\cyrn\cyri\cyrg\cyri"}
+      { curlanguage "russian" =
+         { "Google \CYRK\cyrn\cyri\cyrg\cyri" }
+         { curlanguage "german" =
+            { "Google Books" }
+            { "language is not defined: bbl.googlebooks for " curlanguage * warning$ "Google Books" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.hdl}
+{ curlanguage "english" =
+   { "Handle.Net" }
+   { curlanguage "ukrainian" =
+      {"Handle.Net"}
+      { curlanguage "russian" =
+         { "Handle.Net" }
+         { curlanguage "german" =
+            { "Handle.Net" }
+            { "language is not defined: bbl.hdl for " curlanguage * warning$ "Handle.Net" }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {address.or.location}
+{
+  address empty$
+    { location }
+    { address }
   if$
 }
 
-FUNCTION {format.bookauthors.after}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names.rev}% always cuts to 4 persons
+FUNCTION {specialitycode.or.number}
+{
+  specialitycode empty$
+    { number }
+    { specialitycode }
   if$
 }
 
-FUNCTION {format.editors.after}
-{ editor empty$
-    { "" }
-    { bbl.edby "\ " * editor format.names.rev * }
+FUNCTION {institution.or.school}
+{
+  institution empty$
+    { school}
+    { institution }
   if$
 }
-
-FUNCTION {format.chief.after}
-{ editor empty$
-    { "" }
-    { bbl.chief "\ " * editor format.names.rev * }
+FUNCTION {date.to.year}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #3 >
+        {
+          date #1 #4 substring$ 'y :=
+          y
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
   if$
 }
 
-FUNCTION {format.executor.after}
-{ author empty$
-    { "" }
-    { bbl.executor ": " * author format.names.rev * }
+FUNCTION {date.to.month}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #6 >
+        {
+          date #6 #2 substring$ 'm :=
+          m
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
   if$
 }
 
-FUNCTION {format.compiler.after}
-{ compiler empty$
-    { "" }
-    { bbl.cmplr "\ " * compiler format.names.rev * }
+FUNCTION {date.to.day}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #10 =
+        {
+          date #9 #2 substring$ 'd :=
+          d
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
   if$
 }
 
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    { title "t" change.case$ }
+FUNCTION {year.or.date.to.year}
+{
+  year empty$
+    {
+      date.to.year
+    }
+    { year }
   if$
 }
 
@@ -950,39 +1274,39 @@
 FUNCTION {format.month}
 { month empty$
     { "" }
-    { curlanguage "russian" =
-        { month "Jan." =
-            { "\CYRYA\cyrn\cyrv." }
-        { month "Feb." =
-            { "\CYRF\cyre\cyrv\cyrr." }
-        { month "Mar." =
-            { "\CYRM\cyra\cyrr\cyrt" }
-        { month "Apr." =
-            { "\CYRA\cyrp\cyrr." }
-        { month "May" =
-            { "\CYRM\cyra\cyrishrt" }
-        { month "Jun." =
-            { "\CYRI\cyryu\cyrn\cyrsftsn" }
-        { month "Jul." =
-            { "\CYRI\cyryu\cyrl\cyrsftsn" }
-        { month "Aug." =
-            { "\CYRA\cyrv\cyrg\." }
-        { month "Sep." =
-            { "\CYRS\cyre\cyrn\cyrt." }
-        { month "Oct." =
-            { "\CYRO\cyrk\cyrt." }
-        { month "Nov." =
-            { "\CYRN\cyro\cyrya\cyrb." }
-        { month "Dec." =
-            { "\CYRD\cyre\cyrk." }
-            { month }
-            if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
-        { month }
-        if$}
+    { month "Jan." =
+        { bbl.jan }
+    { month "Feb." =
+        { bbl.feb }
+    { month "Mar." =
+        { bbl.mar }
+    { month "Apr." =
+        { bbl.apr }
+    { month "May" =
+        { bbl.may }
+    { month "Jun." =
+        { bbl.jun }
+    { month "Jul." =
+        { bbl.jul }
+    { month "Aug." =
+        { bbl.aug }
+    { month "Sep." =
+        { bbl.sep }
+    { month "Oct." =
+        { "Окт." }
+    { month "Nov." =
+        { bbl.nov }
+    { month "Dec." =
+        { bbl.dec }
+        {
+          "unknown month in " cite$ * warning$
+          month
+        }
+        if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
     if$
 }
 FUNCTION {format.date}
-{ year empty$
+{ year.or.date.to.year empty$
     { month empty$
         { "" }
         { "there's a month but no year in " cite$ * warning$
@@ -991,36 +1315,138 @@
       if$
     }
     { month empty$
-        'year
-        { year ". \BibDash " format.month * * }
+        'year.or.date.to.year
+        { year.or.date.to.year ". \BibDash " format.month * * }
       if$
     }
   if$
 }
 
-FUNCTION {address.or.location}
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {fmt.names.first}
+{ #1
+  "{vv~}{ll}{~jj}{,~f.}"
+  format.name$
+}
+
+FUNCTION {fmt.names.three}
 {
-  address empty$
-    { location }
-    { address }
-  if$
+  's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+  { namesleft #0 > }
+  { s nameptr
+      "{vv~}{ll}{~jj}{,~f.}"
+    format.name$ 't :=
+    nameptr #1 >
+      { nameptr #4 = numnames #4 > and
+          { "others" 't :=
+            #1 'namesleft :=
+          }
+          'skip$
+        if$
+        namesleft #1 >
+          { ", " * t * }
+          { t "others" = t "~others" = or
+              { " " * bbl.etal bracketise *}
+              { ", " * t * }
+          if$
+          }
+        if$
+      }
+      't
+    if$
+    nameptr #1 + 'nameptr :=
+    namesleft #1 - 'namesleft :=
+  }
+  while$
 }
 
-FUNCTION {specialitycode.or.number}
+FUNCTION {fmt.names.all}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr
+      %"{vv~}{ll}" format.name$ 't :=
+      "{vv~}{ll}{~jj}{,~f.}"
+      format.name$ 't :=
+      nameptr #1 >
+        { namesleft #1 >
+            { ", " * t * }
+            { numnames #2 >  curlanguage "english" = and
+                { "," * }
+                'skip$
+              if$
+              t "others" = t "~others" = or
+                { " " * bbl.etal bracketise *}
+                { " " bbl.and " " * * * t * }
+              if$
+            }
+          if$
+        }
+        't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+%%<long>    { author fmt.names.all emphasize}
+%%<!long&strict>    { author fmt.names.first emphasize}
+%%<!long&!strict>    { author fmt.names.three emphasize}
+FUNCTION {format.author}
 {
-  specialitycode empty$
-    { number }
-    { specialitycode }
+  author empty$
+    { author } %%%'skip$
+    {author num.names$ #4 <
+      {
+       author fmt.names.first
+      }
+      { "" } %%%'skip$
+    if$}
   if$
 }
 
-FUNCTION {institution.or.school}
-{
-  institution empty$
-    { school}
-    { institution }
+FUNCTION {format.bookauthors.rest}
+{ bookauthor empty$
+    { "" }
+    { bookauthor fmt.names.three emphasize }
   if$
 }
+
+FUNCTION {format.editors.rest}
+{ editor empty$
+    { "" }
+    { bbl.edby "\ " * editor fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.chief.rest}
+{ editor empty$
+    { "" }
+    { bbl.chief "\ " * editor fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.executor.rest}
+{ author empty$
+    { "" }
+    { bbl.executor ": " * author fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.compiler.rest}
+{ compiler empty$
+    { "" }
+    { bbl.compiler "\ " * compiler fmt.names.three * }
+  if$
+}
+
 FUNCTION {output.address.publisher}
 {
   address empty$
@@ -1027,8 +1453,8 @@
     {
       bbl.nnoaddress
       publisher empty$
-        { "~: " * bbl.nopublisher * enclose.square.brackets }
-        { enclose.square.brackets "~: " * publisher * }
+        { "~: " * bbl.nopublisher * bracketise }
+        { bracketise "~: " * publisher * }
       if$
     }
     {
@@ -1035,7 +1461,7 @@
       address output
       new.colon
       publisher empty$
-        { bbl.nopublisher enclose.square.brackets }
+        { bbl.nopublisher bracketise }
         { publisher }
       if$
     }
@@ -1043,21 +1469,13 @@
   output
 }
 
-
-
 FUNCTION {output.bibitem}
-{ newline$
+{
+  set.language
+  newline$
   "\bibitem" write$
   cite$ bracify write$
   newline$
-  langid empty$
-    { language empty$
-        { "english" 'curlanguage := }
-        { language  'curlanguage := }
-      if$
-    }
-    { langid  'curlanguage := }
-  if$
   "\selectlanguageifdefined" curlanguage bracify * write$
   newline$
   ""
@@ -1064,60 +1482,6 @@
   before.all 'output.state :=
 }
 
-
-FUNCTION {n.dashify}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-        { t #1 #2 substring$ "--" = not
-            { "--" *
-              t #2 global.max$ substring$ 't :=
-            }
-            {   { t #1 #1 substring$ "-" = }
-                { "-" *
-                  t #2 global.max$ substring$ 't :=
-                }
-              while$
-            }
-          if$
-        }
-        { t #1 #1 substring$ *
-          t #2 global.max$ substring$ 't :=
-        }
-      if$
-    }
-  while$
-}
-
-FUNCTION {word.in}
-{ bbl.iin
-  " " * }
-
-FUNCTION {format.btitle}
-{ title
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
-    { "~" }
-    { " " }
-  if$
-  swap$ * *
-}
-
-FUNCTION {tie.connect}
- {"~"
-  swap$ * *
- }
-
-FUNCTION {either.or.check}
-{ empty$
-    'pop$
-    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
-  if$
-}
-
 FUNCTION {format.bvolume}
 { volume empty$
     { "" }
@@ -1124,7 +1488,7 @@
     { bbl.vvol volume tie.connect
       series empty$
         'skip$
-        { bbl.of space.word * series emphasize * }
+        { bbl.of spaces.around * series emphasize * }
       if$
       "volume and number" number either.or.check
     }
@@ -1153,31 +1517,7 @@
   if$
 }
 
-FUNCTION {is.num}
-{ chr.to.int$
-  duplicate$ "0" chr.to.int$ < not
-  swap$ "9" chr.to.int$ > not and
-}
 
-FUNCTION {extract.num}
-{ duplicate$ 't :=
-  "" 's :=
-  { t empty$ not }
-  { t #1 #1 substring$
-    t #2 global.max$ substring$ 't :=
-    duplicate$ is.num
-      { s swap$ * 's := }
-      { pop$ "" 't := }
-    if$
-  }
-  while$
-  s empty$
-    'skip$
-    { pop$ s }
-  if$
-}
-
-
 FUNCTION {convert.edition}
 { edition
 }
@@ -1193,38 +1533,6 @@
   if$
 }
 
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
-  #0 'multiresult :=
-    { multiresult not
-      t empty$ not
-      and
-    }
-    { t #1 #1 substring$
-      duplicate$ "-" =
-      swap$ duplicate$ "," =
-      swap$ "+" =
-      or or
-        { #1 'multiresult := }
-        { t #2 global.max$ substring$ 't := }
-      if$
-    }
-  while$
-  multiresult
-}
-
-%%FUNCTION {format.pages}
-%%{ pages empty$
-%%    { "" }
-%%    { pages multi.page.check
-%%        { bbl.ppages pages n.dashify tie.connect }
-%%        { bbl.ppage pages tie.connect }
-%%      if$
-%%    }
-%%  if$
-%%}
 FUNCTION {format.pages}
 { eid empty$
     {
@@ -1245,15 +1553,6 @@
   if$
 }
 
-%%FUNCTION {format.pages.page}
-%%{ pages empty$
-%%    { pagetotal empty$
-%%      { "" }
-%%      { pagetotal bbl.pages tie.connect }
-%%    if$}
-%%    { format.pages}
-%%  if$
-%%}
 FUNCTION {format.pages.page}
 { eid empty$
     { pages empty$
@@ -1316,6 +1615,19 @@
   if$
 }
 
+FUNCTION {bbl.thesis.type}
+{ type "mathesis" =
+  { bbl.mathesis }
+  { type "phdthesis" =
+    { bbl.phdthesis }
+    { type "docthesis" =
+      { bbl.docthesis }
+      %%{ "!!!" type * "t" change.case$ }
+      { type "t" change.case$ }
+    if$}
+  if$}
+if$}
+
 %%<!utf8>      bbl.thesis.type "t" change.case$
 %%<utf8>      bbl.thesis.type
 FUNCTION {format.thesis.type}
@@ -1336,78 +1648,61 @@
   if$
 }
 
-FUNCTION {author.before}
+FUNCTION {output.author.head}
 {
   author empty$
     'skip$
     {author num.names$ #4 <
-      {format.authors output
-       new.sentence}
+      {
+       author fmt.names.first output
+       new.sentence
+      }
       'skip$
     if$}
   if$
 }
 
-%%<*!long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    {bookauthor num.names$ #4 <
-%%      {format.bookauthors output
-%%       new.sentence}
-%%      'skip$
-%%    if$}
-%%  if$
-%%}
-%%</!long>
-%%<*long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    { format.bookauthors output
-%%      new.sentence
-%%    }
-%%  if$
-%%}
-%%</long>
-
-FUNCTION {author.after}
+FUNCTION {output.author.rest}
 {
   author empty$
     'skip$
-    {format.authors.after output
-       new.semicolon }
+    {author num.names$ #1 >
+      { author fmt.names.all output
+        new.semicolon
+      }
+      'skip$
+    if$}
   if$
 }
 
-FUNCTION {bookauthor.after}
+FUNCTION {bookauthor.rest}
 {
   bookauthor empty$
     'skip$
-    {format.bookauthors.after output
-       new.semicolon }
+    {
+      bookauthor fmt.names.all output
+      new.semicolon
+    }
   if$
 }
 
-FUNCTION {editor.organization.after}
+FUNCTION {editor.organization.rest}
 {
   compiler empty$
     {}
-    { format.compiler.after  output
+    { format.compiler.rest  output
     new.semicolon
     }
   if$
   editor empty$
     {}
-    { format.editors.after  output
+    { format.editors.rest  output.nonnull
     new.semicolon
     }
   if$
   organization empty$
     {}
-    {organization output
+    {organization output.nonnull
     new.semicolon
     }
   if$
@@ -1458,7 +1753,7 @@
     'skip$
     { doi empty$
         'skip$
-        { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
+        { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * }
       if$
     }
   if$
@@ -1468,9 +1763,13 @@
 { duplicate$ empty$
     'skip$
     { media empty$
-        { " " * bbl.media.text enclose.square.brackets * }
-        { " " * bbl.media enclose.square.brackets * }
-      if$
+      { type$ "online" =
+          { " " * bbl.media.online bracketise * }
+          { " " * bbl.media.text   bracketise * }
+        if$
+      }
+      { " " * bbl.media bracketise * }
+    if$
     }
   if$
 }
@@ -1550,14 +1849,15 @@
 FUNCTION {article}
 {
   output.bibitem
-  author.before
-  format.title add.media "title" output.check
+  output.author.head
+  %new.sentence
+  title add.media "title" output.check
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
-  journal emphasize add.doi "journal" output.check % new in v.2
+  journal emphasize add.doi "journal" output.check % new in v1.2
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.volume output
   format.number output
@@ -1574,11 +1874,14 @@
 FUNCTION {book}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.sentence
   format.number.series output
   new.block
@@ -1585,7 +1888,7 @@
   format.edition output
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1603,15 +1906,18 @@
 FUNCTION {booklet}
 {
   output.bibitem
-  author.before
-  format.title add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
   howpublished output
   address.or.location output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1623,15 +1929,18 @@
 FUNCTION {inbook}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  bookauthor.after
-  editor.organization.after
+  bookauthor.rest
+  editor.organization.rest
   new.block
   format.edition output
   new.block
@@ -1638,7 +1947,7 @@
   format.number.series output
   new.sentence
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1656,18 +1965,21 @@
 FUNCTION {incollection}
 {
   output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   format.number.series output
@@ -1684,15 +1996,22 @@
 FUNCTION {proceedings}
 {
   output.bibitem
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon                   % added in v.1.2k
+  titleaddon output           % added in v.1.2k
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
-  output.address.publisher
-  format.date "year" output.check
   new.block
+  format.pages.page output
+  %%%output.address.publisher  % 1.2k moved upper
+  new.block
   note output
   new.sentence
   output.eprint.url
@@ -1702,22 +2021,26 @@
 
 FUNCTION {inproceedings}
 { output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon                % added in v.1.2k
+  titleaddon output        % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
   new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
   format.pages.page output
   new.block
   note output
@@ -1737,10 +2060,12 @@
         }
       if$
     }
-    { format.authors output.nonnull }
+    { format.author output.nonnull }
   if$
   new.block
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   author empty$
     { organization empty$
     {
@@ -1757,7 +2082,7 @@
     }
   if$
   format.edition output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1770,6 +2095,8 @@
 {
   output.bibitem
   title add.media output.nonnull
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   format.type.number output
   add.blank
@@ -1777,9 +2104,9 @@
   new.colon
   ipc output
   new.slash
-  format.authors.after "author" output.check
+  format.author "author" output.check
   add.blank
-  authorcountry enclose.round.brackets output.nonnull
+  authorcountry paranthesify output.nonnull
   new.semicolon
   holder output.nonnull
   new.semicolon
@@ -1794,7 +2121,7 @@
   new.semicolon
   format.prioritydate output
   prioritynumber output
-  prioritycountry enclose.round.brackets output
+  prioritycountry paranthesify output
   new.block
   note output
   new.sentence
@@ -1807,13 +2134,15 @@
 
 FUNCTION {misc}
 { output.bibitem
-  format.authors output
+  %format.author output  % < v.1.2k
+  output.author.head    % v.1.2k
+  %new.sentence            % v.1.2k
   title howpublished new.sentence.checkb
-  format.title add.media output
+  title add.media output
   howpublished new.block.checka
   howpublished output
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1824,13 +2153,16 @@
 
 FUNCTION {unpublished}
 { output.bibitem
-  author.before
-  format.btitle "title" output.check
+  output.author.head
+  new.sentence
+  title "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note "note" output.check
   new.sentence
@@ -1841,12 +2173,14 @@
 
 FUNCTION {online}
 { output.bibitem
-  format.authors output
+  format.author output
   title howpublished new.sentence.checkb
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   howpublished new.dblslash.checka
-  howpublished enclose.square.brackets output
-  editor.organization.after
+  howpublished bracketise output
+  editor.organization.rest
   new.sentence
   new.block
   output.address.publisher
@@ -1865,25 +2199,24 @@
 FUNCTION {electronic} {online}
 FUNCTION {thesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
-  %%type "type" output.check
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
-  %%number output % code of the speciality
   specialitycode.or.number output % code of the speciality, new in v.1.2i
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours from the head zone
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1893,13 +2226,14 @@
   format.annote output
   fin.entry
 }
-
 %%  format.techrep.type.number output.nonnull
 %%  format.url output
 FUNCTION {report}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   type "type" output.check
   new.colon
@@ -1908,14 +2242,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -1928,9 +2262,9 @@
 
 FUNCTION {phdthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
@@ -1939,13 +2273,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1955,12 +2290,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {mastersthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.mathesis format.thesis.type output.nonnull
   new.colon
@@ -1969,13 +2303,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1985,12 +2320,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {docthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.docthesis format.thesis.type output.nonnull
   new.colon
@@ -1999,13 +2333,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicate athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2015,7 +2350,6 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {conference} { inproceedings }
 
 %%  format.url output
@@ -2023,7 +2357,7 @@
 FUNCTION {techreport}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   format.techreport.type output
   new.colon
@@ -2032,14 +2366,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -2064,96 +2398,96 @@
 MACRO {oct} {"Oct."}
 MACRO {nov} {"Nov."}
 MACRO {dec} {"Dec."}
-MACRO {aa}{"Astron. \& Astrophys."}
-MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."}
-MACRO {aj} {"Astron. J."}
+MACRO {aa}{"Astron.\ \& Astrophys."}
+MACRO {aasup}{"Astron.\ \& Astrophys.\ Suppl.\ Ser."}
+MACRO {aj} {"Astron.\ J."}
 MACRO {aph} {"Acta Phys."}
-MACRO {advp} {"Adv. Phys."}
-MACRO {ajp} {"Amer. J. Phys."}
-MACRO {ajm} {"Amer. J. Math."}
-MACRO {amsci} {"Amer. Sci."}
-MACRO {anofd} {"Ann. Fluid Dyn."}
-MACRO {am} {"Ann. Math."}
-MACRO {ap} {"Ann. Phys. (NY)"}
-MACRO {adp} {"Ann. Phys. (Leipzig)"}
-MACRO {ao} {"Appl. Opt."}
-MACRO {apl} {"Appl. Phys. Lett."}
+MACRO {advp} {"Adv.\ Phys."}
+MACRO {ajp} {"Amer.\ J.\ Phys."}
+MACRO {ajm} {"Amer.\ J.\ Math."}
+MACRO {amsci} {"Amer.\ Sci."}
+MACRO {anofd} {"Ann.\ Fluid Dyn."}
+MACRO {am} {"Ann.\ Math."}
+MACRO {ap} {"Ann.\ Phys.\ (NY)"}
+MACRO {adp} {"Ann.\ Phys.\ (Leipzig)"}
+MACRO {ao} {"Appl.\ Opt."}
+MACRO {apl} {"Appl.\ Phys.\ Lett."}
 MACRO {app} {"Astroparticle Phys."}
-MACRO {apj} {"Astrophys. J."}
-MACRO {apjsup} {"Astrophys. J. Suppl."}
-MACRO {apss} {"Astrophys. Space Sci."}
-MACRO {araa} {"Ann. Rev. Astron. Astrophys."}
-MACRO {baas} {"Bull. Amer. Astron. Soc."}
-MACRO {baps} {"Bull. Amer. Phys. Soc."}
-MACRO {cmp} {"Comm. Math. Phys."}
-MACRO {cpam} {"Commun. Pure Appl. Math."}
-MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"}
-MACRO {cpc} {"Comp. Phys. Comm."}
-MACRO {cqg} {"Class. Quant. Grav."}
-MACRO {cra} {"C. R. Acad. Sci. A"}
-MACRO {fed} {"Fusion Eng. \& Design"}
+MACRO {apj} {"Astrophys.\ J."}
+MACRO {apjsup} {"Astrophys.\ J.\ Suppl."}
+MACRO {apss} {"Astrophys.\ Space Sci."}
+MACRO {araa} {"Ann.\ Rev.\ Astron.\ Astrophys."}
+MACRO {baas} {"Bull.\ Amer.\ Astron.\ Soc."}
+MACRO {baps} {"Bull.\ Amer.\ Phys.\ Soc."}
+MACRO {cmp} {"Comm.\ Math.\ Phys."}
+MACRO {cpam} {"Commun.\ Pure Appl.\ Math."}
+MACRO {cppcf} {"Comm.\ Plasma Phys.\ \& Controlled Fusion"}
+MACRO {cpc} {"Comp.\ Phys.\ Comm."}
+MACRO {cqg} {"Class.\ Quant.\ Grav."}
+MACRO {cra} {"C.\ R.\ Acad.\ Sci.\ A"}
+MACRO {fed} {"Fusion Eng.\ \& Design"}
 MACRO {ft} {"Fusion Tech."}
-MACRO {grg} {"Gen. Relativ. Gravit."}
-MACRO {ieeens} {"IEEE Trans. Nucl. Sci."}
-MACRO {ieeeps} {"IEEE Trans. Plasma Sci."}
-MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"}
+MACRO {grg} {"Gen.\ Relativ.\ Gravit."}
+MACRO {ieeens} {"IEEE Trans.\ Nucl.\ Sci."}
+MACRO {ieeeps} {"IEEE Trans.\ Plasma Sci."}
+MACRO {ijimw} {"Interntl.\ J.\ Infrared \& Millimeter Waves"}
 MACRO {ip} {"Infrared Phys."}
 MACRO {irp} {"Infrared Phys."}
-MACRO {jap} {"J. Appl. Phys."}
-MACRO {jasa} {"J. Acoust. Soc. America"}
-MACRO {jcp} {"J. Comp. Phys."}
-MACRO {jchp} {"J. Chem. Phys."}
-MACRO {jetp} {"Sov. Phys.--JETP"}
-MACRO {jfe} {"J. Fusion Energy"}
-MACRO {jfm} {"J. Fluid Mech."}
-MACRO {jmp} {"J. Math. Phys."}
-MACRO {jne} {"J. Nucl. Energy"}
-MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."}
-MACRO {jnm} {"J. Nucl. Mat."}
-MACRO {jpc} {"J. Phys. Chem."}
-MACRO {jpp} {"J. Plasma Phys."}
-MACRO {jpsj} {"J. Phys. Soc. Japan"}
-MACRO {jsi} {"J. Sci. Instrum."}
-MACRO {jvst} {"J. Vac. Sci. \& Tech."}
+MACRO {jap} {"J.\ Appl.\ Phys."}
+MACRO {jasa} {"J.\ Acoust.\ Soc.\ America"}
+MACRO {jcp} {"J.\ Comp.\ Phys."}
+MACRO {jchp} {"J.\ Chem.\ Phys."}
+MACRO {jetp} {"Sov.\ Phys.--JETP"}
+MACRO {jfe} {"J.\ Fusion Energy"}
+MACRO {jfm} {"J.\ Fluid Mech."}
+MACRO {jmp} {"J.\ Math.\ Phys."}
+MACRO {jne} {"J.\ Nucl.\ Energy"}
+MACRO {jnec} {"J.\ Nucl.\ Energy, C: Plasma Phys., Accelerators, Thermonucl.\ Res."}
+MACRO {jnm} {"J.\ Nucl.\ Mat."}
+MACRO {jpc} {"J.\ Phys.\ Chem."}
+MACRO {jpp} {"J.\ Plasma Phys."}
+MACRO {jpsj} {"J.\ Phys.\ Soc.\ Japan"}
+MACRO {jsi} {"J.\ Sci.\ Instrum."}
+MACRO {jvst} {"J.\ Vac.\ Sci.\ \& Tech."}
 MACRO {nat} {"Nature"}
 MACRO {nature} {"Nature"}
-MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"}
-MACRO {nf} {"Nucl. Fusion"}
-MACRO {nim} {"Nucl. Inst. \& Meth."}
-MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."}
-MACRO {np} {"Nucl. Phys."}
-MACRO {npb} {"Nucl. Phys. B"}
-MACRO {nt/f} {"Nucl. Tech./Fusion"}
-MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"}
+MACRO {nedf} {"Nucl.\ Eng.\ \& Design/Fusion"}
+MACRO {nf} {"Nucl.\ Fusion"}
+MACRO {nim} {"Nucl.\ Inst.\ \& Meth."}
+MACRO {nimpr} {"Nucl.\ Inst.\ \& Meth.\ in Phys.\ Res."}
+MACRO {np} {"Nucl.\ Phys."}
+MACRO {npb} {"Nucl.\ Phys.\ B"}
+MACRO {nt/f} {"Nucl.\ Tech./Fusion"}
+MACRO {npbpc} {"Nucl.\ Phys.\ B (Proc.\ Suppl.)"}
 MACRO {inc} {"Nuovo Cimento"}
 MACRO {nc} {"Nuovo Cimento"}
-MACRO {pf} {"Phys. Fluids"}
-MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."}
-MACRO {pfb} {"Phys. Fluids B: Plasma Phys."}
-MACRO {pl} {"Phys. Lett."}
-MACRO {pla} {"Phys. Lett. A"}
-MACRO {plb} {"Phys. Lett. B"}
-MACRO {prep} {"Phys. Rep."}
-MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"}
-MACRO {pp} {"Phys. Plasmas"}
-MACRO {pop} {"Phys. Plasmas"}
-MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"}
-MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"}
-MACRO {prl} {"Phys. Rev. Lett."}
-MACRO {pr} {"Phys. Rev."}
-MACRO {physrev} {"Phys. Rev."}
-MACRO {pra} {"Phys. Rev. A"}
-MACRO {prb} {"Phys. Rev. B"}
-MACRO {prc} {"Phys. Rev. C"}
-MACRO {prd} {"Phys. Rev. D"}
-MACRO {pre} {"Phys. Rev. E"}
-MACRO {ps} {"Phys. Scripta"}
-MACRO {procrsl} {"Proc. Roy. Soc. London"}
-MACRO {rmp} {"Rev. Mod. Phys."}
-MACRO {rsi} {"Rev. Sci. Inst."}
+MACRO {pf} {"Phys.\ Fluids"}
+MACRO {pfa} {"Phys.\ Fluids A: Fluid Dyn."}
+MACRO {pfb} {"Phys.\ Fluids B: Plasma Phys."}
+MACRO {pl} {"Phys.\ Lett."}
+MACRO {pla} {"Phys.\ Lett.\ A"}
+MACRO {plb} {"Phys.\ Lett.\ B"}
+MACRO {prep} {"Phys.\ Rep."}
+MACRO {pnas} {"Proc.\ Nat.\ Acad.\ Sci.\ USA"}
+MACRO {pp} {"Phys.\ Plasmas"}
+MACRO {pop} {"Phys.\ Plasmas"}
+MACRO {ppcf} {"Plasma Phys.\ \& Controlled Fusion"}
+MACRO {phitrsl} {"Philos.\ Trans.\ Roy.\ Soc.\ London"}
+MACRO {prl} {"Phys.\ Rev.\ Lett."}
+MACRO {pr} {"Phys.\ Rev."}
+MACRO {physrev} {"Phys.\ Rev."}
+MACRO {pra} {"Phys.\ Rev.\ A"}
+MACRO {prb} {"Phys.\ Rev.\ B"}
+MACRO {prc} {"Phys.\ Rev.\ C"}
+MACRO {prd} {"Phys.\ Rev.\ D"}
+MACRO {pre} {"Phys.\ Rev.\ E"}
+MACRO {ps} {"Phys.\ Scripta"}
+MACRO {procrsl} {"Proc.\ Roy.\ Soc.\ London"}
+MACRO {rmp} {"Rev.\ Mod.\ Phys."}
+MACRO {rsi} {"Rev.\ Sci.\ Inst."}
 MACRO {science} {"Science"}
-MACRO {sciam} {"Sci. Am."}
-MACRO {sam} {"Stud. Appl. Math."}
+MACRO {sciam} {"Sci.\ Am."}
+MACRO {sam} {"Stud.\ Appl.\ Math."}
 MACRO {st} {"Sky and Telesc."}
 MACRO {cjp} {"Czech. J. Phys."}
 MACRO {el} {"Europhys. Lett."}
@@ -2196,40 +2530,40 @@
 MACRO {suplatt} {"Superlatt. Microstr."}
 MACRO {sust} {"Supercond. Sci. Technol."}
 MACRO {znat} {"Z. Naturforsch."}
-MACRO {appopt} {"Appl. Opt."}
-MACRO {bell}   {"Bell Syst. Tech. J."}
-MACRO {ell}    {"Electron. Lett."}
-MACRO {jasp}   {"J. Appl. Spectr."}
-MACRO {jqe}    {"IEEE J. Quantum Electron."}
-MACRO {jlwt}   {"J. Lightwave Technol."}
-MACRO {jmo}    {"J. Mod. Opt."}
-MACRO {josa}   {"J. Opt. Soc. America"}
-MACRO {josaa}  {"J. Opt. Soc. Amer.~A"}
-MACRO {josab}  {"J. Opt. Soc. Amer.~B"}
-MACRO {jdp}    {"J. Phys. (Paris)"}
-MACRO {oc}     {"Opt. Commun."}
-MACRO {ol}     {"Opt. Lett."}
-MACRO {os}     {"Opt. Spectrosc."}
+MACRO {appopt} {"Appl.\ Opt."}
+MACRO {bell}   {"Bell Syst.\ Tech.\ J."}
+MACRO {ell}    {"Electron.\ Lett."}
+MACRO {jasp}   {"J.\ Appl.\ Spectr."}
+MACRO {jqe}    {"IEEE J.\ Quantum Electron."}
+MACRO {jlwt}   {"J.\ Lightwave Technol."}
+MACRO {jmo}    {"J.\ Mod.\ Opt."}
+MACRO {josa}   {"J.\ Opt.\ Soc.\ America"}
+MACRO {josaa}  {"J.\ Opt.\ Soc.\ Amer.~A"}
+MACRO {josab}  {"J.\ Opt.\ Soc.\ Amer.~B"}
+MACRO {jdp}    {"J.\ Phys.\ (Paris)"}
+MACRO {oc}     {"Opt.\ Commun."}
+MACRO {ol}     {"Opt.\ Lett."}
+MACRO {os}     {"Opt.\ Spectrosc."}
 MACRO {phtl}   {"IEEE Photon. Technol. Lett."}
-MACRO {pspie}  {"Proc. Soc. Photo-Opt. Instrum. Eng."}
+MACRO {pspie}  {"Proc.\ Soc.\ Photo-Opt.\ Instrum. Eng."}
 MACRO {vr}     {"Vision Res."}
-MACRO {zph}    {"Z. f. Physik"}
-MACRO {zphb}   {"Z. f. Physik~B"}
-MACRO {zphd}   {"Z. f. Physik~D"}
+MACRO {zph}    {"Z.\ f.\ Physik"}
+MACRO {zphb}   {"Z.\ f.\ Physik~B"}
+MACRO {zphd}   {"Z.\ f.\ Physik~D"}
 MACRO {sse} {"Solid-State Electron."}
 MACRO {pss} {"Phys. Sol. State"}
 MACRO {nl}  {"Nano Lett."}
-MACRO {sjpp} {"Sov. J. Plasma Phys."}
-MACRO {spd}  {"Sov. Phys.--Doklady"}
-MACRO {sptp} {"Sov. Phys.--Tech. Phys."}
-MACRO       {spu}  {"Sov. Phys.--Uspekhi"}
+MACRO {sjpp} {"Sov.\ J.\ Plasma Phys."}
+MACRO {spd}  {"Sov.\ Phys.--Doklady"}
+MACRO {sptp} {"Sov.\ Phys.--Tech. Phys."}
+MACRO {spu}  {"Sov.\ Phys.--Uspekhi"}
 MACRO {ufn}  {"\CYRU\CYRF\CYRN"}
 MACRO {pu}  {"Phys.--Uspekhi"}
-MACRO {sjot} {"Sov. J. Opt. Technol."}
-MACRO {sjqe} {"Sov. J. Quantum Electron."}
-MACRO {sleb} {"Sov. Phys.--Leb. Inst. Rep."}
-MACRO {stph} {"Sov. Phys.--Techn. Phys."}
-MACRO {stphl}{"Sov. Techn. Phys. Lett."}
+MACRO {sjot} {"Sov.\ J.\ Opt.\ Technol."}
+MACRO {sjqe} {"Sov.\ J.\ Quantum Electron."}
+MACRO {sleb} {"Sov.\ Phys.--Leb.\ Inst.\ Rep."}
+MACRO {stph} {"Sov.\ Phys.--Techn.\ Phys."}
+MACRO {stphl}{"Sov.\ Techn.\ Phys.\ Lett."}
 
 READ
 
@@ -2236,7 +2570,6 @@
 
 
 
-
 STRINGS { longest.label }
 
 INTEGERS { number.label longest.label.width }
@@ -2273,15 +2606,7 @@
   "\providecommand*{\BibUrl}[1]{\url{#1}}"           write$ newline$
   "\providecommand{\BibAnnote}[1]{}"                 write$ newline$
   "\providecommand*{\BibEmph}[1]{#1}"                write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{---}" write$ newline$
-  %\DeclareUTFcharacter[\UTFencname]{x2014}{\cyrdash}
-  %"\let\cyrdash\textemdash" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\hbox to.8em{--\hss--}}" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\textemdash}" write$ newline$
   "\ProvideTextCommandDefault{\cyrdash}{\iflanguage{russian}{\hbox to.8em{--\hss--}}{\textemdash}}" write$ newline$
-  %%"\ProvideTextCommandDefault{\cyrdash}{%"  write$ newline$
-  %%"  \iflanguage{russian}{\hbox to.8em{--\hss--}}{%" write$ newline$
-  %%"    \iflanguage{ukrainian}{\hbox to.8em{--\hss--}}{\textemdash}}}"  write$ newline$
   "\providecommand*{\BibDash}{\ifdim\lastskip>0pt\unskip\nobreak\hskip.2em plus 0.1em\fi" write$ newline$
   "\cyrdash\hskip.2em plus 0.1em\ignorespaces}" write$ newline$
   "\renewcommand{\newblock}{\ignorespaces}" write$ newline$
@@ -2304,5 +2629,6 @@
 
 EXECUTE {end.bib}
 
+\endinput
 %%
 %% End of file `gost2003.bst'.

Modified: trunk/Master/texmf-dist/bibtex/bst/gost/gost2003s.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/gost/gost2003s.bst	2020-12-29 00:54:00 UTC (rev 57250)
+++ trunk/Master/texmf-dist/bibtex/bst/gost/gost2003s.bst	2020-12-29 02:19:51 UTC (rev 57251)
@@ -6,28 +6,20 @@
 %%
 %% gost.dtx  (with options: `bst,strict,eprint,sort')
 %% 
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%   http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
+%% IMPORTANT NOTICE:
 %% 
-%% This file has the LPPL maintenance status "maintained".
-%% Maintained by Igor A. Kotelnikov.
+%% For the copyright see the source file.
 %% 
-%% Current version: 1.2j, 2017.01.12
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from gost2003s.bst.
 %% 
-%% Please, send bug report via e-mail:
-%%   kia999 at mail dot ru <Igor Kotelnikov>
-%% or
-%%   polyama at yahoo dot com <Maksym Polyakov>
+%% For distribution of the original source see the terms
+%% for copying and modification in the file gost.dtx.
 %% 
-
-
-
-%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
 %% This bibstyle attempts to format bibliography according to
 %% GOST 7.1-2003 for bibliographic records.
 
@@ -67,15 +59,15 @@
     language
     langid          % new in v1.2c
     booklanguage
-    %date            % not implemented yet...
+    date            % new in v1.2i
     pagetotal
     url
     urldate
     isbn
     doi
+    eprint
     eprinttype      % = archivePrefix
     eprintclass     % = primaryClass
-    eprint
     % new in v1.2f:
     % appear in biblatex:
     %addendum       % not implemented yet...
@@ -100,9 +92,24 @@
   {}
   { label }
 
-INTEGERS { output.state before.all mid.sentence after.sentence after.block
-after.dblslash after.slash after.colon after.semicolon }
+INTEGERS {
+    output.state
+    before.all
+    mid.sentence
+    after.sentence
+    after.block
+    after.dblslash
+    after.slash
+    after.colon
+    after.semicolon
+}
 
+STRINGS { curlanguage }
+
+STRINGS { s t }
+
+STRINGS { y m d }   % new in v.1.2j
+
 FUNCTION {init.state.consts}
 { #0 'before.all :=
   #1 'mid.sentence :=
@@ -114,11 +121,18 @@
   #7 'after.semicolon :=
 }
 
-STRINGS { s t }
+FUNCTION {set.language}
+{ langid empty$
+    { language empty$
+        { "english" 'curlanguage := }
+        { language  'curlanguage := }
+      if$
+    }
+    { langid  'curlanguage := }
+  if$
+}
 
-STRINGS { curlanguage }
-
-FUNCTION {change.language}
+FUNCTION {reset.language}
 { booklanguage empty$
     { "" }
     { booklanguage  'curlanguage :=
@@ -143,7 +157,7 @@
         { output.state before.all =
             'write$
             { output.state after.dblslash =
-                { "~//" * change.language * " " * write$ }
+                { "~//" * reset.language * " " * write$ }
                 { output.state after.slash =
                     { "~/ " * write$ }
                     { output.state after.colon =
@@ -177,7 +191,9 @@
 FUNCTION {output.check}
 { 't :=
   duplicate$ empty$
-    { pop$ "empty " t * " in " * cite$ * warning$ }
+    { pop$
+      "empty " t * " in " * cite$ * warning$
+    }
     'output.nonnull
   if$
 }
@@ -256,23 +272,6 @@
   if$
 }
 
-INTEGERS { len }
-
-FUNCTION {chop.word}
-{ 's :=
-  'len :=
-  s #1 len substring$ =
-    { s len #1 + global.max$ substring$ }
-    's
-  if$
-}
-
-FUNCTION {non.stop}
-{ duplicate$
-   "}" * add.period$
-   #-1 #1 substring$ "." =
-}
-
 FUNCTION {new.block.checka}
 { empty$
     'skip$
@@ -319,9 +318,21 @@
   if$
 }
 
+%%
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {spaces.around}
+{ " " swap$ * " " * }
+
 FUNCTION {emphasize}
 { duplicate$ empty$
-    { pop$ "" }
+    %{ pop$ "" }
+    'skip$       % v.1.2k
     { "\BibEmph{" swap$ * "}" * }
   if$
 }
@@ -333,7 +344,7 @@
   if$
 }
 
-FUNCTION {enclose.square.brackets}
+FUNCTION {bracketise}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -341,7 +352,7 @@
   if$
 }
 
-FUNCTION {enclose.round.brackets}
+FUNCTION {paranthesify}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -349,25 +360,92 @@
   if$
 }
 
-FUNCTION {space.word}
-{ " " swap$ * " " * }
+INTEGERS { len }
 
-FUNCTION {bbl.edby}    %  { "\bbledby{}" }
+FUNCTION {chop.word}
+{ 's :=
+  'len :=
+  s #1 len substring$ =
+    { s len #1 + global.max$ substring$ }
+    's
+  if$
+}
+
+FUNCTION {tie.connect}
+ {"~" swap$ * *
+ }
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { t #1 #2 substring$ "--" = not
+            { "--" *
+              t #2 global.max$ substring$ 't :=
+            }
+            {   { t #1 #1 substring$ "-" = }
+                { "-" *
+                  t #2 global.max$ substring$ 't :=
+                }
+              while$
+            }
+          if$
+        }
+        { t #1 #1 substring$ *
+          t #2 global.max$ substring$ 't :=
+        }
+      if$
+    }
+  while$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+        { #1 'multiresult := }
+        { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {bbl.edby}
 { curlanguage "english" =
-   {"Ed.\ by"}
+   {"ed.\ by"}
    { curlanguage "ukrainian" =
-      {"{\cyr\CYRP\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
+      {"{\cyr\cyrp\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
       { curlanguage "russian" =
-         {"{\cyr\CYRP\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
+         {"{\cyr\cyrp\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
          { curlanguage "german" =
             { "ed." }
-            {"language is not defined: " language "edby" * * warning$ "Ed.\ by"}
+            {"language is not defined: " curlanguage " in bbl.edby" * * warning$ "Ed.\ by"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.cmplr}
+FUNCTION {bbl.compiler}
 { curlanguage "english" =
    { "Compiler"}
    { curlanguage "german" =
@@ -376,15 +454,15 @@
          {"{\cyr\CYRU\cyrk\cyrl.}"}
          { curlanguage "russian" =
             {"{\cyr\CYRS\cyro\cyrs\cyrt.}"}
-            {"language is not defined: " language  "cmplr" * * warning$ "Compiler"}
+            {"language is not defined: " curlanguage  " in bbl.compiler" * * warning$ "Compiler"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.edition} %  { "\bbledition{}" }
+FUNCTION {bbl.edition}
 { curlanguage "english" =
-   {"edition"}
+   {"ed."}
    { curlanguage "ukrainian" =
       {"{\cyr\cyrv\cyri\cyrd.}"}
       { curlanguage "russian" =
@@ -395,7 +473,7 @@
                {"edizione"}
                { curlanguage "french" =
                   {"\'{e}dition"}
-                  {"language is not defined: " language  "edition" * * warning$ "edition"}
+                  {"language is not defined: " curlanguage  " in bbl.edition" * * warning$ "ed."}
                if$}
             if$}
          if$}
@@ -403,7 +481,7 @@
    if$}
 if$}
 
-FUNCTION {bbl.vvolume} %  { "\bblVolume{}" }
+FUNCTION {bbl.vvolume}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Volume"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -410,12 +488,12 @@
       { "\CYRT\cyro\cyrm" }
       { curlanguage "german" =
          {"{Band}"} %%%% { "Volumen" }
-         {"language is not defined: " language  "vvolume" * * warning$ "Volume"}
+         {"language is not defined: " curlanguage  " in bbl.vvolume" * * warning$ "Volume"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.vvol}    %  { "\bblVol{}" }
+FUNCTION {bbl.vvol}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Vol."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -422,12 +500,12 @@
       {"\CYRT."}
       { curlanguage "german" =
          {"{Bd.}"} %%%% { "Vol." }
-         {"language is not defined: " language  "vvol" * * warning$ "Vol."}
+         {"language is not defined: " curlanguage  " in bbl.vvol" * * warning$ "Vol."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iissue}  %  { "\bblIssue{}" }
+FUNCTION {bbl.iissue}
 { curlanguage "english" =
    {"Issue"}
    { curlanguage "ukrainian" =
@@ -436,13 +514,13 @@
          {"\CYRV\cyrery\cyrp\cyru\cyrs\cyrk"}
          { curlanguage "german" =
             {"{Heft}"} %%%% { "Ausgabe" }
-            {"language is not defined: " language "iissue" * * warning$ "Issue"}
+            {"language is not defined: " curlanguage " in bbl.iissue" * * warning$ "Issue"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iiss}  %  { "\bblIss{}" }
+FUNCTION {bbl.iiss}
 { curlanguage "english" =
    {"Iss."}
    { curlanguage "ukrainian" =
@@ -451,13 +529,13 @@
          {"\CYRV\cyrery\cyrp."}
          { curlanguage "german" =
             {"{H.}"}
-            {"language is not defined: " language "iiss" * * warning$ "Iss."}
+            {"language is not defined: " curlanguage " in bbl.iiss" * * warning$ "Iss."}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.of}      %  { "\bblof{}" }
+FUNCTION {bbl.of}
 { curlanguage "english" =
    {"of"}
    { curlanguage "german" =
@@ -466,13 +544,13 @@
          { "{\cyr\cyrii\cyrz}" }
          { curlanguage "russian" =
             { "{\cyr\cyri\cyrz}" }
-            {"language is not defined: " language "of" * * warning$ "of"}
+            {"language is not defined: " curlanguage " in bbl.of" * * warning$ "of"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.etal}      %  { "\bblof{}" }
+FUNCTION {bbl.etal}
 { curlanguage "english" =
    {"et~al."}
    { curlanguage "german" =
@@ -481,14 +559,31 @@
          {"{\cyr\cyrt\cyra~\cyrii\cyrn.}"}
          { curlanguage "russian" =
             {"{\cyr\cyri~\cyrd\cyrr.}"}
-            {"language is not defined: " language  "et~al" * * warning$ "et~al."}
+            {"language is not defined: " curlanguage  " in bbl.etal" * * warning$ "et~al."}
          if$}
       if$}
    if$}
 if$}
 
+FUNCTION {bbl.and}
+{ curlanguage "english" =
+  {"and"}
+   { curlanguage "german" =
+      { "und" }
+      { curlanguage "ukrainian" =
+         {"{\cyrii}"}
+         { curlanguage "russian" =
+            {"{\cyri}"}
+            { curlanguage "french" =
+                {"et"}
+                {"language is not defined: " curlanguage  " in bbl.and" * * warning$ "and"}
+            if$}
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {bbl.nnumber} %  { "\bblNumber{}" }
+FUNCTION {bbl.nnumber}
 { curlanguage "english" =
    {"Number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -495,12 +590,12 @@
       { "\CYRN\cyro\cyrm\cyre\cyrr" }
       { curlanguage "german" =
          {"{Heft}"} %%% { "Anzahl" }
-         {"language is not defined: " language  "nnumber" * * warning$ "Number"}
+         {"language is not defined: " curlanguage  " in bbl.nnumber" * * warning$ "Number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.number}  %  { "\bblnumber{}" }
+FUNCTION {bbl.number}
 { curlanguage "english" =
    {"number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -507,27 +602,30 @@
       {"{\cyr\cyrn\cyro\cyrm\cyre\cyrr}"}
       { curlanguage "german" =
          {"{Heft}"} %%% { "anzahl" }???
-         {"language is not defined: " language  "number" * * warning$ "number"}
+         {"language is not defined: " curlanguage  " in bbl.number" * * warning$ "number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nr}     %   { "\bblno{}" }
+FUNCTION {bbl.nr}
 { curlanguage "english" =
    {"no."}
    { curlanguage "italian" =
-      { "no" }
+      { "no." }
       { curlanguage "ukrainian" = curlanguage "russian" = or
          { "{\cyr\textnumero}" }
          { curlanguage "german" =
-            {"{H.}"} %%% { "an." }
-            {"language is not defined: " language "nr" * * warning$ "no."}
+            {"{nu.}"} %%% { "an." }
+            { curlanguage "french" =
+                { "no." }
+                {"language is not defined: " curlanguage " in bbl.nr" * * warning$ "no."}
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nnr}     %   { "\bblno{}" }
+FUNCTION {bbl.nnr}
 { curlanguage "english" =
    {"No."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -534,30 +632,30 @@
       { "{\cyr\textnumero}" }
       { curlanguage "german" =
          {"{H.}"} %%% { "an." }
-         {"language is not defined: " language  "nnr" * * warning$ "No."}
+         {"language is not defined: " curlanguage  " in bbl.nnr" * * warning$ "No."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.in}    %    { "\bblin{}" }
+FUNCTION {bbl.in}
 { curlanguage "english" = curlanguage "german" = or
    {"in"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "{\cyr\cyrv}" }
-      {"language is not defined: " language  "in" * * warning$ "in"}
+      {"language is not defined: " curlanguage  " in bbl.in" * * warning$ "in"}
    if$}
 if$}
 
-FUNCTION {bbl.iin}  %     { "\bblIn{}" }
+FUNCTION {bbl.iin}
 { curlanguage "english" = curlanguage "german" = or
    {"In"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "\CYRV" }
-      {"language is not defined: " language  "iin" * * warning$ "In"}
+      {"language is not defined: " curlanguage  " in bbl.iin" * * warning$ "In"}
    if$}
 if$}
 
-FUNCTION {bbl.pages}    % { "\bblpp." }
+FUNCTION {bbl.pages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."} %%% {"pp."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -564,12 +662,12 @@
       {"{\cyr\cyrs.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "pages" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.pages" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.page}   %   { "\bblp."
+FUNCTION {bbl.page}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -576,12 +674,12 @@
       {"{\cyr\cyrs.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "page" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.page" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppages}%    { "\bblPp." }
+FUNCTION {bbl.ppages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."} %%%% { "Pp." }
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -588,12 +686,12 @@
       {"{\cyr\CYRS.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language "ppages" * * warning$ "P."}
+         {"language is not defined: " curlanguage " in bbl.ppages" * * warning$ "P."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppage}  %   { "\bblP." }
+FUNCTION {bbl.ppage}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -600,7 +698,7 @@
       {"{\cyr\CYRS.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language  "ppage" * * warning$ "P."}
+         {"language is not defined: " curlanguage  " in bbl.ppage" * * warning$ "P."}
       if$}
    if$}
 if$}
@@ -614,7 +712,10 @@
          { "{\CYRR\cyre\cyrzh\cyri\cyrm\ \cyrd\cyro\cyrs\cyrt\cyru\cyrp\cyra}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "Mode d'acc\`{e}s" }
+                { "language is not defined: " curlanguage " in bbl.url" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
@@ -628,13 +729,16 @@
          { "{\cyrd\cyra\cyrt\cyra\ \cyro\cyrb\cyrr\cyra\cyrshch\cyre\cyrn\cyri\cyrya}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "{en ligne; acc\'{e}d\'{e}}" }
+                { "language is not defined: " curlanguage " in bbl.urldate" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.techreport} % rename to bbl.techreport
+FUNCTION {bbl.techreport}
 { curlanguage "english" =
    { "Rep." }
    { curlanguage "german" =
@@ -641,7 +745,7 @@
       { "Bericht" }
       { curlanguage "russian" =
          { "{\cyr\CYRO\cyrt\cyrch\cyre\cyrt}" }
-         { "language is not defined: " language "techrep" * * warning$ "Rep." }
+         { "language is not defined: " curlanguage " in bbl.techrep" * * warning$ "Rep." }
       if$}
    if$}
 if$}
@@ -650,12 +754,12 @@
 { curlanguage "english" =
    { "Master's thesis" }
    { curlanguage "german" =
-      { "Diss.~Mag." }
+      { "diss.~mag." }
       { curlanguage "russian" =
-        { "{\cyr\CYRK\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
+        { "{\cyr\cyrk\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
           "\cyro\cyrn\cyrn\cyra\cyrya\ \cyrr\cyra\cyrb\cyro\cyrt\cyra\ " *
           "\cyrm\cyra\cyrg\cyri\cyrs\cyrt\cyrr\cyra}" * }
-         { "language is not defined: " language "mthesis" * * warning$ "Master's thesis" }
+         { "language is not defined: " curlanguage " in bbl.mthesis" * * warning$ "Master's thesis" }
       if$}
    if$}
 if$}
@@ -664,13 +768,13 @@
 { curlanguage "english" =
    { "Ph.\,D. thesis" }
    { curlanguage "german" =
-      { "Diss.~Ph.\,D." }
+      { "diss.~Ph.\,D." }
       { curlanguage "russian" =
          { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrk\cyra\cyrn\cyrd. "
            "\cyrn\cyra\cyru\cyrk}" * }
          { curlanguage "french" =
-           { "Th\`{e}se de doctorat" }
-           { "language is not defined: " language "phdthesis" * * warning$ "Ph.\,D. thesis" }
+           { "th\`{e}se de doctorat" }
+           { "language is not defined: " curlanguage " in bbl.phdthesis" * * warning$ "Ph.\,D. thesis" }
          if$}
       if$}
    if$}
@@ -678,36 +782,23 @@
 
 FUNCTION {bbl.docthesis}
 { curlanguage "english" =
-   { "Dr.\,Sci. dissertation" }
+   { "dr.\,sci. dissertation" }
    { curlanguage "german" =
-      { "Diss.~Dr." }
+      { "diss.~dr." }
       { curlanguage "russian" =
          { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrd-\cyrr\cyra\ "
            "\cyrn\cyra\cyru\cyrk}" * }
-         { "language is not defined: " language "docthesis" * * warning$ "Dr.\,Sci. dissertation" }
+         { "language is not defined: " curlanguage " in bbl.docthesis" * * warning$ "Dr.\,Sci. dissertation" }
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.thesis.type}
-{ type "mathesis" =
-  { bbl.mathesis }
-  { type "phdthesis" =
-    { bbl.phdthesis }
-    { type "docthesis" =
-      { bbl.docthesis }
-      %%{ "!!!" type * "t" change.case$ }
-      { type "t" change.case$ }
-    if$}
-  if$}
-if$}
-
 FUNCTION {bbl.nnoaddress}
 { curlanguage "english" =
    { "S.\ l." }
    { curlanguage "russian" =
       { "{\cyr\CYRB.\ \cyrm.}" }
-      { "language is not defined: " language "nnoaddress" * * warning$ "S.\ l." }
+      { "language is not defined: " curlanguage " in bbl.nnoaddress" * * warning$ "S.\ l." }
    if$}
 if$}
 
@@ -716,7 +807,7 @@
    { "s.\ n." }
    { curlanguage "russian" =
       { "{\cyr\cyrb.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "s.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "s.\ n." }
    if$}
 if$}
 
@@ -725,7 +816,7 @@
    { "S.\ n." }
    { curlanguage "russian" =
       { "{\cyr\CYRB.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "S.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "S.\ n." }
    if$}
 if$}
 
@@ -734,7 +825,7 @@
    { "Text" }
    { curlanguage "russian" = curlanguage "ukrainian" = or
       { "{\cyr\CYRT\cyre\cyrk\cyrs\cyrt}" }
-      { "language is not defined: " language "media" * * warning$ "Text" }
+      { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Text" }
    if$}
 if$}
 
@@ -747,7 +838,7 @@
       { curlanguage "ukrainian" =
         { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
           "\cyrr\cyre\cyrs\cyru\cyrr\cyrs}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -761,7 +852,7 @@
       { curlanguage "ukrainian" =
         { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
           "\cyrr\cyre\cyrs\cyru\cyrr\cyrs\ \cyro\cyrn\cyrl\cyra\cyrishrt\cyr}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -773,7 +864,7 @@
       { "\cyrr\cyru\cyrk." }
       { curlanguage "ukrainian" =
         { "\cyrr\cyru\cyrk." }
-        { "language is not defined: " language "chief" * * warning$ "chief" }
+        { "language is not defined: " curlanguage " in bbl.chief" * * warning$ "chief" }
       if$}
    if$}
 if$}
@@ -780,12 +871,12 @@
 
 FUNCTION {bbl.executor}
 { curlanguage "english" =
-   { "Executor" }
+   { "executor" }
    { curlanguage "russian" =
       { "{\cyr\cyri\cyrs\cyrp\cyro\cyrl\cyrn.}" }
       { curlanguage "ukrainian" =
         { "{\cyr\cyrv\cyri\cyrk\cyro\cyrn\cyra\cyrv\cyre\cyrc\cyrsftsn}" }
-        { "language is not defined: " language "executor" * * warning$ "executor" }
+        { "language is not defined: " curlanguage " in bbl.executor" * * warning$ "executor" }
       if$}
    if$}
 if$}
@@ -807,7 +898,7 @@
       { "ang." }
       { curlanguage "russian" =
         { "{\cyr\cyrz\cyra\cyrya\cyrv\cyrl.}" }
-        { "language is not defined: " language "req" * * warning$ "req" }
+        { "language is not defined: " curlanguage " in bbl.req" * * warning$ "req" }
       if$
       }
     if$
@@ -823,7 +914,7 @@
       { "ausg." }
       { curlanguage "russian" =
         { "{\cyr\cyro\cyrp\cyru\cyrb\cyrl.}" }
-        { "language is not defined: " language "publication" * * warning$ "publication" }
+        { "language is not defined: " curlanguage " in bbl.publication" * * warning$ "publication" }
       if$
       }
     if$
@@ -839,7 +930,7 @@
       { "Prioritat" }
       { curlanguage "russian" =
         { "{\cyr\cyrp\cyrr\cyri\cyro\cyrr\cyri\cyrt\cyre\cyrt}" }
-        { "language is not defined: " language "priority" * * warning$ "priority" }
+        { "language is not defined: " curlanguage " in bbl.priority" * * warning$ "priority" }
       if$
       }
     if$
@@ -847,113 +938,346 @@
   if$
 }
 
-INTEGERS { nameptr namesleft numnames }
+FUNCTION {bbl.jan}
+{ curlanguage "english" =
+   {"Jan."}
+   { curlanguage "ukrainian" =
+      {"\CYRS\cyrii\cyrch."}
+      { curlanguage "russian" =
+         { "\CYRYA\cyrn\cyrv." }
+         { curlanguage "german" =
+            { "Jan." } % Januar
+            { "language is not defined: bbl.jan for " curlanguage * warning$ "Jan." }
+         if$}
+      if$}
+   if$}
+if$}
 
+FUNCTION {bbl.feb}
+{ curlanguage "english" =
+   {"Feb."}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyryu\cyrt."}
+      { curlanguage "russian" =
+         { "\CYRF\cyre\cyrv\cyrr." }
+         { curlanguage "german" =
+            {"Feb."} % Februar
+            {"language is not defined: bbl.feb for " curlanguage * warning$ "Feb."}
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.names}
-{
-  #1 "{vv~}{ll}{~jj}{,~f.}" format.name$
-}
+FUNCTION {bbl.mar}
+{ curlanguage "english" =
+   {"Mar."}
+   { curlanguage "ukrainian" =
+      {"\CYRB\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRM\cyra\cyrr\cyrt" }
+         { curlanguage "german" =
+            {"März"} % März
+            {"language is not defined: bbl.mar for " curlanguage * warning$ "Mar."}
+         if$}
+      if$}
+   if$}
+if$}
 
+FUNCTION {bbl.apr}
+{ curlanguage "english" =
+   {"Apr."}
+   { curlanguage "ukrainian" =
+      {"\CYRK\cyrv\cyrii\cyrt."}
+      { curlanguage "russian" =
+            { "\CYRA\cyrp\cyrr." }
+         { curlanguage "german" =
+            {"Apr."} % April
+            { "language is not defined: bbl.apr for " curlanguage * warning$ "Apr." }
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.names.rev}
-{
-  's :=
-  #1 'nameptr :=
-  s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr
-      %"{f.}{~vv}{~ll}{, jj}" format.name$ 't :=
-      "{ff}{~vv}{~ll}{, jj}" format.name$ 't :=
-      nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
-          if$
-          namesleft #1 >
-            { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
-                { " " * bbl.etal enclose.square.brackets * }
-                { ", " * t * }
-              if$
-            }
-          if$
-        }
-        't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
-  while$
-}
+FUNCTION {bbl.may}
+{ curlanguage "english" =
+   {"May"}
+   { curlanguage "ukrainian" =
+      {"\CYRT\cyrr\cyra\cyrv."}
+      { curlanguage "russian" =
+            { "\CYRM\cyra\cyrishrt" }
+         { curlanguage "german" =
+            {"Mai"}
+            { "language is not defined: bbl.may for " curlanguage * warning$ "May" }
+         if$}
+      if$}
+   if$}
+if$}
 
+FUNCTION {bbl.jun}
+{ curlanguage "english" =
+   {"June"}
+   { curlanguage "ukrainian" =
+      {"\CYRCH\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRI\cyryu\cyrn\cyrsftsn" }
+         { curlanguage "german" =
+            {"Juni"}
+            { "language is not defined: bbl.jun for " curlanguage * warning$ "June" }
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.authors}
-{ author empty$
-    { "" }
-    { author format.names emphasize}
-  if$
-}
+FUNCTION {bbl.jul}
+{ curlanguage "english" =
+   {"July"}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyri\cyrp."}
+      { curlanguage "russian" =
+            { "\CYRI\cyryu\cyrl\cyrsftsn" }
+         { curlanguage "german" =
+            {"Juli"}
+            { "language is not defined: bbl.jul for " curlanguage * warning$ "July" }
+         if$}
+      if$}
+   if$}
+if$}
 
+FUNCTION {bbl.aug}
+{ curlanguage "english" =
+   {"Aug."}
+   { curlanguage "ukrainian" =
+      {"\CYRS\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRA\cyrv\cyrg\." }
+         { curlanguage "german" =
+            {"Aug."} % August
+            { "language is not defined: bbl.aug for " curlanguage * warning$ "Aug." }
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.bookauthors}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names}
-  if$
-}
+FUNCTION {bbl.sep}
+{ curlanguage "english" =
+   {"Sep."}
+   { curlanguage "ukrainian" =
+      {"\CYRV\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRS\cyre\cyrn\cyrt." }
+         { curlanguage "german" =
+            {"Sep."} % September
+            { "language is not defined: bbl.sep for " curlanguage * warning$ "Sep." }
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.authors.after}
-{ author empty$
-    { "" }
-    { author format.names.rev}
+FUNCTION {bbl.oct}
+{ curlanguage "english" =
+   {"Oct."}
+   { curlanguage "ukrainian" =
+      {"\CYRZH\cyro\cyrn."}
+      { curlanguage "russian" =
+            { "\CYRO\cyrk\cyrt." }
+         { curlanguage "german" =
+            {"Okt."} % Oktober
+            { "language is not defined: bbl.oct for " curlanguage * warning$ "Oct." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.nov}
+{ curlanguage "english" =
+   {"Nov."}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyri\cyrs."}
+      { curlanguage "russian" =
+            { "\CYRN\cyro\cyrya\cyrb." }
+         { curlanguage "german" =
+            {"Nov."} % November
+            { "language is not defined: bbl.nov for " curlanguage * warning$ "Nov." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.dec}
+{ curlanguage "english" =
+   {"Dec."}
+   { curlanguage "ukrainian" =
+      {"\CYRG\cyrr\cyru\cyrd."}
+      { curlanguage "russian" =
+            { "\CYRD\cyre\cyrk." }
+         { curlanguage "german" =
+            {"Dez."} % Dezember
+            { "language is not defined: bbl.dec for " curlanguage * warning$ "Dec." }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {bbl.arxiv}
+{ curlanguage "english" =
+   { "ArXiv" }
+   { curlanguage "ukrainian" =
+      {"ArXiv"}
+      { curlanguage "russian" =
+         { "ArXiv" }
+         { curlanguage "german" =
+            { "ArXiv" }
+            { "language is not defined: bbl.arxiv for " curlanguage * warning$ "ArXiv" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jstor}
+{ curlanguage "english" =
+   { "JSTOR" }
+   { curlanguage "ukrainian" =
+      {"JSTOR"}
+      { curlanguage "russian" =
+         { "JSTOR" }
+         { curlanguage "german" =
+            { "JSTOR" }
+            { "language is not defined: bbl.jstor for " curlanguage * warning$ "JSTOR" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.pubmed}
+{ curlanguage "english" =
+   { "PubMed" }
+   { curlanguage "ukrainian" =
+      {"PubMed"}
+      { curlanguage "russian" =
+         { "PubMed" }
+         { curlanguage "german" =
+            { "PubMed" }
+            { "language is not defined: bbl.pubmed for " curlanguage * warning$ "PubMed" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.googlebooks}
+{ curlanguage "english" =
+   { "Google Books" }
+   { curlanguage "ukrainian" =
+      {"Google \CYRK\cyrn\cyri\cyrg\cyri"}
+      { curlanguage "russian" =
+         { "Google \CYRK\cyrn\cyri\cyrg\cyri" }
+         { curlanguage "german" =
+            { "Google Books" }
+            { "language is not defined: bbl.googlebooks for " curlanguage * warning$ "Google Books" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.hdl}
+{ curlanguage "english" =
+   { "Handle.Net" }
+   { curlanguage "ukrainian" =
+      {"Handle.Net"}
+      { curlanguage "russian" =
+         { "Handle.Net" }
+         { curlanguage "german" =
+            { "Handle.Net" }
+            { "language is not defined: bbl.hdl for " curlanguage * warning$ "Handle.Net" }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {address.or.location}
+{
+  address empty$
+    { location }
+    { address }
   if$
 }
 
-FUNCTION {format.bookauthors.after}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names.rev}% always cuts to 4 persons
+FUNCTION {specialitycode.or.number}
+{
+  specialitycode empty$
+    { number }
+    { specialitycode }
   if$
 }
 
-FUNCTION {format.editors.after}
-{ editor empty$
-    { "" }
-    { bbl.edby "\ " * editor format.names.rev * }
+FUNCTION {institution.or.school}
+{
+  institution empty$
+    { school}
+    { institution }
   if$
 }
-
-FUNCTION {format.chief.after}
-{ editor empty$
-    { "" }
-    { bbl.chief "\ " * editor format.names.rev * }
+FUNCTION {date.to.year}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #3 >
+        {
+          date #1 #4 substring$ 'y :=
+          y
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
   if$
 }
 
-FUNCTION {format.executor.after}
-{ author empty$
-    { "" }
-    { bbl.executor ": " * author format.names.rev * }
+FUNCTION {date.to.month}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #6 >
+        {
+          date #6 #2 substring$ 'm :=
+          m
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
   if$
 }
 
-FUNCTION {format.compiler.after}
-{ compiler empty$
-    { "" }
-    { bbl.cmplr "\ " * compiler format.names.rev * }
+FUNCTION {date.to.day}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #10 =
+        {
+          date #9 #2 substring$ 'd :=
+          d
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
   if$
 }
 
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    { title "t" change.case$ }
+FUNCTION {year.or.date.to.year}
+{
+  year empty$
+    {
+      date.to.year
+    }
+    { year }
   if$
 }
 
@@ -960,39 +1284,39 @@
 FUNCTION {format.month}
 { month empty$
     { "" }
-    { curlanguage "russian" =
-        { month "Jan." =
-            { "\CYRYA\cyrn\cyrv." }
-        { month "Feb." =
-            { "\CYRF\cyre\cyrv\cyrr." }
-        { month "Mar." =
-            { "\CYRM\cyra\cyrr\cyrt" }
-        { month "Apr." =
-            { "\CYRA\cyrp\cyrr." }
-        { month "May" =
-            { "\CYRM\cyra\cyrishrt" }
-        { month "Jun." =
-            { "\CYRI\cyryu\cyrn\cyrsftsn" }
-        { month "Jul." =
-            { "\CYRI\cyryu\cyrl\cyrsftsn" }
-        { month "Aug." =
-            { "\CYRA\cyrv\cyrg\." }
-        { month "Sep." =
-            { "\CYRS\cyre\cyrn\cyrt." }
-        { month "Oct." =
-            { "\CYRO\cyrk\cyrt." }
-        { month "Nov." =
-            { "\CYRN\cyro\cyrya\cyrb." }
-        { month "Dec." =
-            { "\CYRD\cyre\cyrk." }
-            { month }
-            if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
-        { month }
-        if$}
+    { month "Jan." =
+        { bbl.jan }
+    { month "Feb." =
+        { bbl.feb }
+    { month "Mar." =
+        { bbl.mar }
+    { month "Apr." =
+        { bbl.apr }
+    { month "May" =
+        { bbl.may }
+    { month "Jun." =
+        { bbl.jun }
+    { month "Jul." =
+        { bbl.jul }
+    { month "Aug." =
+        { bbl.aug }
+    { month "Sep." =
+        { bbl.sep }
+    { month "Oct." =
+        { "Окт." }
+    { month "Nov." =
+        { bbl.nov }
+    { month "Dec." =
+        { bbl.dec }
+        {
+          "unknown month in " cite$ * warning$
+          month
+        }
+        if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
     if$
 }
 FUNCTION {format.date}
-{ year empty$
+{ year.or.date.to.year empty$
     { month empty$
         { "" }
         { "there's a month but no year in " cite$ * warning$
@@ -1001,36 +1325,138 @@
       if$
     }
     { month empty$
-        'year
-        { year ". \BibDash " format.month * * }
+        'year.or.date.to.year
+        { year.or.date.to.year ". \BibDash " format.month * * }
       if$
     }
   if$
 }
 
-FUNCTION {address.or.location}
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {fmt.names.first}
+{ #1
+  "{vv~}{ll}{~jj}{,~f.}"
+  format.name$
+}
+
+FUNCTION {fmt.names.three}
 {
-  address empty$
-    { location }
-    { address }
-  if$
+  's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+  { namesleft #0 > }
+  { s nameptr
+      "{vv~}{ll}{~jj}{,~f.}"
+    format.name$ 't :=
+    nameptr #1 >
+      { nameptr #4 = numnames #4 > and
+          { "others" 't :=
+            #1 'namesleft :=
+          }
+          'skip$
+        if$
+        namesleft #1 >
+          { ", " * t * }
+          { t "others" = t "~others" = or
+              { " " * bbl.etal bracketise *}
+              { ", " * t * }
+          if$
+          }
+        if$
+      }
+      't
+    if$
+    nameptr #1 + 'nameptr :=
+    namesleft #1 - 'namesleft :=
+  }
+  while$
 }
 
-FUNCTION {specialitycode.or.number}
+FUNCTION {fmt.names.all}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr
+      %"{vv~}{ll}" format.name$ 't :=
+      "{vv~}{ll}{~jj}{,~f.}"
+      format.name$ 't :=
+      nameptr #1 >
+        { namesleft #1 >
+            { ", " * t * }
+            { numnames #2 >  curlanguage "english" = and
+                { "," * }
+                'skip$
+              if$
+              t "others" = t "~others" = or
+                { " " * bbl.etal bracketise *}
+                { " " bbl.and " " * * * t * }
+              if$
+            }
+          if$
+        }
+        't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+%%<long>    { author fmt.names.all emphasize}
+%%<!long&strict>    { author fmt.names.first emphasize}
+%%<!long&!strict>    { author fmt.names.three emphasize}
+FUNCTION {format.author}
 {
-  specialitycode empty$
-    { number }
-    { specialitycode }
+  author empty$
+    { author } %%%'skip$
+    {author num.names$ #4 <
+      {
+       author fmt.names.first
+      }
+      { "" } %%%'skip$
+    if$}
   if$
 }
 
-FUNCTION {institution.or.school}
-{
-  institution empty$
-    { school}
-    { institution }
+FUNCTION {format.bookauthors.rest}
+{ bookauthor empty$
+    { "" }
+    { bookauthor fmt.names.three emphasize }
   if$
 }
+
+FUNCTION {format.editors.rest}
+{ editor empty$
+    { "" }
+    { bbl.edby "\ " * editor fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.chief.rest}
+{ editor empty$
+    { "" }
+    { bbl.chief "\ " * editor fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.executor.rest}
+{ author empty$
+    { "" }
+    { bbl.executor ": " * author fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.compiler.rest}
+{ compiler empty$
+    { "" }
+    { bbl.compiler "\ " * compiler fmt.names.three * }
+  if$
+}
+
 FUNCTION {output.address.publisher}
 {
   address empty$
@@ -1037,8 +1463,8 @@
     {
       bbl.nnoaddress
       publisher empty$
-        { "~: " * bbl.nopublisher * enclose.square.brackets }
-        { enclose.square.brackets "~: " * publisher * }
+        { "~: " * bbl.nopublisher * bracketise }
+        { bracketise "~: " * publisher * }
       if$
     }
     {
@@ -1045,7 +1471,7 @@
       address output
       new.colon
       publisher empty$
-        { bbl.nopublisher enclose.square.brackets }
+        { bbl.nopublisher bracketise }
         { publisher }
       if$
     }
@@ -1053,21 +1479,13 @@
   output
 }
 
-
-
 FUNCTION {output.bibitem}
-{ newline$
+{
+  set.language
+  newline$
   "\bibitem" write$
   cite$ bracify write$
   newline$
-  langid empty$
-    { language empty$
-        { "english" 'curlanguage := }
-        { language  'curlanguage := }
-      if$
-    }
-    { langid  'curlanguage := }
-  if$
   "\selectlanguageifdefined" curlanguage bracify * write$
   newline$
   ""
@@ -1074,60 +1492,6 @@
   before.all 'output.state :=
 }
 
-
-FUNCTION {n.dashify}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-        { t #1 #2 substring$ "--" = not
-            { "--" *
-              t #2 global.max$ substring$ 't :=
-            }
-            {   { t #1 #1 substring$ "-" = }
-                { "-" *
-                  t #2 global.max$ substring$ 't :=
-                }
-              while$
-            }
-          if$
-        }
-        { t #1 #1 substring$ *
-          t #2 global.max$ substring$ 't :=
-        }
-      if$
-    }
-  while$
-}
-
-FUNCTION {word.in}
-{ bbl.iin
-  " " * }
-
-FUNCTION {format.btitle}
-{ title
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
-    { "~" }
-    { " " }
-  if$
-  swap$ * *
-}
-
-FUNCTION {tie.connect}
- {"~"
-  swap$ * *
- }
-
-FUNCTION {either.or.check}
-{ empty$
-    'pop$
-    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
-  if$
-}
-
 FUNCTION {format.bvolume}
 { volume empty$
     { "" }
@@ -1134,7 +1498,7 @@
     { bbl.vvol volume tie.connect
       series empty$
         'skip$
-        { bbl.of space.word * series emphasize * }
+        { bbl.of spaces.around * series emphasize * }
       if$
       "volume and number" number either.or.check
     }
@@ -1163,31 +1527,7 @@
   if$
 }
 
-FUNCTION {is.num}
-{ chr.to.int$
-  duplicate$ "0" chr.to.int$ < not
-  swap$ "9" chr.to.int$ > not and
-}
 
-FUNCTION {extract.num}
-{ duplicate$ 't :=
-  "" 's :=
-  { t empty$ not }
-  { t #1 #1 substring$
-    t #2 global.max$ substring$ 't :=
-    duplicate$ is.num
-      { s swap$ * 's := }
-      { pop$ "" 't := }
-    if$
-  }
-  while$
-  s empty$
-    'skip$
-    { pop$ s }
-  if$
-}
-
-
 FUNCTION {convert.edition}
 { edition
 }
@@ -1203,38 +1543,6 @@
   if$
 }
 
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
-  #0 'multiresult :=
-    { multiresult not
-      t empty$ not
-      and
-    }
-    { t #1 #1 substring$
-      duplicate$ "-" =
-      swap$ duplicate$ "," =
-      swap$ "+" =
-      or or
-        { #1 'multiresult := }
-        { t #2 global.max$ substring$ 't := }
-      if$
-    }
-  while$
-  multiresult
-}
-
-%%FUNCTION {format.pages}
-%%{ pages empty$
-%%    { "" }
-%%    { pages multi.page.check
-%%        { bbl.ppages pages n.dashify tie.connect }
-%%        { bbl.ppage pages tie.connect }
-%%      if$
-%%    }
-%%  if$
-%%}
 FUNCTION {format.pages}
 { eid empty$
     {
@@ -1255,15 +1563,6 @@
   if$
 }
 
-%%FUNCTION {format.pages.page}
-%%{ pages empty$
-%%    { pagetotal empty$
-%%      { "" }
-%%      { pagetotal bbl.pages tie.connect }
-%%    if$}
-%%    { format.pages}
-%%  if$
-%%}
 FUNCTION {format.pages.page}
 { eid empty$
     { pages empty$
@@ -1326,6 +1625,19 @@
   if$
 }
 
+FUNCTION {bbl.thesis.type}
+{ type "mathesis" =
+  { bbl.mathesis }
+  { type "phdthesis" =
+    { bbl.phdthesis }
+    { type "docthesis" =
+      { bbl.docthesis }
+      %%{ "!!!" type * "t" change.case$ }
+      { type "t" change.case$ }
+    if$}
+  if$}
+if$}
+
 %%<!utf8>      bbl.thesis.type "t" change.case$
 %%<utf8>      bbl.thesis.type
 FUNCTION {format.thesis.type}
@@ -1346,78 +1658,61 @@
   if$
 }
 
-FUNCTION {author.before}
+FUNCTION {output.author.head}
 {
   author empty$
     'skip$
     {author num.names$ #4 <
-      {format.authors output
-       new.sentence}
+      {
+       author fmt.names.first output
+       new.sentence
+      }
       'skip$
     if$}
   if$
 }
 
-%%<*!long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    {bookauthor num.names$ #4 <
-%%      {format.bookauthors output
-%%       new.sentence}
-%%      'skip$
-%%    if$}
-%%  if$
-%%}
-%%</!long>
-%%<*long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    { format.bookauthors output
-%%      new.sentence
-%%    }
-%%  if$
-%%}
-%%</long>
-
-FUNCTION {author.after}
+FUNCTION {output.author.rest}
 {
   author empty$
     'skip$
-    {format.authors.after output
-       new.semicolon }
+    {author num.names$ #1 >
+      { author fmt.names.all output
+        new.semicolon
+      }
+      'skip$
+    if$}
   if$
 }
 
-FUNCTION {bookauthor.after}
+FUNCTION {bookauthor.rest}
 {
   bookauthor empty$
     'skip$
-    {format.bookauthors.after output
-       new.semicolon }
+    {
+      bookauthor fmt.names.all output
+      new.semicolon
+    }
   if$
 }
 
-FUNCTION {editor.organization.after}
+FUNCTION {editor.organization.rest}
 {
   compiler empty$
     {}
-    { format.compiler.after  output
+    { format.compiler.rest  output
     new.semicolon
     }
   if$
   editor empty$
     {}
-    { format.editors.after  output
+    { format.editors.rest  output.nonnull
     new.semicolon
     }
   if$
   organization empty$
     {}
-    {organization output
+    {organization output.nonnull
     new.semicolon
     }
   if$
@@ -1468,7 +1763,7 @@
     'skip$
     { doi empty$
         'skip$
-        { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
+        { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * }
       if$
     }
   if$
@@ -1478,9 +1773,13 @@
 { duplicate$ empty$
     'skip$
     { media empty$
-        { " " * bbl.media.text enclose.square.brackets * }
-        { " " * bbl.media enclose.square.brackets * }
-      if$
+      { type$ "online" =
+          { " " * bbl.media.online bracketise * }
+          { " " * bbl.media.text   bracketise * }
+        if$
+      }
+      { " " * bbl.media bracketise * }
+    if$
     }
   if$
 }
@@ -1560,14 +1859,15 @@
 FUNCTION {article}
 {
   output.bibitem
-  author.before
-  format.title add.media "title" output.check
+  output.author.head
+  %new.sentence
+  title add.media "title" output.check
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
-  journal emphasize add.doi "journal" output.check % new in v.2
+  journal emphasize add.doi "journal" output.check % new in v1.2
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.volume output
   format.number output
@@ -1584,11 +1884,14 @@
 FUNCTION {book}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.sentence
   format.number.series output
   new.block
@@ -1595,7 +1898,7 @@
   format.edition output
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1613,15 +1916,18 @@
 FUNCTION {booklet}
 {
   output.bibitem
-  author.before
-  format.title add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
   howpublished output
   address.or.location output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1633,15 +1939,18 @@
 FUNCTION {inbook}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  bookauthor.after
-  editor.organization.after
+  bookauthor.rest
+  editor.organization.rest
   new.block
   format.edition output
   new.block
@@ -1648,7 +1957,7 @@
   format.number.series output
   new.sentence
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1666,18 +1975,21 @@
 FUNCTION {incollection}
 {
   output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   format.number.series output
@@ -1694,15 +2006,22 @@
 FUNCTION {proceedings}
 {
   output.bibitem
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon                   % added in v.1.2k
+  titleaddon output           % added in v.1.2k
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
-  output.address.publisher
-  format.date "year" output.check
   new.block
+  format.pages.page output
+  %%%output.address.publisher  % 1.2k moved upper
+  new.block
   note output
   new.sentence
   output.eprint.url
@@ -1712,22 +2031,26 @@
 
 FUNCTION {inproceedings}
 { output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon                % added in v.1.2k
+  titleaddon output        % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
   new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
   format.pages.page output
   new.block
   note output
@@ -1747,10 +2070,12 @@
         }
       if$
     }
-    { format.authors output.nonnull }
+    { format.author output.nonnull }
   if$
   new.block
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   author empty$
     { organization empty$
     {
@@ -1767,7 +2092,7 @@
     }
   if$
   format.edition output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1780,6 +2105,8 @@
 {
   output.bibitem
   title add.media output.nonnull
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   format.type.number output
   add.blank
@@ -1787,9 +2114,9 @@
   new.colon
   ipc output
   new.slash
-  format.authors.after "author" output.check
+  format.author "author" output.check
   add.blank
-  authorcountry enclose.round.brackets output.nonnull
+  authorcountry paranthesify output.nonnull
   new.semicolon
   holder output.nonnull
   new.semicolon
@@ -1804,7 +2131,7 @@
   new.semicolon
   format.prioritydate output
   prioritynumber output
-  prioritycountry enclose.round.brackets output
+  prioritycountry paranthesify output
   new.block
   note output
   new.sentence
@@ -1817,13 +2144,15 @@
 
 FUNCTION {misc}
 { output.bibitem
-  format.authors output
+  %format.author output  % < v.1.2k
+  output.author.head    % v.1.2k
+  %new.sentence            % v.1.2k
   title howpublished new.sentence.checkb
-  format.title add.media output
+  title add.media output
   howpublished new.block.checka
   howpublished output
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1834,13 +2163,16 @@
 
 FUNCTION {unpublished}
 { output.bibitem
-  author.before
-  format.btitle "title" output.check
+  output.author.head
+  new.sentence
+  title "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note "note" output.check
   new.sentence
@@ -1851,12 +2183,14 @@
 
 FUNCTION {online}
 { output.bibitem
-  format.authors output
+  format.author output
   title howpublished new.sentence.checkb
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   howpublished new.dblslash.checka
-  howpublished enclose.square.brackets output
-  editor.organization.after
+  howpublished bracketise output
+  editor.organization.rest
   new.sentence
   new.block
   output.address.publisher
@@ -1875,25 +2209,24 @@
 FUNCTION {electronic} {online}
 FUNCTION {thesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
-  %%type "type" output.check
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
-  %%number output % code of the speciality
   specialitycode.or.number output % code of the speciality, new in v.1.2i
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours from the head zone
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1903,13 +2236,14 @@
   format.annote output
   fin.entry
 }
-
 %%  format.techrep.type.number output.nonnull
 %%  format.url output
 FUNCTION {report}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   type "type" output.check
   new.colon
@@ -1918,14 +2252,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -1938,9 +2272,9 @@
 
 FUNCTION {phdthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
@@ -1949,13 +2283,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1965,12 +2300,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {mastersthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.mathesis format.thesis.type output.nonnull
   new.colon
@@ -1979,13 +2313,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1995,12 +2330,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {docthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.docthesis format.thesis.type output.nonnull
   new.colon
@@ -2009,13 +2343,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicate athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2025,7 +2360,6 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {conference} { inproceedings }
 
 %%  format.url output
@@ -2033,7 +2367,7 @@
 FUNCTION {techreport}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   format.techreport.type output
   new.colon
@@ -2042,14 +2376,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -2074,96 +2408,96 @@
 MACRO {oct} {"Oct."}
 MACRO {nov} {"Nov."}
 MACRO {dec} {"Dec."}
-MACRO {aa}{"Astron. \& Astrophys."}
-MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."}
-MACRO {aj} {"Astron. J."}
+MACRO {aa}{"Astron.\ \& Astrophys."}
+MACRO {aasup}{"Astron.\ \& Astrophys.\ Suppl.\ Ser."}
+MACRO {aj} {"Astron.\ J."}
 MACRO {aph} {"Acta Phys."}
-MACRO {advp} {"Adv. Phys."}
-MACRO {ajp} {"Amer. J. Phys."}
-MACRO {ajm} {"Amer. J. Math."}
-MACRO {amsci} {"Amer. Sci."}
-MACRO {anofd} {"Ann. Fluid Dyn."}
-MACRO {am} {"Ann. Math."}
-MACRO {ap} {"Ann. Phys. (NY)"}
-MACRO {adp} {"Ann. Phys. (Leipzig)"}
-MACRO {ao} {"Appl. Opt."}
-MACRO {apl} {"Appl. Phys. Lett."}
+MACRO {advp} {"Adv.\ Phys."}
+MACRO {ajp} {"Amer.\ J.\ Phys."}
+MACRO {ajm} {"Amer.\ J.\ Math."}
+MACRO {amsci} {"Amer.\ Sci."}
+MACRO {anofd} {"Ann.\ Fluid Dyn."}
+MACRO {am} {"Ann.\ Math."}
+MACRO {ap} {"Ann.\ Phys.\ (NY)"}
+MACRO {adp} {"Ann.\ Phys.\ (Leipzig)"}
+MACRO {ao} {"Appl.\ Opt."}
+MACRO {apl} {"Appl.\ Phys.\ Lett."}
 MACRO {app} {"Astroparticle Phys."}
-MACRO {apj} {"Astrophys. J."}
-MACRO {apjsup} {"Astrophys. J. Suppl."}
-MACRO {apss} {"Astrophys. Space Sci."}
-MACRO {araa} {"Ann. Rev. Astron. Astrophys."}
-MACRO {baas} {"Bull. Amer. Astron. Soc."}
-MACRO {baps} {"Bull. Amer. Phys. Soc."}
-MACRO {cmp} {"Comm. Math. Phys."}
-MACRO {cpam} {"Commun. Pure Appl. Math."}
-MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"}
-MACRO {cpc} {"Comp. Phys. Comm."}
-MACRO {cqg} {"Class. Quant. Grav."}
-MACRO {cra} {"C. R. Acad. Sci. A"}
-MACRO {fed} {"Fusion Eng. \& Design"}
+MACRO {apj} {"Astrophys.\ J."}
+MACRO {apjsup} {"Astrophys.\ J.\ Suppl."}
+MACRO {apss} {"Astrophys.\ Space Sci."}
+MACRO {araa} {"Ann.\ Rev.\ Astron.\ Astrophys."}
+MACRO {baas} {"Bull.\ Amer.\ Astron.\ Soc."}
+MACRO {baps} {"Bull.\ Amer.\ Phys.\ Soc."}
+MACRO {cmp} {"Comm.\ Math.\ Phys."}
+MACRO {cpam} {"Commun.\ Pure Appl.\ Math."}
+MACRO {cppcf} {"Comm.\ Plasma Phys.\ \& Controlled Fusion"}
+MACRO {cpc} {"Comp.\ Phys.\ Comm."}
+MACRO {cqg} {"Class.\ Quant.\ Grav."}
+MACRO {cra} {"C.\ R.\ Acad.\ Sci.\ A"}
+MACRO {fed} {"Fusion Eng.\ \& Design"}
 MACRO {ft} {"Fusion Tech."}
-MACRO {grg} {"Gen. Relativ. Gravit."}
-MACRO {ieeens} {"IEEE Trans. Nucl. Sci."}
-MACRO {ieeeps} {"IEEE Trans. Plasma Sci."}
-MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"}
+MACRO {grg} {"Gen.\ Relativ.\ Gravit."}
+MACRO {ieeens} {"IEEE Trans.\ Nucl.\ Sci."}
+MACRO {ieeeps} {"IEEE Trans.\ Plasma Sci."}
+MACRO {ijimw} {"Interntl.\ J.\ Infrared \& Millimeter Waves"}
 MACRO {ip} {"Infrared Phys."}
 MACRO {irp} {"Infrared Phys."}
-MACRO {jap} {"J. Appl. Phys."}
-MACRO {jasa} {"J. Acoust. Soc. America"}
-MACRO {jcp} {"J. Comp. Phys."}
-MACRO {jchp} {"J. Chem. Phys."}
-MACRO {jetp} {"Sov. Phys.--JETP"}
-MACRO {jfe} {"J. Fusion Energy"}
-MACRO {jfm} {"J. Fluid Mech."}
-MACRO {jmp} {"J. Math. Phys."}
-MACRO {jne} {"J. Nucl. Energy"}
-MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."}
-MACRO {jnm} {"J. Nucl. Mat."}
-MACRO {jpc} {"J. Phys. Chem."}
-MACRO {jpp} {"J. Plasma Phys."}
-MACRO {jpsj} {"J. Phys. Soc. Japan"}
-MACRO {jsi} {"J. Sci. Instrum."}
-MACRO {jvst} {"J. Vac. Sci. \& Tech."}
+MACRO {jap} {"J.\ Appl.\ Phys."}
+MACRO {jasa} {"J.\ Acoust.\ Soc.\ America"}
+MACRO {jcp} {"J.\ Comp.\ Phys."}
+MACRO {jchp} {"J.\ Chem.\ Phys."}
+MACRO {jetp} {"Sov.\ Phys.--JETP"}
+MACRO {jfe} {"J.\ Fusion Energy"}
+MACRO {jfm} {"J.\ Fluid Mech."}
+MACRO {jmp} {"J.\ Math.\ Phys."}
+MACRO {jne} {"J.\ Nucl.\ Energy"}
+MACRO {jnec} {"J.\ Nucl.\ Energy, C: Plasma Phys., Accelerators, Thermonucl.\ Res."}
+MACRO {jnm} {"J.\ Nucl.\ Mat."}
+MACRO {jpc} {"J.\ Phys.\ Chem."}
+MACRO {jpp} {"J.\ Plasma Phys."}
+MACRO {jpsj} {"J.\ Phys.\ Soc.\ Japan"}
+MACRO {jsi} {"J.\ Sci.\ Instrum."}
+MACRO {jvst} {"J.\ Vac.\ Sci.\ \& Tech."}
 MACRO {nat} {"Nature"}
 MACRO {nature} {"Nature"}
-MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"}
-MACRO {nf} {"Nucl. Fusion"}
-MACRO {nim} {"Nucl. Inst. \& Meth."}
-MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."}
-MACRO {np} {"Nucl. Phys."}
-MACRO {npb} {"Nucl. Phys. B"}
-MACRO {nt/f} {"Nucl. Tech./Fusion"}
-MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"}
+MACRO {nedf} {"Nucl.\ Eng.\ \& Design/Fusion"}
+MACRO {nf} {"Nucl.\ Fusion"}
+MACRO {nim} {"Nucl.\ Inst.\ \& Meth."}
+MACRO {nimpr} {"Nucl.\ Inst.\ \& Meth.\ in Phys.\ Res."}
+MACRO {np} {"Nucl.\ Phys."}
+MACRO {npb} {"Nucl.\ Phys.\ B"}
+MACRO {nt/f} {"Nucl.\ Tech./Fusion"}
+MACRO {npbpc} {"Nucl.\ Phys.\ B (Proc.\ Suppl.)"}
 MACRO {inc} {"Nuovo Cimento"}
 MACRO {nc} {"Nuovo Cimento"}
-MACRO {pf} {"Phys. Fluids"}
-MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."}
-MACRO {pfb} {"Phys. Fluids B: Plasma Phys."}
-MACRO {pl} {"Phys. Lett."}
-MACRO {pla} {"Phys. Lett. A"}
-MACRO {plb} {"Phys. Lett. B"}
-MACRO {prep} {"Phys. Rep."}
-MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"}
-MACRO {pp} {"Phys. Plasmas"}
-MACRO {pop} {"Phys. Plasmas"}
-MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"}
-MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"}
-MACRO {prl} {"Phys. Rev. Lett."}
-MACRO {pr} {"Phys. Rev."}
-MACRO {physrev} {"Phys. Rev."}
-MACRO {pra} {"Phys. Rev. A"}
-MACRO {prb} {"Phys. Rev. B"}
-MACRO {prc} {"Phys. Rev. C"}
-MACRO {prd} {"Phys. Rev. D"}
-MACRO {pre} {"Phys. Rev. E"}
-MACRO {ps} {"Phys. Scripta"}
-MACRO {procrsl} {"Proc. Roy. Soc. London"}
-MACRO {rmp} {"Rev. Mod. Phys."}
-MACRO {rsi} {"Rev. Sci. Inst."}
+MACRO {pf} {"Phys.\ Fluids"}
+MACRO {pfa} {"Phys.\ Fluids A: Fluid Dyn."}
+MACRO {pfb} {"Phys.\ Fluids B: Plasma Phys."}
+MACRO {pl} {"Phys.\ Lett."}
+MACRO {pla} {"Phys.\ Lett.\ A"}
+MACRO {plb} {"Phys.\ Lett.\ B"}
+MACRO {prep} {"Phys.\ Rep."}
+MACRO {pnas} {"Proc.\ Nat.\ Acad.\ Sci.\ USA"}
+MACRO {pp} {"Phys.\ Plasmas"}
+MACRO {pop} {"Phys.\ Plasmas"}
+MACRO {ppcf} {"Plasma Phys.\ \& Controlled Fusion"}
+MACRO {phitrsl} {"Philos.\ Trans.\ Roy.\ Soc.\ London"}
+MACRO {prl} {"Phys.\ Rev.\ Lett."}
+MACRO {pr} {"Phys.\ Rev."}
+MACRO {physrev} {"Phys.\ Rev."}
+MACRO {pra} {"Phys.\ Rev.\ A"}
+MACRO {prb} {"Phys.\ Rev.\ B"}
+MACRO {prc} {"Phys.\ Rev.\ C"}
+MACRO {prd} {"Phys.\ Rev.\ D"}
+MACRO {pre} {"Phys.\ Rev.\ E"}
+MACRO {ps} {"Phys.\ Scripta"}
+MACRO {procrsl} {"Proc.\ Roy.\ Soc.\ London"}
+MACRO {rmp} {"Rev.\ Mod.\ Phys."}
+MACRO {rsi} {"Rev.\ Sci.\ Inst."}
 MACRO {science} {"Science"}
-MACRO {sciam} {"Sci. Am."}
-MACRO {sam} {"Stud. Appl. Math."}
+MACRO {sciam} {"Sci.\ Am."}
+MACRO {sam} {"Stud.\ Appl.\ Math."}
 MACRO {st} {"Sky and Telesc."}
 MACRO {cjp} {"Czech. J. Phys."}
 MACRO {el} {"Europhys. Lett."}
@@ -2206,49 +2540,47 @@
 MACRO {suplatt} {"Superlatt. Microstr."}
 MACRO {sust} {"Supercond. Sci. Technol."}
 MACRO {znat} {"Z. Naturforsch."}
-MACRO {appopt} {"Appl. Opt."}
-MACRO {bell}   {"Bell Syst. Tech. J."}
-MACRO {ell}    {"Electron. Lett."}
-MACRO {jasp}   {"J. Appl. Spectr."}
-MACRO {jqe}    {"IEEE J. Quantum Electron."}
-MACRO {jlwt}   {"J. Lightwave Technol."}
-MACRO {jmo}    {"J. Mod. Opt."}
-MACRO {josa}   {"J. Opt. Soc. America"}
-MACRO {josaa}  {"J. Opt. Soc. Amer.~A"}
-MACRO {josab}  {"J. Opt. Soc. Amer.~B"}
-MACRO {jdp}    {"J. Phys. (Paris)"}
-MACRO {oc}     {"Opt. Commun."}
-MACRO {ol}     {"Opt. Lett."}
-MACRO {os}     {"Opt. Spectrosc."}
+MACRO {appopt} {"Appl.\ Opt."}
+MACRO {bell}   {"Bell Syst.\ Tech.\ J."}
+MACRO {ell}    {"Electron.\ Lett."}
+MACRO {jasp}   {"J.\ Appl.\ Spectr."}
+MACRO {jqe}    {"IEEE J.\ Quantum Electron."}
+MACRO {jlwt}   {"J.\ Lightwave Technol."}
+MACRO {jmo}    {"J.\ Mod.\ Opt."}
+MACRO {josa}   {"J.\ Opt.\ Soc.\ America"}
+MACRO {josaa}  {"J.\ Opt.\ Soc.\ Amer.~A"}
+MACRO {josab}  {"J.\ Opt.\ Soc.\ Amer.~B"}
+MACRO {jdp}    {"J.\ Phys.\ (Paris)"}
+MACRO {oc}     {"Opt.\ Commun."}
+MACRO {ol}     {"Opt.\ Lett."}
+MACRO {os}     {"Opt.\ Spectrosc."}
 MACRO {phtl}   {"IEEE Photon. Technol. Lett."}
-MACRO {pspie}  {"Proc. Soc. Photo-Opt. Instrum. Eng."}
+MACRO {pspie}  {"Proc.\ Soc.\ Photo-Opt.\ Instrum. Eng."}
 MACRO {vr}     {"Vision Res."}
-MACRO {zph}    {"Z. f. Physik"}
-MACRO {zphb}   {"Z. f. Physik~B"}
-MACRO {zphd}   {"Z. f. Physik~D"}
+MACRO {zph}    {"Z.\ f.\ Physik"}
+MACRO {zphb}   {"Z.\ f.\ Physik~B"}
+MACRO {zphd}   {"Z.\ f.\ Physik~D"}
 MACRO {sse} {"Solid-State Electron."}
 MACRO {pss} {"Phys. Sol. State"}
 MACRO {nl}  {"Nano Lett."}
-MACRO {sjpp} {"Sov. J. Plasma Phys."}
-MACRO {spd}  {"Sov. Phys.--Doklady"}
-MACRO {sptp} {"Sov. Phys.--Tech. Phys."}
-MACRO       {spu}  {"Sov. Phys.--Uspekhi"}
+MACRO {sjpp} {"Sov.\ J.\ Plasma Phys."}
+MACRO {spd}  {"Sov.\ Phys.--Doklady"}
+MACRO {sptp} {"Sov.\ Phys.--Tech. Phys."}
+MACRO {spu}  {"Sov.\ Phys.--Uspekhi"}
 MACRO {ufn}  {"\CYRU\CYRF\CYRN"}
 MACRO {pu}  {"Phys.--Uspekhi"}
-MACRO {sjot} {"Sov. J. Opt. Technol."}
-MACRO {sjqe} {"Sov. J. Quantum Electron."}
-MACRO {sleb} {"Sov. Phys.--Leb. Inst. Rep."}
-MACRO {stph} {"Sov. Phys.--Techn. Phys."}
-MACRO {stphl}{"Sov. Techn. Phys. Lett."}
+MACRO {sjot} {"Sov.\ J.\ Opt.\ Technol."}
+MACRO {sjqe} {"Sov.\ J.\ Quantum Electron."}
+MACRO {sleb} {"Sov.\ Phys.--Leb.\ Inst.\ Rep."}
+MACRO {stph} {"Sov.\ Phys.--Techn.\ Phys."}
+MACRO {stphl}{"Sov.\ Techn.\ Phys.\ Lett."}
 
 READ
 
-
 FUNCTION {sortify}
 { purify$
   "l" change.case$
 }
-
 %% =====================================
 %% This version from old Gost package
 %%<*!natbib>
@@ -2335,10 +2667,9 @@
         {author sort.format.names }
         {title sort.format.title}
       if$
-     }
+     }   
   if$
 }
-
 FUNCTION {presort}%#1
 {
   author.title.sort
@@ -2397,15 +2728,7 @@
   "\providecommand*{\BibUrl}[1]{\url{#1}}"           write$ newline$
   "\providecommand{\BibAnnote}[1]{}"                 write$ newline$
   "\providecommand*{\BibEmph}[1]{#1}"                write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{---}" write$ newline$
-  %\DeclareUTFcharacter[\UTFencname]{x2014}{\cyrdash}
-  %"\let\cyrdash\textemdash" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\hbox to.8em{--\hss--}}" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\textemdash}" write$ newline$
   "\ProvideTextCommandDefault{\cyrdash}{\iflanguage{russian}{\hbox to.8em{--\hss--}}{\textemdash}}" write$ newline$
-  %%"\ProvideTextCommandDefault{\cyrdash}{%"  write$ newline$
-  %%"  \iflanguage{russian}{\hbox to.8em{--\hss--}}{%" write$ newline$
-  %%"    \iflanguage{ukrainian}{\hbox to.8em{--\hss--}}{\textemdash}}}"  write$ newline$
   "\providecommand*{\BibDash}{\ifdim\lastskip>0pt\unskip\nobreak\hskip.2em plus 0.1em\fi" write$ newline$
   "\cyrdash\hskip.2em plus 0.1em\ignorespaces}" write$ newline$
   "\renewcommand{\newblock}{\ignorespaces}" write$ newline$
@@ -2428,5 +2751,6 @@
 
 EXECUTE {end.bib}
 
+\endinput
 %%
 %% End of file `gost2003s.bst'.

Modified: trunk/Master/texmf-dist/bibtex/bst/gost/gost2008.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/gost/gost2008.bst	2020-12-29 00:54:00 UTC (rev 57250)
+++ trunk/Master/texmf-dist/bibtex/bst/gost/gost2008.bst	2020-12-29 02:19:51 UTC (rev 57251)
@@ -4,30 +4,22 @@
 %%
 %% The original source files were:
 %%
-%% gost.dtx  (with options: `bst,modern,eprint')
+%% gost.dtx  (with options: `bst,eprint')
 %% 
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%   http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
+%% IMPORTANT NOTICE:
 %% 
-%% This file has the LPPL maintenance status "maintained".
-%% Maintained by Igor A. Kotelnikov.
+%% For the copyright see the source file.
 %% 
-%% Current version: 1.2j, 2017.01.12
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from gost2008.bst.
 %% 
-%% Please, send bug report via e-mail:
-%%   kia999 at mail dot ru <Igor Kotelnikov>
-%% or
-%%   polyama at yahoo dot com <Maksym Polyakov>
+%% For distribution of the original source see the terms
+%% for copying and modification in the file gost.dtx.
 %% 
-
-
-
-%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
 %% This bibstyle attempts to format bibliography according to
 %% GOST 7.0.5-2008 for bibliographic reference.
 
@@ -67,15 +59,15 @@
     language
     langid          % new in v1.2c
     booklanguage
-    %date            % not implemented yet...
+    date            % new in v1.2i
     pagetotal
     url
     urldate
     isbn
     doi
+    eprint
     eprinttype      % = archivePrefix
     eprintclass     % = primaryClass
-    eprint
     % new in v1.2f:
     % appear in biblatex:
     %addendum       % not implemented yet...
@@ -100,9 +92,24 @@
   {}
   { label }
 
-INTEGERS { output.state before.all mid.sentence after.sentence after.block
-after.dblslash after.slash after.colon after.semicolon }
+INTEGERS {
+    output.state
+    before.all
+    mid.sentence
+    after.sentence
+    after.block
+    after.dblslash
+    after.slash
+    after.colon
+    after.semicolon
+}
 
+STRINGS { curlanguage }
+
+STRINGS { s t }
+
+STRINGS { y m d }   % new in v.1.2j
+
 FUNCTION {init.state.consts}
 { #0 'before.all :=
   #1 'mid.sentence :=
@@ -114,11 +121,18 @@
   #7 'after.semicolon :=
 }
 
-STRINGS { s t }
+FUNCTION {set.language}
+{ langid empty$
+    { language empty$
+        { "english" 'curlanguage := }
+        { language  'curlanguage := }
+      if$
+    }
+    { langid  'curlanguage := }
+  if$
+}
 
-STRINGS { curlanguage }
-
-FUNCTION {change.language}
+FUNCTION {reset.language}
 { booklanguage empty$
     { "" }
     { booklanguage  'curlanguage :=
@@ -143,7 +157,7 @@
         { output.state before.all =
             'write$
             { output.state after.dblslash =
-                { "~//" * change.language * " " * write$ }
+                { "~//" * reset.language * " " * write$ }
                 { output.state after.slash =
                     { "~/ " * write$ }
                     { output.state after.colon =
@@ -177,7 +191,9 @@
 FUNCTION {output.check}
 { 't :=
   duplicate$ empty$
-    { pop$ "empty " t * " in " * cite$ * warning$ }
+    { pop$
+      "empty " t * " in " * cite$ * warning$
+    }
     'output.nonnull
   if$
 }
@@ -256,13 +272,6 @@
   if$
 }
 
-
-FUNCTION {non.stop}
-{ duplicate$
-   "}" * add.period$
-   #-1 #1 substring$ "." =
-}
-
 FUNCTION {new.block.checka}
 { empty$
     'skip$
@@ -309,9 +318,21 @@
   if$
 }
 
+%%
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {spaces.around}
+{ " " swap$ * " " * }
+
 FUNCTION {emphasize}
 { duplicate$ empty$
-    { pop$ "" }
+    %{ pop$ "" }
+    'skip$       % v.1.2k
     { "\BibEmph{" swap$ * "}" * }
   if$
 }
@@ -323,7 +344,7 @@
   if$
 }
 
-FUNCTION {enclose.square.brackets}
+FUNCTION {bracketise}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -331,7 +352,7 @@
   if$
 }
 
-FUNCTION {enclose.round.brackets}
+FUNCTION {paranthesify}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -339,25 +360,82 @@
   if$
 }
 
-FUNCTION {space.word}
-{ " " swap$ * " " * }
 
-FUNCTION {bbl.edby}    %  { "\bbledby{}" }
+FUNCTION {tie.connect}
+ {"~" swap$ * *
+ }
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { t #1 #2 substring$ "--" = not
+            { "--" *
+              t #2 global.max$ substring$ 't :=
+            }
+            {   { t #1 #1 substring$ "-" = }
+                { "-" *
+                  t #2 global.max$ substring$ 't :=
+                }
+              while$
+            }
+          if$
+        }
+        { t #1 #1 substring$ *
+          t #2 global.max$ substring$ 't :=
+        }
+      if$
+    }
+  while$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+        { #1 'multiresult := }
+        { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {bbl.edby}
 { curlanguage "english" =
-   {"Ed.\ by"}
+   {"ed.\ by"}
    { curlanguage "ukrainian" =
-      {"{\cyr\CYRP\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
+      {"{\cyr\cyrp\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
       { curlanguage "russian" =
-         {"{\cyr\CYRP\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
+         {"{\cyr\cyrp\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
          { curlanguage "german" =
             { "ed." }
-            {"language is not defined: " language "edby" * * warning$ "Ed.\ by"}
+            {"language is not defined: " curlanguage " in bbl.edby" * * warning$ "Ed.\ by"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.cmplr}
+FUNCTION {bbl.compiler}
 { curlanguage "english" =
    { "Compiler"}
    { curlanguage "german" =
@@ -366,15 +444,15 @@
          {"{\cyr\CYRU\cyrk\cyrl.}"}
          { curlanguage "russian" =
             {"{\cyr\CYRS\cyro\cyrs\cyrt.}"}
-            {"language is not defined: " language  "cmplr" * * warning$ "Compiler"}
+            {"language is not defined: " curlanguage  " in bbl.compiler" * * warning$ "Compiler"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.edition} %  { "\bbledition{}" }
+FUNCTION {bbl.edition}
 { curlanguage "english" =
-   {"edition"}
+   {"ed."}
    { curlanguage "ukrainian" =
       {"{\cyr\cyrv\cyri\cyrd.}"}
       { curlanguage "russian" =
@@ -385,7 +463,7 @@
                {"edizione"}
                { curlanguage "french" =
                   {"\'{e}dition"}
-                  {"language is not defined: " language  "edition" * * warning$ "edition"}
+                  {"language is not defined: " curlanguage  " in bbl.edition" * * warning$ "ed."}
                if$}
             if$}
          if$}
@@ -393,7 +471,7 @@
    if$}
 if$}
 
-FUNCTION {bbl.vvolume} %  { "\bblVolume{}" }
+FUNCTION {bbl.vvolume}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Volume"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -400,12 +478,12 @@
       { "\CYRT\cyro\cyrm" }
       { curlanguage "german" =
          {"{Band}"} %%%% { "Volumen" }
-         {"language is not defined: " language  "vvolume" * * warning$ "Volume"}
+         {"language is not defined: " curlanguage  " in bbl.vvolume" * * warning$ "Volume"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.vvol}    %  { "\bblVol{}" }
+FUNCTION {bbl.vvol}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Vol."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -412,12 +490,12 @@
       {"\CYRT."}
       { curlanguage "german" =
          {"{Bd.}"} %%%% { "Vol." }
-         {"language is not defined: " language  "vvol" * * warning$ "Vol."}
+         {"language is not defined: " curlanguage  " in bbl.vvol" * * warning$ "Vol."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iissue}  %  { "\bblIssue{}" }
+FUNCTION {bbl.iissue}
 { curlanguage "english" =
    {"Issue"}
    { curlanguage "ukrainian" =
@@ -426,13 +504,13 @@
          {"\CYRV\cyrery\cyrp\cyru\cyrs\cyrk"}
          { curlanguage "german" =
             {"{Heft}"} %%%% { "Ausgabe" }
-            {"language is not defined: " language "iissue" * * warning$ "Issue"}
+            {"language is not defined: " curlanguage " in bbl.iissue" * * warning$ "Issue"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iiss}  %  { "\bblIss{}" }
+FUNCTION {bbl.iiss}
 { curlanguage "english" =
    {"Iss."}
    { curlanguage "ukrainian" =
@@ -441,13 +519,13 @@
          {"\CYRV\cyrery\cyrp."}
          { curlanguage "german" =
             {"{H.}"}
-            {"language is not defined: " language "iiss" * * warning$ "Iss."}
+            {"language is not defined: " curlanguage " in bbl.iiss" * * warning$ "Iss."}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.of}      %  { "\bblof{}" }
+FUNCTION {bbl.of}
 { curlanguage "english" =
    {"of"}
    { curlanguage "german" =
@@ -456,13 +534,13 @@
          { "{\cyr\cyrii\cyrz}" }
          { curlanguage "russian" =
             { "{\cyr\cyri\cyrz}" }
-            {"language is not defined: " language "of" * * warning$ "of"}
+            {"language is not defined: " curlanguage " in bbl.of" * * warning$ "of"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.etal}      %  { "\bblof{}" }
+FUNCTION {bbl.etal}
 { curlanguage "english" =
    {"et~al."}
    { curlanguage "german" =
@@ -471,14 +549,31 @@
          {"{\cyr\cyrt\cyra~\cyrii\cyrn.}"}
          { curlanguage "russian" =
             {"{\cyr\cyri~\cyrd\cyrr.}"}
-            {"language is not defined: " language  "et~al" * * warning$ "et~al."}
+            {"language is not defined: " curlanguage  " in bbl.etal" * * warning$ "et~al."}
          if$}
       if$}
    if$}
 if$}
 
+FUNCTION {bbl.and}
+{ curlanguage "english" =
+  {"and"}
+   { curlanguage "german" =
+      { "und" }
+      { curlanguage "ukrainian" =
+         {"{\cyrii}"}
+         { curlanguage "russian" =
+            {"{\cyri}"}
+            { curlanguage "french" =
+                {"et"}
+                {"language is not defined: " curlanguage  " in bbl.and" * * warning$ "and"}
+            if$}
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {bbl.nnumber} %  { "\bblNumber{}" }
+FUNCTION {bbl.nnumber}
 { curlanguage "english" =
    {"Number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -485,12 +580,12 @@
       { "\CYRN\cyro\cyrm\cyre\cyrr" }
       { curlanguage "german" =
          {"{Heft}"} %%% { "Anzahl" }
-         {"language is not defined: " language  "nnumber" * * warning$ "Number"}
+         {"language is not defined: " curlanguage  " in bbl.nnumber" * * warning$ "Number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.number}  %  { "\bblnumber{}" }
+FUNCTION {bbl.number}
 { curlanguage "english" =
    {"number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -497,27 +592,30 @@
       {"{\cyr\cyrn\cyro\cyrm\cyre\cyrr}"}
       { curlanguage "german" =
          {"{Heft}"} %%% { "anzahl" }???
-         {"language is not defined: " language  "number" * * warning$ "number"}
+         {"language is not defined: " curlanguage  " in bbl.number" * * warning$ "number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nr}     %   { "\bblno{}" }
+FUNCTION {bbl.nr}
 { curlanguage "english" =
    {"no."}
    { curlanguage "italian" =
-      { "no" }
+      { "no." }
       { curlanguage "ukrainian" = curlanguage "russian" = or
          { "{\cyr\textnumero}" }
          { curlanguage "german" =
-            {"{H.}"} %%% { "an." }
-            {"language is not defined: " language "nr" * * warning$ "no."}
+            {"{nu.}"} %%% { "an." }
+            { curlanguage "french" =
+                { "no." }
+                {"language is not defined: " curlanguage " in bbl.nr" * * warning$ "no."}
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nnr}     %   { "\bblno{}" }
+FUNCTION {bbl.nnr}
 { curlanguage "english" =
    {"No."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -524,30 +622,30 @@
       { "{\cyr\textnumero}" }
       { curlanguage "german" =
          {"{H.}"} %%% { "an." }
-         {"language is not defined: " language  "nnr" * * warning$ "No."}
+         {"language is not defined: " curlanguage  " in bbl.nnr" * * warning$ "No."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.in}    %    { "\bblin{}" }
+FUNCTION {bbl.in}
 { curlanguage "english" = curlanguage "german" = or
    {"in"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "{\cyr\cyrv}" }
-      {"language is not defined: " language  "in" * * warning$ "in"}
+      {"language is not defined: " curlanguage  " in bbl.in" * * warning$ "in"}
    if$}
 if$}
 
-FUNCTION {bbl.iin}  %     { "\bblIn{}" }
+FUNCTION {bbl.iin}
 { curlanguage "english" = curlanguage "german" = or
    {"In"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "\CYRV" }
-      {"language is not defined: " language  "iin" * * warning$ "In"}
+      {"language is not defined: " curlanguage  " in bbl.iin" * * warning$ "In"}
    if$}
 if$}
 
-FUNCTION {bbl.pages}    % { "\bblpp." }
+FUNCTION {bbl.pages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."} %%% {"pp."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -554,12 +652,12 @@
       {"{\cyr\cyrs.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "pages" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.pages" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.page}   %   { "\bblp."
+FUNCTION {bbl.page}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -566,12 +664,12 @@
       {"{\cyr\cyrs.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "page" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.page" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppages}%    { "\bblPp." }
+FUNCTION {bbl.ppages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."} %%%% { "Pp." }
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -578,12 +676,12 @@
       {"{\cyr\CYRS.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language "ppages" * * warning$ "P."}
+         {"language is not defined: " curlanguage " in bbl.ppages" * * warning$ "P."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppage}  %   { "\bblP." }
+FUNCTION {bbl.ppage}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -590,7 +688,7 @@
       {"{\cyr\CYRS.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language  "ppage" * * warning$ "P."}
+         {"language is not defined: " curlanguage  " in bbl.ppage" * * warning$ "P."}
       if$}
    if$}
 if$}
@@ -604,7 +702,10 @@
          { "{\CYRR\cyre\cyrzh\cyri\cyrm\ \cyrd\cyro\cyrs\cyrt\cyru\cyrp\cyra}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "Mode d'acc\`{e}s" }
+                { "language is not defined: " curlanguage " in bbl.url" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
@@ -618,13 +719,16 @@
          { "{\cyrd\cyra\cyrt\cyra\ \cyro\cyrb\cyrr\cyra\cyrshch\cyre\cyrn\cyri\cyrya}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "{en ligne; acc\'{e}d\'{e}}" }
+                { "language is not defined: " curlanguage " in bbl.urldate" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.techreport} % rename to bbl.techreport
+FUNCTION {bbl.techreport}
 { curlanguage "english" =
    { "Rep." }
    { curlanguage "german" =
@@ -631,7 +735,7 @@
       { "Bericht" }
       { curlanguage "russian" =
          { "{\cyr\CYRO\cyrt\cyrch\cyre\cyrt}" }
-         { "language is not defined: " language "techrep" * * warning$ "Rep." }
+         { "language is not defined: " curlanguage " in bbl.techrep" * * warning$ "Rep." }
       if$}
    if$}
 if$}
@@ -640,12 +744,12 @@
 { curlanguage "english" =
    { "Master's thesis" }
    { curlanguage "german" =
-      { "Diss.~Mag." }
+      { "diss.~mag." }
       { curlanguage "russian" =
-        { "{\cyr\CYRK\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
+        { "{\cyr\cyrk\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
           "\cyro\cyrn\cyrn\cyra\cyrya\ \cyrr\cyra\cyrb\cyro\cyrt\cyra\ " *
           "\cyrm\cyra\cyrg\cyri\cyrs\cyrt\cyrr\cyra}" * }
-         { "language is not defined: " language "mthesis" * * warning$ "Master's thesis" }
+         { "language is not defined: " curlanguage " in bbl.mthesis" * * warning$ "Master's thesis" }
       if$}
    if$}
 if$}
@@ -654,13 +758,13 @@
 { curlanguage "english" =
    { "Ph.\,D. thesis" }
    { curlanguage "german" =
-      { "Diss.~Ph.\,D." }
+      { "diss.~Ph.\,D." }
       { curlanguage "russian" =
          { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrk\cyra\cyrn\cyrd. "
            "\cyrn\cyra\cyru\cyrk}" * }
          { curlanguage "french" =
-           { "Th\`{e}se de doctorat" }
-           { "language is not defined: " language "phdthesis" * * warning$ "Ph.\,D. thesis" }
+           { "th\`{e}se de doctorat" }
+           { "language is not defined: " curlanguage " in bbl.phdthesis" * * warning$ "Ph.\,D. thesis" }
          if$}
       if$}
    if$}
@@ -668,36 +772,23 @@
 
 FUNCTION {bbl.docthesis}
 { curlanguage "english" =
-   { "Dr.\,Sci. dissertation" }
+   { "dr.\,sci. dissertation" }
    { curlanguage "german" =
-      { "Diss.~Dr." }
+      { "diss.~dr." }
       { curlanguage "russian" =
          { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrd-\cyrr\cyra\ "
            "\cyrn\cyra\cyru\cyrk}" * }
-         { "language is not defined: " language "docthesis" * * warning$ "Dr.\,Sci. dissertation" }
+         { "language is not defined: " curlanguage " in bbl.docthesis" * * warning$ "Dr.\,Sci. dissertation" }
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.thesis.type}
-{ type "mathesis" =
-  { bbl.mathesis }
-  { type "phdthesis" =
-    { bbl.phdthesis }
-    { type "docthesis" =
-      { bbl.docthesis }
-      %%{ "!!!" type * "t" change.case$ }
-      { type "t" change.case$ }
-    if$}
-  if$}
-if$}
-
 FUNCTION {bbl.nnoaddress}
 { curlanguage "english" =
    { "S.\ l." }
    { curlanguage "russian" =
       { "{\cyr\CYRB.\ \cyrm.}" }
-      { "language is not defined: " language "nnoaddress" * * warning$ "S.\ l." }
+      { "language is not defined: " curlanguage " in bbl.nnoaddress" * * warning$ "S.\ l." }
    if$}
 if$}
 
@@ -706,7 +797,7 @@
    { "s.\ n." }
    { curlanguage "russian" =
       { "{\cyr\cyrb.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "s.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "s.\ n." }
    if$}
 if$}
 
@@ -715,7 +806,7 @@
    { "S.\ n." }
    { curlanguage "russian" =
       { "{\cyr\CYRB.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "S.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "S.\ n." }
    if$}
 if$}
 
@@ -724,7 +815,7 @@
    { "Text" }
    { curlanguage "russian" = curlanguage "ukrainian" = or
       { "{\cyr\CYRT\cyre\cyrk\cyrs\cyrt}" }
-      { "language is not defined: " language "media" * * warning$ "Text" }
+      { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Text" }
    if$}
 if$}
 
@@ -737,7 +828,7 @@
       { curlanguage "ukrainian" =
         { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
           "\cyrr\cyre\cyrs\cyru\cyrr\cyrs}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -751,7 +842,7 @@
       { curlanguage "ukrainian" =
         { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
           "\cyrr\cyre\cyrs\cyru\cyrr\cyrs\ \cyro\cyrn\cyrl\cyra\cyrishrt\cyr}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -763,7 +854,7 @@
       { "\cyrr\cyru\cyrk." }
       { curlanguage "ukrainian" =
         { "\cyrr\cyru\cyrk." }
-        { "language is not defined: " language "chief" * * warning$ "chief" }
+        { "language is not defined: " curlanguage " in bbl.chief" * * warning$ "chief" }
       if$}
    if$}
 if$}
@@ -770,12 +861,12 @@
 
 FUNCTION {bbl.executor}
 { curlanguage "english" =
-   { "Executor" }
+   { "executor" }
    { curlanguage "russian" =
       { "{\cyr\cyri\cyrs\cyrp\cyro\cyrl\cyrn.}" }
       { curlanguage "ukrainian" =
         { "{\cyr\cyrv\cyri\cyrk\cyro\cyrn\cyra\cyrv\cyre\cyrc\cyrsftsn}" }
-        { "language is not defined: " language "executor" * * warning$ "executor" }
+        { "language is not defined: " curlanguage " in bbl.executor" * * warning$ "executor" }
       if$}
    if$}
 if$}
@@ -797,7 +888,7 @@
       { "ang." }
       { curlanguage "russian" =
         { "{\cyr\cyrz\cyra\cyrya\cyrv\cyrl.}" }
-        { "language is not defined: " language "req" * * warning$ "req" }
+        { "language is not defined: " curlanguage " in bbl.req" * * warning$ "req" }
       if$
       }
     if$
@@ -813,7 +904,7 @@
       { "ausg." }
       { curlanguage "russian" =
         { "{\cyr\cyro\cyrp\cyru\cyrb\cyrl.}" }
-        { "language is not defined: " language "publication" * * warning$ "publication" }
+        { "language is not defined: " curlanguage " in bbl.publication" * * warning$ "publication" }
       if$
       }
     if$
@@ -829,7 +920,7 @@
       { "Prioritat" }
       { curlanguage "russian" =
         { "{\cyr\cyrp\cyrr\cyri\cyro\cyrr\cyri\cyrt\cyre\cyrt}" }
-        { "language is not defined: " language "priority" * * warning$ "priority" }
+        { "language is not defined: " curlanguage " in bbl.priority" * * warning$ "priority" }
       if$
       }
     if$
@@ -837,69 +928,462 @@
   if$
 }
 
+FUNCTION {bbl.jan}
+{ curlanguage "english" =
+   {"Jan."}
+   { curlanguage "ukrainian" =
+      {"\CYRS\cyrii\cyrch."}
+      { curlanguage "russian" =
+         { "\CYRYA\cyrn\cyrv." }
+         { curlanguage "german" =
+            { "Jan." } % Januar
+            { "language is not defined: bbl.jan for " curlanguage * warning$ "Jan." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.feb}
+{ curlanguage "english" =
+   {"Feb."}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyryu\cyrt."}
+      { curlanguage "russian" =
+         { "\CYRF\cyre\cyrv\cyrr." }
+         { curlanguage "german" =
+            {"Feb."} % Februar
+            {"language is not defined: bbl.feb for " curlanguage * warning$ "Feb."}
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.mar}
+{ curlanguage "english" =
+   {"Mar."}
+   { curlanguage "ukrainian" =
+      {"\CYRB\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRM\cyra\cyrr\cyrt" }
+         { curlanguage "german" =
+            {"März"} % März
+            {"language is not defined: bbl.mar for " curlanguage * warning$ "Mar."}
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.apr}
+{ curlanguage "english" =
+   {"Apr."}
+   { curlanguage "ukrainian" =
+      {"\CYRK\cyrv\cyrii\cyrt."}
+      { curlanguage "russian" =
+            { "\CYRA\cyrp\cyrr." }
+         { curlanguage "german" =
+            {"Apr."} % April
+            { "language is not defined: bbl.apr for " curlanguage * warning$ "Apr." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.may}
+{ curlanguage "english" =
+   {"May"}
+   { curlanguage "ukrainian" =
+      {"\CYRT\cyrr\cyra\cyrv."}
+      { curlanguage "russian" =
+            { "\CYRM\cyra\cyrishrt" }
+         { curlanguage "german" =
+            {"Mai"}
+            { "language is not defined: bbl.may for " curlanguage * warning$ "May" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jun}
+{ curlanguage "english" =
+   {"June"}
+   { curlanguage "ukrainian" =
+      {"\CYRCH\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRI\cyryu\cyrn\cyrsftsn" }
+         { curlanguage "german" =
+            {"Juni"}
+            { "language is not defined: bbl.jun for " curlanguage * warning$ "June" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jul}
+{ curlanguage "english" =
+   {"July"}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyri\cyrp."}
+      { curlanguage "russian" =
+            { "\CYRI\cyryu\cyrl\cyrsftsn" }
+         { curlanguage "german" =
+            {"Juli"}
+            { "language is not defined: bbl.jul for " curlanguage * warning$ "July" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.aug}
+{ curlanguage "english" =
+   {"Aug."}
+   { curlanguage "ukrainian" =
+      {"\CYRS\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRA\cyrv\cyrg\." }
+         { curlanguage "german" =
+            {"Aug."} % August
+            { "language is not defined: bbl.aug for " curlanguage * warning$ "Aug." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.sep}
+{ curlanguage "english" =
+   {"Sep."}
+   { curlanguage "ukrainian" =
+      {"\CYRV\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRS\cyre\cyrn\cyrt." }
+         { curlanguage "german" =
+            {"Sep."} % September
+            { "language is not defined: bbl.sep for " curlanguage * warning$ "Sep." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.oct}
+{ curlanguage "english" =
+   {"Oct."}
+   { curlanguage "ukrainian" =
+      {"\CYRZH\cyro\cyrn."}
+      { curlanguage "russian" =
+            { "\CYRO\cyrk\cyrt." }
+         { curlanguage "german" =
+            {"Okt."} % Oktober
+            { "language is not defined: bbl.oct for " curlanguage * warning$ "Oct." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.nov}
+{ curlanguage "english" =
+   {"Nov."}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyri\cyrs."}
+      { curlanguage "russian" =
+            { "\CYRN\cyro\cyrya\cyrb." }
+         { curlanguage "german" =
+            {"Nov."} % November
+            { "language is not defined: bbl.nov for " curlanguage * warning$ "Nov." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.dec}
+{ curlanguage "english" =
+   {"Dec."}
+   { curlanguage "ukrainian" =
+      {"\CYRG\cyrr\cyru\cyrd."}
+      { curlanguage "russian" =
+            { "\CYRD\cyre\cyrk." }
+         { curlanguage "german" =
+            {"Dez."} % Dezember
+            { "language is not defined: bbl.dec for " curlanguage * warning$ "Dec." }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {bbl.arxiv}
+{ curlanguage "english" =
+   { "ArXiv" }
+   { curlanguage "ukrainian" =
+      {"ArXiv"}
+      { curlanguage "russian" =
+         { "ArXiv" }
+         { curlanguage "german" =
+            { "ArXiv" }
+            { "language is not defined: bbl.arxiv for " curlanguage * warning$ "ArXiv" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jstor}
+{ curlanguage "english" =
+   { "JSTOR" }
+   { curlanguage "ukrainian" =
+      {"JSTOR"}
+      { curlanguage "russian" =
+         { "JSTOR" }
+         { curlanguage "german" =
+            { "JSTOR" }
+            { "language is not defined: bbl.jstor for " curlanguage * warning$ "JSTOR" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.pubmed}
+{ curlanguage "english" =
+   { "PubMed" }
+   { curlanguage "ukrainian" =
+      {"PubMed"}
+      { curlanguage "russian" =
+         { "PubMed" }
+         { curlanguage "german" =
+            { "PubMed" }
+            { "language is not defined: bbl.pubmed for " curlanguage * warning$ "PubMed" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.googlebooks}
+{ curlanguage "english" =
+   { "Google Books" }
+   { curlanguage "ukrainian" =
+      {"Google \CYRK\cyrn\cyri\cyrg\cyri"}
+      { curlanguage "russian" =
+         { "Google \CYRK\cyrn\cyri\cyrg\cyri" }
+         { curlanguage "german" =
+            { "Google Books" }
+            { "language is not defined: bbl.googlebooks for " curlanguage * warning$ "Google Books" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.hdl}
+{ curlanguage "english" =
+   { "Handle.Net" }
+   { curlanguage "ukrainian" =
+      {"Handle.Net"}
+      { curlanguage "russian" =
+         { "Handle.Net" }
+         { curlanguage "german" =
+            { "Handle.Net" }
+            { "language is not defined: bbl.hdl for " curlanguage * warning$ "Handle.Net" }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {address.or.location}
+{
+  address empty$
+    { location }
+    { address }
+  if$
+}
+
+FUNCTION {specialitycode.or.number}
+{
+  specialitycode empty$
+    { number }
+    { specialitycode }
+  if$
+}
+
+FUNCTION {institution.or.school}
+{
+  institution empty$
+    { school}
+    { institution }
+  if$
+}
+FUNCTION {date.to.year}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #3 >
+        {
+          date #1 #4 substring$ 'y :=
+          y
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {date.to.month}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #6 >
+        {
+          date #6 #2 substring$ 'm :=
+          m
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {date.to.day}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #10 =
+        {
+          date #9 #2 substring$ 'd :=
+          d
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {year.or.date.to.year}
+{
+  year empty$
+    {
+      date.to.year
+    }
+    { year }
+  if$
+}
+
+FUNCTION {format.month}
+{ month empty$
+    { "" }
+    { month "Jan." =
+        { bbl.jan }
+    { month "Feb." =
+        { bbl.feb }
+    { month "Mar." =
+        { bbl.mar }
+    { month "Apr." =
+        { bbl.apr }
+    { month "May" =
+        { bbl.may }
+    { month "Jun." =
+        { bbl.jun }
+    { month "Jul." =
+        { bbl.jul }
+    { month "Aug." =
+        { bbl.aug }
+    { month "Sep." =
+        { bbl.sep }
+    { month "Oct." =
+        { "Окт." }
+    { month "Nov." =
+        { bbl.nov }
+    { month "Dec." =
+        { bbl.dec }
+        {
+          "unknown month in " cite$ * warning$
+          month
+        }
+        if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
+    if$
+}
+FUNCTION {format.date}
+{ year.or.date.to.year empty$
+    { month empty$
+        { "" }
+        { "there's a month but no year in " cite$ * warning$
+          format.month
+        }
+      if$
+    }
+    { month empty$
+        'year.or.date.to.year
+        { year.or.date.to.year ". \BibDash " format.month * * }
+      if$
+    }
+  if$
+}
+
 INTEGERS { nameptr namesleft numnames }
 
+FUNCTION {fmt.names.first}
+{ #1
+  "{vv~}{ll}{~jj}{~f.}"
+  format.name$
+}
 
-FUNCTION {format.names}
+FUNCTION {fmt.names.three}
 {
   's :=
   #1 'nameptr :=
   s num.names$ 'numnames :=
   numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr
-      "{vv~}{ll}{~jj}{~f.}" format.name$ 't :=
-      nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
+  { namesleft #0 > }
+  { s nameptr
+      "{vv~}{ll}{~jj}{~f.}"
+    format.name$ 't :=
+    nameptr #1 >
+      { nameptr #4 = numnames #4 > and
+          { "others" 't :=
+            #1 'namesleft :=
+          }
+          'skip$
+        if$
+        namesleft #1 >
+          { ", " * t * }
+          { t "others" = t "~others" = or
+              { " " * bbl.etal * }
+              { ", " * t * }
           if$
-          namesleft #1 >
-            { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
-                { " " * bbl.etal * }
-                { ", " * t * }
-              if$
-            }
-          if$
-        }
-        't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
+          }
+        if$
+      }
+      't
+    if$
+    nameptr #1 + 'nameptr :=
+    namesleft #1 - 'namesleft :=
+  }
   while$
 }
 
-
-FUNCTION {format.names.rev}
-{
-  's :=
+FUNCTION {fmt.names.all}
+{ 's :=
   #1 'nameptr :=
   s num.names$ 'numnames :=
   numnames 'namesleft :=
     { namesleft #0 > }
     { s nameptr
-      %"{f.}{~vv}{~ll}{, jj}" format.name$ 't :=
-      "{ff}{~vv}{~ll}{, jj}" format.name$ 't :=
+      %"{vv~}{ll}" format.name$ 't :=
+      "{vv~}{ll}{~jj}{~f.}"
+      format.name$ 't :=
       nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
-          if$
-          namesleft #1 >
+        { namesleft #1 >
             { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
+            { numnames #2 >  curlanguage "english" = and
+                { "," * }
+                'skip$
+              if$
+              t "others" = t "~others" = or
                 { " " * bbl.etal * }
-                { ", " * t * }
+                { " " bbl.and " " * * * t * }
               if$
             }
           if$
@@ -912,145 +1396,57 @@
   while$
 }
 
-
-FUNCTION {format.authors}
-{ author empty$
-    { "" }
-    { author format.names emphasize}
+%%<long>    { author fmt.names.all emphasize}
+%%<!long&strict>    { author fmt.names.first emphasize}
+%%<!long&!strict>    { author fmt.names.three emphasize}
+FUNCTION {format.author}
+{
+  author empty$
+    { author } %%%'skip$
+    {author num.names$ #4 <
+      {
+       author fmt.names.three
+      }
+      { "" } %%%'skip$
+    if$}
   if$
 }
 
-
-FUNCTION {format.bookauthors}
+FUNCTION {format.bookauthors.rest}
 { bookauthor empty$
     { "" }
-    { bookauthor format.names}
+    { bookauthor fmt.names.three emphasize }
   if$
 }
 
-FUNCTION {format.authors.after}
-{ author empty$
-    { "" }
-    { author format.names.rev}
-  if$
-}
-
-FUNCTION {format.bookauthors.after}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names.rev}% always cuts to 4 persons
-  if$
-}
-
-FUNCTION {format.editors.after}
+FUNCTION {format.editors.rest}
 { editor empty$
     { "" }
-    { bbl.edby "\ " * editor format.names.rev * }
+    { bbl.edby "\ " * editor fmt.names.three * }
   if$
 }
 
-FUNCTION {format.chief.after}
+FUNCTION {format.chief.rest}
 { editor empty$
     { "" }
-    { bbl.chief "\ " * editor format.names.rev * }
+    { bbl.chief "\ " * editor fmt.names.three * }
   if$
 }
 
-FUNCTION {format.executor.after}
+FUNCTION {format.executor.rest}
 { author empty$
     { "" }
-    { bbl.executor ": " * author format.names.rev * }
+    { bbl.executor ": " * author fmt.names.three * }
   if$
 }
 
-FUNCTION {format.compiler.after}
+FUNCTION {format.compiler.rest}
 { compiler empty$
     { "" }
-    { bbl.cmplr "\ " * compiler format.names.rev * }
+    { bbl.compiler "\ " * compiler fmt.names.three * }
   if$
 }
 
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    { title "t" change.case$ }
-  if$
-}
-
-FUNCTION {format.month}
-{ month empty$
-    { "" }
-    { curlanguage "russian" =
-        { month "Jan." =
-            { "\CYRYA\cyrn\cyrv." }
-        { month "Feb." =
-            { "\CYRF\cyre\cyrv\cyrr." }
-        { month "Mar." =
-            { "\CYRM\cyra\cyrr\cyrt" }
-        { month "Apr." =
-            { "\CYRA\cyrp\cyrr." }
-        { month "May" =
-            { "\CYRM\cyra\cyrishrt" }
-        { month "Jun." =
-            { "\CYRI\cyryu\cyrn\cyrsftsn" }
-        { month "Jul." =
-            { "\CYRI\cyryu\cyrl\cyrsftsn" }
-        { month "Aug." =
-            { "\CYRA\cyrv\cyrg\." }
-        { month "Sep." =
-            { "\CYRS\cyre\cyrn\cyrt." }
-        { month "Oct." =
-            { "\CYRO\cyrk\cyrt." }
-        { month "Nov." =
-            { "\CYRN\cyro\cyrya\cyrb." }
-        { month "Dec." =
-            { "\CYRD\cyre\cyrk." }
-            { month }
-            if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
-        { month }
-        if$}
-    if$
-}
-FUNCTION {format.date}
-{ year empty$
-    { month empty$
-        { "" }
-        { "there's a month but no year in " cite$ * warning$
-          format.month
-        }
-      if$
-    }
-    { month empty$
-        'year
-        { year ". \BibDash " format.month * * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {address.or.location}
-{
-  address empty$
-    { location }
-    { address }
-  if$
-}
-
-FUNCTION {specialitycode.or.number}
-{
-  specialitycode empty$
-    { number }
-    { specialitycode }
-  if$
-}
-
-FUNCTION {institution.or.school}
-{
-  institution empty$
-    { school}
-    { institution }
-  if$
-}
 FUNCTION {output.address.publisher}
 {
   address empty$ location empty$ and
@@ -1064,21 +1460,13 @@
   if$
   publisher output
 }
-
-
 FUNCTION {output.bibitem}
-{ newline$
+{
+  set.language
+  newline$
   "\bibitem" write$
   cite$ bracify write$
   newline$
-  langid empty$
-    { language empty$
-        { "english" 'curlanguage := }
-        { language  'curlanguage := }
-      if$
-    }
-    { langid  'curlanguage := }
-  if$
   "\selectlanguageifdefined" curlanguage bracify * write$
   newline$
   ""
@@ -1085,60 +1473,6 @@
   before.all 'output.state :=
 }
 
-
-FUNCTION {n.dashify}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-        { t #1 #2 substring$ "--" = not
-            { "--" *
-              t #2 global.max$ substring$ 't :=
-            }
-            {   { t #1 #1 substring$ "-" = }
-                { "-" *
-                  t #2 global.max$ substring$ 't :=
-                }
-              while$
-            }
-          if$
-        }
-        { t #1 #1 substring$ *
-          t #2 global.max$ substring$ 't :=
-        }
-      if$
-    }
-  while$
-}
-
-FUNCTION {word.in}
-{ bbl.iin
-  " " * }
-
-FUNCTION {format.btitle}
-{ title
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
-    { "~" }
-    { " " }
-  if$
-  swap$ * *
-}
-
-FUNCTION {tie.connect}
- {"~"
-  swap$ * *
- }
-
-FUNCTION {either.or.check}
-{ empty$
-    'pop$
-    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
-  if$
-}
-
 FUNCTION {format.bvolume}
 { volume empty$
     { "" }
@@ -1145,7 +1479,7 @@
     { bbl.vvol volume tie.connect
       series empty$
         'skip$
-        { bbl.of space.word * series emphasize * }
+        { bbl.of spaces.around * series emphasize * }
       if$
       "volume and number" number either.or.check
     }
@@ -1174,31 +1508,7 @@
   if$
 }
 
-FUNCTION {is.num}
-{ chr.to.int$
-  duplicate$ "0" chr.to.int$ < not
-  swap$ "9" chr.to.int$ > not and
-}
 
-FUNCTION {extract.num}
-{ duplicate$ 't :=
-  "" 's :=
-  { t empty$ not }
-  { t #1 #1 substring$
-    t #2 global.max$ substring$ 't :=
-    duplicate$ is.num
-      { s swap$ * 's := }
-      { pop$ "" 't := }
-    if$
-  }
-  while$
-  s empty$
-    'skip$
-    { pop$ s }
-  if$
-}
-
-
 FUNCTION {convert.edition}
 { edition
 }
@@ -1214,38 +1524,6 @@
   if$
 }
 
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
-  #0 'multiresult :=
-    { multiresult not
-      t empty$ not
-      and
-    }
-    { t #1 #1 substring$
-      duplicate$ "-" =
-      swap$ duplicate$ "," =
-      swap$ "+" =
-      or or
-        { #1 'multiresult := }
-        { t #2 global.max$ substring$ 't := }
-      if$
-    }
-  while$
-  multiresult
-}
-
-%%FUNCTION {format.pages}
-%%{ pages empty$
-%%    { "" }
-%%    { pages multi.page.check
-%%        { bbl.ppages pages n.dashify tie.connect }
-%%        { bbl.ppage pages tie.connect }
-%%      if$
-%%    }
-%%  if$
-%%}
 FUNCTION {format.pages}
 { eid empty$
     {
@@ -1266,15 +1544,6 @@
   if$
 }
 
-%%FUNCTION {format.pages.page}
-%%{ pages empty$
-%%    { pagetotal empty$
-%%      { "" }
-%%      { pagetotal bbl.pages tie.connect }
-%%    if$}
-%%    { format.pages}
-%%  if$
-%%}
 FUNCTION {format.pages.page}
 { eid empty$
     { pages empty$
@@ -1337,6 +1606,19 @@
   if$
 }
 
+FUNCTION {bbl.thesis.type}
+{ type "mathesis" =
+  { bbl.mathesis }
+  { type "phdthesis" =
+    { bbl.phdthesis }
+    { type "docthesis" =
+      { bbl.docthesis }
+      %%{ "!!!" type * "t" change.case$ }
+      { type "t" change.case$ }
+    if$}
+  if$}
+if$}
+
 %%<!utf8>      bbl.thesis.type "t" change.case$
 %%<utf8>      bbl.thesis.type
 FUNCTION {format.thesis.type}
@@ -1357,81 +1639,61 @@
   if$
 }
 
-FUNCTION {author.before}
+FUNCTION {output.author.head}
 {
   author empty$
     'skip$
     {author num.names$ #4 <
-      {format.authors output
-       new.sentence}
+      {
+       author fmt.names.three output
+       new.sentence
+      }
       'skip$
     if$}
   if$
 }
 
-%%<*!long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    {bookauthor num.names$ #4 <
-%%      {format.bookauthors output
-%%       new.sentence}
-%%      'skip$
-%%    if$}
-%%  if$
-%%}
-%%</!long>
-%%<*long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    { format.bookauthors output
-%%      new.sentence
-%%    }
-%%  if$
-%%}
-%%</long>
-
-FUNCTION {author.after}
+FUNCTION {output.author.rest}
 {
   author empty$
     'skip$
     {author num.names$ #3 >
-      {format.authors.after output
-       new.semicolon }
+      { author fmt.names.all output
+        new.semicolon
+      }
       'skip$
     if$}
   if$
 }
 
-FUNCTION {bookauthor.after}
+FUNCTION {bookauthor.rest}
 {
   bookauthor empty$
     'skip$
-    {format.bookauthors.after output
-       new.semicolon }
+    {
+      bookauthor fmt.names.three output
+      new.semicolon
+    }
   if$
 }
 
-FUNCTION {editor.organization.after}
+FUNCTION {editor.organization.rest}
 {
   compiler empty$
     {}
-    { format.compiler.after  output
+    { format.compiler.rest  output
     new.semicolon
     }
   if$
   editor empty$
     {}
-    { format.editors.after  output
+    { format.editors.rest  output.nonnull
     new.semicolon
     }
   if$
   organization empty$
     {}
-    {organization output
+    {organization output.nonnull
     new.semicolon
     }
   if$
@@ -1482,7 +1744,7 @@
     'skip$
     { doi empty$
         'skip$
-        { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
+        { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * }
       if$
     }
   if$
@@ -1493,7 +1755,7 @@
     'skip$
     { media empty$
         'skip$
-        { " " * bbl.media enclose.square.brackets * }
+        { " " * bbl.media bracketise * }
       if$
     }
   if$
@@ -1574,14 +1836,15 @@
 FUNCTION {article}
 {
   output.bibitem
-  author.before
-  format.title add.media "title" output.check
+  output.author.head
+  %new.sentence
+  title add.media "title" output.check
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
-  journal emphasize add.doi "journal" output.check % new in v.2
+  journal emphasize add.doi "journal" output.check % new in v1.2
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.volume output
   format.number output
@@ -1598,11 +1861,14 @@
 FUNCTION {book}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.sentence
   format.number.series output
   new.block
@@ -1609,7 +1875,7 @@
   format.edition output
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1627,15 +1893,18 @@
 FUNCTION {booklet}
 {
   output.bibitem
-  author.before
-  format.title add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
   howpublished output
   address.or.location output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1647,15 +1916,18 @@
 FUNCTION {inbook}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  bookauthor.after
-  editor.organization.after
+  bookauthor.rest
+  editor.organization.rest
   new.block
   format.edition output
   new.block
@@ -1662,7 +1934,7 @@
   format.number.series output
   new.sentence
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1680,18 +1952,21 @@
 FUNCTION {incollection}
 {
   output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   format.number.series output
@@ -1708,15 +1983,22 @@
 FUNCTION {proceedings}
 {
   output.bibitem
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon                   % added in v.1.2k
+  titleaddon output           % added in v.1.2k
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
-  output.address.publisher
-  format.date "year" output.check
   new.block
+  format.pages.page output
+  %%%output.address.publisher  % 1.2k moved upper
+  new.block
   note output
   new.sentence
   output.eprint.url
@@ -1726,22 +2008,26 @@
 
 FUNCTION {inproceedings}
 { output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon                % added in v.1.2k
+  titleaddon output        % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
   new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
   format.pages.page output
   new.block
   note output
@@ -1761,10 +2047,12 @@
         }
       if$
     }
-    { format.authors output.nonnull }
+    { format.author output.nonnull }
   if$
   new.block
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   author empty$
     { organization empty$
     {
@@ -1781,7 +2069,7 @@
     }
   if$
   format.edition output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1794,6 +2082,8 @@
 {
   output.bibitem
   title add.media output.nonnull
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   format.type.number output
   add.blank
@@ -1801,9 +2091,9 @@
   new.colon
   ipc output
   new.slash
-  format.authors.after "author" output.check
+  format.author "author" output.check
   add.blank
-  authorcountry enclose.round.brackets output.nonnull
+  authorcountry paranthesify output.nonnull
   new.semicolon
   holder output.nonnull
   new.semicolon
@@ -1818,7 +2108,7 @@
   new.semicolon
   format.prioritydate output
   prioritynumber output
-  prioritycountry enclose.round.brackets output
+  prioritycountry paranthesify output
   new.block
   note output
   new.sentence
@@ -1831,13 +2121,15 @@
 
 FUNCTION {misc}
 { output.bibitem
-  format.authors output
+  %format.author output  % < v.1.2k
+  output.author.head    % v.1.2k
+  %new.sentence            % v.1.2k
   title howpublished new.sentence.checkb
-  format.title add.media output
+  title add.media output
   howpublished new.block.checka
   howpublished output
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1848,13 +2140,16 @@
 
 FUNCTION {unpublished}
 { output.bibitem
-  author.before
-  format.btitle "title" output.check
+  output.author.head
+  new.sentence
+  title "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note "note" output.check
   new.sentence
@@ -1865,12 +2160,14 @@
 
 FUNCTION {online}
 { output.bibitem
-  format.authors output
+  format.author output
   title howpublished new.sentence.checkb
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   howpublished new.dblslash.checka
   howpublished output
-  editor.organization.after
+  editor.organization.rest
   new.sentence
   new.block
   output.address.publisher
@@ -1889,25 +2186,24 @@
 FUNCTION {electronic} {online}
 FUNCTION {thesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
-  %%type "type" output.check
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
-  %%number output % code of the speciality
   specialitycode.or.number output % code of the speciality, new in v.1.2i
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours from the head zone
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1917,13 +2213,14 @@
   format.annote output
   fin.entry
 }
-
 %%  format.techrep.type.number output.nonnull
 %%  format.url output
 FUNCTION {report}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   type "type" output.check
   new.colon
@@ -1932,14 +2229,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -1952,9 +2249,9 @@
 
 FUNCTION {phdthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
@@ -1963,13 +2260,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1979,12 +2277,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {mastersthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.mathesis format.thesis.type output.nonnull
   new.colon
@@ -1993,13 +2290,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2009,12 +2307,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {docthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.docthesis format.thesis.type output.nonnull
   new.colon
@@ -2023,13 +2320,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicate athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2039,7 +2337,6 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {conference} { inproceedings }
 
 %%  format.url output
@@ -2047,7 +2344,7 @@
 FUNCTION {techreport}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   format.techreport.type output
   new.colon
@@ -2056,14 +2353,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -2088,96 +2385,96 @@
 MACRO {oct} {"Oct."}
 MACRO {nov} {"Nov."}
 MACRO {dec} {"Dec."}
-MACRO {aa}{"Astron. \& Astrophys."}
-MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."}
-MACRO {aj} {"Astron. J."}
+MACRO {aa}{"Astron.\ \& Astrophys."}
+MACRO {aasup}{"Astron.\ \& Astrophys.\ Suppl.\ Ser."}
+MACRO {aj} {"Astron.\ J."}
 MACRO {aph} {"Acta Phys."}
-MACRO {advp} {"Adv. Phys."}
-MACRO {ajp} {"Amer. J. Phys."}
-MACRO {ajm} {"Amer. J. Math."}
-MACRO {amsci} {"Amer. Sci."}
-MACRO {anofd} {"Ann. Fluid Dyn."}
-MACRO {am} {"Ann. Math."}
-MACRO {ap} {"Ann. Phys. (NY)"}
-MACRO {adp} {"Ann. Phys. (Leipzig)"}
-MACRO {ao} {"Appl. Opt."}
-MACRO {apl} {"Appl. Phys. Lett."}
+MACRO {advp} {"Adv.\ Phys."}
+MACRO {ajp} {"Amer.\ J.\ Phys."}
+MACRO {ajm} {"Amer.\ J.\ Math."}
+MACRO {amsci} {"Amer.\ Sci."}
+MACRO {anofd} {"Ann.\ Fluid Dyn."}
+MACRO {am} {"Ann.\ Math."}
+MACRO {ap} {"Ann.\ Phys.\ (NY)"}
+MACRO {adp} {"Ann.\ Phys.\ (Leipzig)"}
+MACRO {ao} {"Appl.\ Opt."}
+MACRO {apl} {"Appl.\ Phys.\ Lett."}
 MACRO {app} {"Astroparticle Phys."}
-MACRO {apj} {"Astrophys. J."}
-MACRO {apjsup} {"Astrophys. J. Suppl."}
-MACRO {apss} {"Astrophys. Space Sci."}
-MACRO {araa} {"Ann. Rev. Astron. Astrophys."}
-MACRO {baas} {"Bull. Amer. Astron. Soc."}
-MACRO {baps} {"Bull. Amer. Phys. Soc."}
-MACRO {cmp} {"Comm. Math. Phys."}
-MACRO {cpam} {"Commun. Pure Appl. Math."}
-MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"}
-MACRO {cpc} {"Comp. Phys. Comm."}
-MACRO {cqg} {"Class. Quant. Grav."}
-MACRO {cra} {"C. R. Acad. Sci. A"}
-MACRO {fed} {"Fusion Eng. \& Design"}
+MACRO {apj} {"Astrophys.\ J."}
+MACRO {apjsup} {"Astrophys.\ J.\ Suppl."}
+MACRO {apss} {"Astrophys.\ Space Sci."}
+MACRO {araa} {"Ann.\ Rev.\ Astron.\ Astrophys."}
+MACRO {baas} {"Bull.\ Amer.\ Astron.\ Soc."}
+MACRO {baps} {"Bull.\ Amer.\ Phys.\ Soc."}
+MACRO {cmp} {"Comm.\ Math.\ Phys."}
+MACRO {cpam} {"Commun.\ Pure Appl.\ Math."}
+MACRO {cppcf} {"Comm.\ Plasma Phys.\ \& Controlled Fusion"}
+MACRO {cpc} {"Comp.\ Phys.\ Comm."}
+MACRO {cqg} {"Class.\ Quant.\ Grav."}
+MACRO {cra} {"C.\ R.\ Acad.\ Sci.\ A"}
+MACRO {fed} {"Fusion Eng.\ \& Design"}
 MACRO {ft} {"Fusion Tech."}
-MACRO {grg} {"Gen. Relativ. Gravit."}
-MACRO {ieeens} {"IEEE Trans. Nucl. Sci."}
-MACRO {ieeeps} {"IEEE Trans. Plasma Sci."}
-MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"}
+MACRO {grg} {"Gen.\ Relativ.\ Gravit."}
+MACRO {ieeens} {"IEEE Trans.\ Nucl.\ Sci."}
+MACRO {ieeeps} {"IEEE Trans.\ Plasma Sci."}
+MACRO {ijimw} {"Interntl.\ J.\ Infrared \& Millimeter Waves"}
 MACRO {ip} {"Infrared Phys."}
 MACRO {irp} {"Infrared Phys."}
-MACRO {jap} {"J. Appl. Phys."}
-MACRO {jasa} {"J. Acoust. Soc. America"}
-MACRO {jcp} {"J. Comp. Phys."}
-MACRO {jchp} {"J. Chem. Phys."}
-MACRO {jetp} {"Sov. Phys.--JETP"}
-MACRO {jfe} {"J. Fusion Energy"}
-MACRO {jfm} {"J. Fluid Mech."}
-MACRO {jmp} {"J. Math. Phys."}
-MACRO {jne} {"J. Nucl. Energy"}
-MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."}
-MACRO {jnm} {"J. Nucl. Mat."}
-MACRO {jpc} {"J. Phys. Chem."}
-MACRO {jpp} {"J. Plasma Phys."}
-MACRO {jpsj} {"J. Phys. Soc. Japan"}
-MACRO {jsi} {"J. Sci. Instrum."}
-MACRO {jvst} {"J. Vac. Sci. \& Tech."}
+MACRO {jap} {"J.\ Appl.\ Phys."}
+MACRO {jasa} {"J.\ Acoust.\ Soc.\ America"}
+MACRO {jcp} {"J.\ Comp.\ Phys."}
+MACRO {jchp} {"J.\ Chem.\ Phys."}
+MACRO {jetp} {"Sov.\ Phys.--JETP"}
+MACRO {jfe} {"J.\ Fusion Energy"}
+MACRO {jfm} {"J.\ Fluid Mech."}
+MACRO {jmp} {"J.\ Math.\ Phys."}
+MACRO {jne} {"J.\ Nucl.\ Energy"}
+MACRO {jnec} {"J.\ Nucl.\ Energy, C: Plasma Phys., Accelerators, Thermonucl.\ Res."}
+MACRO {jnm} {"J.\ Nucl.\ Mat."}
+MACRO {jpc} {"J.\ Phys.\ Chem."}
+MACRO {jpp} {"J.\ Plasma Phys."}
+MACRO {jpsj} {"J.\ Phys.\ Soc.\ Japan"}
+MACRO {jsi} {"J.\ Sci.\ Instrum."}
+MACRO {jvst} {"J.\ Vac.\ Sci.\ \& Tech."}
 MACRO {nat} {"Nature"}
 MACRO {nature} {"Nature"}
-MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"}
-MACRO {nf} {"Nucl. Fusion"}
-MACRO {nim} {"Nucl. Inst. \& Meth."}
-MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."}
-MACRO {np} {"Nucl. Phys."}
-MACRO {npb} {"Nucl. Phys. B"}
-MACRO {nt/f} {"Nucl. Tech./Fusion"}
-MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"}
+MACRO {nedf} {"Nucl.\ Eng.\ \& Design/Fusion"}
+MACRO {nf} {"Nucl.\ Fusion"}
+MACRO {nim} {"Nucl.\ Inst.\ \& Meth."}
+MACRO {nimpr} {"Nucl.\ Inst.\ \& Meth.\ in Phys.\ Res."}
+MACRO {np} {"Nucl.\ Phys."}
+MACRO {npb} {"Nucl.\ Phys.\ B"}
+MACRO {nt/f} {"Nucl.\ Tech./Fusion"}
+MACRO {npbpc} {"Nucl.\ Phys.\ B (Proc.\ Suppl.)"}
 MACRO {inc} {"Nuovo Cimento"}
 MACRO {nc} {"Nuovo Cimento"}
-MACRO {pf} {"Phys. Fluids"}
-MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."}
-MACRO {pfb} {"Phys. Fluids B: Plasma Phys."}
-MACRO {pl} {"Phys. Lett."}
-MACRO {pla} {"Phys. Lett. A"}
-MACRO {plb} {"Phys. Lett. B"}
-MACRO {prep} {"Phys. Rep."}
-MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"}
-MACRO {pp} {"Phys. Plasmas"}
-MACRO {pop} {"Phys. Plasmas"}
-MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"}
-MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"}
-MACRO {prl} {"Phys. Rev. Lett."}
-MACRO {pr} {"Phys. Rev."}
-MACRO {physrev} {"Phys. Rev."}
-MACRO {pra} {"Phys. Rev. A"}
-MACRO {prb} {"Phys. Rev. B"}
-MACRO {prc} {"Phys. Rev. C"}
-MACRO {prd} {"Phys. Rev. D"}
-MACRO {pre} {"Phys. Rev. E"}
-MACRO {ps} {"Phys. Scripta"}
-MACRO {procrsl} {"Proc. Roy. Soc. London"}
-MACRO {rmp} {"Rev. Mod. Phys."}
-MACRO {rsi} {"Rev. Sci. Inst."}
+MACRO {pf} {"Phys.\ Fluids"}
+MACRO {pfa} {"Phys.\ Fluids A: Fluid Dyn."}
+MACRO {pfb} {"Phys.\ Fluids B: Plasma Phys."}
+MACRO {pl} {"Phys.\ Lett."}
+MACRO {pla} {"Phys.\ Lett.\ A"}
+MACRO {plb} {"Phys.\ Lett.\ B"}
+MACRO {prep} {"Phys.\ Rep."}
+MACRO {pnas} {"Proc.\ Nat.\ Acad.\ Sci.\ USA"}
+MACRO {pp} {"Phys.\ Plasmas"}
+MACRO {pop} {"Phys.\ Plasmas"}
+MACRO {ppcf} {"Plasma Phys.\ \& Controlled Fusion"}
+MACRO {phitrsl} {"Philos.\ Trans.\ Roy.\ Soc.\ London"}
+MACRO {prl} {"Phys.\ Rev.\ Lett."}
+MACRO {pr} {"Phys.\ Rev."}
+MACRO {physrev} {"Phys.\ Rev."}
+MACRO {pra} {"Phys.\ Rev.\ A"}
+MACRO {prb} {"Phys.\ Rev.\ B"}
+MACRO {prc} {"Phys.\ Rev.\ C"}
+MACRO {prd} {"Phys.\ Rev.\ D"}
+MACRO {pre} {"Phys.\ Rev.\ E"}
+MACRO {ps} {"Phys.\ Scripta"}
+MACRO {procrsl} {"Proc.\ Roy.\ Soc.\ London"}
+MACRO {rmp} {"Rev.\ Mod.\ Phys."}
+MACRO {rsi} {"Rev.\ Sci.\ Inst."}
 MACRO {science} {"Science"}
-MACRO {sciam} {"Sci. Am."}
-MACRO {sam} {"Stud. Appl. Math."}
+MACRO {sciam} {"Sci.\ Am."}
+MACRO {sam} {"Stud.\ Appl.\ Math."}
 MACRO {st} {"Sky and Telesc."}
 MACRO {cjp} {"Czech. J. Phys."}
 MACRO {el} {"Europhys. Lett."}
@@ -2220,40 +2517,40 @@
 MACRO {suplatt} {"Superlatt. Microstr."}
 MACRO {sust} {"Supercond. Sci. Technol."}
 MACRO {znat} {"Z. Naturforsch."}
-MACRO {appopt} {"Appl. Opt."}
-MACRO {bell}   {"Bell Syst. Tech. J."}
-MACRO {ell}    {"Electron. Lett."}
-MACRO {jasp}   {"J. Appl. Spectr."}
-MACRO {jqe}    {"IEEE J. Quantum Electron."}
-MACRO {jlwt}   {"J. Lightwave Technol."}
-MACRO {jmo}    {"J. Mod. Opt."}
-MACRO {josa}   {"J. Opt. Soc. America"}
-MACRO {josaa}  {"J. Opt. Soc. Amer.~A"}
-MACRO {josab}  {"J. Opt. Soc. Amer.~B"}
-MACRO {jdp}    {"J. Phys. (Paris)"}
-MACRO {oc}     {"Opt. Commun."}
-MACRO {ol}     {"Opt. Lett."}
-MACRO {os}     {"Opt. Spectrosc."}
+MACRO {appopt} {"Appl.\ Opt."}
+MACRO {bell}   {"Bell Syst.\ Tech.\ J."}
+MACRO {ell}    {"Electron.\ Lett."}
+MACRO {jasp}   {"J.\ Appl.\ Spectr."}
+MACRO {jqe}    {"IEEE J.\ Quantum Electron."}
+MACRO {jlwt}   {"J.\ Lightwave Technol."}
+MACRO {jmo}    {"J.\ Mod.\ Opt."}
+MACRO {josa}   {"J.\ Opt.\ Soc.\ America"}
+MACRO {josaa}  {"J.\ Opt.\ Soc.\ Amer.~A"}
+MACRO {josab}  {"J.\ Opt.\ Soc.\ Amer.~B"}
+MACRO {jdp}    {"J.\ Phys.\ (Paris)"}
+MACRO {oc}     {"Opt.\ Commun."}
+MACRO {ol}     {"Opt.\ Lett."}
+MACRO {os}     {"Opt.\ Spectrosc."}
 MACRO {phtl}   {"IEEE Photon. Technol. Lett."}
-MACRO {pspie}  {"Proc. Soc. Photo-Opt. Instrum. Eng."}
+MACRO {pspie}  {"Proc.\ Soc.\ Photo-Opt.\ Instrum. Eng."}
 MACRO {vr}     {"Vision Res."}
-MACRO {zph}    {"Z. f. Physik"}
-MACRO {zphb}   {"Z. f. Physik~B"}
-MACRO {zphd}   {"Z. f. Physik~D"}
+MACRO {zph}    {"Z.\ f.\ Physik"}
+MACRO {zphb}   {"Z.\ f.\ Physik~B"}
+MACRO {zphd}   {"Z.\ f.\ Physik~D"}
 MACRO {sse} {"Solid-State Electron."}
 MACRO {pss} {"Phys. Sol. State"}
 MACRO {nl}  {"Nano Lett."}
-MACRO {sjpp} {"Sov. J. Plasma Phys."}
-MACRO {spd}  {"Sov. Phys.--Doklady"}
-MACRO {sptp} {"Sov. Phys.--Tech. Phys."}
-MACRO       {spu}  {"Sov. Phys.--Uspekhi"}
+MACRO {sjpp} {"Sov.\ J.\ Plasma Phys."}
+MACRO {spd}  {"Sov.\ Phys.--Doklady"}
+MACRO {sptp} {"Sov.\ Phys.--Tech. Phys."}
+MACRO {spu}  {"Sov.\ Phys.--Uspekhi"}
 MACRO {ufn}  {"\CYRU\CYRF\CYRN"}
 MACRO {pu}  {"Phys.--Uspekhi"}
-MACRO {sjot} {"Sov. J. Opt. Technol."}
-MACRO {sjqe} {"Sov. J. Quantum Electron."}
-MACRO {sleb} {"Sov. Phys.--Leb. Inst. Rep."}
-MACRO {stph} {"Sov. Phys.--Techn. Phys."}
-MACRO {stphl}{"Sov. Techn. Phys. Lett."}
+MACRO {sjot} {"Sov.\ J.\ Opt.\ Technol."}
+MACRO {sjqe} {"Sov.\ J.\ Quantum Electron."}
+MACRO {sleb} {"Sov.\ Phys.--Leb.\ Inst.\ Rep."}
+MACRO {stph} {"Sov.\ Phys.--Techn.\ Phys."}
+MACRO {stphl}{"Sov.\ Techn.\ Phys.\ Lett."}
 
 READ
 
@@ -2260,7 +2557,6 @@
 
 
 
-
 STRINGS { longest.label }
 
 INTEGERS { number.label longest.label.width }
@@ -2297,15 +2593,7 @@
   "\providecommand*{\BibUrl}[1]{\url{#1}}"           write$ newline$
   "\providecommand{\BibAnnote}[1]{}"                 write$ newline$
   "\providecommand*{\BibEmph}[1]{#1}"                write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{---}" write$ newline$
-  %\DeclareUTFcharacter[\UTFencname]{x2014}{\cyrdash}
-  %"\let\cyrdash\textemdash" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\hbox to.8em{--\hss--}}" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\textemdash}" write$ newline$
   "\ProvideTextCommandDefault{\cyrdash}{\iflanguage{russian}{\hbox to.8em{--\hss--}}{\textemdash}}" write$ newline$
-  %%"\ProvideTextCommandDefault{\cyrdash}{%"  write$ newline$
-  %%"  \iflanguage{russian}{\hbox to.8em{--\hss--}}{%" write$ newline$
-  %%"    \iflanguage{ukrainian}{\hbox to.8em{--\hss--}}{\textemdash}}}"  write$ newline$
   "\providecommand*{\BibDash}{\ifdim\lastskip>0pt\unskip\nobreak\hskip.2em plus 0.1em\fi" write$ newline$
   "\cyrdash\hskip.2em plus 0.1em\ignorespaces}" write$ newline$
   "\renewcommand{\newblock}{\ignorespaces}" write$ newline$
@@ -2328,5 +2616,6 @@
 
 EXECUTE {end.bib}
 
+\endinput
 %%
 %% End of file `gost2008.bst'.

Modified: trunk/Master/texmf-dist/bibtex/bst/gost/gost2008l.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/gost/gost2008l.bst	2020-12-29 00:54:00 UTC (rev 57250)
+++ trunk/Master/texmf-dist/bibtex/bst/gost/gost2008l.bst	2020-12-29 02:19:51 UTC (rev 57251)
@@ -4,30 +4,22 @@
 %%
 %% The original source files were:
 %%
-%% gost.dtx  (with options: `bst,modern,eprint,long')
+%% gost.dtx  (with options: `bst,eprint,long')
 %% 
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%   http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
+%% IMPORTANT NOTICE:
 %% 
-%% This file has the LPPL maintenance status "maintained".
-%% Maintained by Igor A. Kotelnikov.
+%% For the copyright see the source file.
 %% 
-%% Current version: 1.2j, 2017.01.12
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from gost2008l.bst.
 %% 
-%% Please, send bug report via e-mail:
-%%   kia999 at mail dot ru <Igor Kotelnikov>
-%% or
-%%   polyama at yahoo dot com <Maksym Polyakov>
+%% For distribution of the original source see the terms
+%% for copying and modification in the file gost.dtx.
 %% 
-
-
-
-%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
 %% This bibstyle attempts to format bibliography according to
 %% GOST 7.0.5-2008 for bibliographic reference.
 
@@ -67,15 +59,15 @@
     language
     langid          % new in v1.2c
     booklanguage
-    %date            % not implemented yet...
+    date            % new in v1.2i
     pagetotal
     url
     urldate
     isbn
     doi
+    eprint
     eprinttype      % = archivePrefix
     eprintclass     % = primaryClass
-    eprint
     % new in v1.2f:
     % appear in biblatex:
     %addendum       % not implemented yet...
@@ -100,9 +92,24 @@
   {}
   { label }
 
-INTEGERS { output.state before.all mid.sentence after.sentence after.block
-after.dblslash after.slash after.colon after.semicolon }
+INTEGERS {
+    output.state
+    before.all
+    mid.sentence
+    after.sentence
+    after.block
+    after.dblslash
+    after.slash
+    after.colon
+    after.semicolon
+}
 
+STRINGS { curlanguage }
+
+STRINGS { s t }
+
+STRINGS { y m d }   % new in v.1.2j
+
 FUNCTION {init.state.consts}
 { #0 'before.all :=
   #1 'mid.sentence :=
@@ -114,11 +121,18 @@
   #7 'after.semicolon :=
 }
 
-STRINGS { s t }
+FUNCTION {set.language}
+{ langid empty$
+    { language empty$
+        { "english" 'curlanguage := }
+        { language  'curlanguage := }
+      if$
+    }
+    { langid  'curlanguage := }
+  if$
+}
 
-STRINGS { curlanguage }
-
-FUNCTION {change.language}
+FUNCTION {reset.language}
 { booklanguage empty$
     { "" }
     { booklanguage  'curlanguage :=
@@ -143,7 +157,7 @@
         { output.state before.all =
             'write$
             { output.state after.dblslash =
-                { "~//" * change.language * " " * write$ }
+                { "~//" * reset.language * " " * write$ }
                 { output.state after.slash =
                     { "~/ " * write$ }
                     { output.state after.colon =
@@ -177,7 +191,9 @@
 FUNCTION {output.check}
 { 't :=
   duplicate$ empty$
-    { pop$ "empty " t * " in " * cite$ * warning$ }
+    { pop$
+      "empty " t * " in " * cite$ * warning$
+    }
     'output.nonnull
   if$
 }
@@ -256,13 +272,6 @@
   if$
 }
 
-
-FUNCTION {non.stop}
-{ duplicate$
-   "}" * add.period$
-   #-1 #1 substring$ "." =
-}
-
 FUNCTION {new.block.checka}
 { empty$
     'skip$
@@ -309,9 +318,21 @@
   if$
 }
 
+%%
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {spaces.around}
+{ " " swap$ * " " * }
+
 FUNCTION {emphasize}
 { duplicate$ empty$
-    { pop$ "" }
+    %{ pop$ "" }
+    'skip$       % v.1.2k
     { "\BibEmph{" swap$ * "}" * }
   if$
 }
@@ -323,7 +344,7 @@
   if$
 }
 
-FUNCTION {enclose.square.brackets}
+FUNCTION {bracketise}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -331,7 +352,7 @@
   if$
 }
 
-FUNCTION {enclose.round.brackets}
+FUNCTION {paranthesify}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -339,25 +360,82 @@
   if$
 }
 
-FUNCTION {space.word}
-{ " " swap$ * " " * }
 
-FUNCTION {bbl.edby}    %  { "\bbledby{}" }
+FUNCTION {tie.connect}
+ {"~" swap$ * *
+ }
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { t #1 #2 substring$ "--" = not
+            { "--" *
+              t #2 global.max$ substring$ 't :=
+            }
+            {   { t #1 #1 substring$ "-" = }
+                { "-" *
+                  t #2 global.max$ substring$ 't :=
+                }
+              while$
+            }
+          if$
+        }
+        { t #1 #1 substring$ *
+          t #2 global.max$ substring$ 't :=
+        }
+      if$
+    }
+  while$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+        { #1 'multiresult := }
+        { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {bbl.edby}
 { curlanguage "english" =
-   {"Ed.\ by"}
+   {"ed.\ by"}
    { curlanguage "ukrainian" =
-      {"{\cyr\CYRP\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
+      {"{\cyr\cyrp\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
       { curlanguage "russian" =
-         {"{\cyr\CYRP\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
+         {"{\cyr\cyrp\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
          { curlanguage "german" =
             { "ed." }
-            {"language is not defined: " language "edby" * * warning$ "Ed.\ by"}
+            {"language is not defined: " curlanguage " in bbl.edby" * * warning$ "Ed.\ by"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.cmplr}
+FUNCTION {bbl.compiler}
 { curlanguage "english" =
    { "Compiler"}
    { curlanguage "german" =
@@ -366,15 +444,15 @@
          {"{\cyr\CYRU\cyrk\cyrl.}"}
          { curlanguage "russian" =
             {"{\cyr\CYRS\cyro\cyrs\cyrt.}"}
-            {"language is not defined: " language  "cmplr" * * warning$ "Compiler"}
+            {"language is not defined: " curlanguage  " in bbl.compiler" * * warning$ "Compiler"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.edition} %  { "\bbledition{}" }
+FUNCTION {bbl.edition}
 { curlanguage "english" =
-   {"edition"}
+   {"ed."}
    { curlanguage "ukrainian" =
       {"{\cyr\cyrv\cyri\cyrd.}"}
       { curlanguage "russian" =
@@ -385,7 +463,7 @@
                {"edizione"}
                { curlanguage "french" =
                   {"\'{e}dition"}
-                  {"language is not defined: " language  "edition" * * warning$ "edition"}
+                  {"language is not defined: " curlanguage  " in bbl.edition" * * warning$ "ed."}
                if$}
             if$}
          if$}
@@ -393,7 +471,7 @@
    if$}
 if$}
 
-FUNCTION {bbl.vvolume} %  { "\bblVolume{}" }
+FUNCTION {bbl.vvolume}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Volume"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -400,12 +478,12 @@
       { "\CYRT\cyro\cyrm" }
       { curlanguage "german" =
          {"{Band}"} %%%% { "Volumen" }
-         {"language is not defined: " language  "vvolume" * * warning$ "Volume"}
+         {"language is not defined: " curlanguage  " in bbl.vvolume" * * warning$ "Volume"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.vvol}    %  { "\bblVol{}" }
+FUNCTION {bbl.vvol}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Vol."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -412,12 +490,12 @@
       {"\CYRT."}
       { curlanguage "german" =
          {"{Bd.}"} %%%% { "Vol." }
-         {"language is not defined: " language  "vvol" * * warning$ "Vol."}
+         {"language is not defined: " curlanguage  " in bbl.vvol" * * warning$ "Vol."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iissue}  %  { "\bblIssue{}" }
+FUNCTION {bbl.iissue}
 { curlanguage "english" =
    {"Issue"}
    { curlanguage "ukrainian" =
@@ -426,13 +504,13 @@
          {"\CYRV\cyrery\cyrp\cyru\cyrs\cyrk"}
          { curlanguage "german" =
             {"{Heft}"} %%%% { "Ausgabe" }
-            {"language is not defined: " language "iissue" * * warning$ "Issue"}
+            {"language is not defined: " curlanguage " in bbl.iissue" * * warning$ "Issue"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iiss}  %  { "\bblIss{}" }
+FUNCTION {bbl.iiss}
 { curlanguage "english" =
    {"Iss."}
    { curlanguage "ukrainian" =
@@ -441,13 +519,13 @@
          {"\CYRV\cyrery\cyrp."}
          { curlanguage "german" =
             {"{H.}"}
-            {"language is not defined: " language "iiss" * * warning$ "Iss."}
+            {"language is not defined: " curlanguage " in bbl.iiss" * * warning$ "Iss."}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.of}      %  { "\bblof{}" }
+FUNCTION {bbl.of}
 { curlanguage "english" =
    {"of"}
    { curlanguage "german" =
@@ -456,13 +534,13 @@
          { "{\cyr\cyrii\cyrz}" }
          { curlanguage "russian" =
             { "{\cyr\cyri\cyrz}" }
-            {"language is not defined: " language "of" * * warning$ "of"}
+            {"language is not defined: " curlanguage " in bbl.of" * * warning$ "of"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.etal}      %  { "\bblof{}" }
+FUNCTION {bbl.etal}
 { curlanguage "english" =
    {"et~al."}
    { curlanguage "german" =
@@ -471,14 +549,31 @@
          {"{\cyr\cyrt\cyra~\cyrii\cyrn.}"}
          { curlanguage "russian" =
             {"{\cyr\cyri~\cyrd\cyrr.}"}
-            {"language is not defined: " language  "et~al" * * warning$ "et~al."}
+            {"language is not defined: " curlanguage  " in bbl.etal" * * warning$ "et~al."}
          if$}
       if$}
    if$}
 if$}
 
+FUNCTION {bbl.and}
+{ curlanguage "english" =
+  {"and"}
+   { curlanguage "german" =
+      { "und" }
+      { curlanguage "ukrainian" =
+         {"{\cyrii}"}
+         { curlanguage "russian" =
+            {"{\cyri}"}
+            { curlanguage "french" =
+                {"et"}
+                {"language is not defined: " curlanguage  " in bbl.and" * * warning$ "and"}
+            if$}
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {bbl.nnumber} %  { "\bblNumber{}" }
+FUNCTION {bbl.nnumber}
 { curlanguage "english" =
    {"Number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -485,12 +580,12 @@
       { "\CYRN\cyro\cyrm\cyre\cyrr" }
       { curlanguage "german" =
          {"{Heft}"} %%% { "Anzahl" }
-         {"language is not defined: " language  "nnumber" * * warning$ "Number"}
+         {"language is not defined: " curlanguage  " in bbl.nnumber" * * warning$ "Number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.number}  %  { "\bblnumber{}" }
+FUNCTION {bbl.number}
 { curlanguage "english" =
    {"number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -497,27 +592,30 @@
       {"{\cyr\cyrn\cyro\cyrm\cyre\cyrr}"}
       { curlanguage "german" =
          {"{Heft}"} %%% { "anzahl" }???
-         {"language is not defined: " language  "number" * * warning$ "number"}
+         {"language is not defined: " curlanguage  " in bbl.number" * * warning$ "number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nr}     %   { "\bblno{}" }
+FUNCTION {bbl.nr}
 { curlanguage "english" =
    {"no."}
    { curlanguage "italian" =
-      { "no" }
+      { "no." }
       { curlanguage "ukrainian" = curlanguage "russian" = or
          { "{\cyr\textnumero}" }
          { curlanguage "german" =
-            {"{H.}"} %%% { "an." }
-            {"language is not defined: " language "nr" * * warning$ "no."}
+            {"{nu.}"} %%% { "an." }
+            { curlanguage "french" =
+                { "no." }
+                {"language is not defined: " curlanguage " in bbl.nr" * * warning$ "no."}
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nnr}     %   { "\bblno{}" }
+FUNCTION {bbl.nnr}
 { curlanguage "english" =
    {"No."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -524,30 +622,30 @@
       { "{\cyr\textnumero}" }
       { curlanguage "german" =
          {"{H.}"} %%% { "an." }
-         {"language is not defined: " language  "nnr" * * warning$ "No."}
+         {"language is not defined: " curlanguage  " in bbl.nnr" * * warning$ "No."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.in}    %    { "\bblin{}" }
+FUNCTION {bbl.in}
 { curlanguage "english" = curlanguage "german" = or
    {"in"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "{\cyr\cyrv}" }
-      {"language is not defined: " language  "in" * * warning$ "in"}
+      {"language is not defined: " curlanguage  " in bbl.in" * * warning$ "in"}
    if$}
 if$}
 
-FUNCTION {bbl.iin}  %     { "\bblIn{}" }
+FUNCTION {bbl.iin}
 { curlanguage "english" = curlanguage "german" = or
    {"In"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "\CYRV" }
-      {"language is not defined: " language  "iin" * * warning$ "In"}
+      {"language is not defined: " curlanguage  " in bbl.iin" * * warning$ "In"}
    if$}
 if$}
 
-FUNCTION {bbl.pages}    % { "\bblpp." }
+FUNCTION {bbl.pages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."} %%% {"pp."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -554,12 +652,12 @@
       {"{\cyr\cyrs.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "pages" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.pages" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.page}   %   { "\bblp."
+FUNCTION {bbl.page}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -566,12 +664,12 @@
       {"{\cyr\cyrs.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "page" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.page" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppages}%    { "\bblPp." }
+FUNCTION {bbl.ppages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."} %%%% { "Pp." }
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -578,12 +676,12 @@
       {"{\cyr\CYRS.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language "ppages" * * warning$ "P."}
+         {"language is not defined: " curlanguage " in bbl.ppages" * * warning$ "P."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppage}  %   { "\bblP." }
+FUNCTION {bbl.ppage}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -590,7 +688,7 @@
       {"{\cyr\CYRS.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language  "ppage" * * warning$ "P."}
+         {"language is not defined: " curlanguage  " in bbl.ppage" * * warning$ "P."}
       if$}
    if$}
 if$}
@@ -604,7 +702,10 @@
          { "{\CYRR\cyre\cyrzh\cyri\cyrm\ \cyrd\cyro\cyrs\cyrt\cyru\cyrp\cyra}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "Mode d'acc\`{e}s" }
+                { "language is not defined: " curlanguage " in bbl.url" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
@@ -618,13 +719,16 @@
          { "{\cyrd\cyra\cyrt\cyra\ \cyro\cyrb\cyrr\cyra\cyrshch\cyre\cyrn\cyri\cyrya}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "{en ligne; acc\'{e}d\'{e}}" }
+                { "language is not defined: " curlanguage " in bbl.urldate" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.techreport} % rename to bbl.techreport
+FUNCTION {bbl.techreport}
 { curlanguage "english" =
    { "Rep." }
    { curlanguage "german" =
@@ -631,7 +735,7 @@
       { "Bericht" }
       { curlanguage "russian" =
          { "{\cyr\CYRO\cyrt\cyrch\cyre\cyrt}" }
-         { "language is not defined: " language "techrep" * * warning$ "Rep." }
+         { "language is not defined: " curlanguage " in bbl.techrep" * * warning$ "Rep." }
       if$}
    if$}
 if$}
@@ -640,12 +744,12 @@
 { curlanguage "english" =
    { "Master's thesis" }
    { curlanguage "german" =
-      { "Diss.~Mag." }
+      { "diss.~mag." }
       { curlanguage "russian" =
-        { "{\cyr\CYRK\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
+        { "{\cyr\cyrk\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
           "\cyro\cyrn\cyrn\cyra\cyrya\ \cyrr\cyra\cyrb\cyro\cyrt\cyra\ " *
           "\cyrm\cyra\cyrg\cyri\cyrs\cyrt\cyrr\cyra}" * }
-         { "language is not defined: " language "mthesis" * * warning$ "Master's thesis" }
+         { "language is not defined: " curlanguage " in bbl.mthesis" * * warning$ "Master's thesis" }
       if$}
    if$}
 if$}
@@ -654,13 +758,13 @@
 { curlanguage "english" =
    { "Ph.\,D. thesis" }
    { curlanguage "german" =
-      { "Diss.~Ph.\,D." }
+      { "diss.~Ph.\,D." }
       { curlanguage "russian" =
          { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrk\cyra\cyrn\cyrd. "
            "\cyrn\cyra\cyru\cyrk}" * }
          { curlanguage "french" =
-           { "Th\`{e}se de doctorat" }
-           { "language is not defined: " language "phdthesis" * * warning$ "Ph.\,D. thesis" }
+           { "th\`{e}se de doctorat" }
+           { "language is not defined: " curlanguage " in bbl.phdthesis" * * warning$ "Ph.\,D. thesis" }
          if$}
       if$}
    if$}
@@ -668,36 +772,23 @@
 
 FUNCTION {bbl.docthesis}
 { curlanguage "english" =
-   { "Dr.\,Sci. dissertation" }
+   { "dr.\,sci. dissertation" }
    { curlanguage "german" =
-      { "Diss.~Dr." }
+      { "diss.~dr." }
       { curlanguage "russian" =
          { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrd-\cyrr\cyra\ "
            "\cyrn\cyra\cyru\cyrk}" * }
-         { "language is not defined: " language "docthesis" * * warning$ "Dr.\,Sci. dissertation" }
+         { "language is not defined: " curlanguage " in bbl.docthesis" * * warning$ "Dr.\,Sci. dissertation" }
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.thesis.type}
-{ type "mathesis" =
-  { bbl.mathesis }
-  { type "phdthesis" =
-    { bbl.phdthesis }
-    { type "docthesis" =
-      { bbl.docthesis }
-      %%{ "!!!" type * "t" change.case$ }
-      { type "t" change.case$ }
-    if$}
-  if$}
-if$}
-
 FUNCTION {bbl.nnoaddress}
 { curlanguage "english" =
    { "S.\ l." }
    { curlanguage "russian" =
       { "{\cyr\CYRB.\ \cyrm.}" }
-      { "language is not defined: " language "nnoaddress" * * warning$ "S.\ l." }
+      { "language is not defined: " curlanguage " in bbl.nnoaddress" * * warning$ "S.\ l." }
    if$}
 if$}
 
@@ -706,7 +797,7 @@
    { "s.\ n." }
    { curlanguage "russian" =
       { "{\cyr\cyrb.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "s.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "s.\ n." }
    if$}
 if$}
 
@@ -715,7 +806,7 @@
    { "S.\ n." }
    { curlanguage "russian" =
       { "{\cyr\CYRB.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "S.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "S.\ n." }
    if$}
 if$}
 
@@ -724,7 +815,7 @@
    { "Text" }
    { curlanguage "russian" = curlanguage "ukrainian" = or
       { "{\cyr\CYRT\cyre\cyrk\cyrs\cyrt}" }
-      { "language is not defined: " language "media" * * warning$ "Text" }
+      { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Text" }
    if$}
 if$}
 
@@ -737,7 +828,7 @@
       { curlanguage "ukrainian" =
         { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
           "\cyrr\cyre\cyrs\cyru\cyrr\cyrs}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -751,7 +842,7 @@
       { curlanguage "ukrainian" =
         { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
           "\cyrr\cyre\cyrs\cyru\cyrr\cyrs\ \cyro\cyrn\cyrl\cyra\cyrishrt\cyr}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -763,7 +854,7 @@
       { "\cyrr\cyru\cyrk." }
       { curlanguage "ukrainian" =
         { "\cyrr\cyru\cyrk." }
-        { "language is not defined: " language "chief" * * warning$ "chief" }
+        { "language is not defined: " curlanguage " in bbl.chief" * * warning$ "chief" }
       if$}
    if$}
 if$}
@@ -770,12 +861,12 @@
 
 FUNCTION {bbl.executor}
 { curlanguage "english" =
-   { "Executor" }
+   { "executor" }
    { curlanguage "russian" =
       { "{\cyr\cyri\cyrs\cyrp\cyro\cyrl\cyrn.}" }
       { curlanguage "ukrainian" =
         { "{\cyr\cyrv\cyri\cyrk\cyro\cyrn\cyra\cyrv\cyre\cyrc\cyrsftsn}" }
-        { "language is not defined: " language "executor" * * warning$ "executor" }
+        { "language is not defined: " curlanguage " in bbl.executor" * * warning$ "executor" }
       if$}
    if$}
 if$}
@@ -797,7 +888,7 @@
       { "ang." }
       { curlanguage "russian" =
         { "{\cyr\cyrz\cyra\cyrya\cyrv\cyrl.}" }
-        { "language is not defined: " language "req" * * warning$ "req" }
+        { "language is not defined: " curlanguage " in bbl.req" * * warning$ "req" }
       if$
       }
     if$
@@ -813,7 +904,7 @@
       { "ausg." }
       { curlanguage "russian" =
         { "{\cyr\cyro\cyrp\cyru\cyrb\cyrl.}" }
-        { "language is not defined: " language "publication" * * warning$ "publication" }
+        { "language is not defined: " curlanguage " in bbl.publication" * * warning$ "publication" }
       if$
       }
     if$
@@ -829,7 +920,7 @@
       { "Prioritat" }
       { curlanguage "russian" =
         { "{\cyr\cyrp\cyrr\cyri\cyro\cyrr\cyri\cyrt\cyre\cyrt}" }
-        { "language is not defined: " language "priority" * * warning$ "priority" }
+        { "language is not defined: " curlanguage " in bbl.priority" * * warning$ "priority" }
       if$
       }
     if$
@@ -837,69 +928,462 @@
   if$
 }
 
+FUNCTION {bbl.jan}
+{ curlanguage "english" =
+   {"Jan."}
+   { curlanguage "ukrainian" =
+      {"\CYRS\cyrii\cyrch."}
+      { curlanguage "russian" =
+         { "\CYRYA\cyrn\cyrv." }
+         { curlanguage "german" =
+            { "Jan." } % Januar
+            { "language is not defined: bbl.jan for " curlanguage * warning$ "Jan." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.feb}
+{ curlanguage "english" =
+   {"Feb."}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyryu\cyrt."}
+      { curlanguage "russian" =
+         { "\CYRF\cyre\cyrv\cyrr." }
+         { curlanguage "german" =
+            {"Feb."} % Februar
+            {"language is not defined: bbl.feb for " curlanguage * warning$ "Feb."}
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.mar}
+{ curlanguage "english" =
+   {"Mar."}
+   { curlanguage "ukrainian" =
+      {"\CYRB\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRM\cyra\cyrr\cyrt" }
+         { curlanguage "german" =
+            {"März"} % März
+            {"language is not defined: bbl.mar for " curlanguage * warning$ "Mar."}
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.apr}
+{ curlanguage "english" =
+   {"Apr."}
+   { curlanguage "ukrainian" =
+      {"\CYRK\cyrv\cyrii\cyrt."}
+      { curlanguage "russian" =
+            { "\CYRA\cyrp\cyrr." }
+         { curlanguage "german" =
+            {"Apr."} % April
+            { "language is not defined: bbl.apr for " curlanguage * warning$ "Apr." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.may}
+{ curlanguage "english" =
+   {"May"}
+   { curlanguage "ukrainian" =
+      {"\CYRT\cyrr\cyra\cyrv."}
+      { curlanguage "russian" =
+            { "\CYRM\cyra\cyrishrt" }
+         { curlanguage "german" =
+            {"Mai"}
+            { "language is not defined: bbl.may for " curlanguage * warning$ "May" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jun}
+{ curlanguage "english" =
+   {"June"}
+   { curlanguage "ukrainian" =
+      {"\CYRCH\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRI\cyryu\cyrn\cyrsftsn" }
+         { curlanguage "german" =
+            {"Juni"}
+            { "language is not defined: bbl.jun for " curlanguage * warning$ "June" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jul}
+{ curlanguage "english" =
+   {"July"}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyri\cyrp."}
+      { curlanguage "russian" =
+            { "\CYRI\cyryu\cyrl\cyrsftsn" }
+         { curlanguage "german" =
+            {"Juli"}
+            { "language is not defined: bbl.jul for " curlanguage * warning$ "July" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.aug}
+{ curlanguage "english" =
+   {"Aug."}
+   { curlanguage "ukrainian" =
+      {"\CYRS\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRA\cyrv\cyrg\." }
+         { curlanguage "german" =
+            {"Aug."} % August
+            { "language is not defined: bbl.aug for " curlanguage * warning$ "Aug." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.sep}
+{ curlanguage "english" =
+   {"Sep."}
+   { curlanguage "ukrainian" =
+      {"\CYRV\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRS\cyre\cyrn\cyrt." }
+         { curlanguage "german" =
+            {"Sep."} % September
+            { "language is not defined: bbl.sep for " curlanguage * warning$ "Sep." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.oct}
+{ curlanguage "english" =
+   {"Oct."}
+   { curlanguage "ukrainian" =
+      {"\CYRZH\cyro\cyrn."}
+      { curlanguage "russian" =
+            { "\CYRO\cyrk\cyrt." }
+         { curlanguage "german" =
+            {"Okt."} % Oktober
+            { "language is not defined: bbl.oct for " curlanguage * warning$ "Oct." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.nov}
+{ curlanguage "english" =
+   {"Nov."}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyri\cyrs."}
+      { curlanguage "russian" =
+            { "\CYRN\cyro\cyrya\cyrb." }
+         { curlanguage "german" =
+            {"Nov."} % November
+            { "language is not defined: bbl.nov for " curlanguage * warning$ "Nov." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.dec}
+{ curlanguage "english" =
+   {"Dec."}
+   { curlanguage "ukrainian" =
+      {"\CYRG\cyrr\cyru\cyrd."}
+      { curlanguage "russian" =
+            { "\CYRD\cyre\cyrk." }
+         { curlanguage "german" =
+            {"Dez."} % Dezember
+            { "language is not defined: bbl.dec for " curlanguage * warning$ "Dec." }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {bbl.arxiv}
+{ curlanguage "english" =
+   { "ArXiv" }
+   { curlanguage "ukrainian" =
+      {"ArXiv"}
+      { curlanguage "russian" =
+         { "ArXiv" }
+         { curlanguage "german" =
+            { "ArXiv" }
+            { "language is not defined: bbl.arxiv for " curlanguage * warning$ "ArXiv" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jstor}
+{ curlanguage "english" =
+   { "JSTOR" }
+   { curlanguage "ukrainian" =
+      {"JSTOR"}
+      { curlanguage "russian" =
+         { "JSTOR" }
+         { curlanguage "german" =
+            { "JSTOR" }
+            { "language is not defined: bbl.jstor for " curlanguage * warning$ "JSTOR" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.pubmed}
+{ curlanguage "english" =
+   { "PubMed" }
+   { curlanguage "ukrainian" =
+      {"PubMed"}
+      { curlanguage "russian" =
+         { "PubMed" }
+         { curlanguage "german" =
+            { "PubMed" }
+            { "language is not defined: bbl.pubmed for " curlanguage * warning$ "PubMed" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.googlebooks}
+{ curlanguage "english" =
+   { "Google Books" }
+   { curlanguage "ukrainian" =
+      {"Google \CYRK\cyrn\cyri\cyrg\cyri"}
+      { curlanguage "russian" =
+         { "Google \CYRK\cyrn\cyri\cyrg\cyri" }
+         { curlanguage "german" =
+            { "Google Books" }
+            { "language is not defined: bbl.googlebooks for " curlanguage * warning$ "Google Books" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.hdl}
+{ curlanguage "english" =
+   { "Handle.Net" }
+   { curlanguage "ukrainian" =
+      {"Handle.Net"}
+      { curlanguage "russian" =
+         { "Handle.Net" }
+         { curlanguage "german" =
+            { "Handle.Net" }
+            { "language is not defined: bbl.hdl for " curlanguage * warning$ "Handle.Net" }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {address.or.location}
+{
+  address empty$
+    { location }
+    { address }
+  if$
+}
+
+FUNCTION {specialitycode.or.number}
+{
+  specialitycode empty$
+    { number }
+    { specialitycode }
+  if$
+}
+
+FUNCTION {institution.or.school}
+{
+  institution empty$
+    { school}
+    { institution }
+  if$
+}
+FUNCTION {date.to.year}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #3 >
+        {
+          date #1 #4 substring$ 'y :=
+          y
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {date.to.month}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #6 >
+        {
+          date #6 #2 substring$ 'm :=
+          m
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {date.to.day}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #10 =
+        {
+          date #9 #2 substring$ 'd :=
+          d
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {year.or.date.to.year}
+{
+  year empty$
+    {
+      date.to.year
+    }
+    { year }
+  if$
+}
+
+FUNCTION {format.month}
+{ month empty$
+    { "" }
+    { month "Jan." =
+        { bbl.jan }
+    { month "Feb." =
+        { bbl.feb }
+    { month "Mar." =
+        { bbl.mar }
+    { month "Apr." =
+        { bbl.apr }
+    { month "May" =
+        { bbl.may }
+    { month "Jun." =
+        { bbl.jun }
+    { month "Jul." =
+        { bbl.jul }
+    { month "Aug." =
+        { bbl.aug }
+    { month "Sep." =
+        { bbl.sep }
+    { month "Oct." =
+        { "Окт." }
+    { month "Nov." =
+        { bbl.nov }
+    { month "Dec." =
+        { bbl.dec }
+        {
+          "unknown month in " cite$ * warning$
+          month
+        }
+        if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
+    if$
+}
+FUNCTION {format.date}
+{ year.or.date.to.year empty$
+    { month empty$
+        { "" }
+        { "there's a month but no year in " cite$ * warning$
+          format.month
+        }
+      if$
+    }
+    { month empty$
+        'year.or.date.to.year
+        { year.or.date.to.year ". \BibDash " format.month * * }
+      if$
+    }
+  if$
+}
+
 INTEGERS { nameptr namesleft numnames }
 
+FUNCTION {fmt.names.first}
+{ #1
+  "{vv~}{ll}{~jj}{~f.}"
+  format.name$
+}
 
-FUNCTION {format.names}
+FUNCTION {fmt.names.three}
 {
   's :=
   #1 'nameptr :=
   s num.names$ 'numnames :=
   numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr
-      "{vv~}{ll}{~jj}{~f.}" format.name$ 't :=
-      nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
+  { namesleft #0 > }
+  { s nameptr
+      "{vv~}{ll}{~jj}{~f.}"
+    format.name$ 't :=
+    nameptr #1 >
+      { nameptr #4 = numnames #4 > and
+          { "others" 't :=
+            #1 'namesleft :=
+          }
+          'skip$
+        if$
+        namesleft #1 >
+          { ", " * t * }
+          { t "others" = t "~others" = or
+              { " " * bbl.etal * }
+              { ", " * t * }
           if$
-          namesleft #1 >
-            { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
-                { " " * bbl.etal * }
-                { ", " * t * }
-              if$
-            }
-          if$
-        }
-        't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
+          }
+        if$
+      }
+      't
+    if$
+    nameptr #1 + 'nameptr :=
+    namesleft #1 - 'namesleft :=
+  }
   while$
 }
 
-
-FUNCTION {format.names.rev}
-{
-  's :=
+FUNCTION {fmt.names.all}
+{ 's :=
   #1 'nameptr :=
   s num.names$ 'numnames :=
   numnames 'namesleft :=
     { namesleft #0 > }
     { s nameptr
-      %"{f.}{~vv}{~ll}{, jj}" format.name$ 't :=
-      "{ff}{~vv}{~ll}{, jj}" format.name$ 't :=
+      %"{vv~}{ll}" format.name$ 't :=
+      "{vv~}{ll}{~jj}{~f.}"
+      format.name$ 't :=
       nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
-          if$
-          namesleft #1 >
+        { namesleft #1 >
             { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
+            { numnames #2 >  curlanguage "english" = and
+                { "," * }
+                'skip$
+              if$
+              t "others" = t "~others" = or
                 { " " * bbl.etal * }
-                { ", " * t * }
+                { " " bbl.and " " * * * t * }
               if$
             }
           if$
@@ -912,145 +1396,52 @@
   while$
 }
 
-
-FUNCTION {format.authors}
-{ author empty$
-    { "" }
-    { author format.names emphasize}
+%%<long>    { author fmt.names.all emphasize}
+%%<!long&strict>    { author fmt.names.first emphasize}
+%%<!long&!strict>    { author fmt.names.three emphasize}
+FUNCTION {format.author}
+{
+  author empty$
+    { author } %%%'skip$
+    { author fmt.names.all }
   if$
 }
 
-
-FUNCTION {format.bookauthors}
+FUNCTION {format.bookauthors.rest}
 { bookauthor empty$
     { "" }
-    { bookauthor format.names}
+    { bookauthor fmt.names.all emphasize }
   if$
 }
 
-FUNCTION {format.authors.after}
-{ author empty$
-    { "" }
-    { author format.names.rev}
-  if$
-}
-
-FUNCTION {format.bookauthors.after}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names.rev}% always cuts to 4 persons
-  if$
-}
-
-FUNCTION {format.editors.after}
+FUNCTION {format.editors.rest}
 { editor empty$
     { "" }
-    { bbl.edby "\ " * editor format.names.rev * }
+    { bbl.edby "\ " * editor fmt.names.all * }
   if$
 }
 
-FUNCTION {format.chief.after}
+FUNCTION {format.chief.rest}
 { editor empty$
     { "" }
-    { bbl.chief "\ " * editor format.names.rev * }
+    { bbl.chief "\ " * editor fmt.names.all * }
   if$
 }
 
-FUNCTION {format.executor.after}
+FUNCTION {format.executor.rest}
 { author empty$
     { "" }
-    { bbl.executor ": " * author format.names.rev * }
+    { bbl.executor ": " * author fmt.names.all * }
   if$
 }
 
-FUNCTION {format.compiler.after}
+FUNCTION {format.compiler.rest}
 { compiler empty$
     { "" }
-    { bbl.cmplr "\ " * compiler format.names.rev * }
+    { bbl.compiler "\ " * compiler fmt.names.all * }
   if$
 }
 
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    { title "t" change.case$ }
-  if$
-}
-
-FUNCTION {format.month}
-{ month empty$
-    { "" }
-    { curlanguage "russian" =
-        { month "Jan." =
-            { "\CYRYA\cyrn\cyrv." }
-        { month "Feb." =
-            { "\CYRF\cyre\cyrv\cyrr." }
-        { month "Mar." =
-            { "\CYRM\cyra\cyrr\cyrt" }
-        { month "Apr." =
-            { "\CYRA\cyrp\cyrr." }
-        { month "May" =
-            { "\CYRM\cyra\cyrishrt" }
-        { month "Jun." =
-            { "\CYRI\cyryu\cyrn\cyrsftsn" }
-        { month "Jul." =
-            { "\CYRI\cyryu\cyrl\cyrsftsn" }
-        { month "Aug." =
-            { "\CYRA\cyrv\cyrg\." }
-        { month "Sep." =
-            { "\CYRS\cyre\cyrn\cyrt." }
-        { month "Oct." =
-            { "\CYRO\cyrk\cyrt." }
-        { month "Nov." =
-            { "\CYRN\cyro\cyrya\cyrb." }
-        { month "Dec." =
-            { "\CYRD\cyre\cyrk." }
-            { month }
-            if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
-        { month }
-        if$}
-    if$
-}
-FUNCTION {format.date}
-{ year empty$
-    { month empty$
-        { "" }
-        { "there's a month but no year in " cite$ * warning$
-          format.month
-        }
-      if$
-    }
-    { month empty$
-        'year
-        { year ". \BibDash " format.month * * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {address.or.location}
-{
-  address empty$
-    { location }
-    { address }
-  if$
-}
-
-FUNCTION {specialitycode.or.number}
-{
-  specialitycode empty$
-    { number }
-    { specialitycode }
-  if$
-}
-
-FUNCTION {institution.or.school}
-{
-  institution empty$
-    { school}
-    { institution }
-  if$
-}
 FUNCTION {output.address.publisher}
 {
   address empty$ location empty$ and
@@ -1064,21 +1455,13 @@
   if$
   publisher output
 }
-
-
 FUNCTION {output.bibitem}
-{ newline$
+{
+  set.language
+  newline$
   "\bibitem" write$
   cite$ bracify write$
   newline$
-  langid empty$
-    { language empty$
-        { "english" 'curlanguage := }
-        { language  'curlanguage := }
-      if$
-    }
-    { langid  'curlanguage := }
-  if$
   "\selectlanguageifdefined" curlanguage bracify * write$
   newline$
   ""
@@ -1085,60 +1468,6 @@
   before.all 'output.state :=
 }
 
-
-FUNCTION {n.dashify}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-        { t #1 #2 substring$ "--" = not
-            { "--" *
-              t #2 global.max$ substring$ 't :=
-            }
-            {   { t #1 #1 substring$ "-" = }
-                { "-" *
-                  t #2 global.max$ substring$ 't :=
-                }
-              while$
-            }
-          if$
-        }
-        { t #1 #1 substring$ *
-          t #2 global.max$ substring$ 't :=
-        }
-      if$
-    }
-  while$
-}
-
-FUNCTION {word.in}
-{ bbl.iin
-  " " * }
-
-FUNCTION {format.btitle}
-{ title
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
-    { "~" }
-    { " " }
-  if$
-  swap$ * *
-}
-
-FUNCTION {tie.connect}
- {"~"
-  swap$ * *
- }
-
-FUNCTION {either.or.check}
-{ empty$
-    'pop$
-    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
-  if$
-}
-
 FUNCTION {format.bvolume}
 { volume empty$
     { "" }
@@ -1145,7 +1474,7 @@
     { bbl.vvol volume tie.connect
       series empty$
         'skip$
-        { bbl.of space.word * series emphasize * }
+        { bbl.of spaces.around * series emphasize * }
       if$
       "volume and number" number either.or.check
     }
@@ -1174,31 +1503,7 @@
   if$
 }
 
-FUNCTION {is.num}
-{ chr.to.int$
-  duplicate$ "0" chr.to.int$ < not
-  swap$ "9" chr.to.int$ > not and
-}
 
-FUNCTION {extract.num}
-{ duplicate$ 't :=
-  "" 's :=
-  { t empty$ not }
-  { t #1 #1 substring$
-    t #2 global.max$ substring$ 't :=
-    duplicate$ is.num
-      { s swap$ * 's := }
-      { pop$ "" 't := }
-    if$
-  }
-  while$
-  s empty$
-    'skip$
-    { pop$ s }
-  if$
-}
-
-
 FUNCTION {convert.edition}
 { edition
 }
@@ -1214,38 +1519,6 @@
   if$
 }
 
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
-  #0 'multiresult :=
-    { multiresult not
-      t empty$ not
-      and
-    }
-    { t #1 #1 substring$
-      duplicate$ "-" =
-      swap$ duplicate$ "," =
-      swap$ "+" =
-      or or
-        { #1 'multiresult := }
-        { t #2 global.max$ substring$ 't := }
-      if$
-    }
-  while$
-  multiresult
-}
-
-%%FUNCTION {format.pages}
-%%{ pages empty$
-%%    { "" }
-%%    { pages multi.page.check
-%%        { bbl.ppages pages n.dashify tie.connect }
-%%        { bbl.ppage pages tie.connect }
-%%      if$
-%%    }
-%%  if$
-%%}
 FUNCTION {format.pages}
 { eid empty$
     {
@@ -1266,15 +1539,6 @@
   if$
 }
 
-%%FUNCTION {format.pages.page}
-%%{ pages empty$
-%%    { pagetotal empty$
-%%      { "" }
-%%      { pagetotal bbl.pages tie.connect }
-%%    if$}
-%%    { format.pages}
-%%  if$
-%%}
 FUNCTION {format.pages.page}
 { eid empty$
     { pages empty$
@@ -1337,6 +1601,19 @@
   if$
 }
 
+FUNCTION {bbl.thesis.type}
+{ type "mathesis" =
+  { bbl.mathesis }
+  { type "phdthesis" =
+    { bbl.phdthesis }
+    { type "docthesis" =
+      { bbl.docthesis }
+      %%{ "!!!" type * "t" change.case$ }
+      { type "t" change.case$ }
+    if$}
+  if$}
+if$}
+
 %%<!utf8>      bbl.thesis.type "t" change.case$
 %%<utf8>      bbl.thesis.type
 FUNCTION {format.thesis.type}
@@ -1357,69 +1634,48 @@
   if$
 }
 
-FUNCTION {author.before}
+FUNCTION {output.author.head}
 {
   author empty$
     'skip$
-    { format.authors output
-      new.sentence
+    { author fmt.names.all output.nonnull
+      %new.sentence
     }
   if$
 }
 
-%%<*!long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    {bookauthor num.names$ #4 <
-%%      {format.bookauthors output
-%%       new.sentence}
-%%      'skip$
-%%    if$}
-%%  if$
-%%}
-%%</!long>
-%%<*long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    { format.bookauthors output
-%%      new.sentence
-%%    }
-%%  if$
-%%}
-%%</long>
+FUNCTION {output.author.rest}
+{
+}
 
-FUNCTION {author.after} { }
-
-FUNCTION {bookauthor.after}
+FUNCTION {bookauthor.rest}
 {
   bookauthor empty$
     'skip$
-    {format.bookauthors.after output
-       new.semicolon }
+    {
+      bookauthor fmt.names.three output
+      new.semicolon
+    }
   if$
 }
 
-FUNCTION {editor.organization.after}
+FUNCTION {editor.organization.rest}
 {
   compiler empty$
     {}
-    { format.compiler.after  output
+    { format.compiler.rest  output
     new.semicolon
     }
   if$
   editor empty$
     {}
-    { format.editors.after  output
+    { format.editors.rest  output.nonnull
     new.semicolon
     }
   if$
   organization empty$
     {}
-    {organization output
+    {organization output.nonnull
     new.semicolon
     }
   if$
@@ -1470,7 +1726,7 @@
     'skip$
     { doi empty$
         'skip$
-        { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
+        { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * }
       if$
     }
   if$
@@ -1481,7 +1737,7 @@
     'skip$
     { media empty$
         'skip$
-        { " " * bbl.media enclose.square.brackets * }
+        { " " * bbl.media bracketise * }
       if$
     }
   if$
@@ -1562,14 +1818,15 @@
 FUNCTION {article}
 {
   output.bibitem
-  author.before
-  format.title add.media "title" output.check
+  output.author.head
+  %new.sentence
+  title add.media "title" output.check
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
-  journal emphasize add.doi "journal" output.check % new in v.2
+  journal emphasize add.doi "journal" output.check % new in v1.2
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.volume output
   format.number output
@@ -1586,11 +1843,14 @@
 FUNCTION {book}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.sentence
   format.number.series output
   new.block
@@ -1597,7 +1857,7 @@
   format.edition output
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1615,15 +1875,18 @@
 FUNCTION {booklet}
 {
   output.bibitem
-  author.before
-  format.title add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
   howpublished output
   address.or.location output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1635,15 +1898,18 @@
 FUNCTION {inbook}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  bookauthor.after
-  editor.organization.after
+  bookauthor.rest
+  editor.organization.rest
   new.block
   format.edition output
   new.block
@@ -1650,7 +1916,7 @@
   format.number.series output
   new.sentence
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1668,18 +1934,21 @@
 FUNCTION {incollection}
 {
   output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   format.number.series output
@@ -1696,15 +1965,22 @@
 FUNCTION {proceedings}
 {
   output.bibitem
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon                   % added in v.1.2k
+  titleaddon output           % added in v.1.2k
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
-  output.address.publisher
-  format.date "year" output.check
   new.block
+  format.pages.page output
+  %%%output.address.publisher  % 1.2k moved upper
+  new.block
   note output
   new.sentence
   output.eprint.url
@@ -1714,22 +1990,26 @@
 
 FUNCTION {inproceedings}
 { output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon                % added in v.1.2k
+  titleaddon output        % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
   new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
   format.pages.page output
   new.block
   note output
@@ -1749,10 +2029,12 @@
         }
       if$
     }
-    { format.authors output.nonnull }
+    { format.author output.nonnull }
   if$
   new.block
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   author empty$
     { organization empty$
     {
@@ -1769,7 +2051,7 @@
     }
   if$
   format.edition output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1782,6 +2064,8 @@
 {
   output.bibitem
   title add.media output.nonnull
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   format.type.number output
   add.blank
@@ -1789,9 +2073,9 @@
   new.colon
   ipc output
   new.slash
-  format.authors.after "author" output.check
+  format.author "author" output.check
   add.blank
-  authorcountry enclose.round.brackets output.nonnull
+  authorcountry paranthesify output.nonnull
   new.semicolon
   holder output.nonnull
   new.semicolon
@@ -1806,7 +2090,7 @@
   new.semicolon
   format.prioritydate output
   prioritynumber output
-  prioritycountry enclose.round.brackets output
+  prioritycountry paranthesify output
   new.block
   note output
   new.sentence
@@ -1819,13 +2103,15 @@
 
 FUNCTION {misc}
 { output.bibitem
-  format.authors output
+  %format.author output  % < v.1.2k
+  output.author.head    % v.1.2k
+  %new.sentence            % v.1.2k
   title howpublished new.sentence.checkb
-  format.title add.media output
+  title add.media output
   howpublished new.block.checka
   howpublished output
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1836,13 +2122,16 @@
 
 FUNCTION {unpublished}
 { output.bibitem
-  author.before
-  format.btitle "title" output.check
+  output.author.head
+  new.sentence
+  title "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note "note" output.check
   new.sentence
@@ -1853,12 +2142,14 @@
 
 FUNCTION {online}
 { output.bibitem
-  format.authors output
+  format.author output
   title howpublished new.sentence.checkb
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   howpublished new.dblslash.checka
   howpublished output
-  editor.organization.after
+  editor.organization.rest
   new.sentence
   new.block
   output.address.publisher
@@ -1877,25 +2168,24 @@
 FUNCTION {electronic} {online}
 FUNCTION {thesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
-  %%type "type" output.check
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
-  %%number output % code of the speciality
   specialitycode.or.number output % code of the speciality, new in v.1.2i
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours from the head zone
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1905,13 +2195,14 @@
   format.annote output
   fin.entry
 }
-
 %%  format.techrep.type.number output.nonnull
 %%  format.url output
 FUNCTION {report}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   type "type" output.check
   new.colon
@@ -1920,14 +2211,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -1940,9 +2231,9 @@
 
 FUNCTION {phdthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
@@ -1951,13 +2242,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1967,12 +2259,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {mastersthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.mathesis format.thesis.type output.nonnull
   new.colon
@@ -1981,13 +2272,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1997,12 +2289,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {docthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.docthesis format.thesis.type output.nonnull
   new.colon
@@ -2011,13 +2302,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicate athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2027,7 +2319,6 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {conference} { inproceedings }
 
 %%  format.url output
@@ -2035,7 +2326,7 @@
 FUNCTION {techreport}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   format.techreport.type output
   new.colon
@@ -2044,14 +2335,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -2076,96 +2367,96 @@
 MACRO {oct} {"Oct."}
 MACRO {nov} {"Nov."}
 MACRO {dec} {"Dec."}
-MACRO {aa}{"Astron. \& Astrophys."}
-MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."}
-MACRO {aj} {"Astron. J."}
+MACRO {aa}{"Astron.\ \& Astrophys."}
+MACRO {aasup}{"Astron.\ \& Astrophys.\ Suppl.\ Ser."}
+MACRO {aj} {"Astron.\ J."}
 MACRO {aph} {"Acta Phys."}
-MACRO {advp} {"Adv. Phys."}
-MACRO {ajp} {"Amer. J. Phys."}
-MACRO {ajm} {"Amer. J. Math."}
-MACRO {amsci} {"Amer. Sci."}
-MACRO {anofd} {"Ann. Fluid Dyn."}
-MACRO {am} {"Ann. Math."}
-MACRO {ap} {"Ann. Phys. (NY)"}
-MACRO {adp} {"Ann. Phys. (Leipzig)"}
-MACRO {ao} {"Appl. Opt."}
-MACRO {apl} {"Appl. Phys. Lett."}
+MACRO {advp} {"Adv.\ Phys."}
+MACRO {ajp} {"Amer.\ J.\ Phys."}
+MACRO {ajm} {"Amer.\ J.\ Math."}
+MACRO {amsci} {"Amer.\ Sci."}
+MACRO {anofd} {"Ann.\ Fluid Dyn."}
+MACRO {am} {"Ann.\ Math."}
+MACRO {ap} {"Ann.\ Phys.\ (NY)"}
+MACRO {adp} {"Ann.\ Phys.\ (Leipzig)"}
+MACRO {ao} {"Appl.\ Opt."}
+MACRO {apl} {"Appl.\ Phys.\ Lett."}
 MACRO {app} {"Astroparticle Phys."}
-MACRO {apj} {"Astrophys. J."}
-MACRO {apjsup} {"Astrophys. J. Suppl."}
-MACRO {apss} {"Astrophys. Space Sci."}
-MACRO {araa} {"Ann. Rev. Astron. Astrophys."}
-MACRO {baas} {"Bull. Amer. Astron. Soc."}
-MACRO {baps} {"Bull. Amer. Phys. Soc."}
-MACRO {cmp} {"Comm. Math. Phys."}
-MACRO {cpam} {"Commun. Pure Appl. Math."}
-MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"}
-MACRO {cpc} {"Comp. Phys. Comm."}
-MACRO {cqg} {"Class. Quant. Grav."}
-MACRO {cra} {"C. R. Acad. Sci. A"}
-MACRO {fed} {"Fusion Eng. \& Design"}
+MACRO {apj} {"Astrophys.\ J."}
+MACRO {apjsup} {"Astrophys.\ J.\ Suppl."}
+MACRO {apss} {"Astrophys.\ Space Sci."}
+MACRO {araa} {"Ann.\ Rev.\ Astron.\ Astrophys."}
+MACRO {baas} {"Bull.\ Amer.\ Astron.\ Soc."}
+MACRO {baps} {"Bull.\ Amer.\ Phys.\ Soc."}
+MACRO {cmp} {"Comm.\ Math.\ Phys."}
+MACRO {cpam} {"Commun.\ Pure Appl.\ Math."}
+MACRO {cppcf} {"Comm.\ Plasma Phys.\ \& Controlled Fusion"}
+MACRO {cpc} {"Comp.\ Phys.\ Comm."}
+MACRO {cqg} {"Class.\ Quant.\ Grav."}
+MACRO {cra} {"C.\ R.\ Acad.\ Sci.\ A"}
+MACRO {fed} {"Fusion Eng.\ \& Design"}
 MACRO {ft} {"Fusion Tech."}
-MACRO {grg} {"Gen. Relativ. Gravit."}
-MACRO {ieeens} {"IEEE Trans. Nucl. Sci."}
-MACRO {ieeeps} {"IEEE Trans. Plasma Sci."}
-MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"}
+MACRO {grg} {"Gen.\ Relativ.\ Gravit."}
+MACRO {ieeens} {"IEEE Trans.\ Nucl.\ Sci."}
+MACRO {ieeeps} {"IEEE Trans.\ Plasma Sci."}
+MACRO {ijimw} {"Interntl.\ J.\ Infrared \& Millimeter Waves"}
 MACRO {ip} {"Infrared Phys."}
 MACRO {irp} {"Infrared Phys."}
-MACRO {jap} {"J. Appl. Phys."}
-MACRO {jasa} {"J. Acoust. Soc. America"}
-MACRO {jcp} {"J. Comp. Phys."}
-MACRO {jchp} {"J. Chem. Phys."}
-MACRO {jetp} {"Sov. Phys.--JETP"}
-MACRO {jfe} {"J. Fusion Energy"}
-MACRO {jfm} {"J. Fluid Mech."}
-MACRO {jmp} {"J. Math. Phys."}
-MACRO {jne} {"J. Nucl. Energy"}
-MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."}
-MACRO {jnm} {"J. Nucl. Mat."}
-MACRO {jpc} {"J. Phys. Chem."}
-MACRO {jpp} {"J. Plasma Phys."}
-MACRO {jpsj} {"J. Phys. Soc. Japan"}
-MACRO {jsi} {"J. Sci. Instrum."}
-MACRO {jvst} {"J. Vac. Sci. \& Tech."}
+MACRO {jap} {"J.\ Appl.\ Phys."}
+MACRO {jasa} {"J.\ Acoust.\ Soc.\ America"}
+MACRO {jcp} {"J.\ Comp.\ Phys."}
+MACRO {jchp} {"J.\ Chem.\ Phys."}
+MACRO {jetp} {"Sov.\ Phys.--JETP"}
+MACRO {jfe} {"J.\ Fusion Energy"}
+MACRO {jfm} {"J.\ Fluid Mech."}
+MACRO {jmp} {"J.\ Math.\ Phys."}
+MACRO {jne} {"J.\ Nucl.\ Energy"}
+MACRO {jnec} {"J.\ Nucl.\ Energy, C: Plasma Phys., Accelerators, Thermonucl.\ Res."}
+MACRO {jnm} {"J.\ Nucl.\ Mat."}
+MACRO {jpc} {"J.\ Phys.\ Chem."}
+MACRO {jpp} {"J.\ Plasma Phys."}
+MACRO {jpsj} {"J.\ Phys.\ Soc.\ Japan"}
+MACRO {jsi} {"J.\ Sci.\ Instrum."}
+MACRO {jvst} {"J.\ Vac.\ Sci.\ \& Tech."}
 MACRO {nat} {"Nature"}
 MACRO {nature} {"Nature"}
-MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"}
-MACRO {nf} {"Nucl. Fusion"}
-MACRO {nim} {"Nucl. Inst. \& Meth."}
-MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."}
-MACRO {np} {"Nucl. Phys."}
-MACRO {npb} {"Nucl. Phys. B"}
-MACRO {nt/f} {"Nucl. Tech./Fusion"}
-MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"}
+MACRO {nedf} {"Nucl.\ Eng.\ \& Design/Fusion"}
+MACRO {nf} {"Nucl.\ Fusion"}
+MACRO {nim} {"Nucl.\ Inst.\ \& Meth."}
+MACRO {nimpr} {"Nucl.\ Inst.\ \& Meth.\ in Phys.\ Res."}
+MACRO {np} {"Nucl.\ Phys."}
+MACRO {npb} {"Nucl.\ Phys.\ B"}
+MACRO {nt/f} {"Nucl.\ Tech./Fusion"}
+MACRO {npbpc} {"Nucl.\ Phys.\ B (Proc.\ Suppl.)"}
 MACRO {inc} {"Nuovo Cimento"}
 MACRO {nc} {"Nuovo Cimento"}
-MACRO {pf} {"Phys. Fluids"}
-MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."}
-MACRO {pfb} {"Phys. Fluids B: Plasma Phys."}
-MACRO {pl} {"Phys. Lett."}
-MACRO {pla} {"Phys. Lett. A"}
-MACRO {plb} {"Phys. Lett. B"}
-MACRO {prep} {"Phys. Rep."}
-MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"}
-MACRO {pp} {"Phys. Plasmas"}
-MACRO {pop} {"Phys. Plasmas"}
-MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"}
-MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"}
-MACRO {prl} {"Phys. Rev. Lett."}
-MACRO {pr} {"Phys. Rev."}
-MACRO {physrev} {"Phys. Rev."}
-MACRO {pra} {"Phys. Rev. A"}
-MACRO {prb} {"Phys. Rev. B"}
-MACRO {prc} {"Phys. Rev. C"}
-MACRO {prd} {"Phys. Rev. D"}
-MACRO {pre} {"Phys. Rev. E"}
-MACRO {ps} {"Phys. Scripta"}
-MACRO {procrsl} {"Proc. Roy. Soc. London"}
-MACRO {rmp} {"Rev. Mod. Phys."}
-MACRO {rsi} {"Rev. Sci. Inst."}
+MACRO {pf} {"Phys.\ Fluids"}
+MACRO {pfa} {"Phys.\ Fluids A: Fluid Dyn."}
+MACRO {pfb} {"Phys.\ Fluids B: Plasma Phys."}
+MACRO {pl} {"Phys.\ Lett."}
+MACRO {pla} {"Phys.\ Lett.\ A"}
+MACRO {plb} {"Phys.\ Lett.\ B"}
+MACRO {prep} {"Phys.\ Rep."}
+MACRO {pnas} {"Proc.\ Nat.\ Acad.\ Sci.\ USA"}
+MACRO {pp} {"Phys.\ Plasmas"}
+MACRO {pop} {"Phys.\ Plasmas"}
+MACRO {ppcf} {"Plasma Phys.\ \& Controlled Fusion"}
+MACRO {phitrsl} {"Philos.\ Trans.\ Roy.\ Soc.\ London"}
+MACRO {prl} {"Phys.\ Rev.\ Lett."}
+MACRO {pr} {"Phys.\ Rev."}
+MACRO {physrev} {"Phys.\ Rev."}
+MACRO {pra} {"Phys.\ Rev.\ A"}
+MACRO {prb} {"Phys.\ Rev.\ B"}
+MACRO {prc} {"Phys.\ Rev.\ C"}
+MACRO {prd} {"Phys.\ Rev.\ D"}
+MACRO {pre} {"Phys.\ Rev.\ E"}
+MACRO {ps} {"Phys.\ Scripta"}
+MACRO {procrsl} {"Proc.\ Roy.\ Soc.\ London"}
+MACRO {rmp} {"Rev.\ Mod.\ Phys."}
+MACRO {rsi} {"Rev.\ Sci.\ Inst."}
 MACRO {science} {"Science"}
-MACRO {sciam} {"Sci. Am."}
-MACRO {sam} {"Stud. Appl. Math."}
+MACRO {sciam} {"Sci.\ Am."}
+MACRO {sam} {"Stud.\ Appl.\ Math."}
 MACRO {st} {"Sky and Telesc."}
 MACRO {cjp} {"Czech. J. Phys."}
 MACRO {el} {"Europhys. Lett."}
@@ -2208,40 +2499,40 @@
 MACRO {suplatt} {"Superlatt. Microstr."}
 MACRO {sust} {"Supercond. Sci. Technol."}
 MACRO {znat} {"Z. Naturforsch."}
-MACRO {appopt} {"Appl. Opt."}
-MACRO {bell}   {"Bell Syst. Tech. J."}
-MACRO {ell}    {"Electron. Lett."}
-MACRO {jasp}   {"J. Appl. Spectr."}
-MACRO {jqe}    {"IEEE J. Quantum Electron."}
-MACRO {jlwt}   {"J. Lightwave Technol."}
-MACRO {jmo}    {"J. Mod. Opt."}
-MACRO {josa}   {"J. Opt. Soc. America"}
-MACRO {josaa}  {"J. Opt. Soc. Amer.~A"}
-MACRO {josab}  {"J. Opt. Soc. Amer.~B"}
-MACRO {jdp}    {"J. Phys. (Paris)"}
-MACRO {oc}     {"Opt. Commun."}
-MACRO {ol}     {"Opt. Lett."}
-MACRO {os}     {"Opt. Spectrosc."}
+MACRO {appopt} {"Appl.\ Opt."}
+MACRO {bell}   {"Bell Syst.\ Tech.\ J."}
+MACRO {ell}    {"Electron.\ Lett."}
+MACRO {jasp}   {"J.\ Appl.\ Spectr."}
+MACRO {jqe}    {"IEEE J.\ Quantum Electron."}
+MACRO {jlwt}   {"J.\ Lightwave Technol."}
+MACRO {jmo}    {"J.\ Mod.\ Opt."}
+MACRO {josa}   {"J.\ Opt.\ Soc.\ America"}
+MACRO {josaa}  {"J.\ Opt.\ Soc.\ Amer.~A"}
+MACRO {josab}  {"J.\ Opt.\ Soc.\ Amer.~B"}
+MACRO {jdp}    {"J.\ Phys.\ (Paris)"}
+MACRO {oc}     {"Opt.\ Commun."}
+MACRO {ol}     {"Opt.\ Lett."}
+MACRO {os}     {"Opt.\ Spectrosc."}
 MACRO {phtl}   {"IEEE Photon. Technol. Lett."}
-MACRO {pspie}  {"Proc. Soc. Photo-Opt. Instrum. Eng."}
+MACRO {pspie}  {"Proc.\ Soc.\ Photo-Opt.\ Instrum. Eng."}
 MACRO {vr}     {"Vision Res."}
-MACRO {zph}    {"Z. f. Physik"}
-MACRO {zphb}   {"Z. f. Physik~B"}
-MACRO {zphd}   {"Z. f. Physik~D"}
+MACRO {zph}    {"Z.\ f.\ Physik"}
+MACRO {zphb}   {"Z.\ f.\ Physik~B"}
+MACRO {zphd}   {"Z.\ f.\ Physik~D"}
 MACRO {sse} {"Solid-State Electron."}
 MACRO {pss} {"Phys. Sol. State"}
 MACRO {nl}  {"Nano Lett."}
-MACRO {sjpp} {"Sov. J. Plasma Phys."}
-MACRO {spd}  {"Sov. Phys.--Doklady"}
-MACRO {sptp} {"Sov. Phys.--Tech. Phys."}
-MACRO       {spu}  {"Sov. Phys.--Uspekhi"}
+MACRO {sjpp} {"Sov.\ J.\ Plasma Phys."}
+MACRO {spd}  {"Sov.\ Phys.--Doklady"}
+MACRO {sptp} {"Sov.\ Phys.--Tech. Phys."}
+MACRO {spu}  {"Sov.\ Phys.--Uspekhi"}
 MACRO {ufn}  {"\CYRU\CYRF\CYRN"}
 MACRO {pu}  {"Phys.--Uspekhi"}
-MACRO {sjot} {"Sov. J. Opt. Technol."}
-MACRO {sjqe} {"Sov. J. Quantum Electron."}
-MACRO {sleb} {"Sov. Phys.--Leb. Inst. Rep."}
-MACRO {stph} {"Sov. Phys.--Techn. Phys."}
-MACRO {stphl}{"Sov. Techn. Phys. Lett."}
+MACRO {sjot} {"Sov.\ J.\ Opt.\ Technol."}
+MACRO {sjqe} {"Sov.\ J.\ Quantum Electron."}
+MACRO {sleb} {"Sov.\ Phys.--Leb.\ Inst.\ Rep."}
+MACRO {stph} {"Sov.\ Phys.--Techn.\ Phys."}
+MACRO {stphl}{"Sov.\ Techn.\ Phys.\ Lett."}
 
 READ
 
@@ -2248,7 +2539,6 @@
 
 
 
-
 STRINGS { longest.label }
 
 INTEGERS { number.label longest.label.width }
@@ -2285,15 +2575,7 @@
   "\providecommand*{\BibUrl}[1]{\url{#1}}"           write$ newline$
   "\providecommand{\BibAnnote}[1]{}"                 write$ newline$
   "\providecommand*{\BibEmph}[1]{#1}"                write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{---}" write$ newline$
-  %\DeclareUTFcharacter[\UTFencname]{x2014}{\cyrdash}
-  %"\let\cyrdash\textemdash" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\hbox to.8em{--\hss--}}" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\textemdash}" write$ newline$
   "\ProvideTextCommandDefault{\cyrdash}{\iflanguage{russian}{\hbox to.8em{--\hss--}}{\textemdash}}" write$ newline$
-  %%"\ProvideTextCommandDefault{\cyrdash}{%"  write$ newline$
-  %%"  \iflanguage{russian}{\hbox to.8em{--\hss--}}{%" write$ newline$
-  %%"    \iflanguage{ukrainian}{\hbox to.8em{--\hss--}}{\textemdash}}}"  write$ newline$
   "\providecommand*{\BibDash}{\ifdim\lastskip>0pt\unskip\nobreak\hskip.2em plus 0.1em\fi" write$ newline$
   "\cyrdash\hskip.2em plus 0.1em\ignorespaces}" write$ newline$
   "\renewcommand{\newblock}{\ignorespaces}" write$ newline$
@@ -2316,5 +2598,6 @@
 
 EXECUTE {end.bib}
 
+\endinput
 %%
 %% End of file `gost2008l.bst'.

Modified: trunk/Master/texmf-dist/bibtex/bst/gost/gost2008ls.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/gost/gost2008ls.bst	2020-12-29 00:54:00 UTC (rev 57250)
+++ trunk/Master/texmf-dist/bibtex/bst/gost/gost2008ls.bst	2020-12-29 02:19:51 UTC (rev 57251)
@@ -4,30 +4,22 @@
 %%
 %% The original source files were:
 %%
-%% gost.dtx  (with options: `bst,modern,eprint,long,sort')
+%% gost.dtx  (with options: `bst,eprint,long,sort')
 %% 
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%   http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
+%% IMPORTANT NOTICE:
 %% 
-%% This file has the LPPL maintenance status "maintained".
-%% Maintained by Igor A. Kotelnikov.
+%% For the copyright see the source file.
 %% 
-%% Current version: 1.2j, 2017.01.12
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from gost2008ls.bst.
 %% 
-%% Please, send bug report via e-mail:
-%%   kia999 at mail dot ru <Igor Kotelnikov>
-%% or
-%%   polyama at yahoo dot com <Maksym Polyakov>
+%% For distribution of the original source see the terms
+%% for copying and modification in the file gost.dtx.
 %% 
-
-
-
-%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
 %% This bibstyle attempts to format bibliography according to
 %% GOST 7.0.5-2008 for bibliographic reference.
 
@@ -67,15 +59,15 @@
     language
     langid          % new in v1.2c
     booklanguage
-    %date            % not implemented yet...
+    date            % new in v1.2i
     pagetotal
     url
     urldate
     isbn
     doi
+    eprint
     eprinttype      % = archivePrefix
     eprintclass     % = primaryClass
-    eprint
     % new in v1.2f:
     % appear in biblatex:
     %addendum       % not implemented yet...
@@ -100,9 +92,24 @@
   {}
   { label }
 
-INTEGERS { output.state before.all mid.sentence after.sentence after.block
-after.dblslash after.slash after.colon after.semicolon }
+INTEGERS {
+    output.state
+    before.all
+    mid.sentence
+    after.sentence
+    after.block
+    after.dblslash
+    after.slash
+    after.colon
+    after.semicolon
+}
 
+STRINGS { curlanguage }
+
+STRINGS { s t }
+
+STRINGS { y m d }   % new in v.1.2j
+
 FUNCTION {init.state.consts}
 { #0 'before.all :=
   #1 'mid.sentence :=
@@ -114,11 +121,18 @@
   #7 'after.semicolon :=
 }
 
-STRINGS { s t }
+FUNCTION {set.language}
+{ langid empty$
+    { language empty$
+        { "english" 'curlanguage := }
+        { language  'curlanguage := }
+      if$
+    }
+    { langid  'curlanguage := }
+  if$
+}
 
-STRINGS { curlanguage }
-
-FUNCTION {change.language}
+FUNCTION {reset.language}
 { booklanguage empty$
     { "" }
     { booklanguage  'curlanguage :=
@@ -143,7 +157,7 @@
         { output.state before.all =
             'write$
             { output.state after.dblslash =
-                { "~//" * change.language * " " * write$ }
+                { "~//" * reset.language * " " * write$ }
                 { output.state after.slash =
                     { "~/ " * write$ }
                     { output.state after.colon =
@@ -177,7 +191,9 @@
 FUNCTION {output.check}
 { 't :=
   duplicate$ empty$
-    { pop$ "empty " t * " in " * cite$ * warning$ }
+    { pop$
+      "empty " t * " in " * cite$ * warning$
+    }
     'output.nonnull
   if$
 }
@@ -256,23 +272,6 @@
   if$
 }
 
-INTEGERS { len }
-
-FUNCTION {chop.word}
-{ 's :=
-  'len :=
-  s #1 len substring$ =
-    { s len #1 + global.max$ substring$ }
-    's
-  if$
-}
-
-FUNCTION {non.stop}
-{ duplicate$
-   "}" * add.period$
-   #-1 #1 substring$ "." =
-}
-
 FUNCTION {new.block.checka}
 { empty$
     'skip$
@@ -319,9 +318,21 @@
   if$
 }
 
+%%
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {spaces.around}
+{ " " swap$ * " " * }
+
 FUNCTION {emphasize}
 { duplicate$ empty$
-    { pop$ "" }
+    %{ pop$ "" }
+    'skip$       % v.1.2k
     { "\BibEmph{" swap$ * "}" * }
   if$
 }
@@ -333,7 +344,7 @@
   if$
 }
 
-FUNCTION {enclose.square.brackets}
+FUNCTION {bracketise}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -341,7 +352,7 @@
   if$
 }
 
-FUNCTION {enclose.round.brackets}
+FUNCTION {paranthesify}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -349,25 +360,92 @@
   if$
 }
 
-FUNCTION {space.word}
-{ " " swap$ * " " * }
+INTEGERS { len }
 
-FUNCTION {bbl.edby}    %  { "\bbledby{}" }
+FUNCTION {chop.word}
+{ 's :=
+  'len :=
+  s #1 len substring$ =
+    { s len #1 + global.max$ substring$ }
+    's
+  if$
+}
+
+FUNCTION {tie.connect}
+ {"~" swap$ * *
+ }
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { t #1 #2 substring$ "--" = not
+            { "--" *
+              t #2 global.max$ substring$ 't :=
+            }
+            {   { t #1 #1 substring$ "-" = }
+                { "-" *
+                  t #2 global.max$ substring$ 't :=
+                }
+              while$
+            }
+          if$
+        }
+        { t #1 #1 substring$ *
+          t #2 global.max$ substring$ 't :=
+        }
+      if$
+    }
+  while$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+        { #1 'multiresult := }
+        { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {bbl.edby}
 { curlanguage "english" =
-   {"Ed.\ by"}
+   {"ed.\ by"}
    { curlanguage "ukrainian" =
-      {"{\cyr\CYRP\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
+      {"{\cyr\cyrp\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
       { curlanguage "russian" =
-         {"{\cyr\CYRP\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
+         {"{\cyr\cyrp\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
          { curlanguage "german" =
             { "ed." }
-            {"language is not defined: " language "edby" * * warning$ "Ed.\ by"}
+            {"language is not defined: " curlanguage " in bbl.edby" * * warning$ "Ed.\ by"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.cmplr}
+FUNCTION {bbl.compiler}
 { curlanguage "english" =
    { "Compiler"}
    { curlanguage "german" =
@@ -376,15 +454,15 @@
          {"{\cyr\CYRU\cyrk\cyrl.}"}
          { curlanguage "russian" =
             {"{\cyr\CYRS\cyro\cyrs\cyrt.}"}
-            {"language is not defined: " language  "cmplr" * * warning$ "Compiler"}
+            {"language is not defined: " curlanguage  " in bbl.compiler" * * warning$ "Compiler"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.edition} %  { "\bbledition{}" }
+FUNCTION {bbl.edition}
 { curlanguage "english" =
-   {"edition"}
+   {"ed."}
    { curlanguage "ukrainian" =
       {"{\cyr\cyrv\cyri\cyrd.}"}
       { curlanguage "russian" =
@@ -395,7 +473,7 @@
                {"edizione"}
                { curlanguage "french" =
                   {"\'{e}dition"}
-                  {"language is not defined: " language  "edition" * * warning$ "edition"}
+                  {"language is not defined: " curlanguage  " in bbl.edition" * * warning$ "ed."}
                if$}
             if$}
          if$}
@@ -403,7 +481,7 @@
    if$}
 if$}
 
-FUNCTION {bbl.vvolume} %  { "\bblVolume{}" }
+FUNCTION {bbl.vvolume}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Volume"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -410,12 +488,12 @@
       { "\CYRT\cyro\cyrm" }
       { curlanguage "german" =
          {"{Band}"} %%%% { "Volumen" }
-         {"language is not defined: " language  "vvolume" * * warning$ "Volume"}
+         {"language is not defined: " curlanguage  " in bbl.vvolume" * * warning$ "Volume"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.vvol}    %  { "\bblVol{}" }
+FUNCTION {bbl.vvol}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Vol."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -422,12 +500,12 @@
       {"\CYRT."}
       { curlanguage "german" =
          {"{Bd.}"} %%%% { "Vol." }
-         {"language is not defined: " language  "vvol" * * warning$ "Vol."}
+         {"language is not defined: " curlanguage  " in bbl.vvol" * * warning$ "Vol."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iissue}  %  { "\bblIssue{}" }
+FUNCTION {bbl.iissue}
 { curlanguage "english" =
    {"Issue"}
    { curlanguage "ukrainian" =
@@ -436,13 +514,13 @@
          {"\CYRV\cyrery\cyrp\cyru\cyrs\cyrk"}
          { curlanguage "german" =
             {"{Heft}"} %%%% { "Ausgabe" }
-            {"language is not defined: " language "iissue" * * warning$ "Issue"}
+            {"language is not defined: " curlanguage " in bbl.iissue" * * warning$ "Issue"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iiss}  %  { "\bblIss{}" }
+FUNCTION {bbl.iiss}
 { curlanguage "english" =
    {"Iss."}
    { curlanguage "ukrainian" =
@@ -451,13 +529,13 @@
          {"\CYRV\cyrery\cyrp."}
          { curlanguage "german" =
             {"{H.}"}
-            {"language is not defined: " language "iiss" * * warning$ "Iss."}
+            {"language is not defined: " curlanguage " in bbl.iiss" * * warning$ "Iss."}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.of}      %  { "\bblof{}" }
+FUNCTION {bbl.of}
 { curlanguage "english" =
    {"of"}
    { curlanguage "german" =
@@ -466,13 +544,13 @@
          { "{\cyr\cyrii\cyrz}" }
          { curlanguage "russian" =
             { "{\cyr\cyri\cyrz}" }
-            {"language is not defined: " language "of" * * warning$ "of"}
+            {"language is not defined: " curlanguage " in bbl.of" * * warning$ "of"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.etal}      %  { "\bblof{}" }
+FUNCTION {bbl.etal}
 { curlanguage "english" =
    {"et~al."}
    { curlanguage "german" =
@@ -481,14 +559,31 @@
          {"{\cyr\cyrt\cyra~\cyrii\cyrn.}"}
          { curlanguage "russian" =
             {"{\cyr\cyri~\cyrd\cyrr.}"}
-            {"language is not defined: " language  "et~al" * * warning$ "et~al."}
+            {"language is not defined: " curlanguage  " in bbl.etal" * * warning$ "et~al."}
          if$}
       if$}
    if$}
 if$}
 
+FUNCTION {bbl.and}
+{ curlanguage "english" =
+  {"and"}
+   { curlanguage "german" =
+      { "und" }
+      { curlanguage "ukrainian" =
+         {"{\cyrii}"}
+         { curlanguage "russian" =
+            {"{\cyri}"}
+            { curlanguage "french" =
+                {"et"}
+                {"language is not defined: " curlanguage  " in bbl.and" * * warning$ "and"}
+            if$}
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {bbl.nnumber} %  { "\bblNumber{}" }
+FUNCTION {bbl.nnumber}
 { curlanguage "english" =
    {"Number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -495,12 +590,12 @@
       { "\CYRN\cyro\cyrm\cyre\cyrr" }
       { curlanguage "german" =
          {"{Heft}"} %%% { "Anzahl" }
-         {"language is not defined: " language  "nnumber" * * warning$ "Number"}
+         {"language is not defined: " curlanguage  " in bbl.nnumber" * * warning$ "Number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.number}  %  { "\bblnumber{}" }
+FUNCTION {bbl.number}
 { curlanguage "english" =
    {"number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -507,27 +602,30 @@
       {"{\cyr\cyrn\cyro\cyrm\cyre\cyrr}"}
       { curlanguage "german" =
          {"{Heft}"} %%% { "anzahl" }???
-         {"language is not defined: " language  "number" * * warning$ "number"}
+         {"language is not defined: " curlanguage  " in bbl.number" * * warning$ "number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nr}     %   { "\bblno{}" }
+FUNCTION {bbl.nr}
 { curlanguage "english" =
    {"no."}
    { curlanguage "italian" =
-      { "no" }
+      { "no." }
       { curlanguage "ukrainian" = curlanguage "russian" = or
          { "{\cyr\textnumero}" }
          { curlanguage "german" =
-            {"{H.}"} %%% { "an." }
-            {"language is not defined: " language "nr" * * warning$ "no."}
+            {"{nu.}"} %%% { "an." }
+            { curlanguage "french" =
+                { "no." }
+                {"language is not defined: " curlanguage " in bbl.nr" * * warning$ "no."}
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nnr}     %   { "\bblno{}" }
+FUNCTION {bbl.nnr}
 { curlanguage "english" =
    {"No."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -534,30 +632,30 @@
       { "{\cyr\textnumero}" }
       { curlanguage "german" =
          {"{H.}"} %%% { "an." }
-         {"language is not defined: " language  "nnr" * * warning$ "No."}
+         {"language is not defined: " curlanguage  " in bbl.nnr" * * warning$ "No."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.in}    %    { "\bblin{}" }
+FUNCTION {bbl.in}
 { curlanguage "english" = curlanguage "german" = or
    {"in"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "{\cyr\cyrv}" }
-      {"language is not defined: " language  "in" * * warning$ "in"}
+      {"language is not defined: " curlanguage  " in bbl.in" * * warning$ "in"}
    if$}
 if$}
 
-FUNCTION {bbl.iin}  %     { "\bblIn{}" }
+FUNCTION {bbl.iin}
 { curlanguage "english" = curlanguage "german" = or
    {"In"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "\CYRV" }
-      {"language is not defined: " language  "iin" * * warning$ "In"}
+      {"language is not defined: " curlanguage  " in bbl.iin" * * warning$ "In"}
    if$}
 if$}
 
-FUNCTION {bbl.pages}    % { "\bblpp." }
+FUNCTION {bbl.pages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."} %%% {"pp."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -564,12 +662,12 @@
       {"{\cyr\cyrs.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "pages" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.pages" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.page}   %   { "\bblp."
+FUNCTION {bbl.page}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -576,12 +674,12 @@
       {"{\cyr\cyrs.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "page" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.page" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppages}%    { "\bblPp." }
+FUNCTION {bbl.ppages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."} %%%% { "Pp." }
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -588,12 +686,12 @@
       {"{\cyr\CYRS.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language "ppages" * * warning$ "P."}
+         {"language is not defined: " curlanguage " in bbl.ppages" * * warning$ "P."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppage}  %   { "\bblP." }
+FUNCTION {bbl.ppage}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -600,7 +698,7 @@
       {"{\cyr\CYRS.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language  "ppage" * * warning$ "P."}
+         {"language is not defined: " curlanguage  " in bbl.ppage" * * warning$ "P."}
       if$}
    if$}
 if$}
@@ -614,7 +712,10 @@
          { "{\CYRR\cyre\cyrzh\cyri\cyrm\ \cyrd\cyro\cyrs\cyrt\cyru\cyrp\cyra}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "Mode d'acc\`{e}s" }
+                { "language is not defined: " curlanguage " in bbl.url" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
@@ -628,13 +729,16 @@
          { "{\cyrd\cyra\cyrt\cyra\ \cyro\cyrb\cyrr\cyra\cyrshch\cyre\cyrn\cyri\cyrya}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "{en ligne; acc\'{e}d\'{e}}" }
+                { "language is not defined: " curlanguage " in bbl.urldate" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.techreport} % rename to bbl.techreport
+FUNCTION {bbl.techreport}
 { curlanguage "english" =
    { "Rep." }
    { curlanguage "german" =
@@ -641,7 +745,7 @@
       { "Bericht" }
       { curlanguage "russian" =
          { "{\cyr\CYRO\cyrt\cyrch\cyre\cyrt}" }
-         { "language is not defined: " language "techrep" * * warning$ "Rep." }
+         { "language is not defined: " curlanguage " in bbl.techrep" * * warning$ "Rep." }
       if$}
    if$}
 if$}
@@ -650,12 +754,12 @@
 { curlanguage "english" =
    { "Master's thesis" }
    { curlanguage "german" =
-      { "Diss.~Mag." }
+      { "diss.~mag." }
       { curlanguage "russian" =
-        { "{\cyr\CYRK\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
+        { "{\cyr\cyrk\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
           "\cyro\cyrn\cyrn\cyra\cyrya\ \cyrr\cyra\cyrb\cyro\cyrt\cyra\ " *
           "\cyrm\cyra\cyrg\cyri\cyrs\cyrt\cyrr\cyra}" * }
-         { "language is not defined: " language "mthesis" * * warning$ "Master's thesis" }
+         { "language is not defined: " curlanguage " in bbl.mthesis" * * warning$ "Master's thesis" }
       if$}
    if$}
 if$}
@@ -664,13 +768,13 @@
 { curlanguage "english" =
    { "Ph.\,D. thesis" }
    { curlanguage "german" =
-      { "Diss.~Ph.\,D." }
+      { "diss.~Ph.\,D." }
       { curlanguage "russian" =
          { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrk\cyra\cyrn\cyrd. "
            "\cyrn\cyra\cyru\cyrk}" * }
          { curlanguage "french" =
-           { "Th\`{e}se de doctorat" }
-           { "language is not defined: " language "phdthesis" * * warning$ "Ph.\,D. thesis" }
+           { "th\`{e}se de doctorat" }
+           { "language is not defined: " curlanguage " in bbl.phdthesis" * * warning$ "Ph.\,D. thesis" }
          if$}
       if$}
    if$}
@@ -678,36 +782,23 @@
 
 FUNCTION {bbl.docthesis}
 { curlanguage "english" =
-   { "Dr.\,Sci. dissertation" }
+   { "dr.\,sci. dissertation" }
    { curlanguage "german" =
-      { "Diss.~Dr." }
+      { "diss.~dr." }
       { curlanguage "russian" =
          { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrd-\cyrr\cyra\ "
            "\cyrn\cyra\cyru\cyrk}" * }
-         { "language is not defined: " language "docthesis" * * warning$ "Dr.\,Sci. dissertation" }
+         { "language is not defined: " curlanguage " in bbl.docthesis" * * warning$ "Dr.\,Sci. dissertation" }
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.thesis.type}
-{ type "mathesis" =
-  { bbl.mathesis }
-  { type "phdthesis" =
-    { bbl.phdthesis }
-    { type "docthesis" =
-      { bbl.docthesis }
-      %%{ "!!!" type * "t" change.case$ }
-      { type "t" change.case$ }
-    if$}
-  if$}
-if$}
-
 FUNCTION {bbl.nnoaddress}
 { curlanguage "english" =
    { "S.\ l." }
    { curlanguage "russian" =
       { "{\cyr\CYRB.\ \cyrm.}" }
-      { "language is not defined: " language "nnoaddress" * * warning$ "S.\ l." }
+      { "language is not defined: " curlanguage " in bbl.nnoaddress" * * warning$ "S.\ l." }
    if$}
 if$}
 
@@ -716,7 +807,7 @@
    { "s.\ n." }
    { curlanguage "russian" =
       { "{\cyr\cyrb.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "s.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "s.\ n." }
    if$}
 if$}
 
@@ -725,7 +816,7 @@
    { "S.\ n." }
    { curlanguage "russian" =
       { "{\cyr\CYRB.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "S.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "S.\ n." }
    if$}
 if$}
 
@@ -734,7 +825,7 @@
    { "Text" }
    { curlanguage "russian" = curlanguage "ukrainian" = or
       { "{\cyr\CYRT\cyre\cyrk\cyrs\cyrt}" }
-      { "language is not defined: " language "media" * * warning$ "Text" }
+      { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Text" }
    if$}
 if$}
 
@@ -747,7 +838,7 @@
       { curlanguage "ukrainian" =
         { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
           "\cyrr\cyre\cyrs\cyru\cyrr\cyrs}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -761,7 +852,7 @@
       { curlanguage "ukrainian" =
         { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
           "\cyrr\cyre\cyrs\cyru\cyrr\cyrs\ \cyro\cyrn\cyrl\cyra\cyrishrt\cyr}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -773,7 +864,7 @@
       { "\cyrr\cyru\cyrk." }
       { curlanguage "ukrainian" =
         { "\cyrr\cyru\cyrk." }
-        { "language is not defined: " language "chief" * * warning$ "chief" }
+        { "language is not defined: " curlanguage " in bbl.chief" * * warning$ "chief" }
       if$}
    if$}
 if$}
@@ -780,12 +871,12 @@
 
 FUNCTION {bbl.executor}
 { curlanguage "english" =
-   { "Executor" }
+   { "executor" }
    { curlanguage "russian" =
       { "{\cyr\cyri\cyrs\cyrp\cyro\cyrl\cyrn.}" }
       { curlanguage "ukrainian" =
         { "{\cyr\cyrv\cyri\cyrk\cyro\cyrn\cyra\cyrv\cyre\cyrc\cyrsftsn}" }
-        { "language is not defined: " language "executor" * * warning$ "executor" }
+        { "language is not defined: " curlanguage " in bbl.executor" * * warning$ "executor" }
       if$}
    if$}
 if$}
@@ -807,7 +898,7 @@
       { "ang." }
       { curlanguage "russian" =
         { "{\cyr\cyrz\cyra\cyrya\cyrv\cyrl.}" }
-        { "language is not defined: " language "req" * * warning$ "req" }
+        { "language is not defined: " curlanguage " in bbl.req" * * warning$ "req" }
       if$
       }
     if$
@@ -823,7 +914,7 @@
       { "ausg." }
       { curlanguage "russian" =
         { "{\cyr\cyro\cyrp\cyru\cyrb\cyrl.}" }
-        { "language is not defined: " language "publication" * * warning$ "publication" }
+        { "language is not defined: " curlanguage " in bbl.publication" * * warning$ "publication" }
       if$
       }
     if$
@@ -839,7 +930,7 @@
       { "Prioritat" }
       { curlanguage "russian" =
         { "{\cyr\cyrp\cyrr\cyri\cyro\cyrr\cyri\cyrt\cyre\cyrt}" }
-        { "language is not defined: " language "priority" * * warning$ "priority" }
+        { "language is not defined: " curlanguage " in bbl.priority" * * warning$ "priority" }
       if$
       }
     if$
@@ -847,69 +938,462 @@
   if$
 }
 
+FUNCTION {bbl.jan}
+{ curlanguage "english" =
+   {"Jan."}
+   { curlanguage "ukrainian" =
+      {"\CYRS\cyrii\cyrch."}
+      { curlanguage "russian" =
+         { "\CYRYA\cyrn\cyrv." }
+         { curlanguage "german" =
+            { "Jan." } % Januar
+            { "language is not defined: bbl.jan for " curlanguage * warning$ "Jan." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.feb}
+{ curlanguage "english" =
+   {"Feb."}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyryu\cyrt."}
+      { curlanguage "russian" =
+         { "\CYRF\cyre\cyrv\cyrr." }
+         { curlanguage "german" =
+            {"Feb."} % Februar
+            {"language is not defined: bbl.feb for " curlanguage * warning$ "Feb."}
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.mar}
+{ curlanguage "english" =
+   {"Mar."}
+   { curlanguage "ukrainian" =
+      {"\CYRB\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRM\cyra\cyrr\cyrt" }
+         { curlanguage "german" =
+            {"März"} % März
+            {"language is not defined: bbl.mar for " curlanguage * warning$ "Mar."}
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.apr}
+{ curlanguage "english" =
+   {"Apr."}
+   { curlanguage "ukrainian" =
+      {"\CYRK\cyrv\cyrii\cyrt."}
+      { curlanguage "russian" =
+            { "\CYRA\cyrp\cyrr." }
+         { curlanguage "german" =
+            {"Apr."} % April
+            { "language is not defined: bbl.apr for " curlanguage * warning$ "Apr." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.may}
+{ curlanguage "english" =
+   {"May"}
+   { curlanguage "ukrainian" =
+      {"\CYRT\cyrr\cyra\cyrv."}
+      { curlanguage "russian" =
+            { "\CYRM\cyra\cyrishrt" }
+         { curlanguage "german" =
+            {"Mai"}
+            { "language is not defined: bbl.may for " curlanguage * warning$ "May" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jun}
+{ curlanguage "english" =
+   {"June"}
+   { curlanguage "ukrainian" =
+      {"\CYRCH\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRI\cyryu\cyrn\cyrsftsn" }
+         { curlanguage "german" =
+            {"Juni"}
+            { "language is not defined: bbl.jun for " curlanguage * warning$ "June" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jul}
+{ curlanguage "english" =
+   {"July"}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyri\cyrp."}
+      { curlanguage "russian" =
+            { "\CYRI\cyryu\cyrl\cyrsftsn" }
+         { curlanguage "german" =
+            {"Juli"}
+            { "language is not defined: bbl.jul for " curlanguage * warning$ "July" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.aug}
+{ curlanguage "english" =
+   {"Aug."}
+   { curlanguage "ukrainian" =
+      {"\CYRS\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRA\cyrv\cyrg\." }
+         { curlanguage "german" =
+            {"Aug."} % August
+            { "language is not defined: bbl.aug for " curlanguage * warning$ "Aug." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.sep}
+{ curlanguage "english" =
+   {"Sep."}
+   { curlanguage "ukrainian" =
+      {"\CYRV\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRS\cyre\cyrn\cyrt." }
+         { curlanguage "german" =
+            {"Sep."} % September
+            { "language is not defined: bbl.sep for " curlanguage * warning$ "Sep." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.oct}
+{ curlanguage "english" =
+   {"Oct."}
+   { curlanguage "ukrainian" =
+      {"\CYRZH\cyro\cyrn."}
+      { curlanguage "russian" =
+            { "\CYRO\cyrk\cyrt." }
+         { curlanguage "german" =
+            {"Okt."} % Oktober
+            { "language is not defined: bbl.oct for " curlanguage * warning$ "Oct." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.nov}
+{ curlanguage "english" =
+   {"Nov."}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyri\cyrs."}
+      { curlanguage "russian" =
+            { "\CYRN\cyro\cyrya\cyrb." }
+         { curlanguage "german" =
+            {"Nov."} % November
+            { "language is not defined: bbl.nov for " curlanguage * warning$ "Nov." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.dec}
+{ curlanguage "english" =
+   {"Dec."}
+   { curlanguage "ukrainian" =
+      {"\CYRG\cyrr\cyru\cyrd."}
+      { curlanguage "russian" =
+            { "\CYRD\cyre\cyrk." }
+         { curlanguage "german" =
+            {"Dez."} % Dezember
+            { "language is not defined: bbl.dec for " curlanguage * warning$ "Dec." }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {bbl.arxiv}
+{ curlanguage "english" =
+   { "ArXiv" }
+   { curlanguage "ukrainian" =
+      {"ArXiv"}
+      { curlanguage "russian" =
+         { "ArXiv" }
+         { curlanguage "german" =
+            { "ArXiv" }
+            { "language is not defined: bbl.arxiv for " curlanguage * warning$ "ArXiv" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jstor}
+{ curlanguage "english" =
+   { "JSTOR" }
+   { curlanguage "ukrainian" =
+      {"JSTOR"}
+      { curlanguage "russian" =
+         { "JSTOR" }
+         { curlanguage "german" =
+            { "JSTOR" }
+            { "language is not defined: bbl.jstor for " curlanguage * warning$ "JSTOR" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.pubmed}
+{ curlanguage "english" =
+   { "PubMed" }
+   { curlanguage "ukrainian" =
+      {"PubMed"}
+      { curlanguage "russian" =
+         { "PubMed" }
+         { curlanguage "german" =
+            { "PubMed" }
+            { "language is not defined: bbl.pubmed for " curlanguage * warning$ "PubMed" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.googlebooks}
+{ curlanguage "english" =
+   { "Google Books" }
+   { curlanguage "ukrainian" =
+      {"Google \CYRK\cyrn\cyri\cyrg\cyri"}
+      { curlanguage "russian" =
+         { "Google \CYRK\cyrn\cyri\cyrg\cyri" }
+         { curlanguage "german" =
+            { "Google Books" }
+            { "language is not defined: bbl.googlebooks for " curlanguage * warning$ "Google Books" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.hdl}
+{ curlanguage "english" =
+   { "Handle.Net" }
+   { curlanguage "ukrainian" =
+      {"Handle.Net"}
+      { curlanguage "russian" =
+         { "Handle.Net" }
+         { curlanguage "german" =
+            { "Handle.Net" }
+            { "language is not defined: bbl.hdl for " curlanguage * warning$ "Handle.Net" }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {address.or.location}
+{
+  address empty$
+    { location }
+    { address }
+  if$
+}
+
+FUNCTION {specialitycode.or.number}
+{
+  specialitycode empty$
+    { number }
+    { specialitycode }
+  if$
+}
+
+FUNCTION {institution.or.school}
+{
+  institution empty$
+    { school}
+    { institution }
+  if$
+}
+FUNCTION {date.to.year}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #3 >
+        {
+          date #1 #4 substring$ 'y :=
+          y
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {date.to.month}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #6 >
+        {
+          date #6 #2 substring$ 'm :=
+          m
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {date.to.day}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #10 =
+        {
+          date #9 #2 substring$ 'd :=
+          d
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {year.or.date.to.year}
+{
+  year empty$
+    {
+      date.to.year
+    }
+    { year }
+  if$
+}
+
+FUNCTION {format.month}
+{ month empty$
+    { "" }
+    { month "Jan." =
+        { bbl.jan }
+    { month "Feb." =
+        { bbl.feb }
+    { month "Mar." =
+        { bbl.mar }
+    { month "Apr." =
+        { bbl.apr }
+    { month "May" =
+        { bbl.may }
+    { month "Jun." =
+        { bbl.jun }
+    { month "Jul." =
+        { bbl.jul }
+    { month "Aug." =
+        { bbl.aug }
+    { month "Sep." =
+        { bbl.sep }
+    { month "Oct." =
+        { "Окт." }
+    { month "Nov." =
+        { bbl.nov }
+    { month "Dec." =
+        { bbl.dec }
+        {
+          "unknown month in " cite$ * warning$
+          month
+        }
+        if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
+    if$
+}
+FUNCTION {format.date}
+{ year.or.date.to.year empty$
+    { month empty$
+        { "" }
+        { "there's a month but no year in " cite$ * warning$
+          format.month
+        }
+      if$
+    }
+    { month empty$
+        'year.or.date.to.year
+        { year.or.date.to.year ". \BibDash " format.month * * }
+      if$
+    }
+  if$
+}
+
 INTEGERS { nameptr namesleft numnames }
 
+FUNCTION {fmt.names.first}
+{ #1
+  "{vv~}{ll}{~jj}{~f.}"
+  format.name$
+}
 
-FUNCTION {format.names}
+FUNCTION {fmt.names.three}
 {
   's :=
   #1 'nameptr :=
   s num.names$ 'numnames :=
   numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr
-      "{vv~}{ll}{~jj}{~f.}" format.name$ 't :=
-      nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
+  { namesleft #0 > }
+  { s nameptr
+      "{vv~}{ll}{~jj}{~f.}"
+    format.name$ 't :=
+    nameptr #1 >
+      { nameptr #4 = numnames #4 > and
+          { "others" 't :=
+            #1 'namesleft :=
+          }
+          'skip$
+        if$
+        namesleft #1 >
+          { ", " * t * }
+          { t "others" = t "~others" = or
+              { " " * bbl.etal * }
+              { ", " * t * }
           if$
-          namesleft #1 >
-            { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
-                { " " * bbl.etal * }
-                { ", " * t * }
-              if$
-            }
-          if$
-        }
-        't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
+          }
+        if$
+      }
+      't
+    if$
+    nameptr #1 + 'nameptr :=
+    namesleft #1 - 'namesleft :=
+  }
   while$
 }
 
-
-FUNCTION {format.names.rev}
-{
-  's :=
+FUNCTION {fmt.names.all}
+{ 's :=
   #1 'nameptr :=
   s num.names$ 'numnames :=
   numnames 'namesleft :=
     { namesleft #0 > }
     { s nameptr
-      %"{f.}{~vv}{~ll}{, jj}" format.name$ 't :=
-      "{ff}{~vv}{~ll}{, jj}" format.name$ 't :=
+      %"{vv~}{ll}" format.name$ 't :=
+      "{vv~}{ll}{~jj}{~f.}"
+      format.name$ 't :=
       nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
-          if$
-          namesleft #1 >
+        { namesleft #1 >
             { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
+            { numnames #2 >  curlanguage "english" = and
+                { "," * }
+                'skip$
+              if$
+              t "others" = t "~others" = or
                 { " " * bbl.etal * }
-                { ", " * t * }
+                { " " bbl.and " " * * * t * }
               if$
             }
           if$
@@ -922,145 +1406,52 @@
   while$
 }
 
-
-FUNCTION {format.authors}
-{ author empty$
-    { "" }
-    { author format.names emphasize}
+%%<long>    { author fmt.names.all emphasize}
+%%<!long&strict>    { author fmt.names.first emphasize}
+%%<!long&!strict>    { author fmt.names.three emphasize}
+FUNCTION {format.author}
+{
+  author empty$
+    { author } %%%'skip$
+    { author fmt.names.all }
   if$
 }
 
-
-FUNCTION {format.bookauthors}
+FUNCTION {format.bookauthors.rest}
 { bookauthor empty$
     { "" }
-    { bookauthor format.names}
+    { bookauthor fmt.names.all emphasize }
   if$
 }
 
-FUNCTION {format.authors.after}
-{ author empty$
-    { "" }
-    { author format.names.rev}
-  if$
-}
-
-FUNCTION {format.bookauthors.after}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names.rev}% always cuts to 4 persons
-  if$
-}
-
-FUNCTION {format.editors.after}
+FUNCTION {format.editors.rest}
 { editor empty$
     { "" }
-    { bbl.edby "\ " * editor format.names.rev * }
+    { bbl.edby "\ " * editor fmt.names.all * }
   if$
 }
 
-FUNCTION {format.chief.after}
+FUNCTION {format.chief.rest}
 { editor empty$
     { "" }
-    { bbl.chief "\ " * editor format.names.rev * }
+    { bbl.chief "\ " * editor fmt.names.all * }
   if$
 }
 
-FUNCTION {format.executor.after}
+FUNCTION {format.executor.rest}
 { author empty$
     { "" }
-    { bbl.executor ": " * author format.names.rev * }
+    { bbl.executor ": " * author fmt.names.all * }
   if$
 }
 
-FUNCTION {format.compiler.after}
+FUNCTION {format.compiler.rest}
 { compiler empty$
     { "" }
-    { bbl.cmplr "\ " * compiler format.names.rev * }
+    { bbl.compiler "\ " * compiler fmt.names.all * }
   if$
 }
 
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    { title "t" change.case$ }
-  if$
-}
-
-FUNCTION {format.month}
-{ month empty$
-    { "" }
-    { curlanguage "russian" =
-        { month "Jan." =
-            { "\CYRYA\cyrn\cyrv." }
-        { month "Feb." =
-            { "\CYRF\cyre\cyrv\cyrr." }
-        { month "Mar." =
-            { "\CYRM\cyra\cyrr\cyrt" }
-        { month "Apr." =
-            { "\CYRA\cyrp\cyrr." }
-        { month "May" =
-            { "\CYRM\cyra\cyrishrt" }
-        { month "Jun." =
-            { "\CYRI\cyryu\cyrn\cyrsftsn" }
-        { month "Jul." =
-            { "\CYRI\cyryu\cyrl\cyrsftsn" }
-        { month "Aug." =
-            { "\CYRA\cyrv\cyrg\." }
-        { month "Sep." =
-            { "\CYRS\cyre\cyrn\cyrt." }
-        { month "Oct." =
-            { "\CYRO\cyrk\cyrt." }
-        { month "Nov." =
-            { "\CYRN\cyro\cyrya\cyrb." }
-        { month "Dec." =
-            { "\CYRD\cyre\cyrk." }
-            { month }
-            if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
-        { month }
-        if$}
-    if$
-}
-FUNCTION {format.date}
-{ year empty$
-    { month empty$
-        { "" }
-        { "there's a month but no year in " cite$ * warning$
-          format.month
-        }
-      if$
-    }
-    { month empty$
-        'year
-        { year ". \BibDash " format.month * * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {address.or.location}
-{
-  address empty$
-    { location }
-    { address }
-  if$
-}
-
-FUNCTION {specialitycode.or.number}
-{
-  specialitycode empty$
-    { number }
-    { specialitycode }
-  if$
-}
-
-FUNCTION {institution.or.school}
-{
-  institution empty$
-    { school}
-    { institution }
-  if$
-}
 FUNCTION {output.address.publisher}
 {
   address empty$ location empty$ and
@@ -1074,21 +1465,13 @@
   if$
   publisher output
 }
-
-
 FUNCTION {output.bibitem}
-{ newline$
+{
+  set.language
+  newline$
   "\bibitem" write$
   cite$ bracify write$
   newline$
-  langid empty$
-    { language empty$
-        { "english" 'curlanguage := }
-        { language  'curlanguage := }
-      if$
-    }
-    { langid  'curlanguage := }
-  if$
   "\selectlanguageifdefined" curlanguage bracify * write$
   newline$
   ""
@@ -1095,60 +1478,6 @@
   before.all 'output.state :=
 }
 
-
-FUNCTION {n.dashify}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-        { t #1 #2 substring$ "--" = not
-            { "--" *
-              t #2 global.max$ substring$ 't :=
-            }
-            {   { t #1 #1 substring$ "-" = }
-                { "-" *
-                  t #2 global.max$ substring$ 't :=
-                }
-              while$
-            }
-          if$
-        }
-        { t #1 #1 substring$ *
-          t #2 global.max$ substring$ 't :=
-        }
-      if$
-    }
-  while$
-}
-
-FUNCTION {word.in}
-{ bbl.iin
-  " " * }
-
-FUNCTION {format.btitle}
-{ title
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
-    { "~" }
-    { " " }
-  if$
-  swap$ * *
-}
-
-FUNCTION {tie.connect}
- {"~"
-  swap$ * *
- }
-
-FUNCTION {either.or.check}
-{ empty$
-    'pop$
-    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
-  if$
-}
-
 FUNCTION {format.bvolume}
 { volume empty$
     { "" }
@@ -1155,7 +1484,7 @@
     { bbl.vvol volume tie.connect
       series empty$
         'skip$
-        { bbl.of space.word * series emphasize * }
+        { bbl.of spaces.around * series emphasize * }
       if$
       "volume and number" number either.or.check
     }
@@ -1184,31 +1513,7 @@
   if$
 }
 
-FUNCTION {is.num}
-{ chr.to.int$
-  duplicate$ "0" chr.to.int$ < not
-  swap$ "9" chr.to.int$ > not and
-}
 
-FUNCTION {extract.num}
-{ duplicate$ 't :=
-  "" 's :=
-  { t empty$ not }
-  { t #1 #1 substring$
-    t #2 global.max$ substring$ 't :=
-    duplicate$ is.num
-      { s swap$ * 's := }
-      { pop$ "" 't := }
-    if$
-  }
-  while$
-  s empty$
-    'skip$
-    { pop$ s }
-  if$
-}
-
-
 FUNCTION {convert.edition}
 { edition
 }
@@ -1224,38 +1529,6 @@
   if$
 }
 
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
-  #0 'multiresult :=
-    { multiresult not
-      t empty$ not
-      and
-    }
-    { t #1 #1 substring$
-      duplicate$ "-" =
-      swap$ duplicate$ "," =
-      swap$ "+" =
-      or or
-        { #1 'multiresult := }
-        { t #2 global.max$ substring$ 't := }
-      if$
-    }
-  while$
-  multiresult
-}
-
-%%FUNCTION {format.pages}
-%%{ pages empty$
-%%    { "" }
-%%    { pages multi.page.check
-%%        { bbl.ppages pages n.dashify tie.connect }
-%%        { bbl.ppage pages tie.connect }
-%%      if$
-%%    }
-%%  if$
-%%}
 FUNCTION {format.pages}
 { eid empty$
     {
@@ -1276,15 +1549,6 @@
   if$
 }
 
-%%FUNCTION {format.pages.page}
-%%{ pages empty$
-%%    { pagetotal empty$
-%%      { "" }
-%%      { pagetotal bbl.pages tie.connect }
-%%    if$}
-%%    { format.pages}
-%%  if$
-%%}
 FUNCTION {format.pages.page}
 { eid empty$
     { pages empty$
@@ -1347,6 +1611,19 @@
   if$
 }
 
+FUNCTION {bbl.thesis.type}
+{ type "mathesis" =
+  { bbl.mathesis }
+  { type "phdthesis" =
+    { bbl.phdthesis }
+    { type "docthesis" =
+      { bbl.docthesis }
+      %%{ "!!!" type * "t" change.case$ }
+      { type "t" change.case$ }
+    if$}
+  if$}
+if$}
+
 %%<!utf8>      bbl.thesis.type "t" change.case$
 %%<utf8>      bbl.thesis.type
 FUNCTION {format.thesis.type}
@@ -1367,69 +1644,48 @@
   if$
 }
 
-FUNCTION {author.before}
+FUNCTION {output.author.head}
 {
   author empty$
     'skip$
-    { format.authors output
-      new.sentence
+    { author fmt.names.all output.nonnull
+      %new.sentence
     }
   if$
 }
 
-%%<*!long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    {bookauthor num.names$ #4 <
-%%      {format.bookauthors output
-%%       new.sentence}
-%%      'skip$
-%%    if$}
-%%  if$
-%%}
-%%</!long>
-%%<*long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    { format.bookauthors output
-%%      new.sentence
-%%    }
-%%  if$
-%%}
-%%</long>
+FUNCTION {output.author.rest}
+{
+}
 
-FUNCTION {author.after} { }
-
-FUNCTION {bookauthor.after}
+FUNCTION {bookauthor.rest}
 {
   bookauthor empty$
     'skip$
-    {format.bookauthors.after output
-       new.semicolon }
+    {
+      bookauthor fmt.names.three output
+      new.semicolon
+    }
   if$
 }
 
-FUNCTION {editor.organization.after}
+FUNCTION {editor.organization.rest}
 {
   compiler empty$
     {}
-    { format.compiler.after  output
+    { format.compiler.rest  output
     new.semicolon
     }
   if$
   editor empty$
     {}
-    { format.editors.after  output
+    { format.editors.rest  output.nonnull
     new.semicolon
     }
   if$
   organization empty$
     {}
-    {organization output
+    {organization output.nonnull
     new.semicolon
     }
   if$
@@ -1480,7 +1736,7 @@
     'skip$
     { doi empty$
         'skip$
-        { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
+        { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * }
       if$
     }
   if$
@@ -1491,7 +1747,7 @@
     'skip$
     { media empty$
         'skip$
-        { " " * bbl.media enclose.square.brackets * }
+        { " " * bbl.media bracketise * }
       if$
     }
   if$
@@ -1572,14 +1828,15 @@
 FUNCTION {article}
 {
   output.bibitem
-  author.before
-  format.title add.media "title" output.check
+  output.author.head
+  %new.sentence
+  title add.media "title" output.check
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
-  journal emphasize add.doi "journal" output.check % new in v.2
+  journal emphasize add.doi "journal" output.check % new in v1.2
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.volume output
   format.number output
@@ -1596,11 +1853,14 @@
 FUNCTION {book}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.sentence
   format.number.series output
   new.block
@@ -1607,7 +1867,7 @@
   format.edition output
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1625,15 +1885,18 @@
 FUNCTION {booklet}
 {
   output.bibitem
-  author.before
-  format.title add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
   howpublished output
   address.or.location output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1645,15 +1908,18 @@
 FUNCTION {inbook}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  bookauthor.after
-  editor.organization.after
+  bookauthor.rest
+  editor.organization.rest
   new.block
   format.edition output
   new.block
@@ -1660,7 +1926,7 @@
   format.number.series output
   new.sentence
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1678,18 +1944,21 @@
 FUNCTION {incollection}
 {
   output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   format.number.series output
@@ -1706,15 +1975,22 @@
 FUNCTION {proceedings}
 {
   output.bibitem
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon                   % added in v.1.2k
+  titleaddon output           % added in v.1.2k
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
-  output.address.publisher
-  format.date "year" output.check
   new.block
+  format.pages.page output
+  %%%output.address.publisher  % 1.2k moved upper
+  new.block
   note output
   new.sentence
   output.eprint.url
@@ -1724,22 +2000,26 @@
 
 FUNCTION {inproceedings}
 { output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon                % added in v.1.2k
+  titleaddon output        % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
   new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
   format.pages.page output
   new.block
   note output
@@ -1759,10 +2039,12 @@
         }
       if$
     }
-    { format.authors output.nonnull }
+    { format.author output.nonnull }
   if$
   new.block
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   author empty$
     { organization empty$
     {
@@ -1779,7 +2061,7 @@
     }
   if$
   format.edition output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1792,6 +2074,8 @@
 {
   output.bibitem
   title add.media output.nonnull
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   format.type.number output
   add.blank
@@ -1799,9 +2083,9 @@
   new.colon
   ipc output
   new.slash
-  format.authors.after "author" output.check
+  format.author "author" output.check
   add.blank
-  authorcountry enclose.round.brackets output.nonnull
+  authorcountry paranthesify output.nonnull
   new.semicolon
   holder output.nonnull
   new.semicolon
@@ -1816,7 +2100,7 @@
   new.semicolon
   format.prioritydate output
   prioritynumber output
-  prioritycountry enclose.round.brackets output
+  prioritycountry paranthesify output
   new.block
   note output
   new.sentence
@@ -1829,13 +2113,15 @@
 
 FUNCTION {misc}
 { output.bibitem
-  format.authors output
+  %format.author output  % < v.1.2k
+  output.author.head    % v.1.2k
+  %new.sentence            % v.1.2k
   title howpublished new.sentence.checkb
-  format.title add.media output
+  title add.media output
   howpublished new.block.checka
   howpublished output
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1846,13 +2132,16 @@
 
 FUNCTION {unpublished}
 { output.bibitem
-  author.before
-  format.btitle "title" output.check
+  output.author.head
+  new.sentence
+  title "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note "note" output.check
   new.sentence
@@ -1863,12 +2152,14 @@
 
 FUNCTION {online}
 { output.bibitem
-  format.authors output
+  format.author output
   title howpublished new.sentence.checkb
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   howpublished new.dblslash.checka
   howpublished output
-  editor.organization.after
+  editor.organization.rest
   new.sentence
   new.block
   output.address.publisher
@@ -1887,25 +2178,24 @@
 FUNCTION {electronic} {online}
 FUNCTION {thesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
-  %%type "type" output.check
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
-  %%number output % code of the speciality
   specialitycode.or.number output % code of the speciality, new in v.1.2i
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours from the head zone
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1915,13 +2205,14 @@
   format.annote output
   fin.entry
 }
-
 %%  format.techrep.type.number output.nonnull
 %%  format.url output
 FUNCTION {report}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   type "type" output.check
   new.colon
@@ -1930,14 +2221,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -1950,9 +2241,9 @@
 
 FUNCTION {phdthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
@@ -1961,13 +2252,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1977,12 +2269,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {mastersthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.mathesis format.thesis.type output.nonnull
   new.colon
@@ -1991,13 +2282,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2007,12 +2299,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {docthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.docthesis format.thesis.type output.nonnull
   new.colon
@@ -2021,13 +2312,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicate athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2037,7 +2329,6 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {conference} { inproceedings }
 
 %%  format.url output
@@ -2045,7 +2336,7 @@
 FUNCTION {techreport}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   format.techreport.type output
   new.colon
@@ -2054,14 +2345,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -2086,96 +2377,96 @@
 MACRO {oct} {"Oct."}
 MACRO {nov} {"Nov."}
 MACRO {dec} {"Dec."}
-MACRO {aa}{"Astron. \& Astrophys."}
-MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."}
-MACRO {aj} {"Astron. J."}
+MACRO {aa}{"Astron.\ \& Astrophys."}
+MACRO {aasup}{"Astron.\ \& Astrophys.\ Suppl.\ Ser."}
+MACRO {aj} {"Astron.\ J."}
 MACRO {aph} {"Acta Phys."}
-MACRO {advp} {"Adv. Phys."}
-MACRO {ajp} {"Amer. J. Phys."}
-MACRO {ajm} {"Amer. J. Math."}
-MACRO {amsci} {"Amer. Sci."}
-MACRO {anofd} {"Ann. Fluid Dyn."}
-MACRO {am} {"Ann. Math."}
-MACRO {ap} {"Ann. Phys. (NY)"}
-MACRO {adp} {"Ann. Phys. (Leipzig)"}
-MACRO {ao} {"Appl. Opt."}
-MACRO {apl} {"Appl. Phys. Lett."}
+MACRO {advp} {"Adv.\ Phys."}
+MACRO {ajp} {"Amer.\ J.\ Phys."}
+MACRO {ajm} {"Amer.\ J.\ Math."}
+MACRO {amsci} {"Amer.\ Sci."}
+MACRO {anofd} {"Ann.\ Fluid Dyn."}
+MACRO {am} {"Ann.\ Math."}
+MACRO {ap} {"Ann.\ Phys.\ (NY)"}
+MACRO {adp} {"Ann.\ Phys.\ (Leipzig)"}
+MACRO {ao} {"Appl.\ Opt."}
+MACRO {apl} {"Appl.\ Phys.\ Lett."}
 MACRO {app} {"Astroparticle Phys."}
-MACRO {apj} {"Astrophys. J."}
-MACRO {apjsup} {"Astrophys. J. Suppl."}
-MACRO {apss} {"Astrophys. Space Sci."}
-MACRO {araa} {"Ann. Rev. Astron. Astrophys."}
-MACRO {baas} {"Bull. Amer. Astron. Soc."}
-MACRO {baps} {"Bull. Amer. Phys. Soc."}
-MACRO {cmp} {"Comm. Math. Phys."}
-MACRO {cpam} {"Commun. Pure Appl. Math."}
-MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"}
-MACRO {cpc} {"Comp. Phys. Comm."}
-MACRO {cqg} {"Class. Quant. Grav."}
-MACRO {cra} {"C. R. Acad. Sci. A"}
-MACRO {fed} {"Fusion Eng. \& Design"}
+MACRO {apj} {"Astrophys.\ J."}
+MACRO {apjsup} {"Astrophys.\ J.\ Suppl."}
+MACRO {apss} {"Astrophys.\ Space Sci."}
+MACRO {araa} {"Ann.\ Rev.\ Astron.\ Astrophys."}
+MACRO {baas} {"Bull.\ Amer.\ Astron.\ Soc."}
+MACRO {baps} {"Bull.\ Amer.\ Phys.\ Soc."}
+MACRO {cmp} {"Comm.\ Math.\ Phys."}
+MACRO {cpam} {"Commun.\ Pure Appl.\ Math."}
+MACRO {cppcf} {"Comm.\ Plasma Phys.\ \& Controlled Fusion"}
+MACRO {cpc} {"Comp.\ Phys.\ Comm."}
+MACRO {cqg} {"Class.\ Quant.\ Grav."}
+MACRO {cra} {"C.\ R.\ Acad.\ Sci.\ A"}
+MACRO {fed} {"Fusion Eng.\ \& Design"}
 MACRO {ft} {"Fusion Tech."}
-MACRO {grg} {"Gen. Relativ. Gravit."}
-MACRO {ieeens} {"IEEE Trans. Nucl. Sci."}
-MACRO {ieeeps} {"IEEE Trans. Plasma Sci."}
-MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"}
+MACRO {grg} {"Gen.\ Relativ.\ Gravit."}
+MACRO {ieeens} {"IEEE Trans.\ Nucl.\ Sci."}
+MACRO {ieeeps} {"IEEE Trans.\ Plasma Sci."}
+MACRO {ijimw} {"Interntl.\ J.\ Infrared \& Millimeter Waves"}
 MACRO {ip} {"Infrared Phys."}
 MACRO {irp} {"Infrared Phys."}
-MACRO {jap} {"J. Appl. Phys."}
-MACRO {jasa} {"J. Acoust. Soc. America"}
-MACRO {jcp} {"J. Comp. Phys."}
-MACRO {jchp} {"J. Chem. Phys."}
-MACRO {jetp} {"Sov. Phys.--JETP"}
-MACRO {jfe} {"J. Fusion Energy"}
-MACRO {jfm} {"J. Fluid Mech."}
-MACRO {jmp} {"J. Math. Phys."}
-MACRO {jne} {"J. Nucl. Energy"}
-MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."}
-MACRO {jnm} {"J. Nucl. Mat."}
-MACRO {jpc} {"J. Phys. Chem."}
-MACRO {jpp} {"J. Plasma Phys."}
-MACRO {jpsj} {"J. Phys. Soc. Japan"}
-MACRO {jsi} {"J. Sci. Instrum."}
-MACRO {jvst} {"J. Vac. Sci. \& Tech."}
+MACRO {jap} {"J.\ Appl.\ Phys."}
+MACRO {jasa} {"J.\ Acoust.\ Soc.\ America"}
+MACRO {jcp} {"J.\ Comp.\ Phys."}
+MACRO {jchp} {"J.\ Chem.\ Phys."}
+MACRO {jetp} {"Sov.\ Phys.--JETP"}
+MACRO {jfe} {"J.\ Fusion Energy"}
+MACRO {jfm} {"J.\ Fluid Mech."}
+MACRO {jmp} {"J.\ Math.\ Phys."}
+MACRO {jne} {"J.\ Nucl.\ Energy"}
+MACRO {jnec} {"J.\ Nucl.\ Energy, C: Plasma Phys., Accelerators, Thermonucl.\ Res."}
+MACRO {jnm} {"J.\ Nucl.\ Mat."}
+MACRO {jpc} {"J.\ Phys.\ Chem."}
+MACRO {jpp} {"J.\ Plasma Phys."}
+MACRO {jpsj} {"J.\ Phys.\ Soc.\ Japan"}
+MACRO {jsi} {"J.\ Sci.\ Instrum."}
+MACRO {jvst} {"J.\ Vac.\ Sci.\ \& Tech."}
 MACRO {nat} {"Nature"}
 MACRO {nature} {"Nature"}
-MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"}
-MACRO {nf} {"Nucl. Fusion"}
-MACRO {nim} {"Nucl. Inst. \& Meth."}
-MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."}
-MACRO {np} {"Nucl. Phys."}
-MACRO {npb} {"Nucl. Phys. B"}
-MACRO {nt/f} {"Nucl. Tech./Fusion"}
-MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"}
+MACRO {nedf} {"Nucl.\ Eng.\ \& Design/Fusion"}
+MACRO {nf} {"Nucl.\ Fusion"}
+MACRO {nim} {"Nucl.\ Inst.\ \& Meth."}
+MACRO {nimpr} {"Nucl.\ Inst.\ \& Meth.\ in Phys.\ Res."}
+MACRO {np} {"Nucl.\ Phys."}
+MACRO {npb} {"Nucl.\ Phys.\ B"}
+MACRO {nt/f} {"Nucl.\ Tech./Fusion"}
+MACRO {npbpc} {"Nucl.\ Phys.\ B (Proc.\ Suppl.)"}
 MACRO {inc} {"Nuovo Cimento"}
 MACRO {nc} {"Nuovo Cimento"}
-MACRO {pf} {"Phys. Fluids"}
-MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."}
-MACRO {pfb} {"Phys. Fluids B: Plasma Phys."}
-MACRO {pl} {"Phys. Lett."}
-MACRO {pla} {"Phys. Lett. A"}
-MACRO {plb} {"Phys. Lett. B"}
-MACRO {prep} {"Phys. Rep."}
-MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"}
-MACRO {pp} {"Phys. Plasmas"}
-MACRO {pop} {"Phys. Plasmas"}
-MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"}
-MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"}
-MACRO {prl} {"Phys. Rev. Lett."}
-MACRO {pr} {"Phys. Rev."}
-MACRO {physrev} {"Phys. Rev."}
-MACRO {pra} {"Phys. Rev. A"}
-MACRO {prb} {"Phys. Rev. B"}
-MACRO {prc} {"Phys. Rev. C"}
-MACRO {prd} {"Phys. Rev. D"}
-MACRO {pre} {"Phys. Rev. E"}
-MACRO {ps} {"Phys. Scripta"}
-MACRO {procrsl} {"Proc. Roy. Soc. London"}
-MACRO {rmp} {"Rev. Mod. Phys."}
-MACRO {rsi} {"Rev. Sci. Inst."}
+MACRO {pf} {"Phys.\ Fluids"}
+MACRO {pfa} {"Phys.\ Fluids A: Fluid Dyn."}
+MACRO {pfb} {"Phys.\ Fluids B: Plasma Phys."}
+MACRO {pl} {"Phys.\ Lett."}
+MACRO {pla} {"Phys.\ Lett.\ A"}
+MACRO {plb} {"Phys.\ Lett.\ B"}
+MACRO {prep} {"Phys.\ Rep."}
+MACRO {pnas} {"Proc.\ Nat.\ Acad.\ Sci.\ USA"}
+MACRO {pp} {"Phys.\ Plasmas"}
+MACRO {pop} {"Phys.\ Plasmas"}
+MACRO {ppcf} {"Plasma Phys.\ \& Controlled Fusion"}
+MACRO {phitrsl} {"Philos.\ Trans.\ Roy.\ Soc.\ London"}
+MACRO {prl} {"Phys.\ Rev.\ Lett."}
+MACRO {pr} {"Phys.\ Rev."}
+MACRO {physrev} {"Phys.\ Rev."}
+MACRO {pra} {"Phys.\ Rev.\ A"}
+MACRO {prb} {"Phys.\ Rev.\ B"}
+MACRO {prc} {"Phys.\ Rev.\ C"}
+MACRO {prd} {"Phys.\ Rev.\ D"}
+MACRO {pre} {"Phys.\ Rev.\ E"}
+MACRO {ps} {"Phys.\ Scripta"}
+MACRO {procrsl} {"Proc.\ Roy.\ Soc.\ London"}
+MACRO {rmp} {"Rev.\ Mod.\ Phys."}
+MACRO {rsi} {"Rev.\ Sci.\ Inst."}
 MACRO {science} {"Science"}
-MACRO {sciam} {"Sci. Am."}
-MACRO {sam} {"Stud. Appl. Math."}
+MACRO {sciam} {"Sci.\ Am."}
+MACRO {sam} {"Stud.\ Appl.\ Math."}
 MACRO {st} {"Sky and Telesc."}
 MACRO {cjp} {"Czech. J. Phys."}
 MACRO {el} {"Europhys. Lett."}
@@ -2218,49 +2509,47 @@
 MACRO {suplatt} {"Superlatt. Microstr."}
 MACRO {sust} {"Supercond. Sci. Technol."}
 MACRO {znat} {"Z. Naturforsch."}
-MACRO {appopt} {"Appl. Opt."}
-MACRO {bell}   {"Bell Syst. Tech. J."}
-MACRO {ell}    {"Electron. Lett."}
-MACRO {jasp}   {"J. Appl. Spectr."}
-MACRO {jqe}    {"IEEE J. Quantum Electron."}
-MACRO {jlwt}   {"J. Lightwave Technol."}
-MACRO {jmo}    {"J. Mod. Opt."}
-MACRO {josa}   {"J. Opt. Soc. America"}
-MACRO {josaa}  {"J. Opt. Soc. Amer.~A"}
-MACRO {josab}  {"J. Opt. Soc. Amer.~B"}
-MACRO {jdp}    {"J. Phys. (Paris)"}
-MACRO {oc}     {"Opt. Commun."}
-MACRO {ol}     {"Opt. Lett."}
-MACRO {os}     {"Opt. Spectrosc."}
+MACRO {appopt} {"Appl.\ Opt."}
+MACRO {bell}   {"Bell Syst.\ Tech.\ J."}
+MACRO {ell}    {"Electron.\ Lett."}
+MACRO {jasp}   {"J.\ Appl.\ Spectr."}
+MACRO {jqe}    {"IEEE J.\ Quantum Electron."}
+MACRO {jlwt}   {"J.\ Lightwave Technol."}
+MACRO {jmo}    {"J.\ Mod.\ Opt."}
+MACRO {josa}   {"J.\ Opt.\ Soc.\ America"}
+MACRO {josaa}  {"J.\ Opt.\ Soc.\ Amer.~A"}
+MACRO {josab}  {"J.\ Opt.\ Soc.\ Amer.~B"}
+MACRO {jdp}    {"J.\ Phys.\ (Paris)"}
+MACRO {oc}     {"Opt.\ Commun."}
+MACRO {ol}     {"Opt.\ Lett."}
+MACRO {os}     {"Opt.\ Spectrosc."}
 MACRO {phtl}   {"IEEE Photon. Technol. Lett."}
-MACRO {pspie}  {"Proc. Soc. Photo-Opt. Instrum. Eng."}
+MACRO {pspie}  {"Proc.\ Soc.\ Photo-Opt.\ Instrum. Eng."}
 MACRO {vr}     {"Vision Res."}
-MACRO {zph}    {"Z. f. Physik"}
-MACRO {zphb}   {"Z. f. Physik~B"}
-MACRO {zphd}   {"Z. f. Physik~D"}
+MACRO {zph}    {"Z.\ f.\ Physik"}
+MACRO {zphb}   {"Z.\ f.\ Physik~B"}
+MACRO {zphd}   {"Z.\ f.\ Physik~D"}
 MACRO {sse} {"Solid-State Electron."}
 MACRO {pss} {"Phys. Sol. State"}
 MACRO {nl}  {"Nano Lett."}
-MACRO {sjpp} {"Sov. J. Plasma Phys."}
-MACRO {spd}  {"Sov. Phys.--Doklady"}
-MACRO {sptp} {"Sov. Phys.--Tech. Phys."}
-MACRO       {spu}  {"Sov. Phys.--Uspekhi"}
+MACRO {sjpp} {"Sov.\ J.\ Plasma Phys."}
+MACRO {spd}  {"Sov.\ Phys.--Doklady"}
+MACRO {sptp} {"Sov.\ Phys.--Tech. Phys."}
+MACRO {spu}  {"Sov.\ Phys.--Uspekhi"}
 MACRO {ufn}  {"\CYRU\CYRF\CYRN"}
 MACRO {pu}  {"Phys.--Uspekhi"}
-MACRO {sjot} {"Sov. J. Opt. Technol."}
-MACRO {sjqe} {"Sov. J. Quantum Electron."}
-MACRO {sleb} {"Sov. Phys.--Leb. Inst. Rep."}
-MACRO {stph} {"Sov. Phys.--Techn. Phys."}
-MACRO {stphl}{"Sov. Techn. Phys. Lett."}
+MACRO {sjot} {"Sov.\ J.\ Opt.\ Technol."}
+MACRO {sjqe} {"Sov.\ J.\ Quantum Electron."}
+MACRO {sleb} {"Sov.\ Phys.--Leb.\ Inst.\ Rep."}
+MACRO {stph} {"Sov.\ Phys.--Techn.\ Phys."}
+MACRO {stphl}{"Sov.\ Techn.\ Phys.\ Lett."}
 
 READ
 
-
 FUNCTION {sortify}
 { purify$
   "l" change.case$
 }
-
 %% =====================================
 %% This version from old Gost package
 %%<*!natbib>
@@ -2347,10 +2636,9 @@
         {author sort.format.names }
         {title sort.format.title}
       if$
-     }
+     }   
   if$
 }
-
 FUNCTION {presort}%#1
 {
   author.title.sort
@@ -2409,15 +2697,7 @@
   "\providecommand*{\BibUrl}[1]{\url{#1}}"           write$ newline$
   "\providecommand{\BibAnnote}[1]{}"                 write$ newline$
   "\providecommand*{\BibEmph}[1]{#1}"                write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{---}" write$ newline$
-  %\DeclareUTFcharacter[\UTFencname]{x2014}{\cyrdash}
-  %"\let\cyrdash\textemdash" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\hbox to.8em{--\hss--}}" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\textemdash}" write$ newline$
   "\ProvideTextCommandDefault{\cyrdash}{\iflanguage{russian}{\hbox to.8em{--\hss--}}{\textemdash}}" write$ newline$
-  %%"\ProvideTextCommandDefault{\cyrdash}{%"  write$ newline$
-  %%"  \iflanguage{russian}{\hbox to.8em{--\hss--}}{%" write$ newline$
-  %%"    \iflanguage{ukrainian}{\hbox to.8em{--\hss--}}{\textemdash}}}"  write$ newline$
   "\providecommand*{\BibDash}{\ifdim\lastskip>0pt\unskip\nobreak\hskip.2em plus 0.1em\fi" write$ newline$
   "\cyrdash\hskip.2em plus 0.1em\ignorespaces}" write$ newline$
   "\renewcommand{\newblock}{\ignorespaces}" write$ newline$
@@ -2440,5 +2720,6 @@
 
 EXECUTE {end.bib}
 
+\endinput
 %%
 %% End of file `gost2008ls.bst'.

Modified: trunk/Master/texmf-dist/bibtex/bst/gost/gost2008n.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/gost/gost2008n.bst	2020-12-29 00:54:00 UTC (rev 57250)
+++ trunk/Master/texmf-dist/bibtex/bst/gost/gost2008n.bst	2020-12-29 02:19:51 UTC (rev 57251)
@@ -4,30 +4,22 @@
 %%
 %% The original source files were:
 %%
-%% gost.dtx  (with options: `bst,modern,natbib,eprint')
+%% gost.dtx  (with options: `bst,natbib,eprint')
 %% 
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%   http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
+%% IMPORTANT NOTICE:
 %% 
-%% This file has the LPPL maintenance status "maintained".
-%% Maintained by Igor A. Kotelnikov.
+%% For the copyright see the source file.
 %% 
-%% Current version: 1.2j, 2017.01.12
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from gost2008n.bst.
 %% 
-%% Please, send bug report via e-mail:
-%%   kia999 at mail dot ru <Igor Kotelnikov>
-%% or
-%%   polyama at yahoo dot com <Maksym Polyakov>
+%% For distribution of the original source see the terms
+%% for copying and modification in the file gost.dtx.
 %% 
-
-
-
-%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
 %% This bibstyle attempts to format bibliography according to
 %% GOST 7.0.5-2008 for bibliographic reference.
 %%-------------------------------------------------------------------
@@ -37,7 +29,7 @@
 %% The form of the \bibitem entries is
 %%   \bibitem[Jones et al.(1990)]{key}...
 %%   \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
-%% where the label part (in brackets) consists of the author names,
+%% where the label part [in brackets] consists of the author names,
 %% as they should appear in the citation, with the year in parentheses following.
 %% There must be no space before the opening parenthesis!
 %% A full list of authors may also follow the year.
@@ -47,11 +39,11 @@
 %% The \cite command functions as follows:
 %%   \citet{key}              => Jones et al. (1990)
 %%   \citet*{key}             => Jones, Baker, and Smith (1990)
-%%   \cite{key}              => (Jones et al., 1990)
-%%   \cite*{key}             => (Jones, Baker, and Smith, 1990)
-%%   \cite[chap. 2]{key}     => (Jones et al., 1990, chap. 2)
-%%   \cite[e.g.][]{key}      => (e.g. Jones et al., 1990)
-%%   \cite[e.g.][p. 32]{key} => (e.g. Jones et al., p. 32)
+%%   \cite{key}               => (Jones et al., 1990)
+%%   \cite*{key}              => (Jones, Baker, and Smith, 1990)
+%%   \cite[chap. 2]{key}      => (Jones et al., 1990, chap. 2)
+%%   \cite[e.g.][]{key}       => (e.g. Jones et al., 1990)
+%%   \cite[e.g.][p. 32]{key}  => (e.g. Jones et al., p. 32)
 %%   \citeauthor{key}         => Jones et al.
 %%   \citeauthor*{key}        => Jones, Baker, and Smith
 %%   \citeyear{key}           => 1990
@@ -93,15 +85,15 @@
     language
     langid          % new in v1.2c
     booklanguage
-    %date            % not implemented yet...
+    date            % new in v1.2i
     pagetotal
     url
     urldate
     isbn
     doi
+    eprint
     eprinttype      % = archivePrefix
     eprintclass     % = primaryClass
-    eprint
     % new in v1.2f:
     % appear in biblatex:
     %addendum       % not implemented yet...
@@ -126,9 +118,24 @@
   {}
   { label extra.label sort.label short.list }
 
-INTEGERS { output.state before.all mid.sentence after.sentence after.block
-after.dblslash after.slash after.colon after.semicolon }
+INTEGERS {
+    output.state
+    before.all
+    mid.sentence
+    after.sentence
+    after.block
+    after.dblslash
+    after.slash
+    after.colon
+    after.semicolon
+}
 
+STRINGS { curlanguage }
+
+STRINGS { s t }
+
+STRINGS { y m d }   % new in v.1.2j
+
 FUNCTION {init.state.consts}
 { #0 'before.all :=
   #1 'mid.sentence :=
@@ -140,11 +147,18 @@
   #7 'after.semicolon :=
 }
 
-STRINGS { s t }
+FUNCTION {set.language}
+{ langid empty$
+    { language empty$
+        { "english" 'curlanguage := }
+        { language  'curlanguage := }
+      if$
+    }
+    { langid  'curlanguage := }
+  if$
+}
 
-STRINGS { curlanguage }
-
-FUNCTION {change.language}
+FUNCTION {reset.language}
 { booklanguage empty$
     { "" }
     { booklanguage  'curlanguage :=
@@ -169,7 +183,7 @@
         { output.state before.all =
             'write$
             { output.state after.dblslash =
-                { "~//" * change.language * " " * write$ }
+                { "~//" * reset.language * " " * write$ }
                 { output.state after.slash =
                     { "~/ " * write$ }
                     { output.state after.colon =
@@ -203,7 +217,9 @@
 FUNCTION {output.check}
 { 't :=
   duplicate$ empty$
-    { pop$ "empty " t * " in " * cite$ * warning$ }
+    { pop$
+      "empty " t * " in " * cite$ * warning$
+    }
     'output.nonnull
   if$
 }
@@ -282,23 +298,6 @@
   if$
 }
 
-INTEGERS { len }
-
-FUNCTION {chop.word}
-{ 's :=
-  'len :=
-  s #1 len substring$ =
-    { s len #1 + global.max$ substring$ }
-    's
-  if$
-}
-
-FUNCTION {non.stop}
-{ duplicate$
-   "}" * add.period$
-   #-1 #1 substring$ "." =
-}
-
 FUNCTION {new.block.checka}
 { empty$
     'skip$
@@ -345,9 +344,21 @@
   if$
 }
 
+%%
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {spaces.around}
+{ " " swap$ * " " * }
+
 FUNCTION {emphasize}
 { duplicate$ empty$
-    { pop$ "" }
+    %{ pop$ "" }
+    'skip$       % v.1.2k
     { "\BibEmph{" swap$ * "}" * }
   if$
 }
@@ -359,7 +370,7 @@
   if$
 }
 
-FUNCTION {enclose.square.brackets}
+FUNCTION {bracketise}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -367,7 +378,7 @@
   if$
 }
 
-FUNCTION {enclose.round.brackets}
+FUNCTION {paranthesify}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -375,25 +386,92 @@
   if$
 }
 
-FUNCTION {space.word}
-{ " " swap$ * " " * }
+INTEGERS { len }
 
-FUNCTION {bbl.edby}    %  { "\bbledby{}" }
+FUNCTION {chop.word}
+{ 's :=
+  'len :=
+  s #1 len substring$ =
+    { s len #1 + global.max$ substring$ }
+    's
+  if$
+}
+
+FUNCTION {tie.connect}
+ {"~" swap$ * *
+ }
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { t #1 #2 substring$ "--" = not
+            { "--" *
+              t #2 global.max$ substring$ 't :=
+            }
+            {   { t #1 #1 substring$ "-" = }
+                { "-" *
+                  t #2 global.max$ substring$ 't :=
+                }
+              while$
+            }
+          if$
+        }
+        { t #1 #1 substring$ *
+          t #2 global.max$ substring$ 't :=
+        }
+      if$
+    }
+  while$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+        { #1 'multiresult := }
+        { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {bbl.edby}
 { curlanguage "english" =
-   {"Ed.\ by"}
+   {"ed.\ by"}
    { curlanguage "ukrainian" =
-      {"{\cyr\CYRP\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
+      {"{\cyr\cyrp\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
       { curlanguage "russian" =
-         {"{\cyr\CYRP\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
+         {"{\cyr\cyrp\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
          { curlanguage "german" =
             { "ed." }
-            {"language is not defined: " language "edby" * * warning$ "Ed.\ by"}
+            {"language is not defined: " curlanguage " in bbl.edby" * * warning$ "Ed.\ by"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.cmplr}
+FUNCTION {bbl.compiler}
 { curlanguage "english" =
    { "Compiler"}
    { curlanguage "german" =
@@ -402,15 +480,15 @@
          {"{\cyr\CYRU\cyrk\cyrl.}"}
          { curlanguage "russian" =
             {"{\cyr\CYRS\cyro\cyrs\cyrt.}"}
-            {"language is not defined: " language  "cmplr" * * warning$ "Compiler"}
+            {"language is not defined: " curlanguage  " in bbl.compiler" * * warning$ "Compiler"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.edition} %  { "\bbledition{}" }
+FUNCTION {bbl.edition}
 { curlanguage "english" =
-   {"edition"}
+   {"ed."}
    { curlanguage "ukrainian" =
       {"{\cyr\cyrv\cyri\cyrd.}"}
       { curlanguage "russian" =
@@ -421,7 +499,7 @@
                {"edizione"}
                { curlanguage "french" =
                   {"\'{e}dition"}
-                  {"language is not defined: " language  "edition" * * warning$ "edition"}
+                  {"language is not defined: " curlanguage  " in bbl.edition" * * warning$ "ed."}
                if$}
             if$}
          if$}
@@ -429,7 +507,7 @@
    if$}
 if$}
 
-FUNCTION {bbl.vvolume} %  { "\bblVolume{}" }
+FUNCTION {bbl.vvolume}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Volume"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -436,12 +514,12 @@
       { "\CYRT\cyro\cyrm" }
       { curlanguage "german" =
          {"{Band}"} %%%% { "Volumen" }
-         {"language is not defined: " language  "vvolume" * * warning$ "Volume"}
+         {"language is not defined: " curlanguage  " in bbl.vvolume" * * warning$ "Volume"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.vvol}    %  { "\bblVol{}" }
+FUNCTION {bbl.vvol}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Vol."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -448,12 +526,12 @@
       {"\CYRT."}
       { curlanguage "german" =
          {"{Bd.}"} %%%% { "Vol." }
-         {"language is not defined: " language  "vvol" * * warning$ "Vol."}
+         {"language is not defined: " curlanguage  " in bbl.vvol" * * warning$ "Vol."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iissue}  %  { "\bblIssue{}" }
+FUNCTION {bbl.iissue}
 { curlanguage "english" =
    {"Issue"}
    { curlanguage "ukrainian" =
@@ -462,13 +540,13 @@
          {"\CYRV\cyrery\cyrp\cyru\cyrs\cyrk"}
          { curlanguage "german" =
             {"{Heft}"} %%%% { "Ausgabe" }
-            {"language is not defined: " language "iissue" * * warning$ "Issue"}
+            {"language is not defined: " curlanguage " in bbl.iissue" * * warning$ "Issue"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iiss}  %  { "\bblIss{}" }
+FUNCTION {bbl.iiss}
 { curlanguage "english" =
    {"Iss."}
    { curlanguage "ukrainian" =
@@ -477,13 +555,13 @@
          {"\CYRV\cyrery\cyrp."}
          { curlanguage "german" =
             {"{H.}"}
-            {"language is not defined: " language "iiss" * * warning$ "Iss."}
+            {"language is not defined: " curlanguage " in bbl.iiss" * * warning$ "Iss."}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.of}      %  { "\bblof{}" }
+FUNCTION {bbl.of}
 { curlanguage "english" =
    {"of"}
    { curlanguage "german" =
@@ -492,13 +570,13 @@
          { "{\cyr\cyrii\cyrz}" }
          { curlanguage "russian" =
             { "{\cyr\cyri\cyrz}" }
-            {"language is not defined: " language "of" * * warning$ "of"}
+            {"language is not defined: " curlanguage " in bbl.of" * * warning$ "of"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.etal}      %  { "\bblof{}" }
+FUNCTION {bbl.etal}
 { curlanguage "english" =
    {"et~al."}
    { curlanguage "german" =
@@ -507,15 +585,15 @@
          {"{\cyr\cyrt\cyra~\cyrii\cyrn.}"}
          { curlanguage "russian" =
             {"{\cyr\cyri~\cyrd\cyrr.}"}
-            {"language is not defined: " language  "et~al" * * warning$ "et~al."}
+            {"language is not defined: " curlanguage  " in bbl.etal" * * warning$ "et~al."}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.and}      %  { "\bbland{}" }
+FUNCTION {bbl.and}
 { curlanguage "english" =
-   {"and"}
+  {"and"}
    { curlanguage "german" =
       { "und" }
       { curlanguage "ukrainian" =
@@ -522,13 +600,16 @@
          {"{\cyrii}"}
          { curlanguage "russian" =
             {"{\cyri}"}
-            {"language is not defined: " language  "and" * * warning$ "and"}
+            { curlanguage "french" =
+                {"et"}
+                {"language is not defined: " curlanguage  " in bbl.and" * * warning$ "and"}
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nnumber} %  { "\bblNumber{}" }
+FUNCTION {bbl.nnumber}
 { curlanguage "english" =
    {"Number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -535,12 +616,12 @@
       { "\CYRN\cyro\cyrm\cyre\cyrr" }
       { curlanguage "german" =
          {"{Heft}"} %%% { "Anzahl" }
-         {"language is not defined: " language  "nnumber" * * warning$ "Number"}
+         {"language is not defined: " curlanguage  " in bbl.nnumber" * * warning$ "Number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.number}  %  { "\bblnumber{}" }
+FUNCTION {bbl.number}
 { curlanguage "english" =
    {"number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -547,27 +628,30 @@
       {"{\cyr\cyrn\cyro\cyrm\cyre\cyrr}"}
       { curlanguage "german" =
          {"{Heft}"} %%% { "anzahl" }???
-         {"language is not defined: " language  "number" * * warning$ "number"}
+         {"language is not defined: " curlanguage  " in bbl.number" * * warning$ "number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nr}     %   { "\bblno{}" }
+FUNCTION {bbl.nr}
 { curlanguage "english" =
    {"no."}
    { curlanguage "italian" =
-      { "no" }
+      { "no." }
       { curlanguage "ukrainian" = curlanguage "russian" = or
          { "{\cyr\textnumero}" }
          { curlanguage "german" =
-            {"{H.}"} %%% { "an." }
-            {"language is not defined: " language "nr" * * warning$ "no."}
+            {"{nu.}"} %%% { "an." }
+            { curlanguage "french" =
+                { "no." }
+                {"language is not defined: " curlanguage " in bbl.nr" * * warning$ "no."}
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nnr}     %   { "\bblno{}" }
+FUNCTION {bbl.nnr}
 { curlanguage "english" =
    {"No."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -574,30 +658,30 @@
       { "{\cyr\textnumero}" }
       { curlanguage "german" =
          {"{H.}"} %%% { "an." }
-         {"language is not defined: " language  "nnr" * * warning$ "No."}
+         {"language is not defined: " curlanguage  " in bbl.nnr" * * warning$ "No."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.in}    %    { "\bblin{}" }
+FUNCTION {bbl.in}
 { curlanguage "english" = curlanguage "german" = or
    {"in"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "{\cyr\cyrv}" }
-      {"language is not defined: " language  "in" * * warning$ "in"}
+      {"language is not defined: " curlanguage  " in bbl.in" * * warning$ "in"}
    if$}
 if$}
 
-FUNCTION {bbl.iin}  %     { "\bblIn{}" }
+FUNCTION {bbl.iin}
 { curlanguage "english" = curlanguage "german" = or
    {"In"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "\CYRV" }
-      {"language is not defined: " language  "iin" * * warning$ "In"}
+      {"language is not defined: " curlanguage  " in bbl.iin" * * warning$ "In"}
    if$}
 if$}
 
-FUNCTION {bbl.pages}    % { "\bblpp." }
+FUNCTION {bbl.pages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."} %%% {"pp."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -604,12 +688,12 @@
       {"{\cyr\cyrs.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "pages" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.pages" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.page}   %   { "\bblp."
+FUNCTION {bbl.page}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -616,12 +700,12 @@
       {"{\cyr\cyrs.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "page" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.page" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppages}%    { "\bblPp." }
+FUNCTION {bbl.ppages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."} %%%% { "Pp." }
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -628,12 +712,12 @@
       {"{\cyr\CYRS.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language "ppages" * * warning$ "P."}
+         {"language is not defined: " curlanguage " in bbl.ppages" * * warning$ "P."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppage}  %   { "\bblP." }
+FUNCTION {bbl.ppage}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -640,7 +724,7 @@
       {"{\cyr\CYRS.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language  "ppage" * * warning$ "P."}
+         {"language is not defined: " curlanguage  " in bbl.ppage" * * warning$ "P."}
       if$}
    if$}
 if$}
@@ -654,7 +738,10 @@
          { "{\CYRR\cyre\cyrzh\cyri\cyrm\ \cyrd\cyro\cyrs\cyrt\cyru\cyrp\cyra}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "Mode d'acc\`{e}s" }
+                { "language is not defined: " curlanguage " in bbl.url" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
@@ -668,13 +755,16 @@
          { "{\cyrd\cyra\cyrt\cyra\ \cyro\cyrb\cyrr\cyra\cyrshch\cyre\cyrn\cyri\cyrya}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "{en ligne; acc\'{e}d\'{e}}" }
+                { "language is not defined: " curlanguage " in bbl.urldate" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.techreport} % rename to bbl.techreport
+FUNCTION {bbl.techreport}
 { curlanguage "english" =
    { "Rep." }
    { curlanguage "german" =
@@ -681,7 +771,7 @@
       { "Bericht" }
       { curlanguage "russian" =
          { "{\cyr\CYRO\cyrt\cyrch\cyre\cyrt}" }
-         { "language is not defined: " language "techrep" * * warning$ "Rep." }
+         { "language is not defined: " curlanguage " in bbl.techrep" * * warning$ "Rep." }
       if$}
    if$}
 if$}
@@ -690,12 +780,12 @@
 { curlanguage "english" =
    { "Master's thesis" }
    { curlanguage "german" =
-      { "Diss.~Mag." }
+      { "diss.~mag." }
       { curlanguage "russian" =
-        { "{\cyr\CYRK\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
+        { "{\cyr\cyrk\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
           "\cyro\cyrn\cyrn\cyra\cyrya\ \cyrr\cyra\cyrb\cyro\cyrt\cyra\ " *
           "\cyrm\cyra\cyrg\cyri\cyrs\cyrt\cyrr\cyra}" * }
-         { "language is not defined: " language "mthesis" * * warning$ "Master's thesis" }
+         { "language is not defined: " curlanguage " in bbl.mthesis" * * warning$ "Master's thesis" }
       if$}
    if$}
 if$}
@@ -704,13 +794,13 @@
 { curlanguage "english" =
    { "Ph.\,D. thesis" }
    { curlanguage "german" =
-      { "Diss.~Ph.\,D." }
+      { "diss.~Ph.\,D." }
       { curlanguage "russian" =
          { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrk\cyra\cyrn\cyrd. "
            "\cyrn\cyra\cyru\cyrk}" * }
          { curlanguage "french" =
-           { "Th\`{e}se de doctorat" }
-           { "language is not defined: " language "phdthesis" * * warning$ "Ph.\,D. thesis" }
+           { "th\`{e}se de doctorat" }
+           { "language is not defined: " curlanguage " in bbl.phdthesis" * * warning$ "Ph.\,D. thesis" }
          if$}
       if$}
    if$}
@@ -718,36 +808,23 @@
 
 FUNCTION {bbl.docthesis}
 { curlanguage "english" =
-   { "Dr.\,Sci. dissertation" }
+   { "dr.\,sci. dissertation" }
    { curlanguage "german" =
-      { "Diss.~Dr." }
+      { "diss.~dr." }
       { curlanguage "russian" =
          { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrd-\cyrr\cyra\ "
            "\cyrn\cyra\cyru\cyrk}" * }
-         { "language is not defined: " language "docthesis" * * warning$ "Dr.\,Sci. dissertation" }
+         { "language is not defined: " curlanguage " in bbl.docthesis" * * warning$ "Dr.\,Sci. dissertation" }
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.thesis.type}
-{ type "mathesis" =
-  { bbl.mathesis }
-  { type "phdthesis" =
-    { bbl.phdthesis }
-    { type "docthesis" =
-      { bbl.docthesis }
-      %%{ "!!!" type * "t" change.case$ }
-      { type "t" change.case$ }
-    if$}
-  if$}
-if$}
-
 FUNCTION {bbl.nnoaddress}
 { curlanguage "english" =
    { "S.\ l." }
    { curlanguage "russian" =
       { "{\cyr\CYRB.\ \cyrm.}" }
-      { "language is not defined: " language "nnoaddress" * * warning$ "S.\ l." }
+      { "language is not defined: " curlanguage " in bbl.nnoaddress" * * warning$ "S.\ l." }
    if$}
 if$}
 
@@ -756,7 +833,7 @@
    { "s.\ n." }
    { curlanguage "russian" =
       { "{\cyr\cyrb.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "s.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "s.\ n." }
    if$}
 if$}
 
@@ -765,7 +842,7 @@
    { "S.\ n." }
    { curlanguage "russian" =
       { "{\cyr\CYRB.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "S.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "S.\ n." }
    if$}
 if$}
 
@@ -774,7 +851,7 @@
    { "Text" }
    { curlanguage "russian" = curlanguage "ukrainian" = or
       { "{\cyr\CYRT\cyre\cyrk\cyrs\cyrt}" }
-      { "language is not defined: " language "media" * * warning$ "Text" }
+      { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Text" }
    if$}
 if$}
 
@@ -787,7 +864,7 @@
       { curlanguage "ukrainian" =
         { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
           "\cyrr\cyre\cyrs\cyru\cyrr\cyrs}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -801,7 +878,7 @@
       { curlanguage "ukrainian" =
         { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
           "\cyrr\cyre\cyrs\cyru\cyrr\cyrs\ \cyro\cyrn\cyrl\cyra\cyrishrt\cyr}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -813,7 +890,7 @@
       { "\cyrr\cyru\cyrk." }
       { curlanguage "ukrainian" =
         { "\cyrr\cyru\cyrk." }
-        { "language is not defined: " language "chief" * * warning$ "chief" }
+        { "language is not defined: " curlanguage " in bbl.chief" * * warning$ "chief" }
       if$}
    if$}
 if$}
@@ -820,12 +897,12 @@
 
 FUNCTION {bbl.executor}
 { curlanguage "english" =
-   { "Executor" }
+   { "executor" }
    { curlanguage "russian" =
       { "{\cyr\cyri\cyrs\cyrp\cyro\cyrl\cyrn.}" }
       { curlanguage "ukrainian" =
         { "{\cyr\cyrv\cyri\cyrk\cyro\cyrn\cyra\cyrv\cyre\cyrc\cyrsftsn}" }
-        { "language is not defined: " language "executor" * * warning$ "executor" }
+        { "language is not defined: " curlanguage " in bbl.executor" * * warning$ "executor" }
       if$}
    if$}
 if$}
@@ -847,7 +924,7 @@
       { "ang." }
       { curlanguage "russian" =
         { "{\cyr\cyrz\cyra\cyrya\cyrv\cyrl.}" }
-        { "language is not defined: " language "req" * * warning$ "req" }
+        { "language is not defined: " curlanguage " in bbl.req" * * warning$ "req" }
       if$
       }
     if$
@@ -863,7 +940,7 @@
       { "ausg." }
       { curlanguage "russian" =
         { "{\cyr\cyro\cyrp\cyru\cyrb\cyrl.}" }
-        { "language is not defined: " language "publication" * * warning$ "publication" }
+        { "language is not defined: " curlanguage " in bbl.publication" * * warning$ "publication" }
       if$
       }
     if$
@@ -879,7 +956,7 @@
       { "Prioritat" }
       { curlanguage "russian" =
         { "{\cyr\cyrp\cyrr\cyri\cyro\cyrr\cyri\cyrt\cyre\cyrt}" }
-        { "language is not defined: " language "priority" * * warning$ "priority" }
+        { "language is not defined: " curlanguage " in bbl.priority" * * warning$ "priority" }
       if$
       }
     if$
@@ -887,32 +964,462 @@
   if$
 }
 
+FUNCTION {bbl.jan}
+{ curlanguage "english" =
+   {"Jan."}
+   { curlanguage "ukrainian" =
+      {"\CYRS\cyrii\cyrch."}
+      { curlanguage "russian" =
+         { "\CYRYA\cyrn\cyrv." }
+         { curlanguage "german" =
+            { "Jan." } % Januar
+            { "language is not defined: bbl.jan for " curlanguage * warning$ "Jan." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.feb}
+{ curlanguage "english" =
+   {"Feb."}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyryu\cyrt."}
+      { curlanguage "russian" =
+         { "\CYRF\cyre\cyrv\cyrr." }
+         { curlanguage "german" =
+            {"Feb."} % Februar
+            {"language is not defined: bbl.feb for " curlanguage * warning$ "Feb."}
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.mar}
+{ curlanguage "english" =
+   {"Mar."}
+   { curlanguage "ukrainian" =
+      {"\CYRB\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRM\cyra\cyrr\cyrt" }
+         { curlanguage "german" =
+            {"März"} % März
+            {"language is not defined: bbl.mar for " curlanguage * warning$ "Mar."}
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.apr}
+{ curlanguage "english" =
+   {"Apr."}
+   { curlanguage "ukrainian" =
+      {"\CYRK\cyrv\cyrii\cyrt."}
+      { curlanguage "russian" =
+            { "\CYRA\cyrp\cyrr." }
+         { curlanguage "german" =
+            {"Apr."} % April
+            { "language is not defined: bbl.apr for " curlanguage * warning$ "Apr." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.may}
+{ curlanguage "english" =
+   {"May"}
+   { curlanguage "ukrainian" =
+      {"\CYRT\cyrr\cyra\cyrv."}
+      { curlanguage "russian" =
+            { "\CYRM\cyra\cyrishrt" }
+         { curlanguage "german" =
+            {"Mai"}
+            { "language is not defined: bbl.may for " curlanguage * warning$ "May" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jun}
+{ curlanguage "english" =
+   {"June"}
+   { curlanguage "ukrainian" =
+      {"\CYRCH\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRI\cyryu\cyrn\cyrsftsn" }
+         { curlanguage "german" =
+            {"Juni"}
+            { "language is not defined: bbl.jun for " curlanguage * warning$ "June" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jul}
+{ curlanguage "english" =
+   {"July"}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyri\cyrp."}
+      { curlanguage "russian" =
+            { "\CYRI\cyryu\cyrl\cyrsftsn" }
+         { curlanguage "german" =
+            {"Juli"}
+            { "language is not defined: bbl.jul for " curlanguage * warning$ "July" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.aug}
+{ curlanguage "english" =
+   {"Aug."}
+   { curlanguage "ukrainian" =
+      {"\CYRS\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRA\cyrv\cyrg\." }
+         { curlanguage "german" =
+            {"Aug."} % August
+            { "language is not defined: bbl.aug for " curlanguage * warning$ "Aug." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.sep}
+{ curlanguage "english" =
+   {"Sep."}
+   { curlanguage "ukrainian" =
+      {"\CYRV\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRS\cyre\cyrn\cyrt." }
+         { curlanguage "german" =
+            {"Sep."} % September
+            { "language is not defined: bbl.sep for " curlanguage * warning$ "Sep." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.oct}
+{ curlanguage "english" =
+   {"Oct."}
+   { curlanguage "ukrainian" =
+      {"\CYRZH\cyro\cyrn."}
+      { curlanguage "russian" =
+            { "\CYRO\cyrk\cyrt." }
+         { curlanguage "german" =
+            {"Okt."} % Oktober
+            { "language is not defined: bbl.oct for " curlanguage * warning$ "Oct." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.nov}
+{ curlanguage "english" =
+   {"Nov."}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyri\cyrs."}
+      { curlanguage "russian" =
+            { "\CYRN\cyro\cyrya\cyrb." }
+         { curlanguage "german" =
+            {"Nov."} % November
+            { "language is not defined: bbl.nov for " curlanguage * warning$ "Nov." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.dec}
+{ curlanguage "english" =
+   {"Dec."}
+   { curlanguage "ukrainian" =
+      {"\CYRG\cyrr\cyru\cyrd."}
+      { curlanguage "russian" =
+            { "\CYRD\cyre\cyrk." }
+         { curlanguage "german" =
+            {"Dez."} % Dezember
+            { "language is not defined: bbl.dec for " curlanguage * warning$ "Dec." }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {bbl.arxiv}
+{ curlanguage "english" =
+   { "ArXiv" }
+   { curlanguage "ukrainian" =
+      {"ArXiv"}
+      { curlanguage "russian" =
+         { "ArXiv" }
+         { curlanguage "german" =
+            { "ArXiv" }
+            { "language is not defined: bbl.arxiv for " curlanguage * warning$ "ArXiv" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jstor}
+{ curlanguage "english" =
+   { "JSTOR" }
+   { curlanguage "ukrainian" =
+      {"JSTOR"}
+      { curlanguage "russian" =
+         { "JSTOR" }
+         { curlanguage "german" =
+            { "JSTOR" }
+            { "language is not defined: bbl.jstor for " curlanguage * warning$ "JSTOR" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.pubmed}
+{ curlanguage "english" =
+   { "PubMed" }
+   { curlanguage "ukrainian" =
+      {"PubMed"}
+      { curlanguage "russian" =
+         { "PubMed" }
+         { curlanguage "german" =
+            { "PubMed" }
+            { "language is not defined: bbl.pubmed for " curlanguage * warning$ "PubMed" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.googlebooks}
+{ curlanguage "english" =
+   { "Google Books" }
+   { curlanguage "ukrainian" =
+      {"Google \CYRK\cyrn\cyri\cyrg\cyri"}
+      { curlanguage "russian" =
+         { "Google \CYRK\cyrn\cyri\cyrg\cyri" }
+         { curlanguage "german" =
+            { "Google Books" }
+            { "language is not defined: bbl.googlebooks for " curlanguage * warning$ "Google Books" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.hdl}
+{ curlanguage "english" =
+   { "Handle.Net" }
+   { curlanguage "ukrainian" =
+      {"Handle.Net"}
+      { curlanguage "russian" =
+         { "Handle.Net" }
+         { curlanguage "german" =
+            { "Handle.Net" }
+            { "language is not defined: bbl.hdl for " curlanguage * warning$ "Handle.Net" }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {address.or.location}
+{
+  address empty$
+    { location }
+    { address }
+  if$
+}
+
+FUNCTION {specialitycode.or.number}
+{
+  specialitycode empty$
+    { number }
+    { specialitycode }
+  if$
+}
+
+FUNCTION {institution.or.school}
+{
+  institution empty$
+    { school}
+    { institution }
+  if$
+}
+FUNCTION {date.to.year}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #3 >
+        {
+          date #1 #4 substring$ 'y :=
+          y
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {date.to.month}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #6 >
+        {
+          date #6 #2 substring$ 'm :=
+          m
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {date.to.day}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #10 =
+        {
+          date #9 #2 substring$ 'd :=
+          d
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {year.or.date.to.year}
+{
+  year empty$
+    {
+      date.to.year
+    }
+    { year }
+  if$
+}
+
+FUNCTION {format.month}
+{ month empty$
+    { "" }
+    { month "Jan." =
+        { bbl.jan }
+    { month "Feb." =
+        { bbl.feb }
+    { month "Mar." =
+        { bbl.mar }
+    { month "Apr." =
+        { bbl.apr }
+    { month "May" =
+        { bbl.may }
+    { month "Jun." =
+        { bbl.jun }
+    { month "Jul." =
+        { bbl.jul }
+    { month "Aug." =
+        { bbl.aug }
+    { month "Sep." =
+        { bbl.sep }
+    { month "Oct." =
+        { "Окт." }
+    { month "Nov." =
+        { bbl.nov }
+    { month "Dec." =
+        { bbl.dec }
+        {
+          "unknown month in " cite$ * warning$
+          month
+        }
+        if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
+    if$
+}
+FUNCTION {format.date}
+{ year.or.date.to.year empty$
+    { month empty$
+        { "" }
+        { "there's a month but no year in " cite$ * warning$
+          format.month
+        }
+      if$
+    }
+    { month empty$
+        'year.or.date.to.year
+        { year.or.date.to.year ". \BibDash " format.month * * }
+      if$
+    }
+  if$
+}
+
 INTEGERS { nameptr namesleft numnames }
 
+FUNCTION {fmt.names.first}
+{ #1
+  "{vv~}{ll}{~jj}{~f.}"
+  format.name$
+}
 
-FUNCTION {format.names}
+FUNCTION {fmt.names.three}
 {
   's :=
   #1 'nameptr :=
   s num.names$ 'numnames :=
   numnames 'namesleft :=
+  { namesleft #0 > }
+  { s nameptr
+      "{vv~}{ll}{~jj}{~f.}"
+    format.name$ 't :=
+    nameptr #1 >
+      { nameptr #4 = numnames #4 > and
+          { "others" 't :=
+            #1 'namesleft :=
+          }
+          'skip$
+        if$
+        namesleft #1 >
+          { ", " * t * }
+          { t "others" = t "~others" = or
+              { " " * bbl.etal * }
+              { ", " * t * }
+          if$
+          }
+        if$
+      }
+      't
+    if$
+    nameptr #1 + 'nameptr :=
+    namesleft #1 - 'namesleft :=
+  }
+  while$
+}
+
+FUNCTION {fmt.names.all}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
     { namesleft #0 > }
     { s nameptr
-      "{vv~}{ll}{~jj}{~f.}" format.name$ 't :=
+      %"{vv~}{ll}" format.name$ 't :=
+      "{vv~}{ll}{~jj}{~f.}"
+      format.name$ 't :=
       nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
-          if$
-          namesleft #1 >
+        { namesleft #1 >
             { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
+            { numnames #2 >  curlanguage "english" = and
+                { "," * }
+                'skip$
+              if$
+              t "others" = t "~others" = or
                 { " " * bbl.etal * }
-                { ", " * t * }
+                { " " bbl.and " " * * * t * }
               if$
             }
           if$
@@ -925,56 +1432,77 @@
   while$
 }
 
-FUNCTION {format.lab.names}
-{ 's :=
-  language empty$
-    { "english" 'curlanguage := }
-    { language  'curlanguage := }
+%%<long>    { author fmt.names.all emphasize}
+%%<!long&strict>    { author fmt.names.first emphasize}
+%%<!long&!strict>    { author fmt.names.three emphasize}
+FUNCTION {format.author}
+{
+  author empty$
+    { author } %%%'skip$
+    {author num.names$ #4 <
+      {
+       author fmt.names.three
+      }
+      { "" } %%%'skip$
+    if$}
   if$
-  s #1 "{vv~}{ll}" format.name$
-  s num.names$ duplicate$
-  #2 >
-    %{ pop$ " et~al." * }
-    { pop$ " " bbl.etal * * }
-    { #2 <
-        'skip$
-        { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
-            %{ " et~al." * }
-            { " " bbl.etal * * }
-            %{ " and " * s #2 "{vv~}{ll}" format.name$ * }
-            { " " bbl.and " " * * * s #2 "{vv~}{ll}" format.name$ * }
-          if$
-        }
-      if$
-    }
+}
+
+FUNCTION {format.bookauthors.rest}
+{ bookauthor empty$
+    { "" }
+    { bookauthor fmt.names.three emphasize }
   if$
 }
 
-FUNCTION {format.names.rev}
-{
-  's :=
+FUNCTION {format.editors.rest}
+{ editor empty$
+    { "" }
+    { bbl.edby "\ " * editor fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.chief.rest}
+{ editor empty$
+    { "" }
+    { bbl.chief "\ " * editor fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.executor.rest}
+{ author empty$
+    { "" }
+    { bbl.executor ": " * author fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.compiler.rest}
+{ compiler empty$
+    { "" }
+    { bbl.compiler "\ " * compiler fmt.names.three * }
+  if$
+}
+
+FUNCTION {fmt.names.brief}
+{ 's :=
   #1 'nameptr :=
   s num.names$ 'numnames :=
   numnames 'namesleft :=
     { namesleft #0 > }
-    { s nameptr
-      %"{f.}{~vv}{~ll}{, jj}" format.name$ 't :=
-      "{ff}{~vv}{~ll}{, jj}" format.name$ 't :=
+    { s nameptr "{vv~}{ll}" format.name$ 't :=
       nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
-          if$
+        {
           namesleft #1 >
             { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
-                { " " * bbl.etal * }
-                { ", " * t * }
+            {
+              numnames #2 >  curlanguage "english" = and
+                { "," * }
+                'skip$
               if$
+              t "others" =  t "~others" =  or
+                { " " bbl.etal * * }
+                { " " bbl.and " " * * * t * }
+              if$
             }
           if$
         }
@@ -986,6 +1514,25 @@
   while$
 }
 
+FUNCTION {format.names.key}
+{ 's :=
+  set.language %%% уже вызвана в output.bibitem, но вроде бы нужна и здесь
+  s #1 "{vv~}{ll}" format.name$
+  s num.names$ duplicate$
+  #2 >
+    { pop$ " " bbl.etal * * }
+    { #2 <
+        'skip$
+        { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+            { " " bbl.etal * * }
+            { " " bbl.and " " * * * s #2 "{vv~}{ll}" format.name$ * }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
 FUNCTION {format.key}
 { empty$
     { key field.or.null }
@@ -993,13 +1540,6 @@
   if$
 }
 
-FUNCTION {format.authors}
-{ author empty$
-    { "" }
-    { author format.names emphasize}
-  if$
-}
-
 FUNCTION {author.key.label}
 { author empty$
     { key empty$
@@ -1007,10 +1547,9 @@
         'key
       if$
     }
-    { author format.lab.names }
+    { author format.names.key }
   if$
 }
-
 FUNCTION {author.editor.key.label}
 { author empty$
     { editor empty$
@@ -1020,10 +1559,10 @@
             { "{}" key * } %% Bug in bibtex8 ??
           if$
         }
-        { editor format.lab.names }
+        { editor format.names.key }
       if$
     }
-    { author format.lab.names }
+    { author format.names.key }
   if$
 }
 
@@ -1038,7 +1577,7 @@
         'key
       if$
     }
-    { author format.lab.names }
+    { author format.names.key }
   if$
 }
 
@@ -1053,14 +1592,12 @@
         'key
       if$
     }
-    { editor format.lab.names }
+    { editor format.names.key }
   if$
 }
 
-FUNCTION {calc.short.authors}
-{ type$ "book" =
-  type$ "inbook" =
-  or
+FUNCTION {calc.short.list}
+{ type$ "book" = type$ "inbook" = or
     'author.editor.key.label
     { type$ "proceedings" =
         'editor.key.organization.label
@@ -1076,11 +1613,11 @@
 }
 
 FUNCTION {calc.label}
-{ calc.short.authors
+{ calc.short.list
   short.list
   "("
   *
-  year duplicate$ empty$
+  year.or.date.to.year duplicate$ empty$
   short.list key field.or.null = or
      { pop$ "" }
      'skip$
@@ -1089,138 +1626,36 @@
   'label :=
 }
 
-
-FUNCTION {format.bookauthors}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names}
-  if$
-}
-
-FUNCTION {format.authors.after}
-{ author empty$
-    { "" }
-    { author format.names.rev}
-  if$
-}
-
-FUNCTION {format.bookauthors.after}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names.rev}% always cuts to 4 persons
-  if$
-}
-
-FUNCTION {format.editors.after}
-{ editor empty$
-    { "" }
-    { bbl.edby "\ " * editor format.names.rev * }
-  if$
-}
-
-FUNCTION {format.chief.after}
-{ editor empty$
-    { "" }
-    { bbl.chief "\ " * editor format.names.rev * }
-  if$
-}
-
-FUNCTION {format.executor.after}
-{ author empty$
-    { "" }
-    { bbl.executor ": " * author format.names.rev * }
-  if$
-}
-
-FUNCTION {format.compiler.after}
-{ compiler empty$
-    { "" }
-    { bbl.cmplr "\ " * compiler format.names.rev * }
-  if$
-}
-
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    { title "t" change.case$ }
-  if$
-}
-
-FUNCTION {format.month}
-{ month empty$
-    { "" }
-    { curlanguage "russian" =
-        { month "Jan." =
-            { "\CYRYA\cyrn\cyrv." }
-        { month "Feb." =
-            { "\CYRF\cyre\cyrv\cyrr." }
-        { month "Mar." =
-            { "\CYRM\cyra\cyrr\cyrt" }
-        { month "Apr." =
-            { "\CYRA\cyrp\cyrr." }
-        { month "May" =
-            { "\CYRM\cyra\cyrishrt" }
-        { month "Jun." =
-            { "\CYRI\cyryu\cyrn\cyrsftsn" }
-        { month "Jul." =
-            { "\CYRI\cyryu\cyrl\cyrsftsn" }
-        { month "Aug." =
-            { "\CYRA\cyrv\cyrg\." }
-        { month "Sep." =
-            { "\CYRS\cyre\cyrn\cyrt." }
-        { month "Oct." =
-            { "\CYRO\cyrk\cyrt." }
-        { month "Nov." =
-            { "\CYRN\cyro\cyrya\cyrb." }
-        { month "Dec." =
-            { "\CYRD\cyre\cyrk." }
-            { month }
-            if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
-        { month }
-        if$}
-    if$
-}
-FUNCTION {format.date}
-{ year empty$
-    { month empty$
-        { "" }
-        { "there's a month but no year in " cite$ * warning$
-          format.month
+FUNCTION {calc.long.list} %% called 1 time only
+{ type$ "book" = type$ "inbook" = or
+    %'format.author.editor.brief
+    { author empty$
+        { editor empty$
+            { "" }
+            { editor fmt.names.brief }
+          if$
         }
+        { author fmt.names.brief }
       if$
     }
-    { month empty$
-        'year
-        { year ". \BibDash " format.month * * }
+    { type$ "proceedings" =
+        %'format.editor.brief
+        { editor empty$
+            { "" }
+            { editor fmt.names.brief }
+          if$
+        }
+        %'format.author.brief
+        { author empty$
+            { "" }
+            { author fmt.names.brief }
+          if$
+        }
       if$
     }
   if$
-  extra.label * % new in v.1.2
 }
 
-FUNCTION {address.or.location}
-{
-  address empty$
-    { location }
-    { address }
-  if$
-}
-
-FUNCTION {specialitycode.or.number}
-{
-  specialitycode empty$
-    { number }
-    { specialitycode }
-  if$
-}
-
-FUNCTION {institution.or.school}
-{
-  institution empty$
-    { school}
-    { institution }
-  if$
-}
 FUNCTION {output.address.publisher}
 {
   address empty$ location empty$ and
@@ -1234,174 +1669,27 @@
   if$
   publisher output
 }
-
-
-FUNCTION {format.full.names}
-{'s :=
-  language empty$
-    { "english" 'curlanguage := }
-    { language  'curlanguage := }
-  if$
-  #1 'nameptr :=
-  s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr
-      "{vv~}{ll}" format.name$ 't :=
-      nameptr #1 >
-        {
-          namesleft #1 >
-            { ", " * t * }
-            {
-              numnames #2 >
-              curlanguage "english" =
-              and
-                { "," * }
-                'skip$
-              if$
-              t "others" =
-          %t "~others" =
-          %or
-                %{ " et~al." * }
-                { " " bbl.etal * * }
-                %{ " and " * t * }
-                { " " bbl.and " " * * * t * }
-              if$
-            }
-          if$
-        }
-        't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
-  while$
-}
-
-FUNCTION {author.full}
-{ author empty$
-    { "" }
-    { author format.full.names }
-  if$
-}
-
-FUNCTION {editor.full}
-{ editor empty$
-    { "" }
-    { editor format.full.names }
-  if$
-}
-
-FUNCTION {author.editor.full}
-{ author empty$
-    { editor empty$
-        { "" }
-        { editor format.full.names }
-      if$
-    }
-    { author format.full.names }
-  if$
-}
-
-FUNCTION {make.full.names}
-{ type$ "book" =
-  type$ "inbook" =
-  or
-    'author.editor.full
-    { type$ "proceedings" =
-        'editor.full
-        'author.full
-      if$
-    }
-  if$
-}
-
 FUNCTION {output.bibitem}
-{ newline$
-  "\bibitem[" write$
-  label write$
-  ")" make.full.names duplicate$ short.list =
-     { pop$ }
-     { * }
-   if$
-  "]{" * write$
-  cite$ write$
-  "}" write$
-%%  language empty$
-%%    { "english" 'curlanguage := }
-%%    {language  'curlanguage := }
-%%  if$
-  langid empty$
-    { language empty$
-        { "english" 'curlanguage := }
-        { language  'curlanguage := }
-      if$
-    }
-    { langid  'curlanguage := }
-  if$
+{
+  set.language
+  newline$
+  "\bibitem" write$
+  label extra.label * ")" *
+  calc.long.list *
+  bracketise write$
+  cite$ bracify write$
+  newline$
   "\selectlanguageifdefined" curlanguage bracify * write$
   newline$
   ""
   before.all 'output.state :=
 }
+
 %%  author.key.label
 %%  year parenthesify *
 %%  "; lbl:" label * *
-%%  "; mfn:"  make.full.names * *
+%%  "; mfn:"  calc.long.list * *
 
-FUNCTION {n.dashify}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-        { t #1 #2 substring$ "--" = not
-            { "--" *
-              t #2 global.max$ substring$ 't :=
-            }
-            {   { t #1 #1 substring$ "-" = }
-                { "-" *
-                  t #2 global.max$ substring$ 't :=
-                }
-              while$
-            }
-          if$
-        }
-        { t #1 #1 substring$ *
-          t #2 global.max$ substring$ 't :=
-        }
-      if$
-    }
-  while$
-}
-
-FUNCTION {word.in}
-{ bbl.iin
-  " " * }
-
-FUNCTION {format.btitle}
-{ title
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
-    { "~" }
-    { " " }
-  if$
-  swap$ * *
-}
-
-FUNCTION {tie.connect}
- {"~"
-  swap$ * *
- }
-
-FUNCTION {either.or.check}
-{ empty$
-    'pop$
-    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
-  if$
-}
-
 FUNCTION {format.bvolume}
 { volume empty$
     { "" }
@@ -1408,7 +1696,7 @@
     { bbl.vvol volume tie.connect
       series empty$
         'skip$
-        { bbl.of space.word * series emphasize * }
+        { bbl.of spaces.around * series emphasize * }
       if$
       "volume and number" number either.or.check
     }
@@ -1437,31 +1725,7 @@
   if$
 }
 
-FUNCTION {is.num}
-{ chr.to.int$
-  duplicate$ "0" chr.to.int$ < not
-  swap$ "9" chr.to.int$ > not and
-}
 
-FUNCTION {extract.num}
-{ duplicate$ 't :=
-  "" 's :=
-  { t empty$ not }
-  { t #1 #1 substring$
-    t #2 global.max$ substring$ 't :=
-    duplicate$ is.num
-      { s swap$ * 's := }
-      { pop$ "" 't := }
-    if$
-  }
-  while$
-  s empty$
-    'skip$
-    { pop$ s }
-  if$
-}
-
-
 FUNCTION {convert.edition}
 { edition
 }
@@ -1477,38 +1741,6 @@
   if$
 }
 
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
-  #0 'multiresult :=
-    { multiresult not
-      t empty$ not
-      and
-    }
-    { t #1 #1 substring$
-      duplicate$ "-" =
-      swap$ duplicate$ "," =
-      swap$ "+" =
-      or or
-        { #1 'multiresult := }
-        { t #2 global.max$ substring$ 't := }
-      if$
-    }
-  while$
-  multiresult
-}
-
-%%FUNCTION {format.pages}
-%%{ pages empty$
-%%    { "" }
-%%    { pages multi.page.check
-%%        { bbl.ppages pages n.dashify tie.connect }
-%%        { bbl.ppage pages tie.connect }
-%%      if$
-%%    }
-%%  if$
-%%}
 FUNCTION {format.pages}
 { eid empty$
     {
@@ -1529,15 +1761,6 @@
   if$
 }
 
-%%FUNCTION {format.pages.page}
-%%{ pages empty$
-%%    { pagetotal empty$
-%%      { "" }
-%%      { pagetotal bbl.pages tie.connect }
-%%    if$}
-%%    { format.pages}
-%%  if$
-%%}
 FUNCTION {format.pages.page}
 { eid empty$
     { pages empty$
@@ -1600,6 +1823,19 @@
   if$
 }
 
+FUNCTION {bbl.thesis.type}
+{ type "mathesis" =
+  { bbl.mathesis }
+  { type "phdthesis" =
+    { bbl.phdthesis }
+    { type "docthesis" =
+      { bbl.docthesis }
+      %%{ "!!!" type * "t" change.case$ }
+      { type "t" change.case$ }
+    if$}
+  if$}
+if$}
+
 %%<!utf8>      bbl.thesis.type "t" change.case$
 %%<utf8>      bbl.thesis.type
 FUNCTION {format.thesis.type}
@@ -1620,81 +1856,61 @@
   if$
 }
 
-FUNCTION {author.before}
+FUNCTION {output.author.head}
 {
   author empty$
     'skip$
     {author num.names$ #4 <
-      {format.authors output
-       new.sentence}
+      {
+       author fmt.names.three output
+       new.sentence
+      }
       'skip$
     if$}
   if$
 }
 
-%%<*!long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    {bookauthor num.names$ #4 <
-%%      {format.bookauthors output
-%%       new.sentence}
-%%      'skip$
-%%    if$}
-%%  if$
-%%}
-%%</!long>
-%%<*long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    { format.bookauthors output
-%%      new.sentence
-%%    }
-%%  if$
-%%}
-%%</long>
-
-FUNCTION {author.after}
+FUNCTION {output.author.rest}
 {
   author empty$
     'skip$
     {author num.names$ #3 >
-      {format.authors.after output
-       new.semicolon }
+      { author fmt.names.all output
+        new.semicolon
+      }
       'skip$
     if$}
   if$
 }
 
-FUNCTION {bookauthor.after}
+FUNCTION {bookauthor.rest}
 {
   bookauthor empty$
     'skip$
-    {format.bookauthors.after output
-       new.semicolon }
+    {
+      bookauthor fmt.names.three output
+      new.semicolon
+    }
   if$
 }
 
-FUNCTION {editor.organization.after}
+FUNCTION {editor.organization.rest}
 {
   compiler empty$
     {}
-    { format.compiler.after  output
+    { format.compiler.rest  output
     new.semicolon
     }
   if$
   editor empty$
     {}
-    { format.editors.after  output
+    { format.editors.rest  output.nonnull
     new.semicolon
     }
   if$
   organization empty$
     {}
-    {organization output
+    {organization output.nonnull
     new.semicolon
     }
   if$
@@ -1745,7 +1961,7 @@
     'skip$
     { doi empty$
         'skip$
-        { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
+        { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * }
       if$
     }
   if$
@@ -1756,7 +1972,7 @@
     'skip$
     { media empty$
         'skip$
-        { " " * bbl.media enclose.square.brackets * }
+        { " " * bbl.media bracketise * }
       if$
     }
   if$
@@ -1837,15 +2053,16 @@
 FUNCTION {article}
 {
   output.bibitem
-  author.before
+  output.author.head
+  %new.sentence
   author format.key output
-  format.title add.media "title" output.check
+  title add.media "title" output.check
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
-  journal emphasize add.doi "journal" output.check % new in v.2
+  journal emphasize add.doi "journal" output.check % new in v1.2
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.volume output
   format.number output
@@ -1862,12 +2079,15 @@
 FUNCTION {book}
 {
   output.bibitem
-  author.before
+  output.author.head
+  new.sentence
   author format.key output
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.sentence
   format.number.series output
   new.block
@@ -1874,7 +2094,7 @@
   format.edition output
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1892,16 +2112,19 @@
 FUNCTION {booklet}
 {
   output.bibitem
-  author.before
+  output.author.head
+  new.sentence
   author format.key output
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
   howpublished output
   address.or.location output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1913,16 +2136,19 @@
 FUNCTION {inbook}
 {
   output.bibitem
-  author.before
+  output.author.head
+  new.sentence
   author format.key output
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  bookauthor.after
-  editor.organization.after
+  bookauthor.rest
+  editor.organization.rest
   new.block
   format.edition output
   new.block
@@ -1929,7 +2155,7 @@
   format.number.series output
   new.sentence
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1947,19 +2173,22 @@
 FUNCTION {incollection}
 {
   output.bibitem
-  author.before
+  output.author.head
+  new.sentence
   author format.key output
   new.sentence
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   format.number.series output
@@ -1977,15 +2206,22 @@
 {
   output.bibitem
   editor format.key output
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon                   % added in v.1.2k
+  titleaddon output           % added in v.1.2k
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
-  output.address.publisher
-  format.date "year" output.check
   new.block
+  format.pages.page output
+  %%%output.address.publisher  % 1.2k moved upper
+  new.block
   note output
   new.sentence
   output.eprint.url
@@ -1995,23 +2231,27 @@
 
 FUNCTION {inproceedings}
 { output.bibitem
-  author.before
+  output.author.head
+  new.sentence
   author format.key output
   new.sentence
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon                % added in v.1.2k
+  titleaddon output        % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
   new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
   format.pages.page output
   new.block
   note output
@@ -2031,11 +2271,13 @@
         }
       if$
     }
-    { format.authors output.nonnull }
+    { format.author output.nonnull }
   if$
   author format.key output
   new.block
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   author empty$
     { organization empty$
     {
@@ -2052,7 +2294,7 @@
     }
   if$
   format.edition output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -2065,6 +2307,8 @@
 {
   output.bibitem
   title add.media output.nonnull
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   format.type.number output
   add.blank
@@ -2072,9 +2316,9 @@
   new.colon
   ipc output
   new.slash
-  format.authors.after "author" output.check
+  format.author "author" output.check
   add.blank
-  authorcountry enclose.round.brackets output.nonnull
+  authorcountry paranthesify output.nonnull
   author format.key output
   new.semicolon
   holder output.nonnull
@@ -2090,7 +2334,7 @@
   new.semicolon
   format.prioritydate output
   prioritynumber output
-  prioritycountry enclose.round.brackets output
+  prioritycountry paranthesify output
   new.block
   note output
   new.sentence
@@ -2103,14 +2347,16 @@
 
 FUNCTION {misc}
 { output.bibitem
-  format.authors output
+  %format.author output  % < v.1.2k
+  output.author.head    % v.1.2k
+  %new.sentence            % v.1.2k
   author format.key output
   title howpublished new.sentence.checkb
-  format.title add.media output
+  title add.media output
   howpublished new.block.checka
   howpublished output
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -2121,14 +2367,17 @@
 
 FUNCTION {unpublished}
 { output.bibitem
-  author.before
+  output.author.head
+  new.sentence
   author format.key output
-  format.btitle "title" output.check
+  title "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note "note" output.check
   new.sentence
@@ -2139,13 +2388,15 @@
 
 FUNCTION {online}
 { output.bibitem
-  format.authors output
+  format.author output
   author format.key output
   title howpublished new.sentence.checkb
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   howpublished new.dblslash.checka
   howpublished output
-  editor.organization.after
+  editor.organization.rest
   new.sentence
   new.block
   output.address.publisher
@@ -2164,26 +2415,25 @@
 FUNCTION {electronic} {online}
 FUNCTION {thesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   author format.key output
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
-  %%type "type" output.check
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
-  %%number output % code of the speciality
   specialitycode.or.number output % code of the speciality, new in v.1.2i
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours from the head zone
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2193,14 +2443,15 @@
   format.annote output
   fin.entry
 }
-
 %%  format.techrep.type.number output.nonnull
 %%  format.url output
 FUNCTION {report}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   title format.key output
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   type "type" output.check
   new.colon
@@ -2209,14 +2460,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -2229,10 +2480,10 @@
 
 FUNCTION {phdthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   author format.key output
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
@@ -2241,13 +2492,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2257,13 +2509,12 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {mastersthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   author format.key output
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.mathesis format.thesis.type output.nonnull
   new.colon
@@ -2272,13 +2523,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2288,13 +2540,12 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {docthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   author format.key output
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.docthesis format.thesis.type output.nonnull
   new.colon
@@ -2303,13 +2554,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicate athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2319,7 +2571,6 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {conference} { inproceedings }
 
 %%  format.url output
@@ -2327,7 +2578,7 @@
 FUNCTION {techreport}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   title format.key output
   new.colon
   format.techreport.type output
@@ -2337,14 +2588,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -2369,96 +2620,96 @@
 MACRO {oct} {"Oct."}
 MACRO {nov} {"Nov."}
 MACRO {dec} {"Dec."}
-MACRO {aa}{"Astron. \& Astrophys."}
-MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."}
-MACRO {aj} {"Astron. J."}
+MACRO {aa}{"Astron.\ \& Astrophys."}
+MACRO {aasup}{"Astron.\ \& Astrophys.\ Suppl.\ Ser."}
+MACRO {aj} {"Astron.\ J."}
 MACRO {aph} {"Acta Phys."}
-MACRO {advp} {"Adv. Phys."}
-MACRO {ajp} {"Amer. J. Phys."}
-MACRO {ajm} {"Amer. J. Math."}
-MACRO {amsci} {"Amer. Sci."}
-MACRO {anofd} {"Ann. Fluid Dyn."}
-MACRO {am} {"Ann. Math."}
-MACRO {ap} {"Ann. Phys. (NY)"}
-MACRO {adp} {"Ann. Phys. (Leipzig)"}
-MACRO {ao} {"Appl. Opt."}
-MACRO {apl} {"Appl. Phys. Lett."}
+MACRO {advp} {"Adv.\ Phys."}
+MACRO {ajp} {"Amer.\ J.\ Phys."}
+MACRO {ajm} {"Amer.\ J.\ Math."}
+MACRO {amsci} {"Amer.\ Sci."}
+MACRO {anofd} {"Ann.\ Fluid Dyn."}
+MACRO {am} {"Ann.\ Math."}
+MACRO {ap} {"Ann.\ Phys.\ (NY)"}
+MACRO {adp} {"Ann.\ Phys.\ (Leipzig)"}
+MACRO {ao} {"Appl.\ Opt."}
+MACRO {apl} {"Appl.\ Phys.\ Lett."}
 MACRO {app} {"Astroparticle Phys."}
-MACRO {apj} {"Astrophys. J."}
-MACRO {apjsup} {"Astrophys. J. Suppl."}
-MACRO {apss} {"Astrophys. Space Sci."}
-MACRO {araa} {"Ann. Rev. Astron. Astrophys."}
-MACRO {baas} {"Bull. Amer. Astron. Soc."}
-MACRO {baps} {"Bull. Amer. Phys. Soc."}
-MACRO {cmp} {"Comm. Math. Phys."}
-MACRO {cpam} {"Commun. Pure Appl. Math."}
-MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"}
-MACRO {cpc} {"Comp. Phys. Comm."}
-MACRO {cqg} {"Class. Quant. Grav."}
-MACRO {cra} {"C. R. Acad. Sci. A"}
-MACRO {fed} {"Fusion Eng. \& Design"}
+MACRO {apj} {"Astrophys.\ J."}
+MACRO {apjsup} {"Astrophys.\ J.\ Suppl."}
+MACRO {apss} {"Astrophys.\ Space Sci."}
+MACRO {araa} {"Ann.\ Rev.\ Astron.\ Astrophys."}
+MACRO {baas} {"Bull.\ Amer.\ Astron.\ Soc."}
+MACRO {baps} {"Bull.\ Amer.\ Phys.\ Soc."}
+MACRO {cmp} {"Comm.\ Math.\ Phys."}
+MACRO {cpam} {"Commun.\ Pure Appl.\ Math."}
+MACRO {cppcf} {"Comm.\ Plasma Phys.\ \& Controlled Fusion"}
+MACRO {cpc} {"Comp.\ Phys.\ Comm."}
+MACRO {cqg} {"Class.\ Quant.\ Grav."}
+MACRO {cra} {"C.\ R.\ Acad.\ Sci.\ A"}
+MACRO {fed} {"Fusion Eng.\ \& Design"}
 MACRO {ft} {"Fusion Tech."}
-MACRO {grg} {"Gen. Relativ. Gravit."}
-MACRO {ieeens} {"IEEE Trans. Nucl. Sci."}
-MACRO {ieeeps} {"IEEE Trans. Plasma Sci."}
-MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"}
+MACRO {grg} {"Gen.\ Relativ.\ Gravit."}
+MACRO {ieeens} {"IEEE Trans.\ Nucl.\ Sci."}
+MACRO {ieeeps} {"IEEE Trans.\ Plasma Sci."}
+MACRO {ijimw} {"Interntl.\ J.\ Infrared \& Millimeter Waves"}
 MACRO {ip} {"Infrared Phys."}
 MACRO {irp} {"Infrared Phys."}
-MACRO {jap} {"J. Appl. Phys."}
-MACRO {jasa} {"J. Acoust. Soc. America"}
-MACRO {jcp} {"J. Comp. Phys."}
-MACRO {jchp} {"J. Chem. Phys."}
-MACRO {jetp} {"Sov. Phys.--JETP"}
-MACRO {jfe} {"J. Fusion Energy"}
-MACRO {jfm} {"J. Fluid Mech."}
-MACRO {jmp} {"J. Math. Phys."}
-MACRO {jne} {"J. Nucl. Energy"}
-MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."}
-MACRO {jnm} {"J. Nucl. Mat."}
-MACRO {jpc} {"J. Phys. Chem."}
-MACRO {jpp} {"J. Plasma Phys."}
-MACRO {jpsj} {"J. Phys. Soc. Japan"}
-MACRO {jsi} {"J. Sci. Instrum."}
-MACRO {jvst} {"J. Vac. Sci. \& Tech."}
+MACRO {jap} {"J.\ Appl.\ Phys."}
+MACRO {jasa} {"J.\ Acoust.\ Soc.\ America"}
+MACRO {jcp} {"J.\ Comp.\ Phys."}
+MACRO {jchp} {"J.\ Chem.\ Phys."}
+MACRO {jetp} {"Sov.\ Phys.--JETP"}
+MACRO {jfe} {"J.\ Fusion Energy"}
+MACRO {jfm} {"J.\ Fluid Mech."}
+MACRO {jmp} {"J.\ Math.\ Phys."}
+MACRO {jne} {"J.\ Nucl.\ Energy"}
+MACRO {jnec} {"J.\ Nucl.\ Energy, C: Plasma Phys., Accelerators, Thermonucl.\ Res."}
+MACRO {jnm} {"J.\ Nucl.\ Mat."}
+MACRO {jpc} {"J.\ Phys.\ Chem."}
+MACRO {jpp} {"J.\ Plasma Phys."}
+MACRO {jpsj} {"J.\ Phys.\ Soc.\ Japan"}
+MACRO {jsi} {"J.\ Sci.\ Instrum."}
+MACRO {jvst} {"J.\ Vac.\ Sci.\ \& Tech."}
 MACRO {nat} {"Nature"}
 MACRO {nature} {"Nature"}
-MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"}
-MACRO {nf} {"Nucl. Fusion"}
-MACRO {nim} {"Nucl. Inst. \& Meth."}
-MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."}
-MACRO {np} {"Nucl. Phys."}
-MACRO {npb} {"Nucl. Phys. B"}
-MACRO {nt/f} {"Nucl. Tech./Fusion"}
-MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"}
+MACRO {nedf} {"Nucl.\ Eng.\ \& Design/Fusion"}
+MACRO {nf} {"Nucl.\ Fusion"}
+MACRO {nim} {"Nucl.\ Inst.\ \& Meth."}
+MACRO {nimpr} {"Nucl.\ Inst.\ \& Meth.\ in Phys.\ Res."}
+MACRO {np} {"Nucl.\ Phys."}
+MACRO {npb} {"Nucl.\ Phys.\ B"}
+MACRO {nt/f} {"Nucl.\ Tech./Fusion"}
+MACRO {npbpc} {"Nucl.\ Phys.\ B (Proc.\ Suppl.)"}
 MACRO {inc} {"Nuovo Cimento"}
 MACRO {nc} {"Nuovo Cimento"}
-MACRO {pf} {"Phys. Fluids"}
-MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."}
-MACRO {pfb} {"Phys. Fluids B: Plasma Phys."}
-MACRO {pl} {"Phys. Lett."}
-MACRO {pla} {"Phys. Lett. A"}
-MACRO {plb} {"Phys. Lett. B"}
-MACRO {prep} {"Phys. Rep."}
-MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"}
-MACRO {pp} {"Phys. Plasmas"}
-MACRO {pop} {"Phys. Plasmas"}
-MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"}
-MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"}
-MACRO {prl} {"Phys. Rev. Lett."}
-MACRO {pr} {"Phys. Rev."}
-MACRO {physrev} {"Phys. Rev."}
-MACRO {pra} {"Phys. Rev. A"}
-MACRO {prb} {"Phys. Rev. B"}
-MACRO {prc} {"Phys. Rev. C"}
-MACRO {prd} {"Phys. Rev. D"}
-MACRO {pre} {"Phys. Rev. E"}
-MACRO {ps} {"Phys. Scripta"}
-MACRO {procrsl} {"Proc. Roy. Soc. London"}
-MACRO {rmp} {"Rev. Mod. Phys."}
-MACRO {rsi} {"Rev. Sci. Inst."}
+MACRO {pf} {"Phys.\ Fluids"}
+MACRO {pfa} {"Phys.\ Fluids A: Fluid Dyn."}
+MACRO {pfb} {"Phys.\ Fluids B: Plasma Phys."}
+MACRO {pl} {"Phys.\ Lett."}
+MACRO {pla} {"Phys.\ Lett.\ A"}
+MACRO {plb} {"Phys.\ Lett.\ B"}
+MACRO {prep} {"Phys.\ Rep."}
+MACRO {pnas} {"Proc.\ Nat.\ Acad.\ Sci.\ USA"}
+MACRO {pp} {"Phys.\ Plasmas"}
+MACRO {pop} {"Phys.\ Plasmas"}
+MACRO {ppcf} {"Plasma Phys.\ \& Controlled Fusion"}
+MACRO {phitrsl} {"Philos.\ Trans.\ Roy.\ Soc.\ London"}
+MACRO {prl} {"Phys.\ Rev.\ Lett."}
+MACRO {pr} {"Phys.\ Rev."}
+MACRO {physrev} {"Phys.\ Rev."}
+MACRO {pra} {"Phys.\ Rev.\ A"}
+MACRO {prb} {"Phys.\ Rev.\ B"}
+MACRO {prc} {"Phys.\ Rev.\ C"}
+MACRO {prd} {"Phys.\ Rev.\ D"}
+MACRO {pre} {"Phys.\ Rev.\ E"}
+MACRO {ps} {"Phys.\ Scripta"}
+MACRO {procrsl} {"Proc.\ Roy.\ Soc.\ London"}
+MACRO {rmp} {"Rev.\ Mod.\ Phys."}
+MACRO {rsi} {"Rev.\ Sci.\ Inst."}
 MACRO {science} {"Science"}
-MACRO {sciam} {"Sci. Am."}
-MACRO {sam} {"Stud. Appl. Math."}
+MACRO {sciam} {"Sci.\ Am."}
+MACRO {sam} {"Stud.\ Appl.\ Math."}
 MACRO {st} {"Sky and Telesc."}
 MACRO {cjp} {"Czech. J. Phys."}
 MACRO {el} {"Europhys. Lett."}
@@ -2501,50 +2752,48 @@
 MACRO {suplatt} {"Superlatt. Microstr."}
 MACRO {sust} {"Supercond. Sci. Technol."}
 MACRO {znat} {"Z. Naturforsch."}
-MACRO {appopt} {"Appl. Opt."}
-MACRO {bell}   {"Bell Syst. Tech. J."}
-MACRO {ell}    {"Electron. Lett."}
-MACRO {jasp}   {"J. Appl. Spectr."}
-MACRO {jqe}    {"IEEE J. Quantum Electron."}
-MACRO {jlwt}   {"J. Lightwave Technol."}
-MACRO {jmo}    {"J. Mod. Opt."}
-MACRO {josa}   {"J. Opt. Soc. America"}
-MACRO {josaa}  {"J. Opt. Soc. Amer.~A"}
-MACRO {josab}  {"J. Opt. Soc. Amer.~B"}
-MACRO {jdp}    {"J. Phys. (Paris)"}
-MACRO {oc}     {"Opt. Commun."}
-MACRO {ol}     {"Opt. Lett."}
-MACRO {os}     {"Opt. Spectrosc."}
+MACRO {appopt} {"Appl.\ Opt."}
+MACRO {bell}   {"Bell Syst.\ Tech.\ J."}
+MACRO {ell}    {"Electron.\ Lett."}
+MACRO {jasp}   {"J.\ Appl.\ Spectr."}
+MACRO {jqe}    {"IEEE J.\ Quantum Electron."}
+MACRO {jlwt}   {"J.\ Lightwave Technol."}
+MACRO {jmo}    {"J.\ Mod.\ Opt."}
+MACRO {josa}   {"J.\ Opt.\ Soc.\ America"}
+MACRO {josaa}  {"J.\ Opt.\ Soc.\ Amer.~A"}
+MACRO {josab}  {"J.\ Opt.\ Soc.\ Amer.~B"}
+MACRO {jdp}    {"J.\ Phys.\ (Paris)"}
+MACRO {oc}     {"Opt.\ Commun."}
+MACRO {ol}     {"Opt.\ Lett."}
+MACRO {os}     {"Opt.\ Spectrosc."}
 MACRO {phtl}   {"IEEE Photon. Technol. Lett."}
-MACRO {pspie}  {"Proc. Soc. Photo-Opt. Instrum. Eng."}
+MACRO {pspie}  {"Proc.\ Soc.\ Photo-Opt.\ Instrum. Eng."}
 MACRO {vr}     {"Vision Res."}
-MACRO {zph}    {"Z. f. Physik"}
-MACRO {zphb}   {"Z. f. Physik~B"}
-MACRO {zphd}   {"Z. f. Physik~D"}
+MACRO {zph}    {"Z.\ f.\ Physik"}
+MACRO {zphb}   {"Z.\ f.\ Physik~B"}
+MACRO {zphd}   {"Z.\ f.\ Physik~D"}
 MACRO {sse} {"Solid-State Electron."}
 MACRO {pss} {"Phys. Sol. State"}
 MACRO {nl}  {"Nano Lett."}
-MACRO {sjpp} {"Sov. J. Plasma Phys."}
-MACRO {spd}  {"Sov. Phys.--Doklady"}
-MACRO {sptp} {"Sov. Phys.--Tech. Phys."}
-MACRO       {spu}  {"Sov. Phys.--Uspekhi"}
+MACRO {sjpp} {"Sov.\ J.\ Plasma Phys."}
+MACRO {spd}  {"Sov.\ Phys.--Doklady"}
+MACRO {sptp} {"Sov.\ Phys.--Tech. Phys."}
+MACRO {spu}  {"Sov.\ Phys.--Uspekhi"}
 MACRO {ufn}  {"\CYRU\CYRF\CYRN"}
 MACRO {pu}  {"Phys.--Uspekhi"}
-MACRO {sjot} {"Sov. J. Opt. Technol."}
-MACRO {sjqe} {"Sov. J. Quantum Electron."}
-MACRO {sleb} {"Sov. Phys.--Leb. Inst. Rep."}
-MACRO {stph} {"Sov. Phys.--Techn. Phys."}
-MACRO {stphl}{"Sov. Techn. Phys. Lett."}
+MACRO {sjot} {"Sov.\ J.\ Opt.\ Technol."}
+MACRO {sjqe} {"Sov.\ J.\ Quantum Electron."}
+MACRO {sleb} {"Sov.\ Phys.--Leb.\ Inst.\ Rep."}
+MACRO {stph} {"Sov.\ Phys.--Techn.\ Phys."}
+MACRO {stphl}{"Sov.\ Techn.\ Phys.\ Lett."}
 
 READ
 
-
 FUNCTION {sortify}
 { purify$
   "l" change.case$
 }
 
-
 INTEGERS { seq.num }
 
 FUNCTION {init.seq}
@@ -2618,7 +2867,7 @@
     { "{\natexlab{" swap$ * "}}" * }
   if$
   'extra.label :=
-  label extra.label * 'label :=
+  %%%label extra.label * 'label :=
 }
 
 REVERSE {reverse.pass}
@@ -2641,15 +2890,7 @@
   "\providecommand*{\BibUrl}[1]{\url{#1}}"           write$ newline$
   "\providecommand{\BibAnnote}[1]{}"                 write$ newline$
   "\providecommand*{\BibEmph}[1]{#1}"                write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{---}" write$ newline$
-  %\DeclareUTFcharacter[\UTFencname]{x2014}{\cyrdash}
-  %"\let\cyrdash\textemdash" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\hbox to.8em{--\hss--}}" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\textemdash}" write$ newline$
   "\ProvideTextCommandDefault{\cyrdash}{\iflanguage{russian}{\hbox to.8em{--\hss--}}{\textemdash}}" write$ newline$
-  %%"\ProvideTextCommandDefault{\cyrdash}{%"  write$ newline$
-  %%"  \iflanguage{russian}{\hbox to.8em{--\hss--}}{%" write$ newline$
-  %%"    \iflanguage{ukrainian}{\hbox to.8em{--\hss--}}{\textemdash}}}"  write$ newline$
   "\providecommand*{\BibDash}{\ifdim\lastskip>0pt\unskip\nobreak\hskip.2em plus 0.1em\fi" write$ newline$
   "\cyrdash\hskip.2em plus 0.1em\ignorespaces}" write$ newline$
   "\renewcommand{\newblock}{\ignorespaces}" write$ newline$
@@ -2673,5 +2914,6 @@
 
 EXECUTE {end.bib}
 
+\endinput
 %%
 %% End of file `gost2008n.bst'.

Modified: trunk/Master/texmf-dist/bibtex/bst/gost/gost2008ns.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/gost/gost2008ns.bst	2020-12-29 00:54:00 UTC (rev 57250)
+++ trunk/Master/texmf-dist/bibtex/bst/gost/gost2008ns.bst	2020-12-29 02:19:51 UTC (rev 57251)
@@ -4,30 +4,22 @@
 %%
 %% The original source files were:
 %%
-%% gost.dtx  (with options: `bst,modern,natbib,eprint,sort')
+%% gost.dtx  (with options: `bst,natbib,eprint,sort')
 %% 
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%   http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
+%% IMPORTANT NOTICE:
 %% 
-%% This file has the LPPL maintenance status "maintained".
-%% Maintained by Igor A. Kotelnikov.
+%% For the copyright see the source file.
 %% 
-%% Current version: 1.2j, 2017.01.12
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from gost2008ns.bst.
 %% 
-%% Please, send bug report via e-mail:
-%%   kia999 at mail dot ru <Igor Kotelnikov>
-%% or
-%%   polyama at yahoo dot com <Maksym Polyakov>
+%% For distribution of the original source see the terms
+%% for copying and modification in the file gost.dtx.
 %% 
-
-
-
-%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
 %% This bibstyle attempts to format bibliography according to
 %% GOST 7.0.5-2008 for bibliographic reference.
 %%-------------------------------------------------------------------
@@ -37,7 +29,7 @@
 %% The form of the \bibitem entries is
 %%   \bibitem[Jones et al.(1990)]{key}...
 %%   \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
-%% where the label part (in brackets) consists of the author names,
+%% where the label part [in brackets] consists of the author names,
 %% as they should appear in the citation, with the year in parentheses following.
 %% There must be no space before the opening parenthesis!
 %% A full list of authors may also follow the year.
@@ -47,11 +39,11 @@
 %% The \cite command functions as follows:
 %%   \citet{key}              => Jones et al. (1990)
 %%   \citet*{key}             => Jones, Baker, and Smith (1990)
-%%   \cite{key}              => (Jones et al., 1990)
-%%   \cite*{key}             => (Jones, Baker, and Smith, 1990)
-%%   \cite[chap. 2]{key}     => (Jones et al., 1990, chap. 2)
-%%   \cite[e.g.][]{key}      => (e.g. Jones et al., 1990)
-%%   \cite[e.g.][p. 32]{key} => (e.g. Jones et al., p. 32)
+%%   \cite{key}               => (Jones et al., 1990)
+%%   \cite*{key}              => (Jones, Baker, and Smith, 1990)
+%%   \cite[chap. 2]{key}      => (Jones et al., 1990, chap. 2)
+%%   \cite[e.g.][]{key}       => (e.g. Jones et al., 1990)
+%%   \cite[e.g.][p. 32]{key}  => (e.g. Jones et al., p. 32)
 %%   \citeauthor{key}         => Jones et al.
 %%   \citeauthor*{key}        => Jones, Baker, and Smith
 %%   \citeyear{key}           => 1990
@@ -93,15 +85,15 @@
     language
     langid          % new in v1.2c
     booklanguage
-    %date            % not implemented yet...
+    date            % new in v1.2i
     pagetotal
     url
     urldate
     isbn
     doi
+    eprint
     eprinttype      % = archivePrefix
     eprintclass     % = primaryClass
-    eprint
     % new in v1.2f:
     % appear in biblatex:
     %addendum       % not implemented yet...
@@ -126,9 +118,24 @@
   {}
   { label extra.label sort.label short.list }
 
-INTEGERS { output.state before.all mid.sentence after.sentence after.block
-after.dblslash after.slash after.colon after.semicolon }
+INTEGERS {
+    output.state
+    before.all
+    mid.sentence
+    after.sentence
+    after.block
+    after.dblslash
+    after.slash
+    after.colon
+    after.semicolon
+}
 
+STRINGS { curlanguage }
+
+STRINGS { s t }
+
+STRINGS { y m d }   % new in v.1.2j
+
 FUNCTION {init.state.consts}
 { #0 'before.all :=
   #1 'mid.sentence :=
@@ -140,11 +147,18 @@
   #7 'after.semicolon :=
 }
 
-STRINGS { s t }
+FUNCTION {set.language}
+{ langid empty$
+    { language empty$
+        { "english" 'curlanguage := }
+        { language  'curlanguage := }
+      if$
+    }
+    { langid  'curlanguage := }
+  if$
+}
 
-STRINGS { curlanguage }
-
-FUNCTION {change.language}
+FUNCTION {reset.language}
 { booklanguage empty$
     { "" }
     { booklanguage  'curlanguage :=
@@ -169,7 +183,7 @@
         { output.state before.all =
             'write$
             { output.state after.dblslash =
-                { "~//" * change.language * " " * write$ }
+                { "~//" * reset.language * " " * write$ }
                 { output.state after.slash =
                     { "~/ " * write$ }
                     { output.state after.colon =
@@ -203,7 +217,9 @@
 FUNCTION {output.check}
 { 't :=
   duplicate$ empty$
-    { pop$ "empty " t * " in " * cite$ * warning$ }
+    { pop$
+      "empty " t * " in " * cite$ * warning$
+    }
     'output.nonnull
   if$
 }
@@ -282,23 +298,6 @@
   if$
 }
 
-INTEGERS { len }
-
-FUNCTION {chop.word}
-{ 's :=
-  'len :=
-  s #1 len substring$ =
-    { s len #1 + global.max$ substring$ }
-    's
-  if$
-}
-
-FUNCTION {non.stop}
-{ duplicate$
-   "}" * add.period$
-   #-1 #1 substring$ "." =
-}
-
 FUNCTION {new.block.checka}
 { empty$
     'skip$
@@ -345,9 +344,21 @@
   if$
 }
 
+%%
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {spaces.around}
+{ " " swap$ * " " * }
+
 FUNCTION {emphasize}
 { duplicate$ empty$
-    { pop$ "" }
+    %{ pop$ "" }
+    'skip$       % v.1.2k
     { "\BibEmph{" swap$ * "}" * }
   if$
 }
@@ -359,7 +370,7 @@
   if$
 }
 
-FUNCTION {enclose.square.brackets}
+FUNCTION {bracketise}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -367,7 +378,7 @@
   if$
 }
 
-FUNCTION {enclose.round.brackets}
+FUNCTION {paranthesify}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -375,25 +386,92 @@
   if$
 }
 
-FUNCTION {space.word}
-{ " " swap$ * " " * }
+INTEGERS { len }
 
-FUNCTION {bbl.edby}    %  { "\bbledby{}" }
+FUNCTION {chop.word}
+{ 's :=
+  'len :=
+  s #1 len substring$ =
+    { s len #1 + global.max$ substring$ }
+    's
+  if$
+}
+
+FUNCTION {tie.connect}
+ {"~" swap$ * *
+ }
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { t #1 #2 substring$ "--" = not
+            { "--" *
+              t #2 global.max$ substring$ 't :=
+            }
+            {   { t #1 #1 substring$ "-" = }
+                { "-" *
+                  t #2 global.max$ substring$ 't :=
+                }
+              while$
+            }
+          if$
+        }
+        { t #1 #1 substring$ *
+          t #2 global.max$ substring$ 't :=
+        }
+      if$
+    }
+  while$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+        { #1 'multiresult := }
+        { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {bbl.edby}
 { curlanguage "english" =
-   {"Ed.\ by"}
+   {"ed.\ by"}
    { curlanguage "ukrainian" =
-      {"{\cyr\CYRP\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
+      {"{\cyr\cyrp\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
       { curlanguage "russian" =
-         {"{\cyr\CYRP\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
+         {"{\cyr\cyrp\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
          { curlanguage "german" =
             { "ed." }
-            {"language is not defined: " language "edby" * * warning$ "Ed.\ by"}
+            {"language is not defined: " curlanguage " in bbl.edby" * * warning$ "Ed.\ by"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.cmplr}
+FUNCTION {bbl.compiler}
 { curlanguage "english" =
    { "Compiler"}
    { curlanguage "german" =
@@ -402,15 +480,15 @@
          {"{\cyr\CYRU\cyrk\cyrl.}"}
          { curlanguage "russian" =
             {"{\cyr\CYRS\cyro\cyrs\cyrt.}"}
-            {"language is not defined: " language  "cmplr" * * warning$ "Compiler"}
+            {"language is not defined: " curlanguage  " in bbl.compiler" * * warning$ "Compiler"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.edition} %  { "\bbledition{}" }
+FUNCTION {bbl.edition}
 { curlanguage "english" =
-   {"edition"}
+   {"ed."}
    { curlanguage "ukrainian" =
       {"{\cyr\cyrv\cyri\cyrd.}"}
       { curlanguage "russian" =
@@ -421,7 +499,7 @@
                {"edizione"}
                { curlanguage "french" =
                   {"\'{e}dition"}
-                  {"language is not defined: " language  "edition" * * warning$ "edition"}
+                  {"language is not defined: " curlanguage  " in bbl.edition" * * warning$ "ed."}
                if$}
             if$}
          if$}
@@ -429,7 +507,7 @@
    if$}
 if$}
 
-FUNCTION {bbl.vvolume} %  { "\bblVolume{}" }
+FUNCTION {bbl.vvolume}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Volume"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -436,12 +514,12 @@
       { "\CYRT\cyro\cyrm" }
       { curlanguage "german" =
          {"{Band}"} %%%% { "Volumen" }
-         {"language is not defined: " language  "vvolume" * * warning$ "Volume"}
+         {"language is not defined: " curlanguage  " in bbl.vvolume" * * warning$ "Volume"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.vvol}    %  { "\bblVol{}" }
+FUNCTION {bbl.vvol}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Vol."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -448,12 +526,12 @@
       {"\CYRT."}
       { curlanguage "german" =
          {"{Bd.}"} %%%% { "Vol." }
-         {"language is not defined: " language  "vvol" * * warning$ "Vol."}
+         {"language is not defined: " curlanguage  " in bbl.vvol" * * warning$ "Vol."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iissue}  %  { "\bblIssue{}" }
+FUNCTION {bbl.iissue}
 { curlanguage "english" =
    {"Issue"}
    { curlanguage "ukrainian" =
@@ -462,13 +540,13 @@
          {"\CYRV\cyrery\cyrp\cyru\cyrs\cyrk"}
          { curlanguage "german" =
             {"{Heft}"} %%%% { "Ausgabe" }
-            {"language is not defined: " language "iissue" * * warning$ "Issue"}
+            {"language is not defined: " curlanguage " in bbl.iissue" * * warning$ "Issue"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iiss}  %  { "\bblIss{}" }
+FUNCTION {bbl.iiss}
 { curlanguage "english" =
    {"Iss."}
    { curlanguage "ukrainian" =
@@ -477,13 +555,13 @@
          {"\CYRV\cyrery\cyrp."}
          { curlanguage "german" =
             {"{H.}"}
-            {"language is not defined: " language "iiss" * * warning$ "Iss."}
+            {"language is not defined: " curlanguage " in bbl.iiss" * * warning$ "Iss."}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.of}      %  { "\bblof{}" }
+FUNCTION {bbl.of}
 { curlanguage "english" =
    {"of"}
    { curlanguage "german" =
@@ -492,13 +570,13 @@
          { "{\cyr\cyrii\cyrz}" }
          { curlanguage "russian" =
             { "{\cyr\cyri\cyrz}" }
-            {"language is not defined: " language "of" * * warning$ "of"}
+            {"language is not defined: " curlanguage " in bbl.of" * * warning$ "of"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.etal}      %  { "\bblof{}" }
+FUNCTION {bbl.etal}
 { curlanguage "english" =
    {"et~al."}
    { curlanguage "german" =
@@ -507,15 +585,15 @@
          {"{\cyr\cyrt\cyra~\cyrii\cyrn.}"}
          { curlanguage "russian" =
             {"{\cyr\cyri~\cyrd\cyrr.}"}
-            {"language is not defined: " language  "et~al" * * warning$ "et~al."}
+            {"language is not defined: " curlanguage  " in bbl.etal" * * warning$ "et~al."}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.and}      %  { "\bbland{}" }
+FUNCTION {bbl.and}
 { curlanguage "english" =
-   {"and"}
+  {"and"}
    { curlanguage "german" =
       { "und" }
       { curlanguage "ukrainian" =
@@ -522,13 +600,16 @@
          {"{\cyrii}"}
          { curlanguage "russian" =
             {"{\cyri}"}
-            {"language is not defined: " language  "and" * * warning$ "and"}
+            { curlanguage "french" =
+                {"et"}
+                {"language is not defined: " curlanguage  " in bbl.and" * * warning$ "and"}
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nnumber} %  { "\bblNumber{}" }
+FUNCTION {bbl.nnumber}
 { curlanguage "english" =
    {"Number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -535,12 +616,12 @@
       { "\CYRN\cyro\cyrm\cyre\cyrr" }
       { curlanguage "german" =
          {"{Heft}"} %%% { "Anzahl" }
-         {"language is not defined: " language  "nnumber" * * warning$ "Number"}
+         {"language is not defined: " curlanguage  " in bbl.nnumber" * * warning$ "Number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.number}  %  { "\bblnumber{}" }
+FUNCTION {bbl.number}
 { curlanguage "english" =
    {"number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -547,27 +628,30 @@
       {"{\cyr\cyrn\cyro\cyrm\cyre\cyrr}"}
       { curlanguage "german" =
          {"{Heft}"} %%% { "anzahl" }???
-         {"language is not defined: " language  "number" * * warning$ "number"}
+         {"language is not defined: " curlanguage  " in bbl.number" * * warning$ "number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nr}     %   { "\bblno{}" }
+FUNCTION {bbl.nr}
 { curlanguage "english" =
    {"no."}
    { curlanguage "italian" =
-      { "no" }
+      { "no." }
       { curlanguage "ukrainian" = curlanguage "russian" = or
          { "{\cyr\textnumero}" }
          { curlanguage "german" =
-            {"{H.}"} %%% { "an." }
-            {"language is not defined: " language "nr" * * warning$ "no."}
+            {"{nu.}"} %%% { "an." }
+            { curlanguage "french" =
+                { "no." }
+                {"language is not defined: " curlanguage " in bbl.nr" * * warning$ "no."}
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nnr}     %   { "\bblno{}" }
+FUNCTION {bbl.nnr}
 { curlanguage "english" =
    {"No."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -574,30 +658,30 @@
       { "{\cyr\textnumero}" }
       { curlanguage "german" =
          {"{H.}"} %%% { "an." }
-         {"language is not defined: " language  "nnr" * * warning$ "No."}
+         {"language is not defined: " curlanguage  " in bbl.nnr" * * warning$ "No."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.in}    %    { "\bblin{}" }
+FUNCTION {bbl.in}
 { curlanguage "english" = curlanguage "german" = or
    {"in"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "{\cyr\cyrv}" }
-      {"language is not defined: " language  "in" * * warning$ "in"}
+      {"language is not defined: " curlanguage  " in bbl.in" * * warning$ "in"}
    if$}
 if$}
 
-FUNCTION {bbl.iin}  %     { "\bblIn{}" }
+FUNCTION {bbl.iin}
 { curlanguage "english" = curlanguage "german" = or
    {"In"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "\CYRV" }
-      {"language is not defined: " language  "iin" * * warning$ "In"}
+      {"language is not defined: " curlanguage  " in bbl.iin" * * warning$ "In"}
    if$}
 if$}
 
-FUNCTION {bbl.pages}    % { "\bblpp." }
+FUNCTION {bbl.pages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."} %%% {"pp."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -604,12 +688,12 @@
       {"{\cyr\cyrs.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "pages" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.pages" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.page}   %   { "\bblp."
+FUNCTION {bbl.page}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -616,12 +700,12 @@
       {"{\cyr\cyrs.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "page" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.page" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppages}%    { "\bblPp." }
+FUNCTION {bbl.ppages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."} %%%% { "Pp." }
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -628,12 +712,12 @@
       {"{\cyr\CYRS.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language "ppages" * * warning$ "P."}
+         {"language is not defined: " curlanguage " in bbl.ppages" * * warning$ "P."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppage}  %   { "\bblP." }
+FUNCTION {bbl.ppage}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -640,7 +724,7 @@
       {"{\cyr\CYRS.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language  "ppage" * * warning$ "P."}
+         {"language is not defined: " curlanguage  " in bbl.ppage" * * warning$ "P."}
       if$}
    if$}
 if$}
@@ -654,7 +738,10 @@
          { "{\CYRR\cyre\cyrzh\cyri\cyrm\ \cyrd\cyro\cyrs\cyrt\cyru\cyrp\cyra}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "Mode d'acc\`{e}s" }
+                { "language is not defined: " curlanguage " in bbl.url" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
@@ -668,13 +755,16 @@
          { "{\cyrd\cyra\cyrt\cyra\ \cyro\cyrb\cyrr\cyra\cyrshch\cyre\cyrn\cyri\cyrya}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "{en ligne; acc\'{e}d\'{e}}" }
+                { "language is not defined: " curlanguage " in bbl.urldate" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.techreport} % rename to bbl.techreport
+FUNCTION {bbl.techreport}
 { curlanguage "english" =
    { "Rep." }
    { curlanguage "german" =
@@ -681,7 +771,7 @@
       { "Bericht" }
       { curlanguage "russian" =
          { "{\cyr\CYRO\cyrt\cyrch\cyre\cyrt}" }
-         { "language is not defined: " language "techrep" * * warning$ "Rep." }
+         { "language is not defined: " curlanguage " in bbl.techrep" * * warning$ "Rep." }
       if$}
    if$}
 if$}
@@ -690,12 +780,12 @@
 { curlanguage "english" =
    { "Master's thesis" }
    { curlanguage "german" =
-      { "Diss.~Mag." }
+      { "diss.~mag." }
       { curlanguage "russian" =
-        { "{\cyr\CYRK\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
+        { "{\cyr\cyrk\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
           "\cyro\cyrn\cyrn\cyra\cyrya\ \cyrr\cyra\cyrb\cyro\cyrt\cyra\ " *
           "\cyrm\cyra\cyrg\cyri\cyrs\cyrt\cyrr\cyra}" * }
-         { "language is not defined: " language "mthesis" * * warning$ "Master's thesis" }
+         { "language is not defined: " curlanguage " in bbl.mthesis" * * warning$ "Master's thesis" }
       if$}
    if$}
 if$}
@@ -704,13 +794,13 @@
 { curlanguage "english" =
    { "Ph.\,D. thesis" }
    { curlanguage "german" =
-      { "Diss.~Ph.\,D." }
+      { "diss.~Ph.\,D." }
       { curlanguage "russian" =
          { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrk\cyra\cyrn\cyrd. "
            "\cyrn\cyra\cyru\cyrk}" * }
          { curlanguage "french" =
-           { "Th\`{e}se de doctorat" }
-           { "language is not defined: " language "phdthesis" * * warning$ "Ph.\,D. thesis" }
+           { "th\`{e}se de doctorat" }
+           { "language is not defined: " curlanguage " in bbl.phdthesis" * * warning$ "Ph.\,D. thesis" }
          if$}
       if$}
    if$}
@@ -718,36 +808,23 @@
 
 FUNCTION {bbl.docthesis}
 { curlanguage "english" =
-   { "Dr.\,Sci. dissertation" }
+   { "dr.\,sci. dissertation" }
    { curlanguage "german" =
-      { "Diss.~Dr." }
+      { "diss.~dr." }
       { curlanguage "russian" =
          { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrd-\cyrr\cyra\ "
            "\cyrn\cyra\cyru\cyrk}" * }
-         { "language is not defined: " language "docthesis" * * warning$ "Dr.\,Sci. dissertation" }
+         { "language is not defined: " curlanguage " in bbl.docthesis" * * warning$ "Dr.\,Sci. dissertation" }
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.thesis.type}
-{ type "mathesis" =
-  { bbl.mathesis }
-  { type "phdthesis" =
-    { bbl.phdthesis }
-    { type "docthesis" =
-      { bbl.docthesis }
-      %%{ "!!!" type * "t" change.case$ }
-      { type "t" change.case$ }
-    if$}
-  if$}
-if$}
-
 FUNCTION {bbl.nnoaddress}
 { curlanguage "english" =
    { "S.\ l." }
    { curlanguage "russian" =
       { "{\cyr\CYRB.\ \cyrm.}" }
-      { "language is not defined: " language "nnoaddress" * * warning$ "S.\ l." }
+      { "language is not defined: " curlanguage " in bbl.nnoaddress" * * warning$ "S.\ l." }
    if$}
 if$}
 
@@ -756,7 +833,7 @@
    { "s.\ n." }
    { curlanguage "russian" =
       { "{\cyr\cyrb.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "s.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "s.\ n." }
    if$}
 if$}
 
@@ -765,7 +842,7 @@
    { "S.\ n." }
    { curlanguage "russian" =
       { "{\cyr\CYRB.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "S.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "S.\ n." }
    if$}
 if$}
 
@@ -774,7 +851,7 @@
    { "Text" }
    { curlanguage "russian" = curlanguage "ukrainian" = or
       { "{\cyr\CYRT\cyre\cyrk\cyrs\cyrt}" }
-      { "language is not defined: " language "media" * * warning$ "Text" }
+      { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Text" }
    if$}
 if$}
 
@@ -787,7 +864,7 @@
       { curlanguage "ukrainian" =
         { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
           "\cyrr\cyre\cyrs\cyru\cyrr\cyrs}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -801,7 +878,7 @@
       { curlanguage "ukrainian" =
         { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
           "\cyrr\cyre\cyrs\cyru\cyrr\cyrs\ \cyro\cyrn\cyrl\cyra\cyrishrt\cyr}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -813,7 +890,7 @@
       { "\cyrr\cyru\cyrk." }
       { curlanguage "ukrainian" =
         { "\cyrr\cyru\cyrk." }
-        { "language is not defined: " language "chief" * * warning$ "chief" }
+        { "language is not defined: " curlanguage " in bbl.chief" * * warning$ "chief" }
       if$}
    if$}
 if$}
@@ -820,12 +897,12 @@
 
 FUNCTION {bbl.executor}
 { curlanguage "english" =
-   { "Executor" }
+   { "executor" }
    { curlanguage "russian" =
       { "{\cyr\cyri\cyrs\cyrp\cyro\cyrl\cyrn.}" }
       { curlanguage "ukrainian" =
         { "{\cyr\cyrv\cyri\cyrk\cyro\cyrn\cyra\cyrv\cyre\cyrc\cyrsftsn}" }
-        { "language is not defined: " language "executor" * * warning$ "executor" }
+        { "language is not defined: " curlanguage " in bbl.executor" * * warning$ "executor" }
       if$}
    if$}
 if$}
@@ -847,7 +924,7 @@
       { "ang." }
       { curlanguage "russian" =
         { "{\cyr\cyrz\cyra\cyrya\cyrv\cyrl.}" }
-        { "language is not defined: " language "req" * * warning$ "req" }
+        { "language is not defined: " curlanguage " in bbl.req" * * warning$ "req" }
       if$
       }
     if$
@@ -863,7 +940,7 @@
       { "ausg." }
       { curlanguage "russian" =
         { "{\cyr\cyro\cyrp\cyru\cyrb\cyrl.}" }
-        { "language is not defined: " language "publication" * * warning$ "publication" }
+        { "language is not defined: " curlanguage " in bbl.publication" * * warning$ "publication" }
       if$
       }
     if$
@@ -879,7 +956,7 @@
       { "Prioritat" }
       { curlanguage "russian" =
         { "{\cyr\cyrp\cyrr\cyri\cyro\cyrr\cyri\cyrt\cyre\cyrt}" }
-        { "language is not defined: " language "priority" * * warning$ "priority" }
+        { "language is not defined: " curlanguage " in bbl.priority" * * warning$ "priority" }
       if$
       }
     if$
@@ -887,32 +964,462 @@
   if$
 }
 
+FUNCTION {bbl.jan}
+{ curlanguage "english" =
+   {"Jan."}
+   { curlanguage "ukrainian" =
+      {"\CYRS\cyrii\cyrch."}
+      { curlanguage "russian" =
+         { "\CYRYA\cyrn\cyrv." }
+         { curlanguage "german" =
+            { "Jan." } % Januar
+            { "language is not defined: bbl.jan for " curlanguage * warning$ "Jan." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.feb}
+{ curlanguage "english" =
+   {"Feb."}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyryu\cyrt."}
+      { curlanguage "russian" =
+         { "\CYRF\cyre\cyrv\cyrr." }
+         { curlanguage "german" =
+            {"Feb."} % Februar
+            {"language is not defined: bbl.feb for " curlanguage * warning$ "Feb."}
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.mar}
+{ curlanguage "english" =
+   {"Mar."}
+   { curlanguage "ukrainian" =
+      {"\CYRB\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRM\cyra\cyrr\cyrt" }
+         { curlanguage "german" =
+            {"März"} % März
+            {"language is not defined: bbl.mar for " curlanguage * warning$ "Mar."}
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.apr}
+{ curlanguage "english" =
+   {"Apr."}
+   { curlanguage "ukrainian" =
+      {"\CYRK\cyrv\cyrii\cyrt."}
+      { curlanguage "russian" =
+            { "\CYRA\cyrp\cyrr." }
+         { curlanguage "german" =
+            {"Apr."} % April
+            { "language is not defined: bbl.apr for " curlanguage * warning$ "Apr." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.may}
+{ curlanguage "english" =
+   {"May"}
+   { curlanguage "ukrainian" =
+      {"\CYRT\cyrr\cyra\cyrv."}
+      { curlanguage "russian" =
+            { "\CYRM\cyra\cyrishrt" }
+         { curlanguage "german" =
+            {"Mai"}
+            { "language is not defined: bbl.may for " curlanguage * warning$ "May" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jun}
+{ curlanguage "english" =
+   {"June"}
+   { curlanguage "ukrainian" =
+      {"\CYRCH\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRI\cyryu\cyrn\cyrsftsn" }
+         { curlanguage "german" =
+            {"Juni"}
+            { "language is not defined: bbl.jun for " curlanguage * warning$ "June" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jul}
+{ curlanguage "english" =
+   {"July"}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyri\cyrp."}
+      { curlanguage "russian" =
+            { "\CYRI\cyryu\cyrl\cyrsftsn" }
+         { curlanguage "german" =
+            {"Juli"}
+            { "language is not defined: bbl.jul for " curlanguage * warning$ "July" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.aug}
+{ curlanguage "english" =
+   {"Aug."}
+   { curlanguage "ukrainian" =
+      {"\CYRS\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRA\cyrv\cyrg\." }
+         { curlanguage "german" =
+            {"Aug."} % August
+            { "language is not defined: bbl.aug for " curlanguage * warning$ "Aug." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.sep}
+{ curlanguage "english" =
+   {"Sep."}
+   { curlanguage "ukrainian" =
+      {"\CYRV\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRS\cyre\cyrn\cyrt." }
+         { curlanguage "german" =
+            {"Sep."} % September
+            { "language is not defined: bbl.sep for " curlanguage * warning$ "Sep." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.oct}
+{ curlanguage "english" =
+   {"Oct."}
+   { curlanguage "ukrainian" =
+      {"\CYRZH\cyro\cyrn."}
+      { curlanguage "russian" =
+            { "\CYRO\cyrk\cyrt." }
+         { curlanguage "german" =
+            {"Okt."} % Oktober
+            { "language is not defined: bbl.oct for " curlanguage * warning$ "Oct." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.nov}
+{ curlanguage "english" =
+   {"Nov."}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyri\cyrs."}
+      { curlanguage "russian" =
+            { "\CYRN\cyro\cyrya\cyrb." }
+         { curlanguage "german" =
+            {"Nov."} % November
+            { "language is not defined: bbl.nov for " curlanguage * warning$ "Nov." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.dec}
+{ curlanguage "english" =
+   {"Dec."}
+   { curlanguage "ukrainian" =
+      {"\CYRG\cyrr\cyru\cyrd."}
+      { curlanguage "russian" =
+            { "\CYRD\cyre\cyrk." }
+         { curlanguage "german" =
+            {"Dez."} % Dezember
+            { "language is not defined: bbl.dec for " curlanguage * warning$ "Dec." }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {bbl.arxiv}
+{ curlanguage "english" =
+   { "ArXiv" }
+   { curlanguage "ukrainian" =
+      {"ArXiv"}
+      { curlanguage "russian" =
+         { "ArXiv" }
+         { curlanguage "german" =
+            { "ArXiv" }
+            { "language is not defined: bbl.arxiv for " curlanguage * warning$ "ArXiv" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jstor}
+{ curlanguage "english" =
+   { "JSTOR" }
+   { curlanguage "ukrainian" =
+      {"JSTOR"}
+      { curlanguage "russian" =
+         { "JSTOR" }
+         { curlanguage "german" =
+            { "JSTOR" }
+            { "language is not defined: bbl.jstor for " curlanguage * warning$ "JSTOR" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.pubmed}
+{ curlanguage "english" =
+   { "PubMed" }
+   { curlanguage "ukrainian" =
+      {"PubMed"}
+      { curlanguage "russian" =
+         { "PubMed" }
+         { curlanguage "german" =
+            { "PubMed" }
+            { "language is not defined: bbl.pubmed for " curlanguage * warning$ "PubMed" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.googlebooks}
+{ curlanguage "english" =
+   { "Google Books" }
+   { curlanguage "ukrainian" =
+      {"Google \CYRK\cyrn\cyri\cyrg\cyri"}
+      { curlanguage "russian" =
+         { "Google \CYRK\cyrn\cyri\cyrg\cyri" }
+         { curlanguage "german" =
+            { "Google Books" }
+            { "language is not defined: bbl.googlebooks for " curlanguage * warning$ "Google Books" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.hdl}
+{ curlanguage "english" =
+   { "Handle.Net" }
+   { curlanguage "ukrainian" =
+      {"Handle.Net"}
+      { curlanguage "russian" =
+         { "Handle.Net" }
+         { curlanguage "german" =
+            { "Handle.Net" }
+            { "language is not defined: bbl.hdl for " curlanguage * warning$ "Handle.Net" }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {address.or.location}
+{
+  address empty$
+    { location }
+    { address }
+  if$
+}
+
+FUNCTION {specialitycode.or.number}
+{
+  specialitycode empty$
+    { number }
+    { specialitycode }
+  if$
+}
+
+FUNCTION {institution.or.school}
+{
+  institution empty$
+    { school}
+    { institution }
+  if$
+}
+FUNCTION {date.to.year}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #3 >
+        {
+          date #1 #4 substring$ 'y :=
+          y
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {date.to.month}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #6 >
+        {
+          date #6 #2 substring$ 'm :=
+          m
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {date.to.day}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #10 =
+        {
+          date #9 #2 substring$ 'd :=
+          d
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {year.or.date.to.year}
+{
+  year empty$
+    {
+      date.to.year
+    }
+    { year }
+  if$
+}
+
+FUNCTION {format.month}
+{ month empty$
+    { "" }
+    { month "Jan." =
+        { bbl.jan }
+    { month "Feb." =
+        { bbl.feb }
+    { month "Mar." =
+        { bbl.mar }
+    { month "Apr." =
+        { bbl.apr }
+    { month "May" =
+        { bbl.may }
+    { month "Jun." =
+        { bbl.jun }
+    { month "Jul." =
+        { bbl.jul }
+    { month "Aug." =
+        { bbl.aug }
+    { month "Sep." =
+        { bbl.sep }
+    { month "Oct." =
+        { "Окт." }
+    { month "Nov." =
+        { bbl.nov }
+    { month "Dec." =
+        { bbl.dec }
+        {
+          "unknown month in " cite$ * warning$
+          month
+        }
+        if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
+    if$
+}
+FUNCTION {format.date}
+{ year.or.date.to.year empty$
+    { month empty$
+        { "" }
+        { "there's a month but no year in " cite$ * warning$
+          format.month
+        }
+      if$
+    }
+    { month empty$
+        'year.or.date.to.year
+        { year.or.date.to.year ". \BibDash " format.month * * }
+      if$
+    }
+  if$
+}
+
 INTEGERS { nameptr namesleft numnames }
 
+FUNCTION {fmt.names.first}
+{ #1
+  "{vv~}{ll}{~jj}{~f.}"
+  format.name$
+}
 
-FUNCTION {format.names}
+FUNCTION {fmt.names.three}
 {
   's :=
   #1 'nameptr :=
   s num.names$ 'numnames :=
   numnames 'namesleft :=
+  { namesleft #0 > }
+  { s nameptr
+      "{vv~}{ll}{~jj}{~f.}"
+    format.name$ 't :=
+    nameptr #1 >
+      { nameptr #4 = numnames #4 > and
+          { "others" 't :=
+            #1 'namesleft :=
+          }
+          'skip$
+        if$
+        namesleft #1 >
+          { ", " * t * }
+          { t "others" = t "~others" = or
+              { " " * bbl.etal * }
+              { ", " * t * }
+          if$
+          }
+        if$
+      }
+      't
+    if$
+    nameptr #1 + 'nameptr :=
+    namesleft #1 - 'namesleft :=
+  }
+  while$
+}
+
+FUNCTION {fmt.names.all}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
     { namesleft #0 > }
     { s nameptr
-      "{vv~}{ll}{~jj}{~f.}" format.name$ 't :=
+      %"{vv~}{ll}" format.name$ 't :=
+      "{vv~}{ll}{~jj}{~f.}"
+      format.name$ 't :=
       nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
-          if$
-          namesleft #1 >
+        { namesleft #1 >
             { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
+            { numnames #2 >  curlanguage "english" = and
+                { "," * }
+                'skip$
+              if$
+              t "others" = t "~others" = or
                 { " " * bbl.etal * }
-                { ", " * t * }
+                { " " bbl.and " " * * * t * }
               if$
             }
           if$
@@ -925,56 +1432,77 @@
   while$
 }
 
-FUNCTION {format.lab.names}
-{ 's :=
-  language empty$
-    { "english" 'curlanguage := }
-    { language  'curlanguage := }
+%%<long>    { author fmt.names.all emphasize}
+%%<!long&strict>    { author fmt.names.first emphasize}
+%%<!long&!strict>    { author fmt.names.three emphasize}
+FUNCTION {format.author}
+{
+  author empty$
+    { author } %%%'skip$
+    {author num.names$ #4 <
+      {
+       author fmt.names.three
+      }
+      { "" } %%%'skip$
+    if$}
   if$
-  s #1 "{vv~}{ll}" format.name$
-  s num.names$ duplicate$
-  #2 >
-    %{ pop$ " et~al." * }
-    { pop$ " " bbl.etal * * }
-    { #2 <
-        'skip$
-        { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
-            %{ " et~al." * }
-            { " " bbl.etal * * }
-            %{ " and " * s #2 "{vv~}{ll}" format.name$ * }
-            { " " bbl.and " " * * * s #2 "{vv~}{ll}" format.name$ * }
-          if$
-        }
-      if$
-    }
+}
+
+FUNCTION {format.bookauthors.rest}
+{ bookauthor empty$
+    { "" }
+    { bookauthor fmt.names.three emphasize }
   if$
 }
 
-FUNCTION {format.names.rev}
-{
-  's :=
+FUNCTION {format.editors.rest}
+{ editor empty$
+    { "" }
+    { bbl.edby "\ " * editor fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.chief.rest}
+{ editor empty$
+    { "" }
+    { bbl.chief "\ " * editor fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.executor.rest}
+{ author empty$
+    { "" }
+    { bbl.executor ": " * author fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.compiler.rest}
+{ compiler empty$
+    { "" }
+    { bbl.compiler "\ " * compiler fmt.names.three * }
+  if$
+}
+
+FUNCTION {fmt.names.brief}
+{ 's :=
   #1 'nameptr :=
   s num.names$ 'numnames :=
   numnames 'namesleft :=
     { namesleft #0 > }
-    { s nameptr
-      %"{f.}{~vv}{~ll}{, jj}" format.name$ 't :=
-      "{ff}{~vv}{~ll}{, jj}" format.name$ 't :=
+    { s nameptr "{vv~}{ll}" format.name$ 't :=
       nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
-          if$
+        {
           namesleft #1 >
             { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
-                { " " * bbl.etal * }
-                { ", " * t * }
+            {
+              numnames #2 >  curlanguage "english" = and
+                { "," * }
+                'skip$
               if$
+              t "others" =  t "~others" =  or
+                { " " bbl.etal * * }
+                { " " bbl.and " " * * * t * }
+              if$
             }
           if$
         }
@@ -986,6 +1514,25 @@
   while$
 }
 
+FUNCTION {format.names.key}
+{ 's :=
+  set.language %%% уже вызвана в output.bibitem, но вроде бы нужна и здесь
+  s #1 "{vv~}{ll}" format.name$
+  s num.names$ duplicate$
+  #2 >
+    { pop$ " " bbl.etal * * }
+    { #2 <
+        'skip$
+        { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+            { " " bbl.etal * * }
+            { " " bbl.and " " * * * s #2 "{vv~}{ll}" format.name$ * }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
 FUNCTION {format.key}
 { empty$
     { key field.or.null }
@@ -993,13 +1540,6 @@
   if$
 }
 
-FUNCTION {format.authors}
-{ author empty$
-    { "" }
-    { author format.names emphasize}
-  if$
-}
-
 FUNCTION {author.key.label}
 { author empty$
     { key empty$
@@ -1007,10 +1547,9 @@
         'key
       if$
     }
-    { author format.lab.names }
+    { author format.names.key }
   if$
 }
-
 FUNCTION {author.editor.key.label}
 { author empty$
     { editor empty$
@@ -1020,10 +1559,10 @@
             { "{}" key * } %% Bug in bibtex8 ??
           if$
         }
-        { editor format.lab.names }
+        { editor format.names.key }
       if$
     }
-    { author format.lab.names }
+    { author format.names.key }
   if$
 }
 
@@ -1038,7 +1577,7 @@
         'key
       if$
     }
-    { author format.lab.names }
+    { author format.names.key }
   if$
 }
 
@@ -1053,14 +1592,12 @@
         'key
       if$
     }
-    { editor format.lab.names }
+    { editor format.names.key }
   if$
 }
 
-FUNCTION {calc.short.authors}
-{ type$ "book" =
-  type$ "inbook" =
-  or
+FUNCTION {calc.short.list}
+{ type$ "book" = type$ "inbook" = or
     'author.editor.key.label
     { type$ "proceedings" =
         'editor.key.organization.label
@@ -1076,11 +1613,11 @@
 }
 
 FUNCTION {calc.label}
-{ calc.short.authors
+{ calc.short.list
   short.list
   "("
   *
-  year duplicate$ empty$
+  year.or.date.to.year duplicate$ empty$
   short.list key field.or.null = or
      { pop$ "" }
      'skip$
@@ -1089,138 +1626,36 @@
   'label :=
 }
 
-
-FUNCTION {format.bookauthors}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names}
-  if$
-}
-
-FUNCTION {format.authors.after}
-{ author empty$
-    { "" }
-    { author format.names.rev}
-  if$
-}
-
-FUNCTION {format.bookauthors.after}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names.rev}% always cuts to 4 persons
-  if$
-}
-
-FUNCTION {format.editors.after}
-{ editor empty$
-    { "" }
-    { bbl.edby "\ " * editor format.names.rev * }
-  if$
-}
-
-FUNCTION {format.chief.after}
-{ editor empty$
-    { "" }
-    { bbl.chief "\ " * editor format.names.rev * }
-  if$
-}
-
-FUNCTION {format.executor.after}
-{ author empty$
-    { "" }
-    { bbl.executor ": " * author format.names.rev * }
-  if$
-}
-
-FUNCTION {format.compiler.after}
-{ compiler empty$
-    { "" }
-    { bbl.cmplr "\ " * compiler format.names.rev * }
-  if$
-}
-
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    { title "t" change.case$ }
-  if$
-}
-
-FUNCTION {format.month}
-{ month empty$
-    { "" }
-    { curlanguage "russian" =
-        { month "Jan." =
-            { "\CYRYA\cyrn\cyrv." }
-        { month "Feb." =
-            { "\CYRF\cyre\cyrv\cyrr." }
-        { month "Mar." =
-            { "\CYRM\cyra\cyrr\cyrt" }
-        { month "Apr." =
-            { "\CYRA\cyrp\cyrr." }
-        { month "May" =
-            { "\CYRM\cyra\cyrishrt" }
-        { month "Jun." =
-            { "\CYRI\cyryu\cyrn\cyrsftsn" }
-        { month "Jul." =
-            { "\CYRI\cyryu\cyrl\cyrsftsn" }
-        { month "Aug." =
-            { "\CYRA\cyrv\cyrg\." }
-        { month "Sep." =
-            { "\CYRS\cyre\cyrn\cyrt." }
-        { month "Oct." =
-            { "\CYRO\cyrk\cyrt." }
-        { month "Nov." =
-            { "\CYRN\cyro\cyrya\cyrb." }
-        { month "Dec." =
-            { "\CYRD\cyre\cyrk." }
-            { month }
-            if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
-        { month }
-        if$}
-    if$
-}
-FUNCTION {format.date}
-{ year empty$
-    { month empty$
-        { "" }
-        { "there's a month but no year in " cite$ * warning$
-          format.month
+FUNCTION {calc.long.list} %% called 1 time only
+{ type$ "book" = type$ "inbook" = or
+    %'format.author.editor.brief
+    { author empty$
+        { editor empty$
+            { "" }
+            { editor fmt.names.brief }
+          if$
         }
+        { author fmt.names.brief }
       if$
     }
-    { month empty$
-        'year
-        { year ". \BibDash " format.month * * }
+    { type$ "proceedings" =
+        %'format.editor.brief
+        { editor empty$
+            { "" }
+            { editor fmt.names.brief }
+          if$
+        }
+        %'format.author.brief
+        { author empty$
+            { "" }
+            { author fmt.names.brief }
+          if$
+        }
       if$
     }
   if$
-  extra.label * % new in v.1.2
 }
 
-FUNCTION {address.or.location}
-{
-  address empty$
-    { location }
-    { address }
-  if$
-}
-
-FUNCTION {specialitycode.or.number}
-{
-  specialitycode empty$
-    { number }
-    { specialitycode }
-  if$
-}
-
-FUNCTION {institution.or.school}
-{
-  institution empty$
-    { school}
-    { institution }
-  if$
-}
 FUNCTION {output.address.publisher}
 {
   address empty$ location empty$ and
@@ -1234,174 +1669,27 @@
   if$
   publisher output
 }
-
-
-FUNCTION {format.full.names}
-{'s :=
-  language empty$
-    { "english" 'curlanguage := }
-    { language  'curlanguage := }
-  if$
-  #1 'nameptr :=
-  s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr
-      "{vv~}{ll}" format.name$ 't :=
-      nameptr #1 >
-        {
-          namesleft #1 >
-            { ", " * t * }
-            {
-              numnames #2 >
-              curlanguage "english" =
-              and
-                { "," * }
-                'skip$
-              if$
-              t "others" =
-          %t "~others" =
-          %or
-                %{ " et~al." * }
-                { " " bbl.etal * * }
-                %{ " and " * t * }
-                { " " bbl.and " " * * * t * }
-              if$
-            }
-          if$
-        }
-        't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
-  while$
-}
-
-FUNCTION {author.full}
-{ author empty$
-    { "" }
-    { author format.full.names }
-  if$
-}
-
-FUNCTION {editor.full}
-{ editor empty$
-    { "" }
-    { editor format.full.names }
-  if$
-}
-
-FUNCTION {author.editor.full}
-{ author empty$
-    { editor empty$
-        { "" }
-        { editor format.full.names }
-      if$
-    }
-    { author format.full.names }
-  if$
-}
-
-FUNCTION {make.full.names}
-{ type$ "book" =
-  type$ "inbook" =
-  or
-    'author.editor.full
-    { type$ "proceedings" =
-        'editor.full
-        'author.full
-      if$
-    }
-  if$
-}
-
 FUNCTION {output.bibitem}
-{ newline$
-  "\bibitem[" write$
-  label write$
-  ")" make.full.names duplicate$ short.list =
-     { pop$ }
-     { * }
-   if$
-  "]{" * write$
-  cite$ write$
-  "}" write$
-%%  language empty$
-%%    { "english" 'curlanguage := }
-%%    {language  'curlanguage := }
-%%  if$
-  langid empty$
-    { language empty$
-        { "english" 'curlanguage := }
-        { language  'curlanguage := }
-      if$
-    }
-    { langid  'curlanguage := }
-  if$
+{
+  set.language
+  newline$
+  "\bibitem" write$
+  label extra.label * ")" *
+  calc.long.list *
+  bracketise write$
+  cite$ bracify write$
+  newline$
   "\selectlanguageifdefined" curlanguage bracify * write$
   newline$
   ""
   before.all 'output.state :=
 }
+
 %%  author.key.label
 %%  year parenthesify *
 %%  "; lbl:" label * *
-%%  "; mfn:"  make.full.names * *
+%%  "; mfn:"  calc.long.list * *
 
-FUNCTION {n.dashify}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-        { t #1 #2 substring$ "--" = not
-            { "--" *
-              t #2 global.max$ substring$ 't :=
-            }
-            {   { t #1 #1 substring$ "-" = }
-                { "-" *
-                  t #2 global.max$ substring$ 't :=
-                }
-              while$
-            }
-          if$
-        }
-        { t #1 #1 substring$ *
-          t #2 global.max$ substring$ 't :=
-        }
-      if$
-    }
-  while$
-}
-
-FUNCTION {word.in}
-{ bbl.iin
-  " " * }
-
-FUNCTION {format.btitle}
-{ title
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
-    { "~" }
-    { " " }
-  if$
-  swap$ * *
-}
-
-FUNCTION {tie.connect}
- {"~"
-  swap$ * *
- }
-
-FUNCTION {either.or.check}
-{ empty$
-    'pop$
-    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
-  if$
-}
-
 FUNCTION {format.bvolume}
 { volume empty$
     { "" }
@@ -1408,7 +1696,7 @@
     { bbl.vvol volume tie.connect
       series empty$
         'skip$
-        { bbl.of space.word * series emphasize * }
+        { bbl.of spaces.around * series emphasize * }
       if$
       "volume and number" number either.or.check
     }
@@ -1437,31 +1725,7 @@
   if$
 }
 
-FUNCTION {is.num}
-{ chr.to.int$
-  duplicate$ "0" chr.to.int$ < not
-  swap$ "9" chr.to.int$ > not and
-}
 
-FUNCTION {extract.num}
-{ duplicate$ 't :=
-  "" 's :=
-  { t empty$ not }
-  { t #1 #1 substring$
-    t #2 global.max$ substring$ 't :=
-    duplicate$ is.num
-      { s swap$ * 's := }
-      { pop$ "" 't := }
-    if$
-  }
-  while$
-  s empty$
-    'skip$
-    { pop$ s }
-  if$
-}
-
-
 FUNCTION {convert.edition}
 { edition
 }
@@ -1477,38 +1741,6 @@
   if$
 }
 
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
-  #0 'multiresult :=
-    { multiresult not
-      t empty$ not
-      and
-    }
-    { t #1 #1 substring$
-      duplicate$ "-" =
-      swap$ duplicate$ "," =
-      swap$ "+" =
-      or or
-        { #1 'multiresult := }
-        { t #2 global.max$ substring$ 't := }
-      if$
-    }
-  while$
-  multiresult
-}
-
-%%FUNCTION {format.pages}
-%%{ pages empty$
-%%    { "" }
-%%    { pages multi.page.check
-%%        { bbl.ppages pages n.dashify tie.connect }
-%%        { bbl.ppage pages tie.connect }
-%%      if$
-%%    }
-%%  if$
-%%}
 FUNCTION {format.pages}
 { eid empty$
     {
@@ -1529,15 +1761,6 @@
   if$
 }
 
-%%FUNCTION {format.pages.page}
-%%{ pages empty$
-%%    { pagetotal empty$
-%%      { "" }
-%%      { pagetotal bbl.pages tie.connect }
-%%    if$}
-%%    { format.pages}
-%%  if$
-%%}
 FUNCTION {format.pages.page}
 { eid empty$
     { pages empty$
@@ -1600,6 +1823,19 @@
   if$
 }
 
+FUNCTION {bbl.thesis.type}
+{ type "mathesis" =
+  { bbl.mathesis }
+  { type "phdthesis" =
+    { bbl.phdthesis }
+    { type "docthesis" =
+      { bbl.docthesis }
+      %%{ "!!!" type * "t" change.case$ }
+      { type "t" change.case$ }
+    if$}
+  if$}
+if$}
+
 %%<!utf8>      bbl.thesis.type "t" change.case$
 %%<utf8>      bbl.thesis.type
 FUNCTION {format.thesis.type}
@@ -1620,81 +1856,61 @@
   if$
 }
 
-FUNCTION {author.before}
+FUNCTION {output.author.head}
 {
   author empty$
     'skip$
     {author num.names$ #4 <
-      {format.authors output
-       new.sentence}
+      {
+       author fmt.names.three output
+       new.sentence
+      }
       'skip$
     if$}
   if$
 }
 
-%%<*!long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    {bookauthor num.names$ #4 <
-%%      {format.bookauthors output
-%%       new.sentence}
-%%      'skip$
-%%    if$}
-%%  if$
-%%}
-%%</!long>
-%%<*long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    { format.bookauthors output
-%%      new.sentence
-%%    }
-%%  if$
-%%}
-%%</long>
-
-FUNCTION {author.after}
+FUNCTION {output.author.rest}
 {
   author empty$
     'skip$
     {author num.names$ #3 >
-      {format.authors.after output
-       new.semicolon }
+      { author fmt.names.all output
+        new.semicolon
+      }
       'skip$
     if$}
   if$
 }
 
-FUNCTION {bookauthor.after}
+FUNCTION {bookauthor.rest}
 {
   bookauthor empty$
     'skip$
-    {format.bookauthors.after output
-       new.semicolon }
+    {
+      bookauthor fmt.names.three output
+      new.semicolon
+    }
   if$
 }
 
-FUNCTION {editor.organization.after}
+FUNCTION {editor.organization.rest}
 {
   compiler empty$
     {}
-    { format.compiler.after  output
+    { format.compiler.rest  output
     new.semicolon
     }
   if$
   editor empty$
     {}
-    { format.editors.after  output
+    { format.editors.rest  output.nonnull
     new.semicolon
     }
   if$
   organization empty$
     {}
-    {organization output
+    {organization output.nonnull
     new.semicolon
     }
   if$
@@ -1745,7 +1961,7 @@
     'skip$
     { doi empty$
         'skip$
-        { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
+        { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * }
       if$
     }
   if$
@@ -1756,7 +1972,7 @@
     'skip$
     { media empty$
         'skip$
-        { " " * bbl.media enclose.square.brackets * }
+        { " " * bbl.media bracketise * }
       if$
     }
   if$
@@ -1837,15 +2053,16 @@
 FUNCTION {article}
 {
   output.bibitem
-  author.before
+  output.author.head
+  %new.sentence
   author format.key output
-  format.title add.media "title" output.check
+  title add.media "title" output.check
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
-  journal emphasize add.doi "journal" output.check % new in v.2
+  journal emphasize add.doi "journal" output.check % new in v1.2
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.volume output
   format.number output
@@ -1862,12 +2079,15 @@
 FUNCTION {book}
 {
   output.bibitem
-  author.before
+  output.author.head
+  new.sentence
   author format.key output
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.sentence
   format.number.series output
   new.block
@@ -1874,7 +2094,7 @@
   format.edition output
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1892,16 +2112,19 @@
 FUNCTION {booklet}
 {
   output.bibitem
-  author.before
+  output.author.head
+  new.sentence
   author format.key output
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
   howpublished output
   address.or.location output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1913,16 +2136,19 @@
 FUNCTION {inbook}
 {
   output.bibitem
-  author.before
+  output.author.head
+  new.sentence
   author format.key output
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  bookauthor.after
-  editor.organization.after
+  bookauthor.rest
+  editor.organization.rest
   new.block
   format.edition output
   new.block
@@ -1929,7 +2155,7 @@
   format.number.series output
   new.sentence
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1947,19 +2173,22 @@
 FUNCTION {incollection}
 {
   output.bibitem
-  author.before
+  output.author.head
+  new.sentence
   author format.key output
   new.sentence
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   format.number.series output
@@ -1977,15 +2206,22 @@
 {
   output.bibitem
   editor format.key output
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon                   % added in v.1.2k
+  titleaddon output           % added in v.1.2k
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
-  output.address.publisher
-  format.date "year" output.check
   new.block
+  format.pages.page output
+  %%%output.address.publisher  % 1.2k moved upper
+  new.block
   note output
   new.sentence
   output.eprint.url
@@ -1995,23 +2231,27 @@
 
 FUNCTION {inproceedings}
 { output.bibitem
-  author.before
+  output.author.head
+  new.sentence
   author format.key output
   new.sentence
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon                % added in v.1.2k
+  titleaddon output        % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
   new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
   format.pages.page output
   new.block
   note output
@@ -2031,11 +2271,13 @@
         }
       if$
     }
-    { format.authors output.nonnull }
+    { format.author output.nonnull }
   if$
   author format.key output
   new.block
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   author empty$
     { organization empty$
     {
@@ -2052,7 +2294,7 @@
     }
   if$
   format.edition output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -2065,6 +2307,8 @@
 {
   output.bibitem
   title add.media output.nonnull
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   format.type.number output
   add.blank
@@ -2072,9 +2316,9 @@
   new.colon
   ipc output
   new.slash
-  format.authors.after "author" output.check
+  format.author "author" output.check
   add.blank
-  authorcountry enclose.round.brackets output.nonnull
+  authorcountry paranthesify output.nonnull
   author format.key output
   new.semicolon
   holder output.nonnull
@@ -2090,7 +2334,7 @@
   new.semicolon
   format.prioritydate output
   prioritynumber output
-  prioritycountry enclose.round.brackets output
+  prioritycountry paranthesify output
   new.block
   note output
   new.sentence
@@ -2103,14 +2347,16 @@
 
 FUNCTION {misc}
 { output.bibitem
-  format.authors output
+  %format.author output  % < v.1.2k
+  output.author.head    % v.1.2k
+  %new.sentence            % v.1.2k
   author format.key output
   title howpublished new.sentence.checkb
-  format.title add.media output
+  title add.media output
   howpublished new.block.checka
   howpublished output
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -2121,14 +2367,17 @@
 
 FUNCTION {unpublished}
 { output.bibitem
-  author.before
+  output.author.head
+  new.sentence
   author format.key output
-  format.btitle "title" output.check
+  title "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note "note" output.check
   new.sentence
@@ -2139,13 +2388,15 @@
 
 FUNCTION {online}
 { output.bibitem
-  format.authors output
+  format.author output
   author format.key output
   title howpublished new.sentence.checkb
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   howpublished new.dblslash.checka
   howpublished output
-  editor.organization.after
+  editor.organization.rest
   new.sentence
   new.block
   output.address.publisher
@@ -2164,26 +2415,25 @@
 FUNCTION {electronic} {online}
 FUNCTION {thesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   author format.key output
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
-  %%type "type" output.check
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
-  %%number output % code of the speciality
   specialitycode.or.number output % code of the speciality, new in v.1.2i
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours from the head zone
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2193,14 +2443,15 @@
   format.annote output
   fin.entry
 }
-
 %%  format.techrep.type.number output.nonnull
 %%  format.url output
 FUNCTION {report}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   title format.key output
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   type "type" output.check
   new.colon
@@ -2209,14 +2460,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -2229,10 +2480,10 @@
 
 FUNCTION {phdthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   author format.key output
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
@@ -2241,13 +2492,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2257,13 +2509,12 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {mastersthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   author format.key output
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.mathesis format.thesis.type output.nonnull
   new.colon
@@ -2272,13 +2523,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2288,13 +2540,12 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {docthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   author format.key output
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.docthesis format.thesis.type output.nonnull
   new.colon
@@ -2303,13 +2554,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicate athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2319,7 +2571,6 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {conference} { inproceedings }
 
 %%  format.url output
@@ -2327,7 +2578,7 @@
 FUNCTION {techreport}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   title format.key output
   new.colon
   format.techreport.type output
@@ -2337,14 +2588,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -2369,96 +2620,96 @@
 MACRO {oct} {"Oct."}
 MACRO {nov} {"Nov."}
 MACRO {dec} {"Dec."}
-MACRO {aa}{"Astron. \& Astrophys."}
-MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."}
-MACRO {aj} {"Astron. J."}
+MACRO {aa}{"Astron.\ \& Astrophys."}
+MACRO {aasup}{"Astron.\ \& Astrophys.\ Suppl.\ Ser."}
+MACRO {aj} {"Astron.\ J."}
 MACRO {aph} {"Acta Phys."}
-MACRO {advp} {"Adv. Phys."}
-MACRO {ajp} {"Amer. J. Phys."}
-MACRO {ajm} {"Amer. J. Math."}
-MACRO {amsci} {"Amer. Sci."}
-MACRO {anofd} {"Ann. Fluid Dyn."}
-MACRO {am} {"Ann. Math."}
-MACRO {ap} {"Ann. Phys. (NY)"}
-MACRO {adp} {"Ann. Phys. (Leipzig)"}
-MACRO {ao} {"Appl. Opt."}
-MACRO {apl} {"Appl. Phys. Lett."}
+MACRO {advp} {"Adv.\ Phys."}
+MACRO {ajp} {"Amer.\ J.\ Phys."}
+MACRO {ajm} {"Amer.\ J.\ Math."}
+MACRO {amsci} {"Amer.\ Sci."}
+MACRO {anofd} {"Ann.\ Fluid Dyn."}
+MACRO {am} {"Ann.\ Math."}
+MACRO {ap} {"Ann.\ Phys.\ (NY)"}
+MACRO {adp} {"Ann.\ Phys.\ (Leipzig)"}
+MACRO {ao} {"Appl.\ Opt."}
+MACRO {apl} {"Appl.\ Phys.\ Lett."}
 MACRO {app} {"Astroparticle Phys."}
-MACRO {apj} {"Astrophys. J."}
-MACRO {apjsup} {"Astrophys. J. Suppl."}
-MACRO {apss} {"Astrophys. Space Sci."}
-MACRO {araa} {"Ann. Rev. Astron. Astrophys."}
-MACRO {baas} {"Bull. Amer. Astron. Soc."}
-MACRO {baps} {"Bull. Amer. Phys. Soc."}
-MACRO {cmp} {"Comm. Math. Phys."}
-MACRO {cpam} {"Commun. Pure Appl. Math."}
-MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"}
-MACRO {cpc} {"Comp. Phys. Comm."}
-MACRO {cqg} {"Class. Quant. Grav."}
-MACRO {cra} {"C. R. Acad. Sci. A"}
-MACRO {fed} {"Fusion Eng. \& Design"}
+MACRO {apj} {"Astrophys.\ J."}
+MACRO {apjsup} {"Astrophys.\ J.\ Suppl."}
+MACRO {apss} {"Astrophys.\ Space Sci."}
+MACRO {araa} {"Ann.\ Rev.\ Astron.\ Astrophys."}
+MACRO {baas} {"Bull.\ Amer.\ Astron.\ Soc."}
+MACRO {baps} {"Bull.\ Amer.\ Phys.\ Soc."}
+MACRO {cmp} {"Comm.\ Math.\ Phys."}
+MACRO {cpam} {"Commun.\ Pure Appl.\ Math."}
+MACRO {cppcf} {"Comm.\ Plasma Phys.\ \& Controlled Fusion"}
+MACRO {cpc} {"Comp.\ Phys.\ Comm."}
+MACRO {cqg} {"Class.\ Quant.\ Grav."}
+MACRO {cra} {"C.\ R.\ Acad.\ Sci.\ A"}
+MACRO {fed} {"Fusion Eng.\ \& Design"}
 MACRO {ft} {"Fusion Tech."}
-MACRO {grg} {"Gen. Relativ. Gravit."}
-MACRO {ieeens} {"IEEE Trans. Nucl. Sci."}
-MACRO {ieeeps} {"IEEE Trans. Plasma Sci."}
-MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"}
+MACRO {grg} {"Gen.\ Relativ.\ Gravit."}
+MACRO {ieeens} {"IEEE Trans.\ Nucl.\ Sci."}
+MACRO {ieeeps} {"IEEE Trans.\ Plasma Sci."}
+MACRO {ijimw} {"Interntl.\ J.\ Infrared \& Millimeter Waves"}
 MACRO {ip} {"Infrared Phys."}
 MACRO {irp} {"Infrared Phys."}
-MACRO {jap} {"J. Appl. Phys."}
-MACRO {jasa} {"J. Acoust. Soc. America"}
-MACRO {jcp} {"J. Comp. Phys."}
-MACRO {jchp} {"J. Chem. Phys."}
-MACRO {jetp} {"Sov. Phys.--JETP"}
-MACRO {jfe} {"J. Fusion Energy"}
-MACRO {jfm} {"J. Fluid Mech."}
-MACRO {jmp} {"J. Math. Phys."}
-MACRO {jne} {"J. Nucl. Energy"}
-MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."}
-MACRO {jnm} {"J. Nucl. Mat."}
-MACRO {jpc} {"J. Phys. Chem."}
-MACRO {jpp} {"J. Plasma Phys."}
-MACRO {jpsj} {"J. Phys. Soc. Japan"}
-MACRO {jsi} {"J. Sci. Instrum."}
-MACRO {jvst} {"J. Vac. Sci. \& Tech."}
+MACRO {jap} {"J.\ Appl.\ Phys."}
+MACRO {jasa} {"J.\ Acoust.\ Soc.\ America"}
+MACRO {jcp} {"J.\ Comp.\ Phys."}
+MACRO {jchp} {"J.\ Chem.\ Phys."}
+MACRO {jetp} {"Sov.\ Phys.--JETP"}
+MACRO {jfe} {"J.\ Fusion Energy"}
+MACRO {jfm} {"J.\ Fluid Mech."}
+MACRO {jmp} {"J.\ Math.\ Phys."}
+MACRO {jne} {"J.\ Nucl.\ Energy"}
+MACRO {jnec} {"J.\ Nucl.\ Energy, C: Plasma Phys., Accelerators, Thermonucl.\ Res."}
+MACRO {jnm} {"J.\ Nucl.\ Mat."}
+MACRO {jpc} {"J.\ Phys.\ Chem."}
+MACRO {jpp} {"J.\ Plasma Phys."}
+MACRO {jpsj} {"J.\ Phys.\ Soc.\ Japan"}
+MACRO {jsi} {"J.\ Sci.\ Instrum."}
+MACRO {jvst} {"J.\ Vac.\ Sci.\ \& Tech."}
 MACRO {nat} {"Nature"}
 MACRO {nature} {"Nature"}
-MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"}
-MACRO {nf} {"Nucl. Fusion"}
-MACRO {nim} {"Nucl. Inst. \& Meth."}
-MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."}
-MACRO {np} {"Nucl. Phys."}
-MACRO {npb} {"Nucl. Phys. B"}
-MACRO {nt/f} {"Nucl. Tech./Fusion"}
-MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"}
+MACRO {nedf} {"Nucl.\ Eng.\ \& Design/Fusion"}
+MACRO {nf} {"Nucl.\ Fusion"}
+MACRO {nim} {"Nucl.\ Inst.\ \& Meth."}
+MACRO {nimpr} {"Nucl.\ Inst.\ \& Meth.\ in Phys.\ Res."}
+MACRO {np} {"Nucl.\ Phys."}
+MACRO {npb} {"Nucl.\ Phys.\ B"}
+MACRO {nt/f} {"Nucl.\ Tech./Fusion"}
+MACRO {npbpc} {"Nucl.\ Phys.\ B (Proc.\ Suppl.)"}
 MACRO {inc} {"Nuovo Cimento"}
 MACRO {nc} {"Nuovo Cimento"}
-MACRO {pf} {"Phys. Fluids"}
-MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."}
-MACRO {pfb} {"Phys. Fluids B: Plasma Phys."}
-MACRO {pl} {"Phys. Lett."}
-MACRO {pla} {"Phys. Lett. A"}
-MACRO {plb} {"Phys. Lett. B"}
-MACRO {prep} {"Phys. Rep."}
-MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"}
-MACRO {pp} {"Phys. Plasmas"}
-MACRO {pop} {"Phys. Plasmas"}
-MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"}
-MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"}
-MACRO {prl} {"Phys. Rev. Lett."}
-MACRO {pr} {"Phys. Rev."}
-MACRO {physrev} {"Phys. Rev."}
-MACRO {pra} {"Phys. Rev. A"}
-MACRO {prb} {"Phys. Rev. B"}
-MACRO {prc} {"Phys. Rev. C"}
-MACRO {prd} {"Phys. Rev. D"}
-MACRO {pre} {"Phys. Rev. E"}
-MACRO {ps} {"Phys. Scripta"}
-MACRO {procrsl} {"Proc. Roy. Soc. London"}
-MACRO {rmp} {"Rev. Mod. Phys."}
-MACRO {rsi} {"Rev. Sci. Inst."}
+MACRO {pf} {"Phys.\ Fluids"}
+MACRO {pfa} {"Phys.\ Fluids A: Fluid Dyn."}
+MACRO {pfb} {"Phys.\ Fluids B: Plasma Phys."}
+MACRO {pl} {"Phys.\ Lett."}
+MACRO {pla} {"Phys.\ Lett.\ A"}
+MACRO {plb} {"Phys.\ Lett.\ B"}
+MACRO {prep} {"Phys.\ Rep."}
+MACRO {pnas} {"Proc.\ Nat.\ Acad.\ Sci.\ USA"}
+MACRO {pp} {"Phys.\ Plasmas"}
+MACRO {pop} {"Phys.\ Plasmas"}
+MACRO {ppcf} {"Plasma Phys.\ \& Controlled Fusion"}
+MACRO {phitrsl} {"Philos.\ Trans.\ Roy.\ Soc.\ London"}
+MACRO {prl} {"Phys.\ Rev.\ Lett."}
+MACRO {pr} {"Phys.\ Rev."}
+MACRO {physrev} {"Phys.\ Rev."}
+MACRO {pra} {"Phys.\ Rev.\ A"}
+MACRO {prb} {"Phys.\ Rev.\ B"}
+MACRO {prc} {"Phys.\ Rev.\ C"}
+MACRO {prd} {"Phys.\ Rev.\ D"}
+MACRO {pre} {"Phys.\ Rev.\ E"}
+MACRO {ps} {"Phys.\ Scripta"}
+MACRO {procrsl} {"Proc.\ Roy.\ Soc.\ London"}
+MACRO {rmp} {"Rev.\ Mod.\ Phys."}
+MACRO {rsi} {"Rev.\ Sci.\ Inst."}
 MACRO {science} {"Science"}
-MACRO {sciam} {"Sci. Am."}
-MACRO {sam} {"Stud. Appl. Math."}
+MACRO {sciam} {"Sci.\ Am."}
+MACRO {sam} {"Stud.\ Appl.\ Math."}
 MACRO {st} {"Sky and Telesc."}
 MACRO {cjp} {"Czech. J. Phys."}
 MACRO {el} {"Europhys. Lett."}
@@ -2501,49 +2752,47 @@
 MACRO {suplatt} {"Superlatt. Microstr."}
 MACRO {sust} {"Supercond. Sci. Technol."}
 MACRO {znat} {"Z. Naturforsch."}
-MACRO {appopt} {"Appl. Opt."}
-MACRO {bell}   {"Bell Syst. Tech. J."}
-MACRO {ell}    {"Electron. Lett."}
-MACRO {jasp}   {"J. Appl. Spectr."}
-MACRO {jqe}    {"IEEE J. Quantum Electron."}
-MACRO {jlwt}   {"J. Lightwave Technol."}
-MACRO {jmo}    {"J. Mod. Opt."}
-MACRO {josa}   {"J. Opt. Soc. America"}
-MACRO {josaa}  {"J. Opt. Soc. Amer.~A"}
-MACRO {josab}  {"J. Opt. Soc. Amer.~B"}
-MACRO {jdp}    {"J. Phys. (Paris)"}
-MACRO {oc}     {"Opt. Commun."}
-MACRO {ol}     {"Opt. Lett."}
-MACRO {os}     {"Opt. Spectrosc."}
+MACRO {appopt} {"Appl.\ Opt."}
+MACRO {bell}   {"Bell Syst.\ Tech.\ J."}
+MACRO {ell}    {"Electron.\ Lett."}
+MACRO {jasp}   {"J.\ Appl.\ Spectr."}
+MACRO {jqe}    {"IEEE J.\ Quantum Electron."}
+MACRO {jlwt}   {"J.\ Lightwave Technol."}
+MACRO {jmo}    {"J.\ Mod.\ Opt."}
+MACRO {josa}   {"J.\ Opt.\ Soc.\ America"}
+MACRO {josaa}  {"J.\ Opt.\ Soc.\ Amer.~A"}
+MACRO {josab}  {"J.\ Opt.\ Soc.\ Amer.~B"}
+MACRO {jdp}    {"J.\ Phys.\ (Paris)"}
+MACRO {oc}     {"Opt.\ Commun."}
+MACRO {ol}     {"Opt.\ Lett."}
+MACRO {os}     {"Opt.\ Spectrosc."}
 MACRO {phtl}   {"IEEE Photon. Technol. Lett."}
-MACRO {pspie}  {"Proc. Soc. Photo-Opt. Instrum. Eng."}
+MACRO {pspie}  {"Proc.\ Soc.\ Photo-Opt.\ Instrum. Eng."}
 MACRO {vr}     {"Vision Res."}
-MACRO {zph}    {"Z. f. Physik"}
-MACRO {zphb}   {"Z. f. Physik~B"}
-MACRO {zphd}   {"Z. f. Physik~D"}
+MACRO {zph}    {"Z.\ f.\ Physik"}
+MACRO {zphb}   {"Z.\ f.\ Physik~B"}
+MACRO {zphd}   {"Z.\ f.\ Physik~D"}
 MACRO {sse} {"Solid-State Electron."}
 MACRO {pss} {"Phys. Sol. State"}
 MACRO {nl}  {"Nano Lett."}
-MACRO {sjpp} {"Sov. J. Plasma Phys."}
-MACRO {spd}  {"Sov. Phys.--Doklady"}
-MACRO {sptp} {"Sov. Phys.--Tech. Phys."}
-MACRO       {spu}  {"Sov. Phys.--Uspekhi"}
+MACRO {sjpp} {"Sov.\ J.\ Plasma Phys."}
+MACRO {spd}  {"Sov.\ Phys.--Doklady"}
+MACRO {sptp} {"Sov.\ Phys.--Tech. Phys."}
+MACRO {spu}  {"Sov.\ Phys.--Uspekhi"}
 MACRO {ufn}  {"\CYRU\CYRF\CYRN"}
 MACRO {pu}  {"Phys.--Uspekhi"}
-MACRO {sjot} {"Sov. J. Opt. Technol."}
-MACRO {sjqe} {"Sov. J. Quantum Electron."}
-MACRO {sleb} {"Sov. Phys.--Leb. Inst. Rep."}
-MACRO {stph} {"Sov. Phys.--Techn. Phys."}
-MACRO {stphl}{"Sov. Techn. Phys. Lett."}
+MACRO {sjot} {"Sov.\ J.\ Opt.\ Technol."}
+MACRO {sjqe} {"Sov.\ J.\ Quantum Electron."}
+MACRO {sleb} {"Sov.\ Phys.--Leb.\ Inst.\ Rep."}
+MACRO {stph} {"Sov.\ Phys.--Techn.\ Phys."}
+MACRO {stphl}{"Sov.\ Techn.\ Phys.\ Lett."}
 
 READ
 
-
 FUNCTION {sortify}
 { purify$
   "l" change.case$
 }
-
 %% =====================================
 %% This version from old Gost package
 %%<*!natbib>
@@ -2625,43 +2874,10 @@
         {author sort.format.names }
         {title sort.format.title}
       if$
-     }
+     }   
   if$
 }
-FUNCTION {author.editor.sort}
-{ author empty$
-    { editor empty$
-        { key empty$
-            { "to sort, need author, editor, or key in " cite$ * warning$
-              ""
-            }
-            { key sortify }
-          if$
-        }
-        { editor sort.format.names }
-      if$
-    }
-    { author sort.format.names }
-  if$
-}
 
-FUNCTION {author.organization.sort}
-{ author empty$
-    { organization empty$
-        { key empty$
-            { "to sort, need author, organization, or key in " cite$ * warning$
-              ""
-            }
-            { key sortify }
-          if$
-        }
-        { "The " #4 organization chop.word sortify }
-      if$
-    }
-    { author sort.format.names }
-  if$
-}
-
 FUNCTION {editor.organization.sort}
 { editor empty$
     { organization empty$
@@ -2678,7 +2894,6 @@
     { editor sort.format.names }
   if$
 }
-
 FUNCTION {presort}%#2
 { calc.label
   label sortify
@@ -2752,7 +2967,7 @@
     { "{\natexlab{" swap$ * "}}" * }
   if$
   'extra.label :=
-  label extra.label * 'label :=
+  %%%label extra.label * 'label :=
 }
 
 REVERSE {reverse.pass}
@@ -2775,15 +2990,7 @@
   "\providecommand*{\BibUrl}[1]{\url{#1}}"           write$ newline$
   "\providecommand{\BibAnnote}[1]{}"                 write$ newline$
   "\providecommand*{\BibEmph}[1]{#1}"                write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{---}" write$ newline$
-  %\DeclareUTFcharacter[\UTFencname]{x2014}{\cyrdash}
-  %"\let\cyrdash\textemdash" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\hbox to.8em{--\hss--}}" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\textemdash}" write$ newline$
   "\ProvideTextCommandDefault{\cyrdash}{\iflanguage{russian}{\hbox to.8em{--\hss--}}{\textemdash}}" write$ newline$
-  %%"\ProvideTextCommandDefault{\cyrdash}{%"  write$ newline$
-  %%"  \iflanguage{russian}{\hbox to.8em{--\hss--}}{%" write$ newline$
-  %%"    \iflanguage{ukrainian}{\hbox to.8em{--\hss--}}{\textemdash}}}"  write$ newline$
   "\providecommand*{\BibDash}{\ifdim\lastskip>0pt\unskip\nobreak\hskip.2em plus 0.1em\fi" write$ newline$
   "\cyrdash\hskip.2em plus 0.1em\ignorespaces}" write$ newline$
   "\renewcommand{\newblock}{\ignorespaces}" write$ newline$
@@ -2807,5 +3014,6 @@
 
 EXECUTE {end.bib}
 
+\endinput
 %%
 %% End of file `gost2008ns.bst'.

Modified: trunk/Master/texmf-dist/bibtex/bst/gost/gost2008s.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/gost/gost2008s.bst	2020-12-29 00:54:00 UTC (rev 57250)
+++ trunk/Master/texmf-dist/bibtex/bst/gost/gost2008s.bst	2020-12-29 02:19:51 UTC (rev 57251)
@@ -4,30 +4,22 @@
 %%
 %% The original source files were:
 %%
-%% gost.dtx  (with options: `bst,modern,eprint,sort')
+%% gost.dtx  (with options: `bst,eprint,sort')
 %% 
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%   http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
+%% IMPORTANT NOTICE:
 %% 
-%% This file has the LPPL maintenance status "maintained".
-%% Maintained by Igor A. Kotelnikov.
+%% For the copyright see the source file.
 %% 
-%% Current version: 1.2j, 2017.01.12
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from gost2008s.bst.
 %% 
-%% Please, send bug report via e-mail:
-%%   kia999 at mail dot ru <Igor Kotelnikov>
-%% or
-%%   polyama at yahoo dot com <Maksym Polyakov>
+%% For distribution of the original source see the terms
+%% for copying and modification in the file gost.dtx.
 %% 
-
-
-
-%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
 %% This bibstyle attempts to format bibliography according to
 %% GOST 7.0.5-2008 for bibliographic reference.
 
@@ -67,15 +59,15 @@
     language
     langid          % new in v1.2c
     booklanguage
-    %date            % not implemented yet...
+    date            % new in v1.2i
     pagetotal
     url
     urldate
     isbn
     doi
+    eprint
     eprinttype      % = archivePrefix
     eprintclass     % = primaryClass
-    eprint
     % new in v1.2f:
     % appear in biblatex:
     %addendum       % not implemented yet...
@@ -100,9 +92,24 @@
   {}
   { label }
 
-INTEGERS { output.state before.all mid.sentence after.sentence after.block
-after.dblslash after.slash after.colon after.semicolon }
+INTEGERS {
+    output.state
+    before.all
+    mid.sentence
+    after.sentence
+    after.block
+    after.dblslash
+    after.slash
+    after.colon
+    after.semicolon
+}
 
+STRINGS { curlanguage }
+
+STRINGS { s t }
+
+STRINGS { y m d }   % new in v.1.2j
+
 FUNCTION {init.state.consts}
 { #0 'before.all :=
   #1 'mid.sentence :=
@@ -114,11 +121,18 @@
   #7 'after.semicolon :=
 }
 
-STRINGS { s t }
+FUNCTION {set.language}
+{ langid empty$
+    { language empty$
+        { "english" 'curlanguage := }
+        { language  'curlanguage := }
+      if$
+    }
+    { langid  'curlanguage := }
+  if$
+}
 
-STRINGS { curlanguage }
-
-FUNCTION {change.language}
+FUNCTION {reset.language}
 { booklanguage empty$
     { "" }
     { booklanguage  'curlanguage :=
@@ -143,7 +157,7 @@
         { output.state before.all =
             'write$
             { output.state after.dblslash =
-                { "~//" * change.language * " " * write$ }
+                { "~//" * reset.language * " " * write$ }
                 { output.state after.slash =
                     { "~/ " * write$ }
                     { output.state after.colon =
@@ -177,7 +191,9 @@
 FUNCTION {output.check}
 { 't :=
   duplicate$ empty$
-    { pop$ "empty " t * " in " * cite$ * warning$ }
+    { pop$
+      "empty " t * " in " * cite$ * warning$
+    }
     'output.nonnull
   if$
 }
@@ -256,23 +272,6 @@
   if$
 }
 
-INTEGERS { len }
-
-FUNCTION {chop.word}
-{ 's :=
-  'len :=
-  s #1 len substring$ =
-    { s len #1 + global.max$ substring$ }
-    's
-  if$
-}
-
-FUNCTION {non.stop}
-{ duplicate$
-   "}" * add.period$
-   #-1 #1 substring$ "." =
-}
-
 FUNCTION {new.block.checka}
 { empty$
     'skip$
@@ -319,9 +318,21 @@
   if$
 }
 
+%%
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {spaces.around}
+{ " " swap$ * " " * }
+
 FUNCTION {emphasize}
 { duplicate$ empty$
-    { pop$ "" }
+    %{ pop$ "" }
+    'skip$       % v.1.2k
     { "\BibEmph{" swap$ * "}" * }
   if$
 }
@@ -333,7 +344,7 @@
   if$
 }
 
-FUNCTION {enclose.square.brackets}
+FUNCTION {bracketise}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -341,7 +352,7 @@
   if$
 }
 
-FUNCTION {enclose.round.brackets}
+FUNCTION {paranthesify}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -349,25 +360,92 @@
   if$
 }
 
-FUNCTION {space.word}
-{ " " swap$ * " " * }
+INTEGERS { len }
 
-FUNCTION {bbl.edby}    %  { "\bbledby{}" }
+FUNCTION {chop.word}
+{ 's :=
+  'len :=
+  s #1 len substring$ =
+    { s len #1 + global.max$ substring$ }
+    's
+  if$
+}
+
+FUNCTION {tie.connect}
+ {"~" swap$ * *
+ }
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { t #1 #2 substring$ "--" = not
+            { "--" *
+              t #2 global.max$ substring$ 't :=
+            }
+            {   { t #1 #1 substring$ "-" = }
+                { "-" *
+                  t #2 global.max$ substring$ 't :=
+                }
+              while$
+            }
+          if$
+        }
+        { t #1 #1 substring$ *
+          t #2 global.max$ substring$ 't :=
+        }
+      if$
+    }
+  while$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+        { #1 'multiresult := }
+        { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {bbl.edby}
 { curlanguage "english" =
-   {"Ed.\ by"}
+   {"ed.\ by"}
    { curlanguage "ukrainian" =
-      {"{\cyr\CYRP\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
+      {"{\cyr\cyrp\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
       { curlanguage "russian" =
-         {"{\cyr\CYRP\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
+         {"{\cyr\cyrp\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
          { curlanguage "german" =
             { "ed." }
-            {"language is not defined: " language "edby" * * warning$ "Ed.\ by"}
+            {"language is not defined: " curlanguage " in bbl.edby" * * warning$ "Ed.\ by"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.cmplr}
+FUNCTION {bbl.compiler}
 { curlanguage "english" =
    { "Compiler"}
    { curlanguage "german" =
@@ -376,15 +454,15 @@
          {"{\cyr\CYRU\cyrk\cyrl.}"}
          { curlanguage "russian" =
             {"{\cyr\CYRS\cyro\cyrs\cyrt.}"}
-            {"language is not defined: " language  "cmplr" * * warning$ "Compiler"}
+            {"language is not defined: " curlanguage  " in bbl.compiler" * * warning$ "Compiler"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.edition} %  { "\bbledition{}" }
+FUNCTION {bbl.edition}
 { curlanguage "english" =
-   {"edition"}
+   {"ed."}
    { curlanguage "ukrainian" =
       {"{\cyr\cyrv\cyri\cyrd.}"}
       { curlanguage "russian" =
@@ -395,7 +473,7 @@
                {"edizione"}
                { curlanguage "french" =
                   {"\'{e}dition"}
-                  {"language is not defined: " language  "edition" * * warning$ "edition"}
+                  {"language is not defined: " curlanguage  " in bbl.edition" * * warning$ "ed."}
                if$}
             if$}
          if$}
@@ -403,7 +481,7 @@
    if$}
 if$}
 
-FUNCTION {bbl.vvolume} %  { "\bblVolume{}" }
+FUNCTION {bbl.vvolume}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Volume"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -410,12 +488,12 @@
       { "\CYRT\cyro\cyrm" }
       { curlanguage "german" =
          {"{Band}"} %%%% { "Volumen" }
-         {"language is not defined: " language  "vvolume" * * warning$ "Volume"}
+         {"language is not defined: " curlanguage  " in bbl.vvolume" * * warning$ "Volume"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.vvol}    %  { "\bblVol{}" }
+FUNCTION {bbl.vvol}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Vol."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -422,12 +500,12 @@
       {"\CYRT."}
       { curlanguage "german" =
          {"{Bd.}"} %%%% { "Vol." }
-         {"language is not defined: " language  "vvol" * * warning$ "Vol."}
+         {"language is not defined: " curlanguage  " in bbl.vvol" * * warning$ "Vol."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iissue}  %  { "\bblIssue{}" }
+FUNCTION {bbl.iissue}
 { curlanguage "english" =
    {"Issue"}
    { curlanguage "ukrainian" =
@@ -436,13 +514,13 @@
          {"\CYRV\cyrery\cyrp\cyru\cyrs\cyrk"}
          { curlanguage "german" =
             {"{Heft}"} %%%% { "Ausgabe" }
-            {"language is not defined: " language "iissue" * * warning$ "Issue"}
+            {"language is not defined: " curlanguage " in bbl.iissue" * * warning$ "Issue"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iiss}  %  { "\bblIss{}" }
+FUNCTION {bbl.iiss}
 { curlanguage "english" =
    {"Iss."}
    { curlanguage "ukrainian" =
@@ -451,13 +529,13 @@
          {"\CYRV\cyrery\cyrp."}
          { curlanguage "german" =
             {"{H.}"}
-            {"language is not defined: " language "iiss" * * warning$ "Iss."}
+            {"language is not defined: " curlanguage " in bbl.iiss" * * warning$ "Iss."}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.of}      %  { "\bblof{}" }
+FUNCTION {bbl.of}
 { curlanguage "english" =
    {"of"}
    { curlanguage "german" =
@@ -466,13 +544,13 @@
          { "{\cyr\cyrii\cyrz}" }
          { curlanguage "russian" =
             { "{\cyr\cyri\cyrz}" }
-            {"language is not defined: " language "of" * * warning$ "of"}
+            {"language is not defined: " curlanguage " in bbl.of" * * warning$ "of"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.etal}      %  { "\bblof{}" }
+FUNCTION {bbl.etal}
 { curlanguage "english" =
    {"et~al."}
    { curlanguage "german" =
@@ -481,14 +559,31 @@
          {"{\cyr\cyrt\cyra~\cyrii\cyrn.}"}
          { curlanguage "russian" =
             {"{\cyr\cyri~\cyrd\cyrr.}"}
-            {"language is not defined: " language  "et~al" * * warning$ "et~al."}
+            {"language is not defined: " curlanguage  " in bbl.etal" * * warning$ "et~al."}
          if$}
       if$}
    if$}
 if$}
 
+FUNCTION {bbl.and}
+{ curlanguage "english" =
+  {"and"}
+   { curlanguage "german" =
+      { "und" }
+      { curlanguage "ukrainian" =
+         {"{\cyrii}"}
+         { curlanguage "russian" =
+            {"{\cyri}"}
+            { curlanguage "french" =
+                {"et"}
+                {"language is not defined: " curlanguage  " in bbl.and" * * warning$ "and"}
+            if$}
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {bbl.nnumber} %  { "\bblNumber{}" }
+FUNCTION {bbl.nnumber}
 { curlanguage "english" =
    {"Number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -495,12 +590,12 @@
       { "\CYRN\cyro\cyrm\cyre\cyrr" }
       { curlanguage "german" =
          {"{Heft}"} %%% { "Anzahl" }
-         {"language is not defined: " language  "nnumber" * * warning$ "Number"}
+         {"language is not defined: " curlanguage  " in bbl.nnumber" * * warning$ "Number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.number}  %  { "\bblnumber{}" }
+FUNCTION {bbl.number}
 { curlanguage "english" =
    {"number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -507,27 +602,30 @@
       {"{\cyr\cyrn\cyro\cyrm\cyre\cyrr}"}
       { curlanguage "german" =
          {"{Heft}"} %%% { "anzahl" }???
-         {"language is not defined: " language  "number" * * warning$ "number"}
+         {"language is not defined: " curlanguage  " in bbl.number" * * warning$ "number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nr}     %   { "\bblno{}" }
+FUNCTION {bbl.nr}
 { curlanguage "english" =
    {"no."}
    { curlanguage "italian" =
-      { "no" }
+      { "no." }
       { curlanguage "ukrainian" = curlanguage "russian" = or
          { "{\cyr\textnumero}" }
          { curlanguage "german" =
-            {"{H.}"} %%% { "an." }
-            {"language is not defined: " language "nr" * * warning$ "no."}
+            {"{nu.}"} %%% { "an." }
+            { curlanguage "french" =
+                { "no." }
+                {"language is not defined: " curlanguage " in bbl.nr" * * warning$ "no."}
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nnr}     %   { "\bblno{}" }
+FUNCTION {bbl.nnr}
 { curlanguage "english" =
    {"No."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -534,30 +632,30 @@
       { "{\cyr\textnumero}" }
       { curlanguage "german" =
          {"{H.}"} %%% { "an." }
-         {"language is not defined: " language  "nnr" * * warning$ "No."}
+         {"language is not defined: " curlanguage  " in bbl.nnr" * * warning$ "No."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.in}    %    { "\bblin{}" }
+FUNCTION {bbl.in}
 { curlanguage "english" = curlanguage "german" = or
    {"in"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "{\cyr\cyrv}" }
-      {"language is not defined: " language  "in" * * warning$ "in"}
+      {"language is not defined: " curlanguage  " in bbl.in" * * warning$ "in"}
    if$}
 if$}
 
-FUNCTION {bbl.iin}  %     { "\bblIn{}" }
+FUNCTION {bbl.iin}
 { curlanguage "english" = curlanguage "german" = or
    {"In"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "\CYRV" }
-      {"language is not defined: " language  "iin" * * warning$ "In"}
+      {"language is not defined: " curlanguage  " in bbl.iin" * * warning$ "In"}
    if$}
 if$}
 
-FUNCTION {bbl.pages}    % { "\bblpp." }
+FUNCTION {bbl.pages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."} %%% {"pp."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -564,12 +662,12 @@
       {"{\cyr\cyrs.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "pages" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.pages" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.page}   %   { "\bblp."
+FUNCTION {bbl.page}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -576,12 +674,12 @@
       {"{\cyr\cyrs.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "page" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.page" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppages}%    { "\bblPp." }
+FUNCTION {bbl.ppages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."} %%%% { "Pp." }
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -588,12 +686,12 @@
       {"{\cyr\CYRS.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language "ppages" * * warning$ "P."}
+         {"language is not defined: " curlanguage " in bbl.ppages" * * warning$ "P."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppage}  %   { "\bblP." }
+FUNCTION {bbl.ppage}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -600,7 +698,7 @@
       {"{\cyr\CYRS.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language  "ppage" * * warning$ "P."}
+         {"language is not defined: " curlanguage  " in bbl.ppage" * * warning$ "P."}
       if$}
    if$}
 if$}
@@ -614,7 +712,10 @@
          { "{\CYRR\cyre\cyrzh\cyri\cyrm\ \cyrd\cyro\cyrs\cyrt\cyru\cyrp\cyra}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "Mode d'acc\`{e}s" }
+                { "language is not defined: " curlanguage " in bbl.url" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
@@ -628,13 +729,16 @@
          { "{\cyrd\cyra\cyrt\cyra\ \cyro\cyrb\cyrr\cyra\cyrshch\cyre\cyrn\cyri\cyrya}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "{en ligne; acc\'{e}d\'{e}}" }
+                { "language is not defined: " curlanguage " in bbl.urldate" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.techreport} % rename to bbl.techreport
+FUNCTION {bbl.techreport}
 { curlanguage "english" =
    { "Rep." }
    { curlanguage "german" =
@@ -641,7 +745,7 @@
       { "Bericht" }
       { curlanguage "russian" =
          { "{\cyr\CYRO\cyrt\cyrch\cyre\cyrt}" }
-         { "language is not defined: " language "techrep" * * warning$ "Rep." }
+         { "language is not defined: " curlanguage " in bbl.techrep" * * warning$ "Rep." }
       if$}
    if$}
 if$}
@@ -650,12 +754,12 @@
 { curlanguage "english" =
    { "Master's thesis" }
    { curlanguage "german" =
-      { "Diss.~Mag." }
+      { "diss.~mag." }
       { curlanguage "russian" =
-        { "{\cyr\CYRK\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
+        { "{\cyr\cyrk\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
           "\cyro\cyrn\cyrn\cyra\cyrya\ \cyrr\cyra\cyrb\cyro\cyrt\cyra\ " *
           "\cyrm\cyra\cyrg\cyri\cyrs\cyrt\cyrr\cyra}" * }
-         { "language is not defined: " language "mthesis" * * warning$ "Master's thesis" }
+         { "language is not defined: " curlanguage " in bbl.mthesis" * * warning$ "Master's thesis" }
       if$}
    if$}
 if$}
@@ -664,13 +768,13 @@
 { curlanguage "english" =
    { "Ph.\,D. thesis" }
    { curlanguage "german" =
-      { "Diss.~Ph.\,D." }
+      { "diss.~Ph.\,D." }
       { curlanguage "russian" =
          { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrk\cyra\cyrn\cyrd. "
            "\cyrn\cyra\cyru\cyrk}" * }
          { curlanguage "french" =
-           { "Th\`{e}se de doctorat" }
-           { "language is not defined: " language "phdthesis" * * warning$ "Ph.\,D. thesis" }
+           { "th\`{e}se de doctorat" }
+           { "language is not defined: " curlanguage " in bbl.phdthesis" * * warning$ "Ph.\,D. thesis" }
          if$}
       if$}
    if$}
@@ -678,36 +782,23 @@
 
 FUNCTION {bbl.docthesis}
 { curlanguage "english" =
-   { "Dr.\,Sci. dissertation" }
+   { "dr.\,sci. dissertation" }
    { curlanguage "german" =
-      { "Diss.~Dr." }
+      { "diss.~dr." }
       { curlanguage "russian" =
          { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrd-\cyrr\cyra\ "
            "\cyrn\cyra\cyru\cyrk}" * }
-         { "language is not defined: " language "docthesis" * * warning$ "Dr.\,Sci. dissertation" }
+         { "language is not defined: " curlanguage " in bbl.docthesis" * * warning$ "Dr.\,Sci. dissertation" }
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.thesis.type}
-{ type "mathesis" =
-  { bbl.mathesis }
-  { type "phdthesis" =
-    { bbl.phdthesis }
-    { type "docthesis" =
-      { bbl.docthesis }
-      %%{ "!!!" type * "t" change.case$ }
-      { type "t" change.case$ }
-    if$}
-  if$}
-if$}
-
 FUNCTION {bbl.nnoaddress}
 { curlanguage "english" =
    { "S.\ l." }
    { curlanguage "russian" =
       { "{\cyr\CYRB.\ \cyrm.}" }
-      { "language is not defined: " language "nnoaddress" * * warning$ "S.\ l." }
+      { "language is not defined: " curlanguage " in bbl.nnoaddress" * * warning$ "S.\ l." }
    if$}
 if$}
 
@@ -716,7 +807,7 @@
    { "s.\ n." }
    { curlanguage "russian" =
       { "{\cyr\cyrb.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "s.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "s.\ n." }
    if$}
 if$}
 
@@ -725,7 +816,7 @@
    { "S.\ n." }
    { curlanguage "russian" =
       { "{\cyr\CYRB.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "S.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "S.\ n." }
    if$}
 if$}
 
@@ -734,7 +825,7 @@
    { "Text" }
    { curlanguage "russian" = curlanguage "ukrainian" = or
       { "{\cyr\CYRT\cyre\cyrk\cyrs\cyrt}" }
-      { "language is not defined: " language "media" * * warning$ "Text" }
+      { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Text" }
    if$}
 if$}
 
@@ -747,7 +838,7 @@
       { curlanguage "ukrainian" =
         { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
           "\cyrr\cyre\cyrs\cyru\cyrr\cyrs}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -761,7 +852,7 @@
       { curlanguage "ukrainian" =
         { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
           "\cyrr\cyre\cyrs\cyru\cyrr\cyrs\ \cyro\cyrn\cyrl\cyra\cyrishrt\cyr}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -773,7 +864,7 @@
       { "\cyrr\cyru\cyrk." }
       { curlanguage "ukrainian" =
         { "\cyrr\cyru\cyrk." }
-        { "language is not defined: " language "chief" * * warning$ "chief" }
+        { "language is not defined: " curlanguage " in bbl.chief" * * warning$ "chief" }
       if$}
    if$}
 if$}
@@ -780,12 +871,12 @@
 
 FUNCTION {bbl.executor}
 { curlanguage "english" =
-   { "Executor" }
+   { "executor" }
    { curlanguage "russian" =
       { "{\cyr\cyri\cyrs\cyrp\cyro\cyrl\cyrn.}" }
       { curlanguage "ukrainian" =
         { "{\cyr\cyrv\cyri\cyrk\cyro\cyrn\cyra\cyrv\cyre\cyrc\cyrsftsn}" }
-        { "language is not defined: " language "executor" * * warning$ "executor" }
+        { "language is not defined: " curlanguage " in bbl.executor" * * warning$ "executor" }
       if$}
    if$}
 if$}
@@ -807,7 +898,7 @@
       { "ang." }
       { curlanguage "russian" =
         { "{\cyr\cyrz\cyra\cyrya\cyrv\cyrl.}" }
-        { "language is not defined: " language "req" * * warning$ "req" }
+        { "language is not defined: " curlanguage " in bbl.req" * * warning$ "req" }
       if$
       }
     if$
@@ -823,7 +914,7 @@
       { "ausg." }
       { curlanguage "russian" =
         { "{\cyr\cyro\cyrp\cyru\cyrb\cyrl.}" }
-        { "language is not defined: " language "publication" * * warning$ "publication" }
+        { "language is not defined: " curlanguage " in bbl.publication" * * warning$ "publication" }
       if$
       }
     if$
@@ -839,7 +930,7 @@
       { "Prioritat" }
       { curlanguage "russian" =
         { "{\cyr\cyrp\cyrr\cyri\cyro\cyrr\cyri\cyrt\cyre\cyrt}" }
-        { "language is not defined: " language "priority" * * warning$ "priority" }
+        { "language is not defined: " curlanguage " in bbl.priority" * * warning$ "priority" }
       if$
       }
     if$
@@ -847,69 +938,462 @@
   if$
 }
 
+FUNCTION {bbl.jan}
+{ curlanguage "english" =
+   {"Jan."}
+   { curlanguage "ukrainian" =
+      {"\CYRS\cyrii\cyrch."}
+      { curlanguage "russian" =
+         { "\CYRYA\cyrn\cyrv." }
+         { curlanguage "german" =
+            { "Jan." } % Januar
+            { "language is not defined: bbl.jan for " curlanguage * warning$ "Jan." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.feb}
+{ curlanguage "english" =
+   {"Feb."}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyryu\cyrt."}
+      { curlanguage "russian" =
+         { "\CYRF\cyre\cyrv\cyrr." }
+         { curlanguage "german" =
+            {"Feb."} % Februar
+            {"language is not defined: bbl.feb for " curlanguage * warning$ "Feb."}
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.mar}
+{ curlanguage "english" =
+   {"Mar."}
+   { curlanguage "ukrainian" =
+      {"\CYRB\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRM\cyra\cyrr\cyrt" }
+         { curlanguage "german" =
+            {"März"} % März
+            {"language is not defined: bbl.mar for " curlanguage * warning$ "Mar."}
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.apr}
+{ curlanguage "english" =
+   {"Apr."}
+   { curlanguage "ukrainian" =
+      {"\CYRK\cyrv\cyrii\cyrt."}
+      { curlanguage "russian" =
+            { "\CYRA\cyrp\cyrr." }
+         { curlanguage "german" =
+            {"Apr."} % April
+            { "language is not defined: bbl.apr for " curlanguage * warning$ "Apr." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.may}
+{ curlanguage "english" =
+   {"May"}
+   { curlanguage "ukrainian" =
+      {"\CYRT\cyrr\cyra\cyrv."}
+      { curlanguage "russian" =
+            { "\CYRM\cyra\cyrishrt" }
+         { curlanguage "german" =
+            {"Mai"}
+            { "language is not defined: bbl.may for " curlanguage * warning$ "May" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jun}
+{ curlanguage "english" =
+   {"June"}
+   { curlanguage "ukrainian" =
+      {"\CYRCH\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRI\cyryu\cyrn\cyrsftsn" }
+         { curlanguage "german" =
+            {"Juni"}
+            { "language is not defined: bbl.jun for " curlanguage * warning$ "June" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jul}
+{ curlanguage "english" =
+   {"July"}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyri\cyrp."}
+      { curlanguage "russian" =
+            { "\CYRI\cyryu\cyrl\cyrsftsn" }
+         { curlanguage "german" =
+            {"Juli"}
+            { "language is not defined: bbl.jul for " curlanguage * warning$ "July" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.aug}
+{ curlanguage "english" =
+   {"Aug."}
+   { curlanguage "ukrainian" =
+      {"\CYRS\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRA\cyrv\cyrg\." }
+         { curlanguage "german" =
+            {"Aug."} % August
+            { "language is not defined: bbl.aug for " curlanguage * warning$ "Aug." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.sep}
+{ curlanguage "english" =
+   {"Sep."}
+   { curlanguage "ukrainian" =
+      {"\CYRV\cyre\cyrr."}
+      { curlanguage "russian" =
+            { "\CYRS\cyre\cyrn\cyrt." }
+         { curlanguage "german" =
+            {"Sep."} % September
+            { "language is not defined: bbl.sep for " curlanguage * warning$ "Sep." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.oct}
+{ curlanguage "english" =
+   {"Oct."}
+   { curlanguage "ukrainian" =
+      {"\CYRZH\cyro\cyrn."}
+      { curlanguage "russian" =
+            { "\CYRO\cyrk\cyrt." }
+         { curlanguage "german" =
+            {"Okt."} % Oktober
+            { "language is not defined: bbl.oct for " curlanguage * warning$ "Oct." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.nov}
+{ curlanguage "english" =
+   {"Nov."}
+   { curlanguage "ukrainian" =
+      {"\CYRL\cyri\cyrs."}
+      { curlanguage "russian" =
+            { "\CYRN\cyro\cyrya\cyrb." }
+         { curlanguage "german" =
+            {"Nov."} % November
+            { "language is not defined: bbl.nov for " curlanguage * warning$ "Nov." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.dec}
+{ curlanguage "english" =
+   {"Dec."}
+   { curlanguage "ukrainian" =
+      {"\CYRG\cyrr\cyru\cyrd."}
+      { curlanguage "russian" =
+            { "\CYRD\cyre\cyrk." }
+         { curlanguage "german" =
+            {"Dez."} % Dezember
+            { "language is not defined: bbl.dec for " curlanguage * warning$ "Dec." }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {bbl.arxiv}
+{ curlanguage "english" =
+   { "ArXiv" }
+   { curlanguage "ukrainian" =
+      {"ArXiv"}
+      { curlanguage "russian" =
+         { "ArXiv" }
+         { curlanguage "german" =
+            { "ArXiv" }
+            { "language is not defined: bbl.arxiv for " curlanguage * warning$ "ArXiv" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jstor}
+{ curlanguage "english" =
+   { "JSTOR" }
+   { curlanguage "ukrainian" =
+      {"JSTOR"}
+      { curlanguage "russian" =
+         { "JSTOR" }
+         { curlanguage "german" =
+            { "JSTOR" }
+            { "language is not defined: bbl.jstor for " curlanguage * warning$ "JSTOR" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.pubmed}
+{ curlanguage "english" =
+   { "PubMed" }
+   { curlanguage "ukrainian" =
+      {"PubMed"}
+      { curlanguage "russian" =
+         { "PubMed" }
+         { curlanguage "german" =
+            { "PubMed" }
+            { "language is not defined: bbl.pubmed for " curlanguage * warning$ "PubMed" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.googlebooks}
+{ curlanguage "english" =
+   { "Google Books" }
+   { curlanguage "ukrainian" =
+      {"Google \CYRK\cyrn\cyri\cyrg\cyri"}
+      { curlanguage "russian" =
+         { "Google \CYRK\cyrn\cyri\cyrg\cyri" }
+         { curlanguage "german" =
+            { "Google Books" }
+            { "language is not defined: bbl.googlebooks for " curlanguage * warning$ "Google Books" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.hdl}
+{ curlanguage "english" =
+   { "Handle.Net" }
+   { curlanguage "ukrainian" =
+      {"Handle.Net"}
+      { curlanguage "russian" =
+         { "Handle.Net" }
+         { curlanguage "german" =
+            { "Handle.Net" }
+            { "language is not defined: bbl.hdl for " curlanguage * warning$ "Handle.Net" }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {address.or.location}
+{
+  address empty$
+    { location }
+    { address }
+  if$
+}
+
+FUNCTION {specialitycode.or.number}
+{
+  specialitycode empty$
+    { number }
+    { specialitycode }
+  if$
+}
+
+FUNCTION {institution.or.school}
+{
+  institution empty$
+    { school}
+    { institution }
+  if$
+}
+FUNCTION {date.to.year}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #3 >
+        {
+          date #1 #4 substring$ 'y :=
+          y
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {date.to.month}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #6 >
+        {
+          date #6 #2 substring$ 'm :=
+          m
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {date.to.day}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #10 =
+        {
+          date #9 #2 substring$ 'd :=
+          d
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {year.or.date.to.year}
+{
+  year empty$
+    {
+      date.to.year
+    }
+    { year }
+  if$
+}
+
+FUNCTION {format.month}
+{ month empty$
+    { "" }
+    { month "Jan." =
+        { bbl.jan }
+    { month "Feb." =
+        { bbl.feb }
+    { month "Mar." =
+        { bbl.mar }
+    { month "Apr." =
+        { bbl.apr }
+    { month "May" =
+        { bbl.may }
+    { month "Jun." =
+        { bbl.jun }
+    { month "Jul." =
+        { bbl.jul }
+    { month "Aug." =
+        { bbl.aug }
+    { month "Sep." =
+        { bbl.sep }
+    { month "Oct." =
+        { "Окт." }
+    { month "Nov." =
+        { bbl.nov }
+    { month "Dec." =
+        { bbl.dec }
+        {
+          "unknown month in " cite$ * warning$
+          month
+        }
+        if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
+    if$
+}
+FUNCTION {format.date}
+{ year.or.date.to.year empty$
+    { month empty$
+        { "" }
+        { "there's a month but no year in " cite$ * warning$
+          format.month
+        }
+      if$
+    }
+    { month empty$
+        'year.or.date.to.year
+        { year.or.date.to.year ". \BibDash " format.month * * }
+      if$
+    }
+  if$
+}
+
 INTEGERS { nameptr namesleft numnames }
 
+FUNCTION {fmt.names.first}
+{ #1
+  "{vv~}{ll}{~jj}{~f.}"
+  format.name$
+}
 
-FUNCTION {format.names}
+FUNCTION {fmt.names.three}
 {
   's :=
   #1 'nameptr :=
   s num.names$ 'numnames :=
   numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr
-      "{vv~}{ll}{~jj}{~f.}" format.name$ 't :=
-      nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
+  { namesleft #0 > }
+  { s nameptr
+      "{vv~}{ll}{~jj}{~f.}"
+    format.name$ 't :=
+    nameptr #1 >
+      { nameptr #4 = numnames #4 > and
+          { "others" 't :=
+            #1 'namesleft :=
+          }
+          'skip$
+        if$
+        namesleft #1 >
+          { ", " * t * }
+          { t "others" = t "~others" = or
+              { " " * bbl.etal * }
+              { ", " * t * }
           if$
-          namesleft #1 >
-            { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
-                { " " * bbl.etal * }
-                { ", " * t * }
-              if$
-            }
-          if$
-        }
-        't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
+          }
+        if$
+      }
+      't
+    if$
+    nameptr #1 + 'nameptr :=
+    namesleft #1 - 'namesleft :=
+  }
   while$
 }
 
-
-FUNCTION {format.names.rev}
-{
-  's :=
+FUNCTION {fmt.names.all}
+{ 's :=
   #1 'nameptr :=
   s num.names$ 'numnames :=
   numnames 'namesleft :=
     { namesleft #0 > }
     { s nameptr
-      %"{f.}{~vv}{~ll}{, jj}" format.name$ 't :=
-      "{ff}{~vv}{~ll}{, jj}" format.name$ 't :=
+      %"{vv~}{ll}" format.name$ 't :=
+      "{vv~}{ll}{~jj}{~f.}"
+      format.name$ 't :=
       nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
-          if$
-          namesleft #1 >
+        { namesleft #1 >
             { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
+            { numnames #2 >  curlanguage "english" = and
+                { "," * }
+                'skip$
+              if$
+              t "others" = t "~others" = or
                 { " " * bbl.etal * }
-                { ", " * t * }
+                { " " bbl.and " " * * * t * }
               if$
             }
           if$
@@ -922,145 +1406,57 @@
   while$
 }
 
-
-FUNCTION {format.authors}
-{ author empty$
-    { "" }
-    { author format.names emphasize}
+%%<long>    { author fmt.names.all emphasize}
+%%<!long&strict>    { author fmt.names.first emphasize}
+%%<!long&!strict>    { author fmt.names.three emphasize}
+FUNCTION {format.author}
+{
+  author empty$
+    { author } %%%'skip$
+    {author num.names$ #4 <
+      {
+       author fmt.names.three
+      }
+      { "" } %%%'skip$
+    if$}
   if$
 }
 
-
-FUNCTION {format.bookauthors}
+FUNCTION {format.bookauthors.rest}
 { bookauthor empty$
     { "" }
-    { bookauthor format.names}
+    { bookauthor fmt.names.three emphasize }
   if$
 }
 
-FUNCTION {format.authors.after}
-{ author empty$
-    { "" }
-    { author format.names.rev}
-  if$
-}
-
-FUNCTION {format.bookauthors.after}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names.rev}% always cuts to 4 persons
-  if$
-}
-
-FUNCTION {format.editors.after}
+FUNCTION {format.editors.rest}
 { editor empty$
     { "" }
-    { bbl.edby "\ " * editor format.names.rev * }
+    { bbl.edby "\ " * editor fmt.names.three * }
   if$
 }
 
-FUNCTION {format.chief.after}
+FUNCTION {format.chief.rest}
 { editor empty$
     { "" }
-    { bbl.chief "\ " * editor format.names.rev * }
+    { bbl.chief "\ " * editor fmt.names.three * }
   if$
 }
 
-FUNCTION {format.executor.after}
+FUNCTION {format.executor.rest}
 { author empty$
     { "" }
-    { bbl.executor ": " * author format.names.rev * }
+    { bbl.executor ": " * author fmt.names.three * }
   if$
 }
 
-FUNCTION {format.compiler.after}
+FUNCTION {format.compiler.rest}
 { compiler empty$
     { "" }
-    { bbl.cmplr "\ " * compiler format.names.rev * }
+    { bbl.compiler "\ " * compiler fmt.names.three * }
   if$
 }
 
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    { title "t" change.case$ }
-  if$
-}
-
-FUNCTION {format.month}
-{ month empty$
-    { "" }
-    { curlanguage "russian" =
-        { month "Jan." =
-            { "\CYRYA\cyrn\cyrv." }
-        { month "Feb." =
-            { "\CYRF\cyre\cyrv\cyrr." }
-        { month "Mar." =
-            { "\CYRM\cyra\cyrr\cyrt" }
-        { month "Apr." =
-            { "\CYRA\cyrp\cyrr." }
-        { month "May" =
-            { "\CYRM\cyra\cyrishrt" }
-        { month "Jun." =
-            { "\CYRI\cyryu\cyrn\cyrsftsn" }
-        { month "Jul." =
-            { "\CYRI\cyryu\cyrl\cyrsftsn" }
-        { month "Aug." =
-            { "\CYRA\cyrv\cyrg\." }
-        { month "Sep." =
-            { "\CYRS\cyre\cyrn\cyrt." }
-        { month "Oct." =
-            { "\CYRO\cyrk\cyrt." }
-        { month "Nov." =
-            { "\CYRN\cyro\cyrya\cyrb." }
-        { month "Dec." =
-            { "\CYRD\cyre\cyrk." }
-            { month }
-            if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
-        { month }
-        if$}
-    if$
-}
-FUNCTION {format.date}
-{ year empty$
-    { month empty$
-        { "" }
-        { "there's a month but no year in " cite$ * warning$
-          format.month
-        }
-      if$
-    }
-    { month empty$
-        'year
-        { year ". \BibDash " format.month * * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {address.or.location}
-{
-  address empty$
-    { location }
-    { address }
-  if$
-}
-
-FUNCTION {specialitycode.or.number}
-{
-  specialitycode empty$
-    { number }
-    { specialitycode }
-  if$
-}
-
-FUNCTION {institution.or.school}
-{
-  institution empty$
-    { school}
-    { institution }
-  if$
-}
 FUNCTION {output.address.publisher}
 {
   address empty$ location empty$ and
@@ -1074,21 +1470,13 @@
   if$
   publisher output
 }
-
-
 FUNCTION {output.bibitem}
-{ newline$
+{
+  set.language
+  newline$
   "\bibitem" write$
   cite$ bracify write$
   newline$
-  langid empty$
-    { language empty$
-        { "english" 'curlanguage := }
-        { language  'curlanguage := }
-      if$
-    }
-    { langid  'curlanguage := }
-  if$
   "\selectlanguageifdefined" curlanguage bracify * write$
   newline$
   ""
@@ -1095,60 +1483,6 @@
   before.all 'output.state :=
 }
 
-
-FUNCTION {n.dashify}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-        { t #1 #2 substring$ "--" = not
-            { "--" *
-              t #2 global.max$ substring$ 't :=
-            }
-            {   { t #1 #1 substring$ "-" = }
-                { "-" *
-                  t #2 global.max$ substring$ 't :=
-                }
-              while$
-            }
-          if$
-        }
-        { t #1 #1 substring$ *
-          t #2 global.max$ substring$ 't :=
-        }
-      if$
-    }
-  while$
-}
-
-FUNCTION {word.in}
-{ bbl.iin
-  " " * }
-
-FUNCTION {format.btitle}
-{ title
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
-    { "~" }
-    { " " }
-  if$
-  swap$ * *
-}
-
-FUNCTION {tie.connect}
- {"~"
-  swap$ * *
- }
-
-FUNCTION {either.or.check}
-{ empty$
-    'pop$
-    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
-  if$
-}
-
 FUNCTION {format.bvolume}
 { volume empty$
     { "" }
@@ -1155,7 +1489,7 @@
     { bbl.vvol volume tie.connect
       series empty$
         'skip$
-        { bbl.of space.word * series emphasize * }
+        { bbl.of spaces.around * series emphasize * }
       if$
       "volume and number" number either.or.check
     }
@@ -1184,31 +1518,7 @@
   if$
 }
 
-FUNCTION {is.num}
-{ chr.to.int$
-  duplicate$ "0" chr.to.int$ < not
-  swap$ "9" chr.to.int$ > not and
-}
 
-FUNCTION {extract.num}
-{ duplicate$ 't :=
-  "" 's :=
-  { t empty$ not }
-  { t #1 #1 substring$
-    t #2 global.max$ substring$ 't :=
-    duplicate$ is.num
-      { s swap$ * 's := }
-      { pop$ "" 't := }
-    if$
-  }
-  while$
-  s empty$
-    'skip$
-    { pop$ s }
-  if$
-}
-
-
 FUNCTION {convert.edition}
 { edition
 }
@@ -1224,38 +1534,6 @@
   if$
 }
 
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
-  #0 'multiresult :=
-    { multiresult not
-      t empty$ not
-      and
-    }
-    { t #1 #1 substring$
-      duplicate$ "-" =
-      swap$ duplicate$ "," =
-      swap$ "+" =
-      or or
-        { #1 'multiresult := }
-        { t #2 global.max$ substring$ 't := }
-      if$
-    }
-  while$
-  multiresult
-}
-
-%%FUNCTION {format.pages}
-%%{ pages empty$
-%%    { "" }
-%%    { pages multi.page.check
-%%        { bbl.ppages pages n.dashify tie.connect }
-%%        { bbl.ppage pages tie.connect }
-%%      if$
-%%    }
-%%  if$
-%%}
 FUNCTION {format.pages}
 { eid empty$
     {
@@ -1276,15 +1554,6 @@
   if$
 }
 
-%%FUNCTION {format.pages.page}
-%%{ pages empty$
-%%    { pagetotal empty$
-%%      { "" }
-%%      { pagetotal bbl.pages tie.connect }
-%%    if$}
-%%    { format.pages}
-%%  if$
-%%}
 FUNCTION {format.pages.page}
 { eid empty$
     { pages empty$
@@ -1347,6 +1616,19 @@
   if$
 }
 
+FUNCTION {bbl.thesis.type}
+{ type "mathesis" =
+  { bbl.mathesis }
+  { type "phdthesis" =
+    { bbl.phdthesis }
+    { type "docthesis" =
+      { bbl.docthesis }
+      %%{ "!!!" type * "t" change.case$ }
+      { type "t" change.case$ }
+    if$}
+  if$}
+if$}
+
 %%<!utf8>      bbl.thesis.type "t" change.case$
 %%<utf8>      bbl.thesis.type
 FUNCTION {format.thesis.type}
@@ -1367,81 +1649,61 @@
   if$
 }
 
-FUNCTION {author.before}
+FUNCTION {output.author.head}
 {
   author empty$
     'skip$
     {author num.names$ #4 <
-      {format.authors output
-       new.sentence}
+      {
+       author fmt.names.three output
+       new.sentence
+      }
       'skip$
     if$}
   if$
 }
 
-%%<*!long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    {bookauthor num.names$ #4 <
-%%      {format.bookauthors output
-%%       new.sentence}
-%%      'skip$
-%%    if$}
-%%  if$
-%%}
-%%</!long>
-%%<*long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    { format.bookauthors output
-%%      new.sentence
-%%    }
-%%  if$
-%%}
-%%</long>
-
-FUNCTION {author.after}
+FUNCTION {output.author.rest}
 {
   author empty$
     'skip$
     {author num.names$ #3 >
-      {format.authors.after output
-       new.semicolon }
+      { author fmt.names.all output
+        new.semicolon
+      }
       'skip$
     if$}
   if$
 }
 
-FUNCTION {bookauthor.after}
+FUNCTION {bookauthor.rest}
 {
   bookauthor empty$
     'skip$
-    {format.bookauthors.after output
-       new.semicolon }
+    {
+      bookauthor fmt.names.three output
+      new.semicolon
+    }
   if$
 }
 
-FUNCTION {editor.organization.after}
+FUNCTION {editor.organization.rest}
 {
   compiler empty$
     {}
-    { format.compiler.after  output
+    { format.compiler.rest  output
     new.semicolon
     }
   if$
   editor empty$
     {}
-    { format.editors.after  output
+    { format.editors.rest  output.nonnull
     new.semicolon
     }
   if$
   organization empty$
     {}
-    {organization output
+    {organization output.nonnull
     new.semicolon
     }
   if$
@@ -1492,7 +1754,7 @@
     'skip$
     { doi empty$
         'skip$
-        { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
+        { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * }
       if$
     }
   if$
@@ -1503,7 +1765,7 @@
     'skip$
     { media empty$
         'skip$
-        { " " * bbl.media enclose.square.brackets * }
+        { " " * bbl.media bracketise * }
       if$
     }
   if$
@@ -1584,14 +1846,15 @@
 FUNCTION {article}
 {
   output.bibitem
-  author.before
-  format.title add.media "title" output.check
+  output.author.head
+  %new.sentence
+  title add.media "title" output.check
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
-  journal emphasize add.doi "journal" output.check % new in v.2
+  journal emphasize add.doi "journal" output.check % new in v1.2
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.volume output
   format.number output
@@ -1608,11 +1871,14 @@
 FUNCTION {book}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.sentence
   format.number.series output
   new.block
@@ -1619,7 +1885,7 @@
   format.edition output
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1637,15 +1903,18 @@
 FUNCTION {booklet}
 {
   output.bibitem
-  author.before
-  format.title add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
   howpublished output
   address.or.location output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1657,15 +1926,18 @@
 FUNCTION {inbook}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  bookauthor.after
-  editor.organization.after
+  bookauthor.rest
+  editor.organization.rest
   new.block
   format.edition output
   new.block
@@ -1672,7 +1944,7 @@
   format.number.series output
   new.sentence
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1690,18 +1962,21 @@
 FUNCTION {incollection}
 {
   output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   format.number.series output
@@ -1718,15 +1993,22 @@
 FUNCTION {proceedings}
 {
   output.bibitem
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon                   % added in v.1.2k
+  titleaddon output           % added in v.1.2k
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
-  output.address.publisher
-  format.date "year" output.check
   new.block
+  format.pages.page output
+  %%%output.address.publisher  % 1.2k moved upper
+  new.block
   note output
   new.sentence
   output.eprint.url
@@ -1736,22 +2018,26 @@
 
 FUNCTION {inproceedings}
 { output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon                % added in v.1.2k
+  titleaddon output        % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
   new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
   format.pages.page output
   new.block
   note output
@@ -1771,10 +2057,12 @@
         }
       if$
     }
-    { format.authors output.nonnull }
+    { format.author output.nonnull }
   if$
   new.block
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   author empty$
     { organization empty$
     {
@@ -1791,7 +2079,7 @@
     }
   if$
   format.edition output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1804,6 +2092,8 @@
 {
   output.bibitem
   title add.media output.nonnull
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   format.type.number output
   add.blank
@@ -1811,9 +2101,9 @@
   new.colon
   ipc output
   new.slash
-  format.authors.after "author" output.check
+  format.author "author" output.check
   add.blank
-  authorcountry enclose.round.brackets output.nonnull
+  authorcountry paranthesify output.nonnull
   new.semicolon
   holder output.nonnull
   new.semicolon
@@ -1828,7 +2118,7 @@
   new.semicolon
   format.prioritydate output
   prioritynumber output
-  prioritycountry enclose.round.brackets output
+  prioritycountry paranthesify output
   new.block
   note output
   new.sentence
@@ -1841,13 +2131,15 @@
 
 FUNCTION {misc}
 { output.bibitem
-  format.authors output
+  %format.author output  % < v.1.2k
+  output.author.head    % v.1.2k
+  %new.sentence            % v.1.2k
   title howpublished new.sentence.checkb
-  format.title add.media output
+  title add.media output
   howpublished new.block.checka
   howpublished output
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1858,13 +2150,16 @@
 
 FUNCTION {unpublished}
 { output.bibitem
-  author.before
-  format.btitle "title" output.check
+  output.author.head
+  new.sentence
+  title "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note "note" output.check
   new.sentence
@@ -1875,12 +2170,14 @@
 
 FUNCTION {online}
 { output.bibitem
-  format.authors output
+  format.author output
   title howpublished new.sentence.checkb
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   howpublished new.dblslash.checka
   howpublished output
-  editor.organization.after
+  editor.organization.rest
   new.sentence
   new.block
   output.address.publisher
@@ -1899,25 +2196,24 @@
 FUNCTION {electronic} {online}
 FUNCTION {thesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
-  %%type "type" output.check
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
-  %%number output % code of the speciality
   specialitycode.or.number output % code of the speciality, new in v.1.2i
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours from the head zone
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1927,13 +2223,14 @@
   format.annote output
   fin.entry
 }
-
 %%  format.techrep.type.number output.nonnull
 %%  format.url output
 FUNCTION {report}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   type "type" output.check
   new.colon
@@ -1942,14 +2239,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -1962,9 +2259,9 @@
 
 FUNCTION {phdthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
@@ -1973,13 +2270,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1989,12 +2287,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {mastersthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.mathesis format.thesis.type output.nonnull
   new.colon
@@ -2003,13 +2300,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2019,12 +2317,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {docthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.docthesis format.thesis.type output.nonnull
   new.colon
@@ -2033,13 +2330,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicate athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2049,7 +2347,6 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {conference} { inproceedings }
 
 %%  format.url output
@@ -2057,7 +2354,7 @@
 FUNCTION {techreport}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   format.techreport.type output
   new.colon
@@ -2066,14 +2363,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -2098,96 +2395,96 @@
 MACRO {oct} {"Oct."}
 MACRO {nov} {"Nov."}
 MACRO {dec} {"Dec."}
-MACRO {aa}{"Astron. \& Astrophys."}
-MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."}
-MACRO {aj} {"Astron. J."}
+MACRO {aa}{"Astron.\ \& Astrophys."}
+MACRO {aasup}{"Astron.\ \& Astrophys.\ Suppl.\ Ser."}
+MACRO {aj} {"Astron.\ J."}
 MACRO {aph} {"Acta Phys."}
-MACRO {advp} {"Adv. Phys."}
-MACRO {ajp} {"Amer. J. Phys."}
-MACRO {ajm} {"Amer. J. Math."}
-MACRO {amsci} {"Amer. Sci."}
-MACRO {anofd} {"Ann. Fluid Dyn."}
-MACRO {am} {"Ann. Math."}
-MACRO {ap} {"Ann. Phys. (NY)"}
-MACRO {adp} {"Ann. Phys. (Leipzig)"}
-MACRO {ao} {"Appl. Opt."}
-MACRO {apl} {"Appl. Phys. Lett."}
+MACRO {advp} {"Adv.\ Phys."}
+MACRO {ajp} {"Amer.\ J.\ Phys."}
+MACRO {ajm} {"Amer.\ J.\ Math."}
+MACRO {amsci} {"Amer.\ Sci."}
+MACRO {anofd} {"Ann.\ Fluid Dyn."}
+MACRO {am} {"Ann.\ Math."}
+MACRO {ap} {"Ann.\ Phys.\ (NY)"}
+MACRO {adp} {"Ann.\ Phys.\ (Leipzig)"}
+MACRO {ao} {"Appl.\ Opt."}
+MACRO {apl} {"Appl.\ Phys.\ Lett."}
 MACRO {app} {"Astroparticle Phys."}
-MACRO {apj} {"Astrophys. J."}
-MACRO {apjsup} {"Astrophys. J. Suppl."}
-MACRO {apss} {"Astrophys. Space Sci."}
-MACRO {araa} {"Ann. Rev. Astron. Astrophys."}
-MACRO {baas} {"Bull. Amer. Astron. Soc."}
-MACRO {baps} {"Bull. Amer. Phys. Soc."}
-MACRO {cmp} {"Comm. Math. Phys."}
-MACRO {cpam} {"Commun. Pure Appl. Math."}
-MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"}
-MACRO {cpc} {"Comp. Phys. Comm."}
-MACRO {cqg} {"Class. Quant. Grav."}
-MACRO {cra} {"C. R. Acad. Sci. A"}
-MACRO {fed} {"Fusion Eng. \& Design"}
+MACRO {apj} {"Astrophys.\ J."}
+MACRO {apjsup} {"Astrophys.\ J.\ Suppl."}
+MACRO {apss} {"Astrophys.\ Space Sci."}
+MACRO {araa} {"Ann.\ Rev.\ Astron.\ Astrophys."}
+MACRO {baas} {"Bull.\ Amer.\ Astron.\ Soc."}
+MACRO {baps} {"Bull.\ Amer.\ Phys.\ Soc."}
+MACRO {cmp} {"Comm.\ Math.\ Phys."}
+MACRO {cpam} {"Commun.\ Pure Appl.\ Math."}
+MACRO {cppcf} {"Comm.\ Plasma Phys.\ \& Controlled Fusion"}
+MACRO {cpc} {"Comp.\ Phys.\ Comm."}
+MACRO {cqg} {"Class.\ Quant.\ Grav."}
+MACRO {cra} {"C.\ R.\ Acad.\ Sci.\ A"}
+MACRO {fed} {"Fusion Eng.\ \& Design"}
 MACRO {ft} {"Fusion Tech."}
-MACRO {grg} {"Gen. Relativ. Gravit."}
-MACRO {ieeens} {"IEEE Trans. Nucl. Sci."}
-MACRO {ieeeps} {"IEEE Trans. Plasma Sci."}
-MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"}
+MACRO {grg} {"Gen.\ Relativ.\ Gravit."}
+MACRO {ieeens} {"IEEE Trans.\ Nucl.\ Sci."}
+MACRO {ieeeps} {"IEEE Trans.\ Plasma Sci."}
+MACRO {ijimw} {"Interntl.\ J.\ Infrared \& Millimeter Waves"}
 MACRO {ip} {"Infrared Phys."}
 MACRO {irp} {"Infrared Phys."}
-MACRO {jap} {"J. Appl. Phys."}
-MACRO {jasa} {"J. Acoust. Soc. America"}
-MACRO {jcp} {"J. Comp. Phys."}
-MACRO {jchp} {"J. Chem. Phys."}
-MACRO {jetp} {"Sov. Phys.--JETP"}
-MACRO {jfe} {"J. Fusion Energy"}
-MACRO {jfm} {"J. Fluid Mech."}
-MACRO {jmp} {"J. Math. Phys."}
-MACRO {jne} {"J. Nucl. Energy"}
-MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."}
-MACRO {jnm} {"J. Nucl. Mat."}
-MACRO {jpc} {"J. Phys. Chem."}
-MACRO {jpp} {"J. Plasma Phys."}
-MACRO {jpsj} {"J. Phys. Soc. Japan"}
-MACRO {jsi} {"J. Sci. Instrum."}
-MACRO {jvst} {"J. Vac. Sci. \& Tech."}
+MACRO {jap} {"J.\ Appl.\ Phys."}
+MACRO {jasa} {"J.\ Acoust.\ Soc.\ America"}
+MACRO {jcp} {"J.\ Comp.\ Phys."}
+MACRO {jchp} {"J.\ Chem.\ Phys."}
+MACRO {jetp} {"Sov.\ Phys.--JETP"}
+MACRO {jfe} {"J.\ Fusion Energy"}
+MACRO {jfm} {"J.\ Fluid Mech."}
+MACRO {jmp} {"J.\ Math.\ Phys."}
+MACRO {jne} {"J.\ Nucl.\ Energy"}
+MACRO {jnec} {"J.\ Nucl.\ Energy, C: Plasma Phys., Accelerators, Thermonucl.\ Res."}
+MACRO {jnm} {"J.\ Nucl.\ Mat."}
+MACRO {jpc} {"J.\ Phys.\ Chem."}
+MACRO {jpp} {"J.\ Plasma Phys."}
+MACRO {jpsj} {"J.\ Phys.\ Soc.\ Japan"}
+MACRO {jsi} {"J.\ Sci.\ Instrum."}
+MACRO {jvst} {"J.\ Vac.\ Sci.\ \& Tech."}
 MACRO {nat} {"Nature"}
 MACRO {nature} {"Nature"}
-MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"}
-MACRO {nf} {"Nucl. Fusion"}
-MACRO {nim} {"Nucl. Inst. \& Meth."}
-MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."}
-MACRO {np} {"Nucl. Phys."}
-MACRO {npb} {"Nucl. Phys. B"}
-MACRO {nt/f} {"Nucl. Tech./Fusion"}
-MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"}
+MACRO {nedf} {"Nucl.\ Eng.\ \& Design/Fusion"}
+MACRO {nf} {"Nucl.\ Fusion"}
+MACRO {nim} {"Nucl.\ Inst.\ \& Meth."}
+MACRO {nimpr} {"Nucl.\ Inst.\ \& Meth.\ in Phys.\ Res."}
+MACRO {np} {"Nucl.\ Phys."}
+MACRO {npb} {"Nucl.\ Phys.\ B"}
+MACRO {nt/f} {"Nucl.\ Tech./Fusion"}
+MACRO {npbpc} {"Nucl.\ Phys.\ B (Proc.\ Suppl.)"}
 MACRO {inc} {"Nuovo Cimento"}
 MACRO {nc} {"Nuovo Cimento"}
-MACRO {pf} {"Phys. Fluids"}
-MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."}
-MACRO {pfb} {"Phys. Fluids B: Plasma Phys."}
-MACRO {pl} {"Phys. Lett."}
-MACRO {pla} {"Phys. Lett. A"}
-MACRO {plb} {"Phys. Lett. B"}
-MACRO {prep} {"Phys. Rep."}
-MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"}
-MACRO {pp} {"Phys. Plasmas"}
-MACRO {pop} {"Phys. Plasmas"}
-MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"}
-MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"}
-MACRO {prl} {"Phys. Rev. Lett."}
-MACRO {pr} {"Phys. Rev."}
-MACRO {physrev} {"Phys. Rev."}
-MACRO {pra} {"Phys. Rev. A"}
-MACRO {prb} {"Phys. Rev. B"}
-MACRO {prc} {"Phys. Rev. C"}
-MACRO {prd} {"Phys. Rev. D"}
-MACRO {pre} {"Phys. Rev. E"}
-MACRO {ps} {"Phys. Scripta"}
-MACRO {procrsl} {"Proc. Roy. Soc. London"}
-MACRO {rmp} {"Rev. Mod. Phys."}
-MACRO {rsi} {"Rev. Sci. Inst."}
+MACRO {pf} {"Phys.\ Fluids"}
+MACRO {pfa} {"Phys.\ Fluids A: Fluid Dyn."}
+MACRO {pfb} {"Phys.\ Fluids B: Plasma Phys."}
+MACRO {pl} {"Phys.\ Lett."}
+MACRO {pla} {"Phys.\ Lett.\ A"}
+MACRO {plb} {"Phys.\ Lett.\ B"}
+MACRO {prep} {"Phys.\ Rep."}
+MACRO {pnas} {"Proc.\ Nat.\ Acad.\ Sci.\ USA"}
+MACRO {pp} {"Phys.\ Plasmas"}
+MACRO {pop} {"Phys.\ Plasmas"}
+MACRO {ppcf} {"Plasma Phys.\ \& Controlled Fusion"}
+MACRO {phitrsl} {"Philos.\ Trans.\ Roy.\ Soc.\ London"}
+MACRO {prl} {"Phys.\ Rev.\ Lett."}
+MACRO {pr} {"Phys.\ Rev."}
+MACRO {physrev} {"Phys.\ Rev."}
+MACRO {pra} {"Phys.\ Rev.\ A"}
+MACRO {prb} {"Phys.\ Rev.\ B"}
+MACRO {prc} {"Phys.\ Rev.\ C"}
+MACRO {prd} {"Phys.\ Rev.\ D"}
+MACRO {pre} {"Phys.\ Rev.\ E"}
+MACRO {ps} {"Phys.\ Scripta"}
+MACRO {procrsl} {"Proc.\ Roy.\ Soc.\ London"}
+MACRO {rmp} {"Rev.\ Mod.\ Phys."}
+MACRO {rsi} {"Rev.\ Sci.\ Inst."}
 MACRO {science} {"Science"}
-MACRO {sciam} {"Sci. Am."}
-MACRO {sam} {"Stud. Appl. Math."}
+MACRO {sciam} {"Sci.\ Am."}
+MACRO {sam} {"Stud.\ Appl.\ Math."}
 MACRO {st} {"Sky and Telesc."}
 MACRO {cjp} {"Czech. J. Phys."}
 MACRO {el} {"Europhys. Lett."}
@@ -2230,49 +2527,47 @@
 MACRO {suplatt} {"Superlatt. Microstr."}
 MACRO {sust} {"Supercond. Sci. Technol."}
 MACRO {znat} {"Z. Naturforsch."}
-MACRO {appopt} {"Appl. Opt."}
-MACRO {bell}   {"Bell Syst. Tech. J."}
-MACRO {ell}    {"Electron. Lett."}
-MACRO {jasp}   {"J. Appl. Spectr."}
-MACRO {jqe}    {"IEEE J. Quantum Electron."}
-MACRO {jlwt}   {"J. Lightwave Technol."}
-MACRO {jmo}    {"J. Mod. Opt."}
-MACRO {josa}   {"J. Opt. Soc. America"}
-MACRO {josaa}  {"J. Opt. Soc. Amer.~A"}
-MACRO {josab}  {"J. Opt. Soc. Amer.~B"}
-MACRO {jdp}    {"J. Phys. (Paris)"}
-MACRO {oc}     {"Opt. Commun."}
-MACRO {ol}     {"Opt. Lett."}
-MACRO {os}     {"Opt. Spectrosc."}
+MACRO {appopt} {"Appl.\ Opt."}
+MACRO {bell}   {"Bell Syst.\ Tech.\ J."}
+MACRO {ell}    {"Electron.\ Lett."}
+MACRO {jasp}   {"J.\ Appl.\ Spectr."}
+MACRO {jqe}    {"IEEE J.\ Quantum Electron."}
+MACRO {jlwt}   {"J.\ Lightwave Technol."}
+MACRO {jmo}    {"J.\ Mod.\ Opt."}
+MACRO {josa}   {"J.\ Opt.\ Soc.\ America"}
+MACRO {josaa}  {"J.\ Opt.\ Soc.\ Amer.~A"}
+MACRO {josab}  {"J.\ Opt.\ Soc.\ Amer.~B"}
+MACRO {jdp}    {"J.\ Phys.\ (Paris)"}
+MACRO {oc}     {"Opt.\ Commun."}
+MACRO {ol}     {"Opt.\ Lett."}
+MACRO {os}     {"Opt.\ Spectrosc."}
 MACRO {phtl}   {"IEEE Photon. Technol. Lett."}
-MACRO {pspie}  {"Proc. Soc. Photo-Opt. Instrum. Eng."}
+MACRO {pspie}  {"Proc.\ Soc.\ Photo-Opt.\ Instrum. Eng."}
 MACRO {vr}     {"Vision Res."}
-MACRO {zph}    {"Z. f. Physik"}
-MACRO {zphb}   {"Z. f. Physik~B"}
-MACRO {zphd}   {"Z. f. Physik~D"}
+MACRO {zph}    {"Z.\ f.\ Physik"}
+MACRO {zphb}   {"Z.\ f.\ Physik~B"}
+MACRO {zphd}   {"Z.\ f.\ Physik~D"}
 MACRO {sse} {"Solid-State Electron."}
 MACRO {pss} {"Phys. Sol. State"}
 MACRO {nl}  {"Nano Lett."}
-MACRO {sjpp} {"Sov. J. Plasma Phys."}
-MACRO {spd}  {"Sov. Phys.--Doklady"}
-MACRO {sptp} {"Sov. Phys.--Tech. Phys."}
-MACRO       {spu}  {"Sov. Phys.--Uspekhi"}
+MACRO {sjpp} {"Sov.\ J.\ Plasma Phys."}
+MACRO {spd}  {"Sov.\ Phys.--Doklady"}
+MACRO {sptp} {"Sov.\ Phys.--Tech. Phys."}
+MACRO {spu}  {"Sov.\ Phys.--Uspekhi"}
 MACRO {ufn}  {"\CYRU\CYRF\CYRN"}
 MACRO {pu}  {"Phys.--Uspekhi"}
-MACRO {sjot} {"Sov. J. Opt. Technol."}
-MACRO {sjqe} {"Sov. J. Quantum Electron."}
-MACRO {sleb} {"Sov. Phys.--Leb. Inst. Rep."}
-MACRO {stph} {"Sov. Phys.--Techn. Phys."}
-MACRO {stphl}{"Sov. Techn. Phys. Lett."}
+MACRO {sjot} {"Sov.\ J.\ Opt.\ Technol."}
+MACRO {sjqe} {"Sov.\ J.\ Quantum Electron."}
+MACRO {sleb} {"Sov.\ Phys.--Leb.\ Inst.\ Rep."}
+MACRO {stph} {"Sov.\ Phys.--Techn.\ Phys."}
+MACRO {stphl}{"Sov.\ Techn.\ Phys.\ Lett."}
 
 READ
 
-
 FUNCTION {sortify}
 { purify$
   "l" change.case$
 }
-
 %% =====================================
 %% This version from old Gost package
 %%<*!natbib>
@@ -2359,10 +2654,9 @@
         {author sort.format.names }
         {title sort.format.title}
       if$
-     }
+     }   
   if$
 }
-
 FUNCTION {presort}%#1
 {
   author.title.sort
@@ -2421,15 +2715,7 @@
   "\providecommand*{\BibUrl}[1]{\url{#1}}"           write$ newline$
   "\providecommand{\BibAnnote}[1]{}"                 write$ newline$
   "\providecommand*{\BibEmph}[1]{#1}"                write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{---}" write$ newline$
-  %\DeclareUTFcharacter[\UTFencname]{x2014}{\cyrdash}
-  %"\let\cyrdash\textemdash" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\hbox to.8em{--\hss--}}" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\textemdash}" write$ newline$
   "\ProvideTextCommandDefault{\cyrdash}{\iflanguage{russian}{\hbox to.8em{--\hss--}}{\textemdash}}" write$ newline$
-  %%"\ProvideTextCommandDefault{\cyrdash}{%"  write$ newline$
-  %%"  \iflanguage{russian}{\hbox to.8em{--\hss--}}{%" write$ newline$
-  %%"    \iflanguage{ukrainian}{\hbox to.8em{--\hss--}}{\textemdash}}}"  write$ newline$
   "\providecommand*{\BibDash}{\ifdim\lastskip>0pt\unskip\nobreak\hskip.2em plus 0.1em\fi" write$ newline$
   "\cyrdash\hskip.2em plus 0.1em\ignorespaces}" write$ newline$
   "\renewcommand{\newblock}{\ignorespaces}" write$ newline$
@@ -2452,5 +2738,6 @@
 
 EXECUTE {end.bib}
 
+\endinput
 %%
 %% End of file `gost2008s.bst'.

Deleted: trunk/Master/texmf-dist/bibtex/bst/gost/gost780.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/gost/gost780.bst	2020-12-29 00:54:00 UTC (rev 57250)
+++ trunk/Master/texmf-dist/bibtex/bst/gost/gost780.bst	2020-12-29 02:19:51 UTC (rev 57251)
@@ -1,2229 +0,0 @@
-%%
-%% This is file `gost780.bst',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% gost.dtx  (with options: `bst')
-%% 
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%   http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
-%% 
-%% This file has the LPPL maintenance status "maintained".
-%% Maintained by Igor A. Kotelnikov.
-%% 
-%% Current version: 1.2j, 2017.01.12
-%% 
-%% Please, send bug report via e-mail:
-%%   kia999 at mail dot ru <Igor Kotelnikov>
-%% or
-%%   polyama at yahoo dot com <Maksym Polyakov>
-%% 
-
-
-
-%%
-%% This bibstyle attempts to format bibliography according to
-%% GOST 7.1-2003 for bibliographic records.
-
-ENTRY
-  { address
-    annote
-    author
-    booktitle
-    bookauthor
-    chapter
-    edition
-    editor
-    compiler
-    howpublished
-    institution
-    journal
-    key
-    %major          % new in v.1.2i, alias for speciality, not implemented
-    majorcode       % new in v.1.2i, alias for specialitycode
-    month
-    note
-    number
-    organization
-    pages
-    eid             % new in v1.2c
-    publisher
-    school          % alias for institution
-    series
-    %speciality     % new in v.1.2i, eqv. to major in biblatex-gost, not implemented yet...
-    specialitycode  % new in v.1.2i, alias of number, eqv. to majorcode in biblatex-gost
-    title
-    %medium         % new in v1.2; renamed to media.
-    media           % new in v1.2f
-    type
-    volume
-    year
-    language
-    langid          % new in v1.2c
-    booklanguage
-    %date            % not implemented yet...
-    pagetotal
-    url
-    urldate
-    isbn
-    doi
-    eprinttype      % = archivePrefix
-    eprintclass     % = primaryClass
-    eprint
-    % new in v1.2f:
-    % appear in biblatex:
-    %addendum       % not implemented yet...
-    holder          % see patent
-    location        % new in v.1.2i, alias of address
-    %subtitle       % not implemented yet...
-    titleaddon      % new in v.1.2i, see @thesis
-    %version        % not implemented yet...
-    % Appear in biblatex-gost for @patent entry:
-    authorcountry   % country of the patent authors
-    credits         % statement of responsibility, other than provided in Biblatex
-    ipc             % Code of the International Patent Classification
-    %media          % General material designation NOTE: medium in the above
-    requestnumber   % Registration number of the application to the patent document
-    publicationdate % Date of publication
-    publication     %  and information on the official gazette, which published patent
-    prioritydate    % Information about the convention priority: the date of filing of the application,
-    prioritynumber  %   number and
-    prioritycountry %   country name of convention priority.
-    requestdate     % ??
-  }
-  {}
-  { label }
-
-INTEGERS { output.state before.all mid.sentence after.sentence after.block
-after.dblslash after.slash after.colon after.semicolon }
-
-FUNCTION {init.state.consts}
-{ #0 'before.all :=
-  #1 'mid.sentence :=
-  #2 'after.sentence :=
-  #3 'after.block :=
-  #4 'after.dblslash :=
-  #5 'after.slash :=
-  #6 'after.colon :=
-  #7 'after.semicolon :=
-}
-
-STRINGS { s t }
-
-STRINGS { curlanguage }
-
-FUNCTION {change.language}
-{ booklanguage empty$
-    { "" }
-    { booklanguage  'curlanguage :=
-      "\selectlanguageifdefined{"
-      curlanguage *
-      "}" *
-    }
-  if$
-}
-
-FUNCTION {output.nonnull}
-{
-  swap$
-  output.state mid.sentence =
-    { ", " * write$ }
-    { output.state after.block =
-        { add.period$ write$
-          " \BibDash " write$
-          newline$
-          "\newblock " write$
-        }
-        { output.state before.all =
-            'write$
-            { output.state after.dblslash =
-                { "~//" * change.language * " " * write$ }
-                { output.state after.slash =
-                    { "~/ " * write$ }
-                    { output.state after.colon =
-                        { ": " * write$ }
-                        { output.state after.semicolon =
-                            { "; " * write$ }
-                        { add.period$ " " * write$ }
-                       if$
-                        }
-                      if$
-                    }
-                  if$
-                }
-              if$
-            }
-          if$
-        }
-      if$
-      mid.sentence 'output.state :=
-    }
-  if$
-}
-
-FUNCTION {output}
-{ duplicate$ empty$
-    'pop$
-    'output.nonnull
-  if$
-}
-
-FUNCTION {output.check}
-{ 't :=
-  duplicate$ empty$
-    { pop$ "empty " t * " in " * cite$ * warning$ }
-    'output.nonnull
-  if$
-}
-
-FUNCTION {fin.entry}
-{ add.period$
-  write$
-  newline$
-}
-
-FUNCTION {new.block}
-{ output.state before.all =
-    'skip$
-    { after.block 'output.state := }
-  if$
-}
-
-FUNCTION {new.dblslash}
-{ output.state before.all =
-    'skip$
-    { after.dblslash 'output.state := }
-  if$
-}
-
-FUNCTION {new.slash}
-{ output.state before.all =
-    'skip$
-    { after.slash 'output.state := }
-  if$
-}
-
-FUNCTION {new.colon}
-{ output.state before.all =
-    'skip$
-    { after.colon 'output.state := }
-  if$
-}
-
-FUNCTION {new.semicolon}
-{ output.state before.all =
-    'skip$
-    { after.semicolon 'output.state := }
-  if$
-}
-
-FUNCTION {new.sentence}
-{ output.state after.block =
-    'skip$
-    { output.state before.all =
-        'skip$
-        { after.sentence 'output.state := }
-      if$
-    }
-  if$
-}
-
-FUNCTION {add.blank}
-{ " " * before.all 'output.state :=
-}
-
-FUNCTION {not}
-{   { #0 }
-    { #1 }
-  if$
-}
-
-FUNCTION {and}
-{   'skip$
-    { pop$ #0 }
-  if$
-}
-
-FUNCTION {or}
-{   { pop$ #1 }
-    'skip$
-  if$
-}
-
-
-FUNCTION {non.stop}
-{ duplicate$
-   "}" * add.period$
-   #-1 #1 substring$ "." =
-}
-
-FUNCTION {new.block.checka}
-{ empty$
-    'skip$
-    'new.block
-  if$
-}
-
-FUNCTION {new.block.checkb}
-{ empty$
-  swap$ empty$
-  and
-    'skip$
-    'new.block
-  if$
-}
-
-FUNCTION {new.sentence.checka}
-{ empty$
-    'skip$
-    'new.sentence
-  if$
-}
-
-FUNCTION {new.sentence.checkb}
-{ empty$
-  swap$ empty$
-  and
-    'skip$
-    'new.sentence
-  if$
-}
-
-FUNCTION {new.dblslash.checka}
-{ empty$
-    'skip$
-    'new.dblslash
-  if$
-}
-
-FUNCTION {field.or.null}
-{ duplicate$ empty$
-    { pop$ "" }
-    'skip$
-  if$
-}
-
-FUNCTION {emphasize}
-{ duplicate$ empty$
-    { pop$ "" }
-    { "\BibEmph{" swap$ * "}" * }
-  if$
-}
-
-FUNCTION {bracify}
-{ duplicate$ empty$
-    { pop$ "{}" }
-    { "{" swap$ * "}" * }
-  if$
-}
-
-FUNCTION {enclose.square.brackets}
-{
-  duplicate$ empty$
-    { pop$ "" }
-    { "[" swap$ * "]" * }
-  if$
-}
-
-FUNCTION {enclose.round.brackets}
-{
-  duplicate$ empty$
-    { pop$ "" }
-    { "(" swap$ * ")" * }
-  if$
-}
-
-FUNCTION {space.word}
-{ " " swap$ * " " * }
-
-FUNCTION {bbl.edby}    %  { "\bbledby{}" }
-{ curlanguage "english" =
-   {"Ed.\ by"}
-   { curlanguage "ukrainian" =
-      {"{\cyr\CYRP\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
-      { curlanguage "russian" =
-         {"{\cyr\CYRP\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
-         { curlanguage "german" =
-            { "ed." }
-            {"language is not defined: " language "edby" * * warning$ "Ed.\ by"}
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.cmplr}
-{ curlanguage "english" =
-   { "Compiler"}
-   { curlanguage "german" =
-      { "Hrsg." }
-      { curlanguage "ukrainian" =
-         {"{\cyr\CYRU\cyrk\cyrl.}"}
-         { curlanguage "russian" =
-            {"{\cyr\CYRS\cyro\cyrs\cyrt.}"}
-            {"language is not defined: " language  "cmplr" * * warning$ "Compiler"}
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.edition} %  { "\bbledition{}" }
-{ curlanguage "english" =
-   {"edition"}
-   { curlanguage "ukrainian" =
-      {"{\cyr\cyrv\cyri\cyrd.}"}
-      { curlanguage "russian" =
-         {"{\cyr\cyri\cyrz\cyrd.}"}
-         { curlanguage "german" =
-            {" {aus.}" } %%%% { "Aufl." } ??
-            { curlanguage "italian" =
-               {"edizione"}
-               { curlanguage "french" =
-                  {"\'{e}dition"}
-                  {"language is not defined: " language  "edition" * * warning$ "edition"}
-               if$}
-            if$}
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.vvolume} %  { "\bblVolume{}" }
-{ curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
-   {"Volume"}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      { "\CYRT\cyro\cyrm" }
-      { curlanguage "german" =
-         {"{Band}"} %%%% { "Volumen" }
-         {"language is not defined: " language  "vvolume" * * warning$ "Volume"}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.vvol}    %  { "\bblVol{}" }
-{ curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
-   {"Vol."}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      {"\CYRT."}
-      { curlanguage "german" =
-         {"{Bd.}"} %%%% { "Vol." }
-         {"language is not defined: " language  "vvol" * * warning$ "Vol."}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.iissue}  %  { "\bblIssue{}" }
-{ curlanguage "english" =
-   {"Issue"}
-   { curlanguage "ukrainian" =
-      {"\CYRV\cyri\cyrp\cyru\cyrs\cyrk"}
-      { curlanguage "russian" =
-         {"\CYRV\cyrery\cyrp\cyru\cyrs\cyrk"}
-         { curlanguage "german" =
-            {"{Heft}"} %%%% { "Ausgabe" }
-            {"language is not defined: " language "iissue" * * warning$ "Issue"}
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.iiss}  %  { "\bblIss{}" }
-{ curlanguage "english" =
-   {"Iss."}
-   { curlanguage "ukrainian" =
-      {"\CYRV\cyri\cyrp."}
-      { curlanguage "russian" =
-         {"\CYRV\cyrery\cyrp."}
-         { curlanguage "german" =
-            {"{H.}"}
-            {"language is not defined: " language "iiss" * * warning$ "Iss."}
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.of}      %  { "\bblof{}" }
-{ curlanguage "english" =
-   {"of"}
-   { curlanguage "german" =
-      { "von" }
-      { curlanguage "ukrainian" =
-         { "{\cyr\cyrii\cyrz}" }
-         { curlanguage "russian" =
-            { "{\cyr\cyri\cyrz}" }
-            {"language is not defined: " language "of" * * warning$ "of"}
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.etal}      %  { "\bblof{}" }
-{ curlanguage "english" =
-   {"et~al."}
-   { curlanguage "german" =
-      { "u.~a." }
-      { curlanguage "ukrainian" =
-         {"{\cyr\cyrt\cyra~\cyrii\cyrn.}"}
-         { curlanguage "russian" =
-            {"{\cyr\cyri~\cyrd\cyrr.}"}
-            {"language is not defined: " language  "et~al" * * warning$ "et~al."}
-         if$}
-      if$}
-   if$}
-if$}
-
-
-FUNCTION {bbl.nnumber} %  { "\bblNumber{}" }
-{ curlanguage "english" =
-   {"Number"}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      { "\CYRN\cyro\cyrm\cyre\cyrr" }
-      { curlanguage "german" =
-         {"{Heft}"} %%% { "Anzahl" }
-         {"language is not defined: " language  "nnumber" * * warning$ "Number"}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.number}  %  { "\bblnumber{}" }
-{ curlanguage "english" =
-   {"number"}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      {"{\cyr\cyrn\cyro\cyrm\cyre\cyrr}"}
-      { curlanguage "german" =
-         {"{Heft}"} %%% { "anzahl" }???
-         {"language is not defined: " language  "number" * * warning$ "number"}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.nr}     %   { "\bblno{}" }
-{ curlanguage "english" =
-   {"no."}
-   { curlanguage "italian" =
-      { "no" }
-      { curlanguage "ukrainian" = curlanguage "russian" = or
-         { "{\cyr\textnumero}" }
-         { curlanguage "german" =
-            {"{H.}"} %%% { "an." }
-            {"language is not defined: " language "nr" * * warning$ "no."}
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.nnr}     %   { "\bblno{}" }
-{ curlanguage "english" =
-   {"No."}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      { "{\cyr\textnumero}" }
-      { curlanguage "german" =
-         {"{H.}"} %%% { "an." }
-         {"language is not defined: " language  "nnr" * * warning$ "No."}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.in}    %    { "\bblin{}" }
-{ curlanguage "english" = curlanguage "german" = or
-   {"in"}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      { "{\cyr\cyrv}" }
-      {"language is not defined: " language  "in" * * warning$ "in"}
-   if$}
-if$}
-
-FUNCTION {bbl.iin}  %     { "\bblIn{}" }
-{ curlanguage "english" = curlanguage "german" = or
-   {"In"}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      { "\CYRV" }
-      {"language is not defined: " language  "iin" * * warning$ "In"}
-   if$}
-if$}
-
-FUNCTION {bbl.pages}    % { "\bblpp." }
-{ curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
-   {"p."} %%% {"pp."}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      {"{\cyr\cyrs.}"}
-      { curlanguage "german" =
-         {"S."} %%%% { "s." }
-         {"language is not defined: " language  "pages" * * warning$ "p."}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.page}   %   { "\bblp."
-{ curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
-   {"p."}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      {"{\cyr\cyrs.}"}
-      { curlanguage "german" =
-         {"S."} %%%% { "s." }
-         {"language is not defined: " language  "page" * * warning$ "p."}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.ppages}%    { "\bblPp." }
-{ curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
-   {"P."} %%%% { "Pp." }
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      {"{\cyr\CYRS.}"}
-      { curlanguage "german" =
-         {"S."}
-         {"language is not defined: " language "ppages" * * warning$ "P."}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.ppage}  %   { "\bblP." }
-{ curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
-   {"P."}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      {"{\cyr\CYRS.}"}
-      { curlanguage "german" =
-         {"S."}
-         {"language is not defined: " language  "ppage" * * warning$ "P."}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.url}
-{ curlanguage "english" =
-   {"Access mode"}
-   { curlanguage "ukrainian" =
-      { "{\CYRR\cyre\cyrzh\cyri\cyrm\ \cyrd\cyro\cyrs\cyrt\cyru\cyrp\cyru}" }
-      { curlanguage "russian" =
-         { "{\CYRR\cyre\cyrzh\cyri\cyrm\ \cyrd\cyro\cyrs\cyrt\cyru\cyrp\cyra}" }
-         { curlanguage "german" =
-            { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
-         if$}
-      if$}
-   if$}
-if$}
-FUNCTION {bbl.urldate}
-{ curlanguage "english" =
-   {"online; accessed"}
-   { curlanguage "ukrainian" =
-      { "{\cyrd\cyra\cyrt\cyra\ \cyrz\cyrv\cyre\cyrr\cyrn\cyre\cyrn\cyrn\cyrya}" }
-      { curlanguage "russian" =
-         { "{\cyrd\cyra\cyrt\cyra\ \cyro\cyrb\cyrr\cyra\cyrshch\cyre\cyrn\cyri\cyrya}" }
-         { curlanguage "german" =
-            { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.techreport} % rename to bbl.techreport
-{ curlanguage "english" =
-   { "Rep." }
-   { curlanguage "german" =
-      { "Bericht" }
-      { curlanguage "russian" =
-         { "{\cyr\CYRO\cyrt\cyrch\cyre\cyrt}" }
-         { "language is not defined: " language "techrep" * * warning$ "Rep." }
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.mathesis}
-{ curlanguage "english" =
-   { "Master's thesis" }
-   { curlanguage "german" =
-      { "Diss.~Mag." }
-      { curlanguage "russian" =
-        { "{\cyr\CYRK\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
-          "\cyro\cyrn\cyrn\cyra\cyrya\ \cyrr\cyra\cyrb\cyro\cyrt\cyra\ " *
-          "\cyrm\cyra\cyrg\cyri\cyrs\cyrt\cyrr\cyra}" * }
-         { "language is not defined: " language "mthesis" * * warning$ "Master's thesis" }
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.phdthesis}
-{ curlanguage "english" =
-   { "Ph.\,D. thesis" }
-   { curlanguage "german" =
-      { "Diss.~Ph.\,D." }
-      { curlanguage "russian" =
-         { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrk\cyra\cyrn\cyrd. "
-           "\cyrn\cyra\cyru\cyrk}" * }
-         { curlanguage "french" =
-           { "Th\`{e}se de doctorat" }
-           { "language is not defined: " language "phdthesis" * * warning$ "Ph.\,D. thesis" }
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.docthesis}
-{ curlanguage "english" =
-   { "Dr.\,Sci. dissertation" }
-   { curlanguage "german" =
-      { "Diss.~Dr." }
-      { curlanguage "russian" =
-         { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrd-\cyrr\cyra\ "
-           "\cyrn\cyra\cyru\cyrk}" * }
-         { "language is not defined: " language "docthesis" * * warning$ "Dr.\,Sci. dissertation" }
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.thesis.type}
-{ type "mathesis" =
-  { bbl.mathesis }
-  { type "phdthesis" =
-    { bbl.phdthesis }
-    { type "docthesis" =
-      { bbl.docthesis }
-      %%{ "!!!" type * "t" change.case$ }
-      { type "t" change.case$ }
-    if$}
-  if$}
-if$}
-
-FUNCTION {bbl.nnoaddress}
-{ curlanguage "english" =
-   { "S.\ l." }
-   { curlanguage "russian" =
-      { "{\cyr\CYRB.\ \cyrm.}" }
-      { "language is not defined: " language "nnoaddress" * * warning$ "S.\ l." }
-   if$}
-if$}
-
-FUNCTION {bbl.nopublisher}
-{ curlanguage "english" =
-   { "s.\ n." }
-   { curlanguage "russian" =
-      { "{\cyr\cyrb.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "s.\ n." }
-   if$}
-if$}
-
-FUNCTION {bbl.nnopublisher}
-{ curlanguage "english" =
-   { "S.\ n." }
-   { curlanguage "russian" =
-      { "{\cyr\CYRB.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "S.\ n." }
-   if$}
-if$}
-
-FUNCTION {bbl.media.text}
-{ curlanguage "english" =
-   { "Text" }
-   { curlanguage "russian" = curlanguage "ukrainian" = or
-      { "{\cyr\CYRT\cyre\cyrk\cyrs\cyrt}" }
-      { "language is not defined: " language "media" * * warning$ "Text" }
-   if$}
-if$}
-
-FUNCTION {bbl.media.eresource}
-{ curlanguage "english" =
-   { "Electronic resource" }
-   { curlanguage "russian" =
-      { "{\cyr\CYREREV\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyrery\cyrishrt\ "
-        "\cyrr\cyre\cyrs\cyru\cyrr\cyrs}" * }
-      { curlanguage "ukrainian" =
-        { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
-          "\cyrr\cyre\cyrs\cyru\cyrr\cyrs}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.media.online}
-{ curlanguage "english" =
-   { "Electronic resource online" }
-   { curlanguage "russian" =
-      { "{\cyr\CYREREV\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyrery\cyrishrt\ "
-        "\cyrr\cyre\cyrs\cyru\cyrr\cyrs\ \cyro\cyrn\cyrl\cyra\cyrishrt\cyrn}" * }
-      { curlanguage "ukrainian" =
-        { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
-          "\cyrr\cyre\cyrs\cyru\cyrr\cyrs\ \cyro\cyrn\cyrl\cyra\cyrishrt\cyr}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.chief}
-{ curlanguage "english" =
-   { "chief" }
-   { curlanguage "russian" =
-      { "\cyrr\cyru\cyrk." }
-      { curlanguage "ukrainian" =
-        { "\cyrr\cyru\cyrk." }
-        { "language is not defined: " language "chief" * * warning$ "chief" }
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.executor}
-{ curlanguage "english" =
-   { "Executor" }
-   { curlanguage "russian" =
-      { "{\cyr\cyri\cyrs\cyrp\cyro\cyrl\cyrn.}" }
-      { curlanguage "ukrainian" =
-        { "{\cyr\cyrv\cyri\cyrk\cyro\cyrn\cyra\cyrv\cyre\cyrc\cyrsftsn}" }
-        { "language is not defined: " language "executor" * * warning$ "executor" }
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.media}
-{ media "online" =
-   { bbl.media.online }
-   { media "eresource" =
-     { bbl.media.eresource }
-     { bbl.media.text }
-   if$}
-if$}
-
-FUNCTION {bbl.req}
-{
-  curlanguage "english" =
-    { "req." }
-    { curlanguage "german" =
-      { "ang." }
-      { curlanguage "russian" =
-        { "{\cyr\cyrz\cyra\cyrya\cyrv\cyrl.}" }
-        { "language is not defined: " language "req" * * warning$ "req" }
-      if$
-      }
-    if$
-    }
-  if$
-}
-
-FUNCTION {bbl.publ}
-{
-  curlanguage "english" =
-    { "publ." }
-    { curlanguage "german" =
-      { "ausg." }
-      { curlanguage "russian" =
-        { "{\cyr\cyro\cyrp\cyru\cyrb\cyrl.}" }
-        { "language is not defined: " language "publication" * * warning$ "publication" }
-      if$
-      }
-    if$
-    }
-  if$
-}
-
-FUNCTION {bbl.priority}
-{
-  curlanguage "english" =
-    { "priority" }
-    { curlanguage "german" =
-      { "Prioritat" }
-      { curlanguage "russian" =
-        { "{\cyr\cyrp\cyrr\cyri\cyro\cyrr\cyri\cyrt\cyre\cyrt}" }
-        { "language is not defined: " language "priority" * * warning$ "priority" }
-      if$
-      }
-    if$
-    }
-  if$
-}
-
-INTEGERS { nameptr namesleft numnames }
-
-
-FUNCTION {format.names}
-{
-  #1 "{vv~}{ll}{~jj}{,~f.}" format.name$
-}
-
-
-FUNCTION {format.names.rev}
-{
-  's :=
-  #1 'nameptr :=
-  s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr
-      %"{f.}{~vv}{~ll}{, jj}" format.name$ 't :=
-      "{ff}{~vv}{~ll}{, jj}" format.name$ 't :=
-      nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
-          if$
-          namesleft #1 >
-            { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
-                { " " * bbl.etal * }
-                { ", " * t * }
-              if$
-            }
-          if$
-        }
-        't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
-  while$
-}
-
-
-FUNCTION {format.authors}
-{ author empty$
-    { "" }
-    { author format.names emphasize}
-  if$
-}
-
-
-FUNCTION {format.bookauthors}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names}
-  if$
-}
-
-FUNCTION {format.authors.after}
-{ author empty$
-    { "" }
-    { author format.names.rev}
-  if$
-}
-
-FUNCTION {format.bookauthors.after}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names.rev}% always cuts to 4 persons
-  if$
-}
-
-FUNCTION {format.editors.after}
-{ editor empty$
-    { "" }
-    { bbl.edby "\ " * editor format.names.rev * }
-  if$
-}
-
-FUNCTION {format.chief.after}
-{ editor empty$
-    { "" }
-    { bbl.chief "\ " * editor format.names.rev * }
-  if$
-}
-
-FUNCTION {format.executor.after}
-{ author empty$
-    { "" }
-    { bbl.executor ": " * author format.names.rev * }
-  if$
-}
-
-FUNCTION {format.compiler.after}
-{ compiler empty$
-    { "" }
-    { bbl.cmplr "\ " * compiler format.names.rev * }
-  if$
-}
-
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    { title "t" change.case$ }
-  if$
-}
-
-FUNCTION {format.month}
-{ month empty$
-    { "" }
-    { curlanguage "russian" =
-        { month "Jan." =
-            { "\CYRYA\cyrn\cyrv." }
-        { month "Feb." =
-            { "\CYRF\cyre\cyrv\cyrr." }
-        { month "Mar." =
-            { "\CYRM\cyra\cyrr\cyrt" }
-        { month "Apr." =
-            { "\CYRA\cyrp\cyrr." }
-        { month "May" =
-            { "\CYRM\cyra\cyrishrt" }
-        { month "Jun." =
-            { "\CYRI\cyryu\cyrn\cyrsftsn" }
-        { month "Jul." =
-            { "\CYRI\cyryu\cyrl\cyrsftsn" }
-        { month "Aug." =
-            { "\CYRA\cyrv\cyrg\." }
-        { month "Sep." =
-            { "\CYRS\cyre\cyrn\cyrt." }
-        { month "Oct." =
-            { "\CYRO\cyrk\cyrt." }
-        { month "Nov." =
-            { "\CYRN\cyro\cyrya\cyrb." }
-        { month "Dec." =
-            { "\CYRD\cyre\cyrk." }
-            { month }
-            if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
-        { month }
-        if$}
-    if$
-}
-FUNCTION {format.date}
-{ year empty$
-    { month empty$
-        { "" }
-        { "there's a month but no year in " cite$ * warning$
-          format.month
-        }
-      if$
-    }
-    { month empty$
-        'year
-        { year ". \BibDash " format.month * * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {address.or.location}
-{
-  address empty$
-    { location }
-    { address }
-  if$
-}
-
-FUNCTION {specialitycode.or.number}
-{
-  specialitycode empty$
-    { number }
-    { specialitycode }
-  if$
-}
-
-FUNCTION {institution.or.school}
-{
-  institution empty$
-    { school}
-    { institution }
-  if$
-}
-FUNCTION {output.address.publisher}
-{
-  address empty$ location empty$ and
-    'skip$
-    { address.or.location output
-      publisher empty$
-        'skip$
-        { new.colon }
-      if$
-    }
-  if$
-  publisher output
-}
-
-FUNCTION {output.address.publisher.date}
-{
-  output.address.publisher
-  format.date output
-}
-
-FUNCTION {output.bibitem}
-{ newline$
-  "\bibitem" write$
-  cite$ bracify write$
-  newline$
-  langid empty$
-    { language empty$
-        { "english" 'curlanguage := }
-        { language  'curlanguage := }
-      if$
-    }
-    { langid  'curlanguage := }
-  if$
-  "\selectlanguageifdefined" curlanguage bracify * write$
-  newline$
-  ""
-  before.all 'output.state :=
-}
-
-
-FUNCTION {n.dashify}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-        { t #1 #2 substring$ "--" = not
-            { "--" *
-              t #2 global.max$ substring$ 't :=
-            }
-            {   { t #1 #1 substring$ "-" = }
-                { "-" *
-                  t #2 global.max$ substring$ 't :=
-                }
-              while$
-            }
-          if$
-        }
-        { t #1 #1 substring$ *
-          t #2 global.max$ substring$ 't :=
-        }
-      if$
-    }
-  while$
-}
-
-FUNCTION {word.in}
-{ bbl.iin
-  " " * }
-
-FUNCTION {format.btitle}
-{ title
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
-    { "~" }
-    { " " }
-  if$
-  swap$ * *
-}
-
-FUNCTION {tie.connect}
- {"~"
-  swap$ * *
- }
-
-FUNCTION {either.or.check}
-{ empty$
-    'pop$
-    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
-  if$
-}
-
-FUNCTION {format.bvolume}
-{ volume empty$
-    { "" }
-    { bbl.vvol volume tie.connect
-      series empty$
-        'skip$
-        { bbl.of space.word * series emphasize * }
-      if$
-      "volume and number" number either.or.check
-    }
-  if$
-}
-
-FUNCTION {format.number.series}
-{ volume empty$
-    { number empty$
-        { series field.or.null }
-        { series empty$
-            { "there's a number but no series in " cite$ * warning$
-              bbl.nnr }
-            {
-              %new.dblslash
-              new.sentence
-              series
-              bbl.nr
-              tie.or.space.connect}
-          if$
-          number tie.or.space.connect
-        }
-      if$
-    }
-    { "" }
-  if$
-}
-
-FUNCTION {is.num}
-{ chr.to.int$
-  duplicate$ "0" chr.to.int$ < not
-  swap$ "9" chr.to.int$ > not and
-}
-
-FUNCTION {extract.num}
-{ duplicate$ 't :=
-  "" 's :=
-  { t empty$ not }
-  { t #1 #1 substring$
-    t #2 global.max$ substring$ 't :=
-    duplicate$ is.num
-      { s swap$ * 's := }
-      { pop$ "" 't := }
-    if$
-  }
-  while$
-  s empty$
-    'skip$
-    { pop$ s }
-  if$
-}
-
-
-FUNCTION {convert.edition}
-{ edition
-}
-
-FUNCTION {format.edition}
-{ edition empty$
-    { "" }
-    { output.state mid.sentence =
-        { convert.edition "l" change.case$ " " * bbl.edition * }
-        { convert.edition "t" change.case$ " " * bbl.edition * }
-      if$
-    }
-  if$
-}
-
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
-  #0 'multiresult :=
-    { multiresult not
-      t empty$ not
-      and
-    }
-    { t #1 #1 substring$
-      duplicate$ "-" =
-      swap$ duplicate$ "," =
-      swap$ "+" =
-      or or
-        { #1 'multiresult := }
-        { t #2 global.max$ substring$ 't := }
-      if$
-    }
-  while$
-  multiresult
-}
-
-%%FUNCTION {format.pages}
-%%{ pages empty$
-%%    { "" }
-%%    { pages multi.page.check
-%%        { bbl.ppages pages n.dashify tie.connect }
-%%        { bbl.ppage pages tie.connect }
-%%      if$
-%%    }
-%%  if$
-%%}
-FUNCTION {format.pages}
-{ eid empty$
-    {
-      pages empty$
-        { "" }
-        { pages multi.page.check
-            { bbl.ppages pages n.dashify tie.connect }
-            { bbl.ppage pages tie.connect }
-          if$
-        }
-      if$
-    }
-    { eid multi.page.check
-        { bbl.ppages eid n.dashify tie.connect }
-        { bbl.ppage eid tie.connect }
-      if$
-    }
-  if$
-}
-
-%%FUNCTION {format.pages.page}
-%%{ pages empty$
-%%    { pagetotal empty$
-%%      { "" }
-%%      { pagetotal bbl.pages tie.connect }
-%%    if$}
-%%    { format.pages}
-%%  if$
-%%}
-FUNCTION {format.pages.page}
-{ eid empty$
-    { pages empty$
-        { pagetotal empty$
-            { "" }
-            { pagetotal bbl.pages tie.connect }
-          if$
-        }
-        { format.pages}
-      if$
-    }
-    { format.pages }
-  if$
-}
-
-FUNCTION {format.vol.num.pages}
-{ volume field.or.null
-  number empty$
-    'skip$
-    {
-      ", no." number tie.or.space.connect *
-      volume empty$
-        { "there's a number but no volume in " cite$ * warning$ }
-        'skip$
-      if$
-    }
-  if$
-  pages empty$
-    'skip$
-    { duplicate$ empty$
-        { pop$ format.pages }
-        { ": " * pages n.dashify * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {format.volume}
-{ volume empty$
-    { "" }
-    { bbl.vvol volume tie.or.space.connect }
-  if$
-}
-
-FUNCTION {format.number}
-{ number empty$
-    { "" }
-    { bbl.nr number tie.or.space.connect }
-  if$
-}
-
-
-FUNCTION {empty.misc.check}
-{ author empty$ title empty$ howpublished empty$
-  month empty$ year empty$ note empty$
-  and and and and and
-  key empty$ not and
-    { "all relevant fields are empty in " cite$ * warning$ }
-    'skip$
-  if$
-}
-
-%%<!utf8>      bbl.thesis.type "t" change.case$
-%%<utf8>      bbl.thesis.type
-FUNCTION {format.thesis.type}
-{ type empty$
-    'skip$
-    { pop$
-      bbl.thesis.type
-    }
-  if$
-}
-%%<!utf8>    { "t" change.case$ }
-%%<utf8>    { "" }
-
-FUNCTION {format.techreport.type}
-{ type empty$
-   { bbl.techreport }
-   'type
-  if$
-}
-
-FUNCTION {author.before}
-{
-  author empty$
-    'skip$
-    {author num.names$ #4 <
-      {format.authors output
-       new.sentence}
-      'skip$
-    if$}
-  if$
-}
-
-%%<*!long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    {bookauthor num.names$ #4 <
-%%      {format.bookauthors output
-%%       new.sentence}
-%%      'skip$
-%%    if$}
-%%  if$
-%%}
-%%</!long>
-%%<*long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    { format.bookauthors output
-%%      new.sentence
-%%    }
-%%  if$
-%%}
-%%</long>
-
-FUNCTION {author.after}
-{
-  author empty$
-    'skip$
-    {format.authors.after output
-       new.semicolon }
-  if$
-}
-
-FUNCTION {bookauthor.after}
-{
-  bookauthor empty$
-    'skip$
-    {format.bookauthors.after output
-       new.semicolon }
-  if$
-}
-
-FUNCTION {editor.organization.after}
-{
-  compiler empty$
-    {}
-    { format.compiler.after  output
-    new.semicolon
-    }
-  if$
-  editor empty$
-    {}
-    { format.editors.after  output
-    new.semicolon
-    }
-  if$
-  organization empty$
-    {}
-    {organization output
-    new.semicolon
-    }
-  if$
-}
-
-FUNCTION {format.url}
-{ url empty$
-    { "" }
-    {
-      "\BibUrl{ " url * "}" *
-      urldate empty$
-        { "" }
-        { " (" bbl.urldate * ": " * urldate * ")" * }
-      if$ *
-    }
-  if$
-}
-
-FUNCTION {output.url}
-{
-  url empty$
-    'skip$
-    { format.url output }
-  if$
-}
-
-FUNCTION {format.annote}
-{ annote empty$
-    { "" }
-{ after.sentence 'output.state :=
-  "\BibAnnote{" annote add.period$ * "}" *
-}
-  if$
-}
-
-FUNCTION {format.isbn}
-{
-  isbn empty$
-    { "" }
-    { "ISBN:~\href{http://isbndb.com/search-all.html?kw=" isbn *
-      "}{" * isbn * "}" *
-    }
-  if$
-}
-
-FUNCTION {add.doi} { }
-
-FUNCTION {add.media}
-{ duplicate$ empty$
-    'skip$
-    { media empty$
-        'skip$
-        { " " * bbl.media enclose.square.brackets * }
-      if$
-    }
-  if$
-}
-
-
-FUNCTION {output.eprint.url}
-{
-    format.url output
-}
-
-FUNCTION {add.number}
-{ duplicate$ empty$
-    { "" }
-    { bbl.nr swap$ tie.or.space.connect }
-  if$
-}
-
-FUNCTION {format.type.number}
-{
-  type empty$
-    { "" }
-    {
-      number empty$
-      { "" }
-      { type number tie.or.space.connect }
-    if$
-    }
-  if$
-}
-
-FUNCTION {format.requestdate}
-{ requestdate empty$
-    { "" }
-    { bbl.req requestdate tie.or.space.connect }
-  if$
-}
-
-FUNCTION {format.publicationdate}
-{ publicationdate empty$
-    { "" }
-    { bbl.publ publicationdate tie.or.space.connect }
-  if$
-}
-
-FUNCTION {format.prioritydate}
-{ prioritydate empty$
-    { "" }
-    { bbl.priority prioritydate tie.or.space.connect }
-  if$
-}
-
-FUNCTION {article}
-{
-  output.bibitem
-  author.before
-  format.title add.media "title" output.check
-  new.slash
-  author.after
-  new.dblslash
-  journal emphasize add.doi "journal" output.check % new in v.2
-  new.block
-  format.date "year" output.check
-  new.block
-  format.volume output
-  format.number output
-  new.block
-  format.pages.page output
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {book}
-{
-  output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
-  new.slash
-  author.after
-  editor.organization.after
-  new.sentence
-  format.number.series output
-  new.block
-  format.edition output
-  new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
-  format.bvolume output
-  new.block
-  format.pages.page output
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {booklet}
-{
-  output.bibitem
-  author.before
-  format.title add.doi add.media "title" output.check
-  new.slash
-  author.after
-  editor.organization.after
-  new.block
-  howpublished output
-  address.or.location output
-  format.date "year" output.check
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {inbook}
-{
-  output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
-  new.slash
-  author.after
-  new.dblslash
-  booktitle "booktitle" output.check
-  new.slash
-  bookauthor.after
-  editor.organization.after
-  new.block
-  format.edition output
-  new.block
-  format.number.series output
-  new.sentence
-  output.address.publisher
-  format.date "year" output.check
-  new.block
-  format.bvolume output
-  new.block
-  format.pages.page output
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {incollection}
-{
-  output.bibitem
-  author.before
-  new.sentence
-  format.title add.doi add.media "title" output.check
-  new.slash
-  author.after
-  new.dblslash
-  booktitle "booktitle" output.check
-  new.slash
-  editor.organization.after
-  new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
-  format.bvolume output
-  format.number.series output
-  new.block
-  format.pages.page output
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {proceedings}
-{
-  output.bibitem
-  format.btitle add.doi add.media "title" output.check
-  new.slash
-  editor.organization.after
-  new.block
-  format.bvolume output
-  format.number.series output
-  output.address.publisher
-  format.date "year" output.check
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {inproceedings}
-{ output.bibitem
-  author.before
-  new.sentence
-  format.title add.doi add.media "title" output.check
-  new.slash
-  author.after
-  new.dblslash
-  booktitle "booktitle" output.check
-  new.slash
-  editor.organization.after
-  new.block
-  format.bvolume output
-  format.number.series output
-  new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
-  format.pages.page output
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {manual}
-{ output.bibitem
-  author empty$
-    { organization empty$
-        'skip$
-        { organization output.nonnull
-          address output
-        }
-      if$
-    }
-    { format.authors output.nonnull }
-  if$
-  new.block
-  format.btitle add.doi add.media "title" output.check
-  author empty$
-    { organization empty$
-    {
-          address new.block.checka
-          address output
-        }
-        'skip$
-      if$
-    }
-    {
-      organization address new.block.checkb
-      organization output
-      address output
-    }
-  if$
-  format.edition output
-  format.date "year" output.check
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {patent}
-{
-  output.bibitem
-  title add.media output.nonnull
-  new.colon
-  format.type.number output
-  add.blank
-  address.or.location output
-  new.colon
-  ipc output
-  new.slash
-  format.authors.after "author" output.check
-  add.blank
-  authorcountry enclose.round.brackets output.nonnull
-  new.semicolon
-  holder output.nonnull
-  new.semicolon
-  credits output.nonnull
-  new.block
-  requestnumber add.number output
-  new.semicolon
-  format.requestdate output
-  new.semicolon
-  format.publicationdate output
-  publication output
-  new.semicolon
-  format.prioritydate output
-  prioritynumber output
-  prioritycountry enclose.round.brackets output
-  new.block
-  note output
-  new.sentence
-  output.url
-  format.annote output
-  new.block
-  pagetotal output
-  fin.entry
-}
-
-FUNCTION {misc}
-{ output.bibitem
-  format.authors output
-  title howpublished new.sentence.checkb
-  format.title add.media output
-  howpublished new.block.checka
-  howpublished output
-  new.block
-  format.date "year" output.check
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {unpublished}
-{ output.bibitem
-  author.before
-  format.btitle "title" output.check
-  new.slash
-  author.after
-  editor.organization.after
-  new.block
-  format.date "year" output.check
-  new.block
-  note "note" output.check
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {online}
-{ output.bibitem
-  format.authors output
-  title howpublished new.sentence.checkb
-  format.title add.doi add.media "title" output.check
-  howpublished new.dblslash.checka
-  howpublished output
-  editor.organization.after
-  new.sentence
-  new.block
-  output.address.publisher
-  format.date output
-  new.block
-  output.eprint.url
-  new.sentence
-  note output
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {internet}   {online}
-FUNCTION {www}        {online}
-FUNCTION {webpage}    {online}
-FUNCTION {electronic} {online}
-FUNCTION {thesis}
-{ output.bibitem
-  format.authors "author" output.check
-  new.sentence
-  format.btitle "title" output.check
-  new.colon
-  bbl.phdthesis format.thesis.type output.nonnull
-  new.slash
-  %institution "institution" output.check
-  institution.or.school "institution/school" output.check
-  new.block
-  output.address.publisher.date
-  new.block
-  format.pages.page output
-  note output
-  new.sentence
-  format.url output
-  format.annote output
-  fin.entry
-}
-
-%%  format.techrep.type.number output.nonnull
-%%  format.url output
-FUNCTION {report}
-{
-  output.bibitem
-  format.title add.doi add.media "title" output.check
-  new.colon
-  type "type" output.check
-  new.colon
-  number output
-  new.slash
-  %institution "institution" output.check
-  institution.or.school "institution/school" output.check
-  new.semicolon
-  format.chief.after output % from editor field
-  new.semicolon
-  format.executor.after output % from author field
-  new.block
-  address.or.location output
-  new.colon
-  organization output
-  format.date "year" output.check
-  new.block                % v.2
-  format.pages.page output % v.2
-  new.sentence % или new.block ?
-  output.eprint.url
-  new.block
-  note output
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {phdthesis}
-{ output.bibitem
-  format.authors "author" output.check
-  new.sentence
-  format.btitle "title" output.check
-  new.colon
-  bbl.phdthesis format.thesis.type output.nonnull
-  new.slash
-  %institution "institution" output.check
-  institution.or.school "institution/school" output.check
-  new.block
-  output.address.publisher.date
-  new.block
-  format.pages.page output
-  note output
-  new.sentence
-  format.url output
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {mastersthesis}
-{ output.bibitem
-  format.authors "author" output.check
-  new.sentence
-  format.btitle "title" output.check
-  new.colon
-  bbl.mathesis format.thesis.type output.nonnull
-  new.slash
-  %institution "institution" output.check
-  institution.or.school "institution/school" output.check
-  new.block
-  output.address.publisher.date
-  new.block
-  format.pages.page output
-  note output
-  new.sentence
-  format.url output
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {docthesis}
-{ output.bibitem
-  format.authors "author" output.check
-  new.sentence
-  format.btitle "title" output.check
-  new.colon
-  bbl.docthesis format.thesis.type output.nonnull
-  new.slash
-  %institution "institution" output.check
-  institution.or.school "institution/school" output.check
-  new.block
-  output.address.publisher.date
-  new.block
-  format.pages.page output
-  note output
-  new.sentence
-  format.url output
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {conference} { inproceedings }
-
-%%  format.url output
-
-FUNCTION {techreport}
-{
-  output.bibitem
-  format.title add.doi add.media "title" output.check
-  new.colon
-  format.techreport.type output
-  new.colon
-  number output
-  new.slash
-  %institution "institution" output.check
-  institution.or.school "institution/school" output.check
-  new.semicolon
-  format.chief.after output % from editor field
-  new.semicolon
-  format.executor.after output % from author field
-  new.block
-  address.or.location output
-  new.colon
-  organization output
-  format.date "year" output.check
-  new.block                % v.2
-  format.pages.page output % v.2
-  new.sentence % или new.block ?
-  output.eprint.url
-  new.block
-  note output
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {default.type} { misc }
-
-MACRO {jan} {"Jan."}
-MACRO {feb} {"Feb."}
-MACRO {mar} {"Mar."}
-MACRO {apr} {"Apr."}
-MACRO {may} {"May"}
-MACRO {jun} {"Jun."}
-MACRO {jul} {"Jul."}
-MACRO {aug} {"Aug."}
-MACRO {sep} {"Sep."}
-MACRO {oct} {"Oct."}
-MACRO {nov} {"Nov."}
-MACRO {dec} {"Dec."}
-MACRO {aa}{"Astron. \& Astrophys."}
-MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."}
-MACRO {aj} {"Astron. J."}
-MACRO {aph} {"Acta Phys."}
-MACRO {advp} {"Adv. Phys."}
-MACRO {ajp} {"Amer. J. Phys."}
-MACRO {ajm} {"Amer. J. Math."}
-MACRO {amsci} {"Amer. Sci."}
-MACRO {anofd} {"Ann. Fluid Dyn."}
-MACRO {am} {"Ann. Math."}
-MACRO {ap} {"Ann. Phys. (NY)"}
-MACRO {adp} {"Ann. Phys. (Leipzig)"}
-MACRO {ao} {"Appl. Opt."}
-MACRO {apl} {"Appl. Phys. Lett."}
-MACRO {app} {"Astroparticle Phys."}
-MACRO {apj} {"Astrophys. J."}
-MACRO {apjsup} {"Astrophys. J. Suppl."}
-MACRO {apss} {"Astrophys. Space Sci."}
-MACRO {araa} {"Ann. Rev. Astron. Astrophys."}
-MACRO {baas} {"Bull. Amer. Astron. Soc."}
-MACRO {baps} {"Bull. Amer. Phys. Soc."}
-MACRO {cmp} {"Comm. Math. Phys."}
-MACRO {cpam} {"Commun. Pure Appl. Math."}
-MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"}
-MACRO {cpc} {"Comp. Phys. Comm."}
-MACRO {cqg} {"Class. Quant. Grav."}
-MACRO {cra} {"C. R. Acad. Sci. A"}
-MACRO {fed} {"Fusion Eng. \& Design"}
-MACRO {ft} {"Fusion Tech."}
-MACRO {grg} {"Gen. Relativ. Gravit."}
-MACRO {ieeens} {"IEEE Trans. Nucl. Sci."}
-MACRO {ieeeps} {"IEEE Trans. Plasma Sci."}
-MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"}
-MACRO {ip} {"Infrared Phys."}
-MACRO {irp} {"Infrared Phys."}
-MACRO {jap} {"J. Appl. Phys."}
-MACRO {jasa} {"J. Acoust. Soc. America"}
-MACRO {jcp} {"J. Comp. Phys."}
-MACRO {jchp} {"J. Chem. Phys."}
-MACRO {jetp} {"Sov. Phys.--JETP"}
-MACRO {jfe} {"J. Fusion Energy"}
-MACRO {jfm} {"J. Fluid Mech."}
-MACRO {jmp} {"J. Math. Phys."}
-MACRO {jne} {"J. Nucl. Energy"}
-MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."}
-MACRO {jnm} {"J. Nucl. Mat."}
-MACRO {jpc} {"J. Phys. Chem."}
-MACRO {jpp} {"J. Plasma Phys."}
-MACRO {jpsj} {"J. Phys. Soc. Japan"}
-MACRO {jsi} {"J. Sci. Instrum."}
-MACRO {jvst} {"J. Vac. Sci. \& Tech."}
-MACRO {nat} {"Nature"}
-MACRO {nature} {"Nature"}
-MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"}
-MACRO {nf} {"Nucl. Fusion"}
-MACRO {nim} {"Nucl. Inst. \& Meth."}
-MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."}
-MACRO {np} {"Nucl. Phys."}
-MACRO {npb} {"Nucl. Phys. B"}
-MACRO {nt/f} {"Nucl. Tech./Fusion"}
-MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"}
-MACRO {inc} {"Nuovo Cimento"}
-MACRO {nc} {"Nuovo Cimento"}
-MACRO {pf} {"Phys. Fluids"}
-MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."}
-MACRO {pfb} {"Phys. Fluids B: Plasma Phys."}
-MACRO {pl} {"Phys. Lett."}
-MACRO {pla} {"Phys. Lett. A"}
-MACRO {plb} {"Phys. Lett. B"}
-MACRO {prep} {"Phys. Rep."}
-MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"}
-MACRO {pp} {"Phys. Plasmas"}
-MACRO {pop} {"Phys. Plasmas"}
-MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"}
-MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"}
-MACRO {prl} {"Phys. Rev. Lett."}
-MACRO {pr} {"Phys. Rev."}
-MACRO {physrev} {"Phys. Rev."}
-MACRO {pra} {"Phys. Rev. A"}
-MACRO {prb} {"Phys. Rev. B"}
-MACRO {prc} {"Phys. Rev. C"}
-MACRO {prd} {"Phys. Rev. D"}
-MACRO {pre} {"Phys. Rev. E"}
-MACRO {ps} {"Phys. Scripta"}
-MACRO {procrsl} {"Proc. Roy. Soc. London"}
-MACRO {rmp} {"Rev. Mod. Phys."}
-MACRO {rsi} {"Rev. Sci. Inst."}
-MACRO {science} {"Science"}
-MACRO {sciam} {"Sci. Am."}
-MACRO {sam} {"Stud. Appl. Math."}
-MACRO {st} {"Sky and Telesc."}
-MACRO {cjp} {"Czech. J. Phys."}
-MACRO {el} {"Europhys. Lett."}
-MACRO {en} {"Europhys. News"}
-MACRO {fujitsustj} {"FUJITSU Sci. Tech. J."}
-MACRO {ieeeed} {"IEEE Trans. Electron Devices"}
-MACRO {ieeeim} {"IEEE Trans. Instrum. Meas."}
-MACRO {ieeejqe} {"IEEE J. Quantum Electron."}
-MACRO {ieeem} {"IEEE Trans. Magn."}
-MACRO {ieeeptl} {"IEEE Photonic Technol. Lett."}
-MACRO {ieeeuffc} {"IEEE Trans. Ultrason., Ferroelect., Freq. Cont."}
-MACRO {jem} {"J. Electron. Mater."}
-MACRO {jes} {"J. Electrochem. Soc."}
-MACRO {jetplett} {"JETP Lett."}
-MACRO {jjap} {"Japan. J. Appl. Phys."}
-MACRO {jpha} {"J. Phys. A: Math. Gen."}
-MACRO {jphb} {"J. Phys. B: At. Mol. Opt. Phys."}
-MACRO {jphbold} {"J. Phys. B: At. Mol. Phys."}
-MACRO {jphc} {"J. Phys.: Condens. Matter"}
-MACRO {jphcold} {"J. Phys. C: Solid State Phys."}
-MACRO {jphd} {"J. Phys. D: Appl. Phys."}
-MACRO {jvsta} {"J. Vac. Sci. Technol. A"}
-MACRO {jvstb} {"J. Vac. Sci. Technol. B"}
-MACRO {me} {"Microelectron. Eng."}
-MACRO {necrd} {"NEC Res.{\&} Develop."}
-MACRO {pa} {"Physica A"}
-MACRO {pb} {"Physica B"}
-MACRO {pc} {"Physica C"}
-MACRO {pd} {"Physica D"}
-MACRO {procieee} {"Proc. IEEE"}
-MACRO {procspie} {"Proc. SPIE"}
-MACRO {pssa} {"Phys. Stat. Sol. A"}
-MACRO {pssb} {"Phys. Stat. Sol. B"}
-MACRO {rpp} {"Rep. Progr. Phys."}
-MACRO {sm} {"Synthet. Metal"}
-MACRO {sost} {"Solid State Technol."}
-MACRO {ss} {"Surf. Sci."}
-MACRO {ssc} {"Solid State Commun."}
-MACRO {sst} {"Semicond. Sci. Technol."}
-MACRO {suplatt} {"Superlatt. Microstr."}
-MACRO {sust} {"Supercond. Sci. Technol."}
-MACRO {znat} {"Z. Naturforsch."}
-MACRO {appopt} {"Appl. Opt."}
-MACRO {bell}   {"Bell Syst. Tech. J."}
-MACRO {ell}    {"Electron. Lett."}
-MACRO {jasp}   {"J. Appl. Spectr."}
-MACRO {jqe}    {"IEEE J. Quantum Electron."}
-MACRO {jlwt}   {"J. Lightwave Technol."}
-MACRO {jmo}    {"J. Mod. Opt."}
-MACRO {josa}   {"J. Opt. Soc. America"}
-MACRO {josaa}  {"J. Opt. Soc. Amer.~A"}
-MACRO {josab}  {"J. Opt. Soc. Amer.~B"}
-MACRO {jdp}    {"J. Phys. (Paris)"}
-MACRO {oc}     {"Opt. Commun."}
-MACRO {ol}     {"Opt. Lett."}
-MACRO {os}     {"Opt. Spectrosc."}
-MACRO {phtl}   {"IEEE Photon. Technol. Lett."}
-MACRO {pspie}  {"Proc. Soc. Photo-Opt. Instrum. Eng."}
-MACRO {vr}     {"Vision Res."}
-MACRO {zph}    {"Z. f. Physik"}
-MACRO {zphb}   {"Z. f. Physik~B"}
-MACRO {zphd}   {"Z. f. Physik~D"}
-MACRO {sse} {"Solid-State Electron."}
-MACRO {pss} {"Phys. Sol. State"}
-MACRO {nl}  {"Nano Lett."}
-MACRO {sjpp} {"Sov. J. Plasma Phys."}
-MACRO {spd}  {"Sov. Phys.--Doklady"}
-MACRO {sptp} {"Sov. Phys.--Tech. Phys."}
-MACRO       {spu}  {"Sov. Phys.--Uspekhi"}
-MACRO {ufn}  {"\CYRU\CYRF\CYRN"}
-MACRO {pu}  {"Phys.--Uspekhi"}
-MACRO {sjot} {"Sov. J. Opt. Technol."}
-MACRO {sjqe} {"Sov. J. Quantum Electron."}
-MACRO {sleb} {"Sov. Phys.--Leb. Inst. Rep."}
-MACRO {stph} {"Sov. Phys.--Techn. Phys."}
-MACRO {stphl}{"Sov. Techn. Phys. Lett."}
-
-READ
-
-
-
-
-
-STRINGS { longest.label }
-
-INTEGERS { number.label longest.label.width }
-
-FUNCTION {initialize.longest.label}
-{ "" 'longest.label :=
-  #1 'number.label :=
-  #0 'longest.label.width :=
-}
-
-EXECUTE {initialize.longest.label}
-
-FUNCTION {forward.pass}
-{ number.label int.to.str$ 'label :=
-  number.label #1 + 'number.label :=
-  label width$ longest.label.width >
-    { label 'longest.label :=
-      label width$ 'longest.label.width :=
-    }
-    'skip$
-  if$
-}
-
-ITERATE {forward.pass}
-
-
-FUNCTION {begin.bib}
-{ "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
-  "\def\selectlanguageifdefined#1{"                  write$ newline$
-  "\expandafter\ifx\csname date#1\endcsname\relax"   write$ newline$
-  "\else\selectlanguage{#1}\fi}"                     write$ newline$
-  "\providecommand*{\href}[2]{{\small #2}}"          write$ newline$
-  "\providecommand*{\url}[1]{{\small #1}}"           write$ newline$
-  "\providecommand*{\BibUrl}[1]{\url{#1}}"           write$ newline$
-  "\providecommand{\BibAnnote}[1]{}"                 write$ newline$
-  "\providecommand*{\BibEmph}[1]{#1}"                write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{---}" write$ newline$
-  %\DeclareUTFcharacter[\UTFencname]{x2014}{\cyrdash}
-  %"\let\cyrdash\textemdash" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\hbox to.8em{--\hss--}}" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\textemdash}" write$ newline$
-  "\ProvideTextCommandDefault{\cyrdash}{\iflanguage{russian}{\hbox to.8em{--\hss--}}{\textemdash}}" write$ newline$
-  %%"\ProvideTextCommandDefault{\cyrdash}{%"  write$ newline$
-  %%"  \iflanguage{russian}{\hbox to.8em{--\hss--}}{%" write$ newline$
-  %%"    \iflanguage{ukrainian}{\hbox to.8em{--\hss--}}{\textemdash}}}"  write$ newline$
-  "\providecommand*{\BibDash}{\ifdim\lastskip>0pt\unskip\nobreak\hskip.2em plus 0.1em\fi" write$ newline$
-  "\cyrdash\hskip.2em plus 0.1em\ignorespaces}" write$ newline$
-  "\renewcommand{\newblock}{\ignorespaces}" write$ newline$
-  preamble$ empty$
-    'skip$
-    { preamble$ write$ newline$ }
-  if$
-}
-
-EXECUTE {begin.bib}
-
-EXECUTE {init.state.consts}
-
-ITERATE {call.type$}
-
-FUNCTION {end.bib}
-{ newline$
-  "\end{thebibliography}" write$ newline$
-}
-
-EXECUTE {end.bib}
-
-%%
-%% End of file `gost780.bst'.

Deleted: trunk/Master/texmf-dist/bibtex/bst/gost/gost780s.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/gost/gost780s.bst	2020-12-29 00:54:00 UTC (rev 57250)
+++ trunk/Master/texmf-dist/bibtex/bst/gost/gost780s.bst	2020-12-29 02:19:51 UTC (rev 57251)
@@ -1,2353 +0,0 @@
-%%
-%% This is file `gost780s.bst',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% gost.dtx  (with options: `bst,sort')
-%% 
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%   http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
-%% 
-%% This file has the LPPL maintenance status "maintained".
-%% Maintained by Igor A. Kotelnikov.
-%% 
-%% Current version: 1.2j, 2017.01.12
-%% 
-%% Please, send bug report via e-mail:
-%%   kia999 at mail dot ru <Igor Kotelnikov>
-%% or
-%%   polyama at yahoo dot com <Maksym Polyakov>
-%% 
-
-
-
-%%
-%% This bibstyle attempts to format bibliography according to
-%% GOST 7.1-2003 for bibliographic records.
-
-ENTRY
-  { address
-    annote
-    author
-    booktitle
-    bookauthor
-    chapter
-    edition
-    editor
-    compiler
-    howpublished
-    institution
-    journal
-    key
-    %major          % new in v.1.2i, alias for speciality, not implemented
-    majorcode       % new in v.1.2i, alias for specialitycode
-    month
-    note
-    number
-    organization
-    pages
-    eid             % new in v1.2c
-    publisher
-    school          % alias for institution
-    series
-    %speciality     % new in v.1.2i, eqv. to major in biblatex-gost, not implemented yet...
-    specialitycode  % new in v.1.2i, alias of number, eqv. to majorcode in biblatex-gost
-    title
-    %medium         % new in v1.2; renamed to media.
-    media           % new in v1.2f
-    type
-    volume
-    year
-    language
-    langid          % new in v1.2c
-    booklanguage
-    %date            % not implemented yet...
-    pagetotal
-    url
-    urldate
-    isbn
-    doi
-    eprinttype      % = archivePrefix
-    eprintclass     % = primaryClass
-    eprint
-    % new in v1.2f:
-    % appear in biblatex:
-    %addendum       % not implemented yet...
-    holder          % see patent
-    location        % new in v.1.2i, alias of address
-    %subtitle       % not implemented yet...
-    titleaddon      % new in v.1.2i, see @thesis
-    %version        % not implemented yet...
-    % Appear in biblatex-gost for @patent entry:
-    authorcountry   % country of the patent authors
-    credits         % statement of responsibility, other than provided in Biblatex
-    ipc             % Code of the International Patent Classification
-    %media          % General material designation NOTE: medium in the above
-    requestnumber   % Registration number of the application to the patent document
-    publicationdate % Date of publication
-    publication     %  and information on the official gazette, which published patent
-    prioritydate    % Information about the convention priority: the date of filing of the application,
-    prioritynumber  %   number and
-    prioritycountry %   country name of convention priority.
-    requestdate     % ??
-  }
-  {}
-  { label }
-
-INTEGERS { output.state before.all mid.sentence after.sentence after.block
-after.dblslash after.slash after.colon after.semicolon }
-
-FUNCTION {init.state.consts}
-{ #0 'before.all :=
-  #1 'mid.sentence :=
-  #2 'after.sentence :=
-  #3 'after.block :=
-  #4 'after.dblslash :=
-  #5 'after.slash :=
-  #6 'after.colon :=
-  #7 'after.semicolon :=
-}
-
-STRINGS { s t }
-
-STRINGS { curlanguage }
-
-FUNCTION {change.language}
-{ booklanguage empty$
-    { "" }
-    { booklanguage  'curlanguage :=
-      "\selectlanguageifdefined{"
-      curlanguage *
-      "}" *
-    }
-  if$
-}
-
-FUNCTION {output.nonnull}
-{
-  swap$
-  output.state mid.sentence =
-    { ", " * write$ }
-    { output.state after.block =
-        { add.period$ write$
-          " \BibDash " write$
-          newline$
-          "\newblock " write$
-        }
-        { output.state before.all =
-            'write$
-            { output.state after.dblslash =
-                { "~//" * change.language * " " * write$ }
-                { output.state after.slash =
-                    { "~/ " * write$ }
-                    { output.state after.colon =
-                        { ": " * write$ }
-                        { output.state after.semicolon =
-                            { "; " * write$ }
-                        { add.period$ " " * write$ }
-                       if$
-                        }
-                      if$
-                    }
-                  if$
-                }
-              if$
-            }
-          if$
-        }
-      if$
-      mid.sentence 'output.state :=
-    }
-  if$
-}
-
-FUNCTION {output}
-{ duplicate$ empty$
-    'pop$
-    'output.nonnull
-  if$
-}
-
-FUNCTION {output.check}
-{ 't :=
-  duplicate$ empty$
-    { pop$ "empty " t * " in " * cite$ * warning$ }
-    'output.nonnull
-  if$
-}
-
-FUNCTION {fin.entry}
-{ add.period$
-  write$
-  newline$
-}
-
-FUNCTION {new.block}
-{ output.state before.all =
-    'skip$
-    { after.block 'output.state := }
-  if$
-}
-
-FUNCTION {new.dblslash}
-{ output.state before.all =
-    'skip$
-    { after.dblslash 'output.state := }
-  if$
-}
-
-FUNCTION {new.slash}
-{ output.state before.all =
-    'skip$
-    { after.slash 'output.state := }
-  if$
-}
-
-FUNCTION {new.colon}
-{ output.state before.all =
-    'skip$
-    { after.colon 'output.state := }
-  if$
-}
-
-FUNCTION {new.semicolon}
-{ output.state before.all =
-    'skip$
-    { after.semicolon 'output.state := }
-  if$
-}
-
-FUNCTION {new.sentence}
-{ output.state after.block =
-    'skip$
-    { output.state before.all =
-        'skip$
-        { after.sentence 'output.state := }
-      if$
-    }
-  if$
-}
-
-FUNCTION {add.blank}
-{ " " * before.all 'output.state :=
-}
-
-FUNCTION {not}
-{   { #0 }
-    { #1 }
-  if$
-}
-
-FUNCTION {and}
-{   'skip$
-    { pop$ #0 }
-  if$
-}
-
-FUNCTION {or}
-{   { pop$ #1 }
-    'skip$
-  if$
-}
-
-INTEGERS { len }
-
-FUNCTION {chop.word}
-{ 's :=
-  'len :=
-  s #1 len substring$ =
-    { s len #1 + global.max$ substring$ }
-    's
-  if$
-}
-
-FUNCTION {non.stop}
-{ duplicate$
-   "}" * add.period$
-   #-1 #1 substring$ "." =
-}
-
-FUNCTION {new.block.checka}
-{ empty$
-    'skip$
-    'new.block
-  if$
-}
-
-FUNCTION {new.block.checkb}
-{ empty$
-  swap$ empty$
-  and
-    'skip$
-    'new.block
-  if$
-}
-
-FUNCTION {new.sentence.checka}
-{ empty$
-    'skip$
-    'new.sentence
-  if$
-}
-
-FUNCTION {new.sentence.checkb}
-{ empty$
-  swap$ empty$
-  and
-    'skip$
-    'new.sentence
-  if$
-}
-
-FUNCTION {new.dblslash.checka}
-{ empty$
-    'skip$
-    'new.dblslash
-  if$
-}
-
-FUNCTION {field.or.null}
-{ duplicate$ empty$
-    { pop$ "" }
-    'skip$
-  if$
-}
-
-FUNCTION {emphasize}
-{ duplicate$ empty$
-    { pop$ "" }
-    { "\BibEmph{" swap$ * "}" * }
-  if$
-}
-
-FUNCTION {bracify}
-{ duplicate$ empty$
-    { pop$ "{}" }
-    { "{" swap$ * "}" * }
-  if$
-}
-
-FUNCTION {enclose.square.brackets}
-{
-  duplicate$ empty$
-    { pop$ "" }
-    { "[" swap$ * "]" * }
-  if$
-}
-
-FUNCTION {enclose.round.brackets}
-{
-  duplicate$ empty$
-    { pop$ "" }
-    { "(" swap$ * ")" * }
-  if$
-}
-
-FUNCTION {space.word}
-{ " " swap$ * " " * }
-
-FUNCTION {bbl.edby}    %  { "\bbledby{}" }
-{ curlanguage "english" =
-   {"Ed.\ by"}
-   { curlanguage "ukrainian" =
-      {"{\cyr\CYRP\cyrii\cyrd\ \cyrr\cyre\cyrd.}"}
-      { curlanguage "russian" =
-         {"{\cyr\CYRP\cyro\cyrd\ \cyrr\cyre\cyrd.}"}
-         { curlanguage "german" =
-            { "ed." }
-            {"language is not defined: " language "edby" * * warning$ "Ed.\ by"}
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.cmplr}
-{ curlanguage "english" =
-   { "Compiler"}
-   { curlanguage "german" =
-      { "Hrsg." }
-      { curlanguage "ukrainian" =
-         {"{\cyr\CYRU\cyrk\cyrl.}"}
-         { curlanguage "russian" =
-            {"{\cyr\CYRS\cyro\cyrs\cyrt.}"}
-            {"language is not defined: " language  "cmplr" * * warning$ "Compiler"}
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.edition} %  { "\bbledition{}" }
-{ curlanguage "english" =
-   {"edition"}
-   { curlanguage "ukrainian" =
-      {"{\cyr\cyrv\cyri\cyrd.}"}
-      { curlanguage "russian" =
-         {"{\cyr\cyri\cyrz\cyrd.}"}
-         { curlanguage "german" =
-            {" {aus.}" } %%%% { "Aufl." } ??
-            { curlanguage "italian" =
-               {"edizione"}
-               { curlanguage "french" =
-                  {"\'{e}dition"}
-                  {"language is not defined: " language  "edition" * * warning$ "edition"}
-               if$}
-            if$}
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.vvolume} %  { "\bblVolume{}" }
-{ curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
-   {"Volume"}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      { "\CYRT\cyro\cyrm" }
-      { curlanguage "german" =
-         {"{Band}"} %%%% { "Volumen" }
-         {"language is not defined: " language  "vvolume" * * warning$ "Volume"}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.vvol}    %  { "\bblVol{}" }
-{ curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
-   {"Vol."}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      {"\CYRT."}
-      { curlanguage "german" =
-         {"{Bd.}"} %%%% { "Vol." }
-         {"language is not defined: " language  "vvol" * * warning$ "Vol."}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.iissue}  %  { "\bblIssue{}" }
-{ curlanguage "english" =
-   {"Issue"}
-   { curlanguage "ukrainian" =
-      {"\CYRV\cyri\cyrp\cyru\cyrs\cyrk"}
-      { curlanguage "russian" =
-         {"\CYRV\cyrery\cyrp\cyru\cyrs\cyrk"}
-         { curlanguage "german" =
-            {"{Heft}"} %%%% { "Ausgabe" }
-            {"language is not defined: " language "iissue" * * warning$ "Issue"}
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.iiss}  %  { "\bblIss{}" }
-{ curlanguage "english" =
-   {"Iss."}
-   { curlanguage "ukrainian" =
-      {"\CYRV\cyri\cyrp."}
-      { curlanguage "russian" =
-         {"\CYRV\cyrery\cyrp."}
-         { curlanguage "german" =
-            {"{H.}"}
-            {"language is not defined: " language "iiss" * * warning$ "Iss."}
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.of}      %  { "\bblof{}" }
-{ curlanguage "english" =
-   {"of"}
-   { curlanguage "german" =
-      { "von" }
-      { curlanguage "ukrainian" =
-         { "{\cyr\cyrii\cyrz}" }
-         { curlanguage "russian" =
-            { "{\cyr\cyri\cyrz}" }
-            {"language is not defined: " language "of" * * warning$ "of"}
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.etal}      %  { "\bblof{}" }
-{ curlanguage "english" =
-   {"et~al."}
-   { curlanguage "german" =
-      { "u.~a." }
-      { curlanguage "ukrainian" =
-         {"{\cyr\cyrt\cyra~\cyrii\cyrn.}"}
-         { curlanguage "russian" =
-            {"{\cyr\cyri~\cyrd\cyrr.}"}
-            {"language is not defined: " language  "et~al" * * warning$ "et~al."}
-         if$}
-      if$}
-   if$}
-if$}
-
-
-FUNCTION {bbl.nnumber} %  { "\bblNumber{}" }
-{ curlanguage "english" =
-   {"Number"}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      { "\CYRN\cyro\cyrm\cyre\cyrr" }
-      { curlanguage "german" =
-         {"{Heft}"} %%% { "Anzahl" }
-         {"language is not defined: " language  "nnumber" * * warning$ "Number"}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.number}  %  { "\bblnumber{}" }
-{ curlanguage "english" =
-   {"number"}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      {"{\cyr\cyrn\cyro\cyrm\cyre\cyrr}"}
-      { curlanguage "german" =
-         {"{Heft}"} %%% { "anzahl" }???
-         {"language is not defined: " language  "number" * * warning$ "number"}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.nr}     %   { "\bblno{}" }
-{ curlanguage "english" =
-   {"no."}
-   { curlanguage "italian" =
-      { "no" }
-      { curlanguage "ukrainian" = curlanguage "russian" = or
-         { "{\cyr\textnumero}" }
-         { curlanguage "german" =
-            {"{H.}"} %%% { "an." }
-            {"language is not defined: " language "nr" * * warning$ "no."}
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.nnr}     %   { "\bblno{}" }
-{ curlanguage "english" =
-   {"No."}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      { "{\cyr\textnumero}" }
-      { curlanguage "german" =
-         {"{H.}"} %%% { "an." }
-         {"language is not defined: " language  "nnr" * * warning$ "No."}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.in}    %    { "\bblin{}" }
-{ curlanguage "english" = curlanguage "german" = or
-   {"in"}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      { "{\cyr\cyrv}" }
-      {"language is not defined: " language  "in" * * warning$ "in"}
-   if$}
-if$}
-
-FUNCTION {bbl.iin}  %     { "\bblIn{}" }
-{ curlanguage "english" = curlanguage "german" = or
-   {"In"}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      { "\CYRV" }
-      {"language is not defined: " language  "iin" * * warning$ "In"}
-   if$}
-if$}
-
-FUNCTION {bbl.pages}    % { "\bblpp." }
-{ curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
-   {"p."} %%% {"pp."}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      {"{\cyr\cyrs.}"}
-      { curlanguage "german" =
-         {"S."} %%%% { "s." }
-         {"language is not defined: " language  "pages" * * warning$ "p."}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.page}   %   { "\bblp."
-{ curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
-   {"p."}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      {"{\cyr\cyrs.}"}
-      { curlanguage "german" =
-         {"S."} %%%% { "s." }
-         {"language is not defined: " language  "page" * * warning$ "p."}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.ppages}%    { "\bblPp." }
-{ curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
-   {"P."} %%%% { "Pp." }
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      {"{\cyr\CYRS.}"}
-      { curlanguage "german" =
-         {"S."}
-         {"language is not defined: " language "ppages" * * warning$ "P."}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.ppage}  %   { "\bblP." }
-{ curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
-   {"P."}
-   { curlanguage "ukrainian" = curlanguage "russian" = or
-      {"{\cyr\CYRS.}"}
-      { curlanguage "german" =
-         {"S."}
-         {"language is not defined: " language  "ppage" * * warning$ "P."}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.url}
-{ curlanguage "english" =
-   {"Access mode"}
-   { curlanguage "ukrainian" =
-      { "{\CYRR\cyre\cyrzh\cyri\cyrm\ \cyrd\cyro\cyrs\cyrt\cyru\cyrp\cyru}" }
-      { curlanguage "russian" =
-         { "{\CYRR\cyre\cyrzh\cyri\cyrm\ \cyrd\cyro\cyrs\cyrt\cyru\cyrp\cyra}" }
-         { curlanguage "german" =
-            { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
-         if$}
-      if$}
-   if$}
-if$}
-FUNCTION {bbl.urldate}
-{ curlanguage "english" =
-   {"online; accessed"}
-   { curlanguage "ukrainian" =
-      { "{\cyrd\cyra\cyrt\cyra\ \cyrz\cyrv\cyre\cyrr\cyrn\cyre\cyrn\cyrn\cyrya}" }
-      { curlanguage "russian" =
-         { "{\cyrd\cyra\cyrt\cyra\ \cyro\cyrb\cyrr\cyra\cyrshch\cyre\cyrn\cyri\cyrya}" }
-         { curlanguage "german" =
-            { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.techreport} % rename to bbl.techreport
-{ curlanguage "english" =
-   { "Rep." }
-   { curlanguage "german" =
-      { "Bericht" }
-      { curlanguage "russian" =
-         { "{\cyr\CYRO\cyrt\cyrch\cyre\cyrt}" }
-         { "language is not defined: " language "techrep" * * warning$ "Rep." }
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.mathesis}
-{ curlanguage "english" =
-   { "Master's thesis" }
-   { curlanguage "german" =
-      { "Diss.~Mag." }
-      { curlanguage "russian" =
-        { "{\cyr\CYRK\cyrv\cyra\cyrl\cyri\cyrf\cyri\cyrk\cyra\cyrc\cyri"
-          "\cyro\cyrn\cyrn\cyra\cyrya\ \cyrr\cyra\cyrb\cyro\cyrt\cyra\ " *
-          "\cyrm\cyra\cyrg\cyri\cyrs\cyrt\cyrr\cyra}" * }
-         { "language is not defined: " language "mthesis" * * warning$ "Master's thesis" }
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.phdthesis}
-{ curlanguage "english" =
-   { "Ph.\,D. thesis" }
-   { curlanguage "german" =
-      { "Diss.~Ph.\,D." }
-      { curlanguage "russian" =
-         { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrk\cyra\cyrn\cyrd. "
-           "\cyrn\cyra\cyru\cyrk}" * }
-         { curlanguage "french" =
-           { "Th\`{e}se de doctorat" }
-           { "language is not defined: " language "phdthesis" * * warning$ "Ph.\,D. thesis" }
-         if$}
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.docthesis}
-{ curlanguage "english" =
-   { "Dr.\,Sci. dissertation" }
-   { curlanguage "german" =
-      { "Diss.~Dr." }
-      { curlanguage "russian" =
-         { "{\cyr\cyrd\cyri\cyrs.\ \ldots\ \cyrd-\cyrr\cyra\ "
-           "\cyrn\cyra\cyru\cyrk}" * }
-         { "language is not defined: " language "docthesis" * * warning$ "Dr.\,Sci. dissertation" }
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.thesis.type}
-{ type "mathesis" =
-  { bbl.mathesis }
-  { type "phdthesis" =
-    { bbl.phdthesis }
-    { type "docthesis" =
-      { bbl.docthesis }
-      %%{ "!!!" type * "t" change.case$ }
-      { type "t" change.case$ }
-    if$}
-  if$}
-if$}
-
-FUNCTION {bbl.nnoaddress}
-{ curlanguage "english" =
-   { "S.\ l." }
-   { curlanguage "russian" =
-      { "{\cyr\CYRB.\ \cyrm.}" }
-      { "language is not defined: " language "nnoaddress" * * warning$ "S.\ l." }
-   if$}
-if$}
-
-FUNCTION {bbl.nopublisher}
-{ curlanguage "english" =
-   { "s.\ n." }
-   { curlanguage "russian" =
-      { "{\cyr\cyrb.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "s.\ n." }
-   if$}
-if$}
-
-FUNCTION {bbl.nnopublisher}
-{ curlanguage "english" =
-   { "S.\ n." }
-   { curlanguage "russian" =
-      { "{\cyr\CYRB.\ \cyri.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "S.\ n." }
-   if$}
-if$}
-
-FUNCTION {bbl.media.text}
-{ curlanguage "english" =
-   { "Text" }
-   { curlanguage "russian" = curlanguage "ukrainian" = or
-      { "{\cyr\CYRT\cyre\cyrk\cyrs\cyrt}" }
-      { "language is not defined: " language "media" * * warning$ "Text" }
-   if$}
-if$}
-
-FUNCTION {bbl.media.eresource}
-{ curlanguage "english" =
-   { "Electronic resource" }
-   { curlanguage "russian" =
-      { "{\cyr\CYREREV\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyrery\cyrishrt\ "
-        "\cyrr\cyre\cyrs\cyru\cyrr\cyrs}" * }
-      { curlanguage "ukrainian" =
-        { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
-          "\cyrr\cyre\cyrs\cyru\cyrr\cyrs}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.media.online}
-{ curlanguage "english" =
-   { "Electronic resource online" }
-   { curlanguage "russian" =
-      { "{\cyr\CYREREV\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyrery\cyrishrt\ "
-        "\cyrr\cyre\cyrs\cyru\cyrr\cyrs\ \cyro\cyrn\cyrl\cyra\cyrishrt\cyrn}" * }
-      { curlanguage "ukrainian" =
-        { "{\cyr\CYRE\cyrl\cyre\cyrk\cyrt\cyrr\cyro\cyrn\cyrn\cyri\cyrishrt\ "
-          "\cyrr\cyre\cyrs\cyru\cyrr\cyrs\ \cyro\cyrn\cyrl\cyra\cyrishrt\cyr}" * }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.chief}
-{ curlanguage "english" =
-   { "chief" }
-   { curlanguage "russian" =
-      { "\cyrr\cyru\cyrk." }
-      { curlanguage "ukrainian" =
-        { "\cyrr\cyru\cyrk." }
-        { "language is not defined: " language "chief" * * warning$ "chief" }
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.executor}
-{ curlanguage "english" =
-   { "Executor" }
-   { curlanguage "russian" =
-      { "{\cyr\cyri\cyrs\cyrp\cyro\cyrl\cyrn.}" }
-      { curlanguage "ukrainian" =
-        { "{\cyr\cyrv\cyri\cyrk\cyro\cyrn\cyra\cyrv\cyre\cyrc\cyrsftsn}" }
-        { "language is not defined: " language "executor" * * warning$ "executor" }
-      if$}
-   if$}
-if$}
-
-FUNCTION {bbl.media}
-{ media "online" =
-   { bbl.media.online }
-   { media "eresource" =
-     { bbl.media.eresource }
-     { bbl.media.text }
-   if$}
-if$}
-
-FUNCTION {bbl.req}
-{
-  curlanguage "english" =
-    { "req." }
-    { curlanguage "german" =
-      { "ang." }
-      { curlanguage "russian" =
-        { "{\cyr\cyrz\cyra\cyrya\cyrv\cyrl.}" }
-        { "language is not defined: " language "req" * * warning$ "req" }
-      if$
-      }
-    if$
-    }
-  if$
-}
-
-FUNCTION {bbl.publ}
-{
-  curlanguage "english" =
-    { "publ." }
-    { curlanguage "german" =
-      { "ausg." }
-      { curlanguage "russian" =
-        { "{\cyr\cyro\cyrp\cyru\cyrb\cyrl.}" }
-        { "language is not defined: " language "publication" * * warning$ "publication" }
-      if$
-      }
-    if$
-    }
-  if$
-}
-
-FUNCTION {bbl.priority}
-{
-  curlanguage "english" =
-    { "priority" }
-    { curlanguage "german" =
-      { "Prioritat" }
-      { curlanguage "russian" =
-        { "{\cyr\cyrp\cyrr\cyri\cyro\cyrr\cyri\cyrt\cyre\cyrt}" }
-        { "language is not defined: " language "priority" * * warning$ "priority" }
-      if$
-      }
-    if$
-    }
-  if$
-}
-
-INTEGERS { nameptr namesleft numnames }
-
-
-FUNCTION {format.names}
-{
-  #1 "{vv~}{ll}{~jj}{,~f.}" format.name$
-}
-
-
-FUNCTION {format.names.rev}
-{
-  's :=
-  #1 'nameptr :=
-  s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr
-      %"{f.}{~vv}{~ll}{, jj}" format.name$ 't :=
-      "{ff}{~vv}{~ll}{, jj}" format.name$ 't :=
-      nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
-          if$
-          namesleft #1 >
-            { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
-                { " " * bbl.etal * }
-                { ", " * t * }
-              if$
-            }
-          if$
-        }
-        't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
-  while$
-}
-
-
-FUNCTION {format.authors}
-{ author empty$
-    { "" }
-    { author format.names emphasize}
-  if$
-}
-
-
-FUNCTION {format.bookauthors}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names}
-  if$
-}
-
-FUNCTION {format.authors.after}
-{ author empty$
-    { "" }
-    { author format.names.rev}
-  if$
-}
-
-FUNCTION {format.bookauthors.after}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names.rev}% always cuts to 4 persons
-  if$
-}
-
-FUNCTION {format.editors.after}
-{ editor empty$
-    { "" }
-    { bbl.edby "\ " * editor format.names.rev * }
-  if$
-}
-
-FUNCTION {format.chief.after}
-{ editor empty$
-    { "" }
-    { bbl.chief "\ " * editor format.names.rev * }
-  if$
-}
-
-FUNCTION {format.executor.after}
-{ author empty$
-    { "" }
-    { bbl.executor ": " * author format.names.rev * }
-  if$
-}
-
-FUNCTION {format.compiler.after}
-{ compiler empty$
-    { "" }
-    { bbl.cmplr "\ " * compiler format.names.rev * }
-  if$
-}
-
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    { title "t" change.case$ }
-  if$
-}
-
-FUNCTION {format.month}
-{ month empty$
-    { "" }
-    { curlanguage "russian" =
-        { month "Jan." =
-            { "\CYRYA\cyrn\cyrv." }
-        { month "Feb." =
-            { "\CYRF\cyre\cyrv\cyrr." }
-        { month "Mar." =
-            { "\CYRM\cyra\cyrr\cyrt" }
-        { month "Apr." =
-            { "\CYRA\cyrp\cyrr." }
-        { month "May" =
-            { "\CYRM\cyra\cyrishrt" }
-        { month "Jun." =
-            { "\CYRI\cyryu\cyrn\cyrsftsn" }
-        { month "Jul." =
-            { "\CYRI\cyryu\cyrl\cyrsftsn" }
-        { month "Aug." =
-            { "\CYRA\cyrv\cyrg\." }
-        { month "Sep." =
-            { "\CYRS\cyre\cyrn\cyrt." }
-        { month "Oct." =
-            { "\CYRO\cyrk\cyrt." }
-        { month "Nov." =
-            { "\CYRN\cyro\cyrya\cyrb." }
-        { month "Dec." =
-            { "\CYRD\cyre\cyrk." }
-            { month }
-            if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
-        { month }
-        if$}
-    if$
-}
-FUNCTION {format.date}
-{ year empty$
-    { month empty$
-        { "" }
-        { "there's a month but no year in " cite$ * warning$
-          format.month
-        }
-      if$
-    }
-    { month empty$
-        'year
-        { year ". \BibDash " format.month * * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {address.or.location}
-{
-  address empty$
-    { location }
-    { address }
-  if$
-}
-
-FUNCTION {specialitycode.or.number}
-{
-  specialitycode empty$
-    { number }
-    { specialitycode }
-  if$
-}
-
-FUNCTION {institution.or.school}
-{
-  institution empty$
-    { school}
-    { institution }
-  if$
-}
-FUNCTION {output.address.publisher}
-{
-  address empty$ location empty$ and
-    'skip$
-    { address.or.location output
-      publisher empty$
-        'skip$
-        { new.colon }
-      if$
-    }
-  if$
-  publisher output
-}
-
-FUNCTION {output.address.publisher.date}
-{
-  output.address.publisher
-  format.date output
-}
-
-FUNCTION {output.bibitem}
-{ newline$
-  "\bibitem" write$
-  cite$ bracify write$
-  newline$
-  langid empty$
-    { language empty$
-        { "english" 'curlanguage := }
-        { language  'curlanguage := }
-      if$
-    }
-    { langid  'curlanguage := }
-  if$
-  "\selectlanguageifdefined" curlanguage bracify * write$
-  newline$
-  ""
-  before.all 'output.state :=
-}
-
-
-FUNCTION {n.dashify}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-        { t #1 #2 substring$ "--" = not
-            { "--" *
-              t #2 global.max$ substring$ 't :=
-            }
-            {   { t #1 #1 substring$ "-" = }
-                { "-" *
-                  t #2 global.max$ substring$ 't :=
-                }
-              while$
-            }
-          if$
-        }
-        { t #1 #1 substring$ *
-          t #2 global.max$ substring$ 't :=
-        }
-      if$
-    }
-  while$
-}
-
-FUNCTION {word.in}
-{ bbl.iin
-  " " * }
-
-FUNCTION {format.btitle}
-{ title
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
-    { "~" }
-    { " " }
-  if$
-  swap$ * *
-}
-
-FUNCTION {tie.connect}
- {"~"
-  swap$ * *
- }
-
-FUNCTION {either.or.check}
-{ empty$
-    'pop$
-    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
-  if$
-}
-
-FUNCTION {format.bvolume}
-{ volume empty$
-    { "" }
-    { bbl.vvol volume tie.connect
-      series empty$
-        'skip$
-        { bbl.of space.word * series emphasize * }
-      if$
-      "volume and number" number either.or.check
-    }
-  if$
-}
-
-FUNCTION {format.number.series}
-{ volume empty$
-    { number empty$
-        { series field.or.null }
-        { series empty$
-            { "there's a number but no series in " cite$ * warning$
-              bbl.nnr }
-            {
-              %new.dblslash
-              new.sentence
-              series
-              bbl.nr
-              tie.or.space.connect}
-          if$
-          number tie.or.space.connect
-        }
-      if$
-    }
-    { "" }
-  if$
-}
-
-FUNCTION {is.num}
-{ chr.to.int$
-  duplicate$ "0" chr.to.int$ < not
-  swap$ "9" chr.to.int$ > not and
-}
-
-FUNCTION {extract.num}
-{ duplicate$ 't :=
-  "" 's :=
-  { t empty$ not }
-  { t #1 #1 substring$
-    t #2 global.max$ substring$ 't :=
-    duplicate$ is.num
-      { s swap$ * 's := }
-      { pop$ "" 't := }
-    if$
-  }
-  while$
-  s empty$
-    'skip$
-    { pop$ s }
-  if$
-}
-
-
-FUNCTION {convert.edition}
-{ edition
-}
-
-FUNCTION {format.edition}
-{ edition empty$
-    { "" }
-    { output.state mid.sentence =
-        { convert.edition "l" change.case$ " " * bbl.edition * }
-        { convert.edition "t" change.case$ " " * bbl.edition * }
-      if$
-    }
-  if$
-}
-
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
-  #0 'multiresult :=
-    { multiresult not
-      t empty$ not
-      and
-    }
-    { t #1 #1 substring$
-      duplicate$ "-" =
-      swap$ duplicate$ "," =
-      swap$ "+" =
-      or or
-        { #1 'multiresult := }
-        { t #2 global.max$ substring$ 't := }
-      if$
-    }
-  while$
-  multiresult
-}
-
-%%FUNCTION {format.pages}
-%%{ pages empty$
-%%    { "" }
-%%    { pages multi.page.check
-%%        { bbl.ppages pages n.dashify tie.connect }
-%%        { bbl.ppage pages tie.connect }
-%%      if$
-%%    }
-%%  if$
-%%}
-FUNCTION {format.pages}
-{ eid empty$
-    {
-      pages empty$
-        { "" }
-        { pages multi.page.check
-            { bbl.ppages pages n.dashify tie.connect }
-            { bbl.ppage pages tie.connect }
-          if$
-        }
-      if$
-    }
-    { eid multi.page.check
-        { bbl.ppages eid n.dashify tie.connect }
-        { bbl.ppage eid tie.connect }
-      if$
-    }
-  if$
-}
-
-%%FUNCTION {format.pages.page}
-%%{ pages empty$
-%%    { pagetotal empty$
-%%      { "" }
-%%      { pagetotal bbl.pages tie.connect }
-%%    if$}
-%%    { format.pages}
-%%  if$
-%%}
-FUNCTION {format.pages.page}
-{ eid empty$
-    { pages empty$
-        { pagetotal empty$
-            { "" }
-            { pagetotal bbl.pages tie.connect }
-          if$
-        }
-        { format.pages}
-      if$
-    }
-    { format.pages }
-  if$
-}
-
-FUNCTION {format.vol.num.pages}
-{ volume field.or.null
-  number empty$
-    'skip$
-    {
-      ", no." number tie.or.space.connect *
-      volume empty$
-        { "there's a number but no volume in " cite$ * warning$ }
-        'skip$
-      if$
-    }
-  if$
-  pages empty$
-    'skip$
-    { duplicate$ empty$
-        { pop$ format.pages }
-        { ": " * pages n.dashify * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {format.volume}
-{ volume empty$
-    { "" }
-    { bbl.vvol volume tie.or.space.connect }
-  if$
-}
-
-FUNCTION {format.number}
-{ number empty$
-    { "" }
-    { bbl.nr number tie.or.space.connect }
-  if$
-}
-
-
-FUNCTION {empty.misc.check}
-{ author empty$ title empty$ howpublished empty$
-  month empty$ year empty$ note empty$
-  and and and and and
-  key empty$ not and
-    { "all relevant fields are empty in " cite$ * warning$ }
-    'skip$
-  if$
-}
-
-%%<!utf8>      bbl.thesis.type "t" change.case$
-%%<utf8>      bbl.thesis.type
-FUNCTION {format.thesis.type}
-{ type empty$
-    'skip$
-    { pop$
-      bbl.thesis.type
-    }
-  if$
-}
-%%<!utf8>    { "t" change.case$ }
-%%<utf8>    { "" }
-
-FUNCTION {format.techreport.type}
-{ type empty$
-   { bbl.techreport }
-   'type
-  if$
-}
-
-FUNCTION {author.before}
-{
-  author empty$
-    'skip$
-    {author num.names$ #4 <
-      {format.authors output
-       new.sentence}
-      'skip$
-    if$}
-  if$
-}
-
-%%<*!long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    {bookauthor num.names$ #4 <
-%%      {format.bookauthors output
-%%       new.sentence}
-%%      'skip$
-%%    if$}
-%%  if$
-%%}
-%%</!long>
-%%<*long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    { format.bookauthors output
-%%      new.sentence
-%%    }
-%%  if$
-%%}
-%%</long>
-
-FUNCTION {author.after}
-{
-  author empty$
-    'skip$
-    {format.authors.after output
-       new.semicolon }
-  if$
-}
-
-FUNCTION {bookauthor.after}
-{
-  bookauthor empty$
-    'skip$
-    {format.bookauthors.after output
-       new.semicolon }
-  if$
-}
-
-FUNCTION {editor.organization.after}
-{
-  compiler empty$
-    {}
-    { format.compiler.after  output
-    new.semicolon
-    }
-  if$
-  editor empty$
-    {}
-    { format.editors.after  output
-    new.semicolon
-    }
-  if$
-  organization empty$
-    {}
-    {organization output
-    new.semicolon
-    }
-  if$
-}
-
-FUNCTION {format.url}
-{ url empty$
-    { "" }
-    {
-      "\BibUrl{ " url * "}" *
-      urldate empty$
-        { "" }
-        { " (" bbl.urldate * ": " * urldate * ")" * }
-      if$ *
-    }
-  if$
-}
-
-FUNCTION {output.url}
-{
-  url empty$
-    'skip$
-    { format.url output }
-  if$
-}
-
-FUNCTION {format.annote}
-{ annote empty$
-    { "" }
-{ after.sentence 'output.state :=
-  "\BibAnnote{" annote add.period$ * "}" *
-}
-  if$
-}
-
-FUNCTION {format.isbn}
-{
-  isbn empty$
-    { "" }
-    { "ISBN:~\href{http://isbndb.com/search-all.html?kw=" isbn *
-      "}{" * isbn * "}" *
-    }
-  if$
-}
-
-FUNCTION {add.doi} { }
-
-FUNCTION {add.media}
-{ duplicate$ empty$
-    'skip$
-    { media empty$
-        'skip$
-        { " " * bbl.media enclose.square.brackets * }
-      if$
-    }
-  if$
-}
-
-
-FUNCTION {output.eprint.url}
-{
-    format.url output
-}
-
-FUNCTION {add.number}
-{ duplicate$ empty$
-    { "" }
-    { bbl.nr swap$ tie.or.space.connect }
-  if$
-}
-
-FUNCTION {format.type.number}
-{
-  type empty$
-    { "" }
-    {
-      number empty$
-      { "" }
-      { type number tie.or.space.connect }
-    if$
-    }
-  if$
-}
-
-FUNCTION {format.requestdate}
-{ requestdate empty$
-    { "" }
-    { bbl.req requestdate tie.or.space.connect }
-  if$
-}
-
-FUNCTION {format.publicationdate}
-{ publicationdate empty$
-    { "" }
-    { bbl.publ publicationdate tie.or.space.connect }
-  if$
-}
-
-FUNCTION {format.prioritydate}
-{ prioritydate empty$
-    { "" }
-    { bbl.priority prioritydate tie.or.space.connect }
-  if$
-}
-
-FUNCTION {article}
-{
-  output.bibitem
-  author.before
-  format.title add.media "title" output.check
-  new.slash
-  author.after
-  new.dblslash
-  journal emphasize add.doi "journal" output.check % new in v.2
-  new.block
-  format.date "year" output.check
-  new.block
-  format.volume output
-  format.number output
-  new.block
-  format.pages.page output
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {book}
-{
-  output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
-  new.slash
-  author.after
-  editor.organization.after
-  new.sentence
-  format.number.series output
-  new.block
-  format.edition output
-  new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
-  format.bvolume output
-  new.block
-  format.pages.page output
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {booklet}
-{
-  output.bibitem
-  author.before
-  format.title add.doi add.media "title" output.check
-  new.slash
-  author.after
-  editor.organization.after
-  new.block
-  howpublished output
-  address.or.location output
-  format.date "year" output.check
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {inbook}
-{
-  output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
-  new.slash
-  author.after
-  new.dblslash
-  booktitle "booktitle" output.check
-  new.slash
-  bookauthor.after
-  editor.organization.after
-  new.block
-  format.edition output
-  new.block
-  format.number.series output
-  new.sentence
-  output.address.publisher
-  format.date "year" output.check
-  new.block
-  format.bvolume output
-  new.block
-  format.pages.page output
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {incollection}
-{
-  output.bibitem
-  author.before
-  new.sentence
-  format.title add.doi add.media "title" output.check
-  new.slash
-  author.after
-  new.dblslash
-  booktitle "booktitle" output.check
-  new.slash
-  editor.organization.after
-  new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
-  format.bvolume output
-  format.number.series output
-  new.block
-  format.pages.page output
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {proceedings}
-{
-  output.bibitem
-  format.btitle add.doi add.media "title" output.check
-  new.slash
-  editor.organization.after
-  new.block
-  format.bvolume output
-  format.number.series output
-  output.address.publisher
-  format.date "year" output.check
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {inproceedings}
-{ output.bibitem
-  author.before
-  new.sentence
-  format.title add.doi add.media "title" output.check
-  new.slash
-  author.after
-  new.dblslash
-  booktitle "booktitle" output.check
-  new.slash
-  editor.organization.after
-  new.block
-  format.bvolume output
-  format.number.series output
-  new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
-  format.pages.page output
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {manual}
-{ output.bibitem
-  author empty$
-    { organization empty$
-        'skip$
-        { organization output.nonnull
-          address output
-        }
-      if$
-    }
-    { format.authors output.nonnull }
-  if$
-  new.block
-  format.btitle add.doi add.media "title" output.check
-  author empty$
-    { organization empty$
-    {
-          address new.block.checka
-          address output
-        }
-        'skip$
-      if$
-    }
-    {
-      organization address new.block.checkb
-      organization output
-      address output
-    }
-  if$
-  format.edition output
-  format.date "year" output.check
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {patent}
-{
-  output.bibitem
-  title add.media output.nonnull
-  new.colon
-  format.type.number output
-  add.blank
-  address.or.location output
-  new.colon
-  ipc output
-  new.slash
-  format.authors.after "author" output.check
-  add.blank
-  authorcountry enclose.round.brackets output.nonnull
-  new.semicolon
-  holder output.nonnull
-  new.semicolon
-  credits output.nonnull
-  new.block
-  requestnumber add.number output
-  new.semicolon
-  format.requestdate output
-  new.semicolon
-  format.publicationdate output
-  publication output
-  new.semicolon
-  format.prioritydate output
-  prioritynumber output
-  prioritycountry enclose.round.brackets output
-  new.block
-  note output
-  new.sentence
-  output.url
-  format.annote output
-  new.block
-  pagetotal output
-  fin.entry
-}
-
-FUNCTION {misc}
-{ output.bibitem
-  format.authors output
-  title howpublished new.sentence.checkb
-  format.title add.media output
-  howpublished new.block.checka
-  howpublished output
-  new.block
-  format.date "year" output.check
-  new.block
-  note output
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {unpublished}
-{ output.bibitem
-  author.before
-  format.btitle "title" output.check
-  new.slash
-  author.after
-  editor.organization.after
-  new.block
-  format.date "year" output.check
-  new.block
-  note "note" output.check
-  new.sentence
-  output.eprint.url
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {online}
-{ output.bibitem
-  format.authors output
-  title howpublished new.sentence.checkb
-  format.title add.doi add.media "title" output.check
-  howpublished new.dblslash.checka
-  howpublished output
-  editor.organization.after
-  new.sentence
-  new.block
-  output.address.publisher
-  format.date output
-  new.block
-  output.eprint.url
-  new.sentence
-  note output
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {internet}   {online}
-FUNCTION {www}        {online}
-FUNCTION {webpage}    {online}
-FUNCTION {electronic} {online}
-FUNCTION {thesis}
-{ output.bibitem
-  format.authors "author" output.check
-  new.sentence
-  format.btitle "title" output.check
-  new.colon
-  bbl.phdthesis format.thesis.type output.nonnull
-  new.slash
-  %institution "institution" output.check
-  institution.or.school "institution/school" output.check
-  new.block
-  output.address.publisher.date
-  new.block
-  format.pages.page output
-  note output
-  new.sentence
-  format.url output
-  format.annote output
-  fin.entry
-}
-
-%%  format.techrep.type.number output.nonnull
-%%  format.url output
-FUNCTION {report}
-{
-  output.bibitem
-  format.title add.doi add.media "title" output.check
-  new.colon
-  type "type" output.check
-  new.colon
-  number output
-  new.slash
-  %institution "institution" output.check
-  institution.or.school "institution/school" output.check
-  new.semicolon
-  format.chief.after output % from editor field
-  new.semicolon
-  format.executor.after output % from author field
-  new.block
-  address.or.location output
-  new.colon
-  organization output
-  format.date "year" output.check
-  new.block                % v.2
-  format.pages.page output % v.2
-  new.sentence % или new.block ?
-  output.eprint.url
-  new.block
-  note output
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {phdthesis}
-{ output.bibitem
-  format.authors "author" output.check
-  new.sentence
-  format.btitle "title" output.check
-  new.colon
-  bbl.phdthesis format.thesis.type output.nonnull
-  new.slash
-  %institution "institution" output.check
-  institution.or.school "institution/school" output.check
-  new.block
-  output.address.publisher.date
-  new.block
-  format.pages.page output
-  note output
-  new.sentence
-  format.url output
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {mastersthesis}
-{ output.bibitem
-  format.authors "author" output.check
-  new.sentence
-  format.btitle "title" output.check
-  new.colon
-  bbl.mathesis format.thesis.type output.nonnull
-  new.slash
-  %institution "institution" output.check
-  institution.or.school "institution/school" output.check
-  new.block
-  output.address.publisher.date
-  new.block
-  format.pages.page output
-  note output
-  new.sentence
-  format.url output
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {docthesis}
-{ output.bibitem
-  format.authors "author" output.check
-  new.sentence
-  format.btitle "title" output.check
-  new.colon
-  bbl.docthesis format.thesis.type output.nonnull
-  new.slash
-  %institution "institution" output.check
-  institution.or.school "institution/school" output.check
-  new.block
-  output.address.publisher.date
-  new.block
-  format.pages.page output
-  note output
-  new.sentence
-  format.url output
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {conference} { inproceedings }
-
-%%  format.url output
-
-FUNCTION {techreport}
-{
-  output.bibitem
-  format.title add.doi add.media "title" output.check
-  new.colon
-  format.techreport.type output
-  new.colon
-  number output
-  new.slash
-  %institution "institution" output.check
-  institution.or.school "institution/school" output.check
-  new.semicolon
-  format.chief.after output % from editor field
-  new.semicolon
-  format.executor.after output % from author field
-  new.block
-  address.or.location output
-  new.colon
-  organization output
-  format.date "year" output.check
-  new.block                % v.2
-  format.pages.page output % v.2
-  new.sentence % или new.block ?
-  output.eprint.url
-  new.block
-  note output
-  format.annote output
-  fin.entry
-}
-
-FUNCTION {default.type} { misc }
-
-MACRO {jan} {"Jan."}
-MACRO {feb} {"Feb."}
-MACRO {mar} {"Mar."}
-MACRO {apr} {"Apr."}
-MACRO {may} {"May"}
-MACRO {jun} {"Jun."}
-MACRO {jul} {"Jul."}
-MACRO {aug} {"Aug."}
-MACRO {sep} {"Sep."}
-MACRO {oct} {"Oct."}
-MACRO {nov} {"Nov."}
-MACRO {dec} {"Dec."}
-MACRO {aa}{"Astron. \& Astrophys."}
-MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."}
-MACRO {aj} {"Astron. J."}
-MACRO {aph} {"Acta Phys."}
-MACRO {advp} {"Adv. Phys."}
-MACRO {ajp} {"Amer. J. Phys."}
-MACRO {ajm} {"Amer. J. Math."}
-MACRO {amsci} {"Amer. Sci."}
-MACRO {anofd} {"Ann. Fluid Dyn."}
-MACRO {am} {"Ann. Math."}
-MACRO {ap} {"Ann. Phys. (NY)"}
-MACRO {adp} {"Ann. Phys. (Leipzig)"}
-MACRO {ao} {"Appl. Opt."}
-MACRO {apl} {"Appl. Phys. Lett."}
-MACRO {app} {"Astroparticle Phys."}
-MACRO {apj} {"Astrophys. J."}
-MACRO {apjsup} {"Astrophys. J. Suppl."}
-MACRO {apss} {"Astrophys. Space Sci."}
-MACRO {araa} {"Ann. Rev. Astron. Astrophys."}
-MACRO {baas} {"Bull. Amer. Astron. Soc."}
-MACRO {baps} {"Bull. Amer. Phys. Soc."}
-MACRO {cmp} {"Comm. Math. Phys."}
-MACRO {cpam} {"Commun. Pure Appl. Math."}
-MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"}
-MACRO {cpc} {"Comp. Phys. Comm."}
-MACRO {cqg} {"Class. Quant. Grav."}
-MACRO {cra} {"C. R. Acad. Sci. A"}
-MACRO {fed} {"Fusion Eng. \& Design"}
-MACRO {ft} {"Fusion Tech."}
-MACRO {grg} {"Gen. Relativ. Gravit."}
-MACRO {ieeens} {"IEEE Trans. Nucl. Sci."}
-MACRO {ieeeps} {"IEEE Trans. Plasma Sci."}
-MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"}
-MACRO {ip} {"Infrared Phys."}
-MACRO {irp} {"Infrared Phys."}
-MACRO {jap} {"J. Appl. Phys."}
-MACRO {jasa} {"J. Acoust. Soc. America"}
-MACRO {jcp} {"J. Comp. Phys."}
-MACRO {jchp} {"J. Chem. Phys."}
-MACRO {jetp} {"Sov. Phys.--JETP"}
-MACRO {jfe} {"J. Fusion Energy"}
-MACRO {jfm} {"J. Fluid Mech."}
-MACRO {jmp} {"J. Math. Phys."}
-MACRO {jne} {"J. Nucl. Energy"}
-MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."}
-MACRO {jnm} {"J. Nucl. Mat."}
-MACRO {jpc} {"J. Phys. Chem."}
-MACRO {jpp} {"J. Plasma Phys."}
-MACRO {jpsj} {"J. Phys. Soc. Japan"}
-MACRO {jsi} {"J. Sci. Instrum."}
-MACRO {jvst} {"J. Vac. Sci. \& Tech."}
-MACRO {nat} {"Nature"}
-MACRO {nature} {"Nature"}
-MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"}
-MACRO {nf} {"Nucl. Fusion"}
-MACRO {nim} {"Nucl. Inst. \& Meth."}
-MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."}
-MACRO {np} {"Nucl. Phys."}
-MACRO {npb} {"Nucl. Phys. B"}
-MACRO {nt/f} {"Nucl. Tech./Fusion"}
-MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"}
-MACRO {inc} {"Nuovo Cimento"}
-MACRO {nc} {"Nuovo Cimento"}
-MACRO {pf} {"Phys. Fluids"}
-MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."}
-MACRO {pfb} {"Phys. Fluids B: Plasma Phys."}
-MACRO {pl} {"Phys. Lett."}
-MACRO {pla} {"Phys. Lett. A"}
-MACRO {plb} {"Phys. Lett. B"}
-MACRO {prep} {"Phys. Rep."}
-MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"}
-MACRO {pp} {"Phys. Plasmas"}
-MACRO {pop} {"Phys. Plasmas"}
-MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"}
-MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"}
-MACRO {prl} {"Phys. Rev. Lett."}
-MACRO {pr} {"Phys. Rev."}
-MACRO {physrev} {"Phys. Rev."}
-MACRO {pra} {"Phys. Rev. A"}
-MACRO {prb} {"Phys. Rev. B"}
-MACRO {prc} {"Phys. Rev. C"}
-MACRO {prd} {"Phys. Rev. D"}
-MACRO {pre} {"Phys. Rev. E"}
-MACRO {ps} {"Phys. Scripta"}
-MACRO {procrsl} {"Proc. Roy. Soc. London"}
-MACRO {rmp} {"Rev. Mod. Phys."}
-MACRO {rsi} {"Rev. Sci. Inst."}
-MACRO {science} {"Science"}
-MACRO {sciam} {"Sci. Am."}
-MACRO {sam} {"Stud. Appl. Math."}
-MACRO {st} {"Sky and Telesc."}
-MACRO {cjp} {"Czech. J. Phys."}
-MACRO {el} {"Europhys. Lett."}
-MACRO {en} {"Europhys. News"}
-MACRO {fujitsustj} {"FUJITSU Sci. Tech. J."}
-MACRO {ieeeed} {"IEEE Trans. Electron Devices"}
-MACRO {ieeeim} {"IEEE Trans. Instrum. Meas."}
-MACRO {ieeejqe} {"IEEE J. Quantum Electron."}
-MACRO {ieeem} {"IEEE Trans. Magn."}
-MACRO {ieeeptl} {"IEEE Photonic Technol. Lett."}
-MACRO {ieeeuffc} {"IEEE Trans. Ultrason., Ferroelect., Freq. Cont."}
-MACRO {jem} {"J. Electron. Mater."}
-MACRO {jes} {"J. Electrochem. Soc."}
-MACRO {jetplett} {"JETP Lett."}
-MACRO {jjap} {"Japan. J. Appl. Phys."}
-MACRO {jpha} {"J. Phys. A: Math. Gen."}
-MACRO {jphb} {"J. Phys. B: At. Mol. Opt. Phys."}
-MACRO {jphbold} {"J. Phys. B: At. Mol. Phys."}
-MACRO {jphc} {"J. Phys.: Condens. Matter"}
-MACRO {jphcold} {"J. Phys. C: Solid State Phys."}
-MACRO {jphd} {"J. Phys. D: Appl. Phys."}
-MACRO {jvsta} {"J. Vac. Sci. Technol. A"}
-MACRO {jvstb} {"J. Vac. Sci. Technol. B"}
-MACRO {me} {"Microelectron. Eng."}
-MACRO {necrd} {"NEC Res.{\&} Develop."}
-MACRO {pa} {"Physica A"}
-MACRO {pb} {"Physica B"}
-MACRO {pc} {"Physica C"}
-MACRO {pd} {"Physica D"}
-MACRO {procieee} {"Proc. IEEE"}
-MACRO {procspie} {"Proc. SPIE"}
-MACRO {pssa} {"Phys. Stat. Sol. A"}
-MACRO {pssb} {"Phys. Stat. Sol. B"}
-MACRO {rpp} {"Rep. Progr. Phys."}
-MACRO {sm} {"Synthet. Metal"}
-MACRO {sost} {"Solid State Technol."}
-MACRO {ss} {"Surf. Sci."}
-MACRO {ssc} {"Solid State Commun."}
-MACRO {sst} {"Semicond. Sci. Technol."}
-MACRO {suplatt} {"Superlatt. Microstr."}
-MACRO {sust} {"Supercond. Sci. Technol."}
-MACRO {znat} {"Z. Naturforsch."}
-MACRO {appopt} {"Appl. Opt."}
-MACRO {bell}   {"Bell Syst. Tech. J."}
-MACRO {ell}    {"Electron. Lett."}
-MACRO {jasp}   {"J. Appl. Spectr."}
-MACRO {jqe}    {"IEEE J. Quantum Electron."}
-MACRO {jlwt}   {"J. Lightwave Technol."}
-MACRO {jmo}    {"J. Mod. Opt."}
-MACRO {josa}   {"J. Opt. Soc. America"}
-MACRO {josaa}  {"J. Opt. Soc. Amer.~A"}
-MACRO {josab}  {"J. Opt. Soc. Amer.~B"}
-MACRO {jdp}    {"J. Phys. (Paris)"}
-MACRO {oc}     {"Opt. Commun."}
-MACRO {ol}     {"Opt. Lett."}
-MACRO {os}     {"Opt. Spectrosc."}
-MACRO {phtl}   {"IEEE Photon. Technol. Lett."}
-MACRO {pspie}  {"Proc. Soc. Photo-Opt. Instrum. Eng."}
-MACRO {vr}     {"Vision Res."}
-MACRO {zph}    {"Z. f. Physik"}
-MACRO {zphb}   {"Z. f. Physik~B"}
-MACRO {zphd}   {"Z. f. Physik~D"}
-MACRO {sse} {"Solid-State Electron."}
-MACRO {pss} {"Phys. Sol. State"}
-MACRO {nl}  {"Nano Lett."}
-MACRO {sjpp} {"Sov. J. Plasma Phys."}
-MACRO {spd}  {"Sov. Phys.--Doklady"}
-MACRO {sptp} {"Sov. Phys.--Tech. Phys."}
-MACRO       {spu}  {"Sov. Phys.--Uspekhi"}
-MACRO {ufn}  {"\CYRU\CYRF\CYRN"}
-MACRO {pu}  {"Phys.--Uspekhi"}
-MACRO {sjot} {"Sov. J. Opt. Technol."}
-MACRO {sjqe} {"Sov. J. Quantum Electron."}
-MACRO {sleb} {"Sov. Phys.--Leb. Inst. Rep."}
-MACRO {stph} {"Sov. Phys.--Techn. Phys."}
-MACRO {stphl}{"Sov. Techn. Phys. Lett."}
-
-READ
-
-
-FUNCTION {sortify}
-{ purify$
-  "l" change.case$
-}
-
-%% =====================================
-%% This version from old Gost package
-%%<*!natbib>
-FUNCTION {sort.format.names}
-{ 's :=
-  #1 'nameptr :=
-  ""
-  s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { nameptr #1 >
-        { "   " * }
-        'skip$
-      if$
-      s nameptr
-      "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}"
-      format.name$ 't :=
-      nameptr numnames = t "others" = and
-        { "et al" * }
-        %{ bbl.etal * }
-        { t sortify * }
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
-  while$
-}
-%%</!natbib>
-%% This version from plainnat.bst
-%% It ignores second and subsequent authors but include year.
-%%<*natbib>
-%%</natbib>
-%% =====================================
-
-FUNCTION {sort.format.title}
-{ 't :=
-  "A " #2
-    "An " #3
-      "The " #4 t chop.word % Removes "The " if any
-    chop.word               % Removes "An " if any
-  chop.word                 % Removes "A " if any
-  sortify
-  #1 global.max$ substring$
-}
-
-%% =====================================
-%% This version from old gost package.
-%%
-FUNCTION {author.sort}
-{ author empty$
-    { key empty$
-        { "to sort, need author or key in " cite$ * warning$
-          ""
-        }
-        { key sortify }
-      if$
-    }
-    {
-      author num.names$ #4 <
-        {author sort.format.names }
-        {title sort.format.title}
-      if$
-    }
-  if$
-}
-%% This version from plainnat.bst
-%% =====================================
-
-FUNCTION {author.title.sort}
-{ author empty$
-    { title empty$
-        { key empty$
-            { "to sort, need author, title, or key in " cite$ * warning$
-              ""
-            }
-            { key sortify }
-          if$
-        }
-        { title sort.format.title }
-      if$
-    }
-    {
-      author num.names$ #4 <
-        {author sort.format.names }
-        {title sort.format.title}
-      if$
-     }
-  if$
-}
-
-FUNCTION {presort}%#1
-{
-  author.title.sort
-  "   "
-  *
-  year field.or.null sortify
-  *
-  "   "
-  *
-  title field.or.null
-  sort.format.title
-  *
-  #1 entry.max$ substring$
-  'sort.key$ :=
-}
-
-
-ITERATE {presort}
-
-SORT
-
-
-STRINGS { longest.label }
-
-INTEGERS { number.label longest.label.width }
-
-FUNCTION {initialize.longest.label}
-{ "" 'longest.label :=
-  #1 'number.label :=
-  #0 'longest.label.width :=
-}
-
-EXECUTE {initialize.longest.label}
-
-FUNCTION {forward.pass}
-{ number.label int.to.str$ 'label :=
-  number.label #1 + 'number.label :=
-  label width$ longest.label.width >
-    { label 'longest.label :=
-      label width$ 'longest.label.width :=
-    }
-    'skip$
-  if$
-}
-
-ITERATE {forward.pass}
-
-
-FUNCTION {begin.bib}
-{ "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
-  "\def\selectlanguageifdefined#1{"                  write$ newline$
-  "\expandafter\ifx\csname date#1\endcsname\relax"   write$ newline$
-  "\else\selectlanguage{#1}\fi}"                     write$ newline$
-  "\providecommand*{\href}[2]{{\small #2}}"          write$ newline$
-  "\providecommand*{\url}[1]{{\small #1}}"           write$ newline$
-  "\providecommand*{\BibUrl}[1]{\url{#1}}"           write$ newline$
-  "\providecommand{\BibAnnote}[1]{}"                 write$ newline$
-  "\providecommand*{\BibEmph}[1]{#1}"                write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{---}" write$ newline$
-  %\DeclareUTFcharacter[\UTFencname]{x2014}{\cyrdash}
-  %"\let\cyrdash\textemdash" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\hbox to.8em{--\hss--}}" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\textemdash}" write$ newline$
-  "\ProvideTextCommandDefault{\cyrdash}{\iflanguage{russian}{\hbox to.8em{--\hss--}}{\textemdash}}" write$ newline$
-  %%"\ProvideTextCommandDefault{\cyrdash}{%"  write$ newline$
-  %%"  \iflanguage{russian}{\hbox to.8em{--\hss--}}{%" write$ newline$
-  %%"    \iflanguage{ukrainian}{\hbox to.8em{--\hss--}}{\textemdash}}}"  write$ newline$
-  "\providecommand*{\BibDash}{\ifdim\lastskip>0pt\unskip\nobreak\hskip.2em plus 0.1em\fi" write$ newline$
-  "\cyrdash\hskip.2em plus 0.1em\ignorespaces}" write$ newline$
-  "\renewcommand{\newblock}{\ignorespaces}" write$ newline$
-  preamble$ empty$
-    'skip$
-    { preamble$ write$ newline$ }
-  if$
-}
-
-EXECUTE {begin.bib}
-
-EXECUTE {init.state.consts}
-
-ITERATE {call.type$}
-
-FUNCTION {end.bib}
-{ newline$
-  "\end{thebibliography}" write$ newline$
-}
-
-EXECUTE {end.bib}
-
-%%
-%% End of file `gost780s.bst'.

Modified: trunk/Master/texmf-dist/bibtex/bst/gost/ugost2003.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/gost/ugost2003.bst	2020-12-29 00:54:00 UTC (rev 57250)
+++ trunk/Master/texmf-dist/bibtex/bst/gost/ugost2003.bst	2020-12-29 02:19:51 UTC (rev 57251)
@@ -6,28 +6,20 @@
 %%
 %% gost.dtx  (with options: `bst,utf8,strict,eprint')
 %% 
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%   http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
+%% IMPORTANT NOTICE:
 %% 
-%% This file has the LPPL maintenance status "maintained".
-%% Maintained by Igor A. Kotelnikov.
+%% For the copyright see the source file.
 %% 
-%% Current version: 1.2j, 2017.01.12
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from ugost2003.bst.
 %% 
-%% Please, send bug report via e-mail:
-%%   kia999 at mail dot ru <Igor Kotelnikov>
-%% or
-%%   polyama at yahoo dot com <Maksym Polyakov>
+%% For distribution of the original source see the terms
+%% for copying and modification in the file gost.dtx.
 %% 
-
-
-
-%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
 %% This bibstyle attempts to format bibliography according to
 %% GOST 7.1-2003 for bibliographic records.
 
@@ -67,15 +59,15 @@
     language
     langid          % new in v1.2c
     booklanguage
-    %date            % not implemented yet...
+    date            % new in v1.2i
     pagetotal
     url
     urldate
     isbn
     doi
+    eprint
     eprinttype      % = archivePrefix
     eprintclass     % = primaryClass
-    eprint
     % new in v1.2f:
     % appear in biblatex:
     %addendum       % not implemented yet...
@@ -100,9 +92,24 @@
   {}
   { label }
 
-INTEGERS { output.state before.all mid.sentence after.sentence after.block
-after.dblslash after.slash after.colon after.semicolon }
+INTEGERS {
+    output.state
+    before.all
+    mid.sentence
+    after.sentence
+    after.block
+    after.dblslash
+    after.slash
+    after.colon
+    after.semicolon
+}
 
+STRINGS { curlanguage }
+
+STRINGS { s t }
+
+STRINGS { y m d }   % new in v.1.2j
+
 FUNCTION {init.state.consts}
 { #0 'before.all :=
   #1 'mid.sentence :=
@@ -114,11 +121,18 @@
   #7 'after.semicolon :=
 }
 
-STRINGS { s t }
+FUNCTION {set.language}
+{ langid empty$
+    { language empty$
+        { "english" 'curlanguage := }
+        { language  'curlanguage := }
+      if$
+    }
+    { langid  'curlanguage := }
+  if$
+}
 
-STRINGS { curlanguage }
-
-FUNCTION {change.language}
+FUNCTION {reset.language}
 { booklanguage empty$
     { "" }
     { booklanguage  'curlanguage :=
@@ -143,7 +157,7 @@
         { output.state before.all =
             'write$
             { output.state after.dblslash =
-                { "~//" * change.language * " " * write$ }
+                { "~//" * reset.language * " " * write$ }
                 { output.state after.slash =
                     { "~/ " * write$ }
                     { output.state after.colon =
@@ -177,7 +191,9 @@
 FUNCTION {output.check}
 { 't :=
   duplicate$ empty$
-    { pop$ "empty " t * " in " * cite$ * warning$ }
+    { pop$
+      "empty " t * " in " * cite$ * warning$
+    }
     'output.nonnull
   if$
 }
@@ -256,13 +272,6 @@
   if$
 }
 
-
-FUNCTION {non.stop}
-{ duplicate$
-   "}" * add.period$
-   #-1 #1 substring$ "." =
-}
-
 FUNCTION {new.block.checka}
 { empty$
     'skip$
@@ -309,9 +318,21 @@
   if$
 }
 
+%%
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {spaces.around}
+{ " " swap$ * " " * }
+
 FUNCTION {emphasize}
 { duplicate$ empty$
-    { pop$ "" }
+    %{ pop$ "" }
+    'skip$       % v.1.2k
     { "\BibEmph{" swap$ * "}" * }
   if$
 }
@@ -323,7 +344,7 @@
   if$
 }
 
-FUNCTION {enclose.square.brackets}
+FUNCTION {bracketise}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -331,7 +352,7 @@
   if$
 }
 
-FUNCTION {enclose.round.brackets}
+FUNCTION {paranthesify}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -339,25 +360,82 @@
   if$
 }
 
-FUNCTION {space.word}
-{ " " swap$ * " " * }
 
-FUNCTION {bbl.edby}    %  { "\bbledby{}" }
+FUNCTION {tie.connect}
+ {"~" swap$ * *
+ }
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { t #1 #2 substring$ "--" = not
+            { "--" *
+              t #2 global.max$ substring$ 't :=
+            }
+            {   { t #1 #1 substring$ "-" = }
+                { "-" *
+                  t #2 global.max$ substring$ 't :=
+                }
+              while$
+            }
+          if$
+        }
+        { t #1 #1 substring$ *
+          t #2 global.max$ substring$ 't :=
+        }
+      if$
+    }
+  while$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+        { #1 'multiresult := }
+        { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {bbl.edby}
 { curlanguage "english" =
-   {"Ed.\ by"}
+   {"ed.\ by"}
    { curlanguage "ukrainian" =
-      {"Під ред."}
+      {"під ред."}
       { curlanguage "russian" =
-         {"Под ред."}
+         {"под ред."}
          { curlanguage "german" =
             { "ed." }
-            {"language is not defined: " language "edby" * * warning$ "Ed.\ by"}
+            {"language is not defined: " curlanguage " in bbl.edby" * * warning$ "Ed.\ by"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.cmplr}
+FUNCTION {bbl.compiler}
 { curlanguage "english" =
    { "Compiler"}
    { curlanguage "german" =
@@ -366,15 +444,15 @@
          {"{Укл.}"}
          { curlanguage "russian" =
             {"{Сост.}"}
-            {"language is not defined: " language  "cmplr" * * warning$ "Compiler"}
+            {"language is not defined: " curlanguage  " in bbl.compiler" * * warning$ "Compiler"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.edition} %  { "\bbledition{}" }
+FUNCTION {bbl.edition}
 { curlanguage "english" =
-   {"edition"}
+   {"ed."}
    { curlanguage "ukrainian" =
       {"{вид.}"}
       { curlanguage "russian" =
@@ -385,7 +463,7 @@
                {"edizione"}
                { curlanguage "french" =
                   {"\'{e}dition"}
-                  {"language is not defined: " language  "edition" * * warning$ "edition"}
+                  {"language is not defined: " curlanguage  " in bbl.edition" * * warning$ "ed."}
                if$}
             if$}
          if$}
@@ -393,7 +471,7 @@
    if$}
 if$}
 
-FUNCTION {bbl.vvolume} %  { "\bblVolume{}" }
+FUNCTION {bbl.vvolume}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Volume"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -400,12 +478,12 @@
       { "Том" }
       { curlanguage "german" =
          {"{Band}"} %%%% { "Volumen" }
-         {"language is not defined: " language  "vvolume" * * warning$ "Volume"}
+         {"language is not defined: " curlanguage  " in bbl.vvolume" * * warning$ "Volume"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.vvol}    %  { "\bblVol{}" }
+FUNCTION {bbl.vvol}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Vol."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -412,12 +490,12 @@
       {"Т."}
       { curlanguage "german" =
          {"{Bd.}"} %%%% { "Vol." }
-         {"language is not defined: " language  "vvol" * * warning$ "Vol."}
+         {"language is not defined: " curlanguage  " in bbl.vvol" * * warning$ "Vol."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iissue}  %  { "\bblIssue{}" }
+FUNCTION {bbl.iissue}
 { curlanguage "english" =
    {"Issue"}
    { curlanguage "ukrainian" =
@@ -426,13 +504,13 @@
          {"Выпуск"}
          { curlanguage "german" =
             {"{Heft}"} %%%% { "Ausgabe" }
-            {"language is not defined: " language "iissue" * * warning$ "Issue"}
+            {"language is not defined: " curlanguage " in bbl.iissue" * * warning$ "Issue"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iiss}  %  { "\bblIss{}" }
+FUNCTION {bbl.iiss}
 { curlanguage "english" =
    {"Iss."}
    { curlanguage "ukrainian" =
@@ -441,13 +519,13 @@
          {"Вып."}
          { curlanguage "german" =
             {"{H.}"}
-            {"language is not defined: " language "iiss" * * warning$ "Iss."}
+            {"language is not defined: " curlanguage " in bbl.iiss" * * warning$ "Iss."}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.of}      %  { "\bblof{}" }
+FUNCTION {bbl.of}
 { curlanguage "english" =
    {"of"}
    { curlanguage "german" =
@@ -456,13 +534,13 @@
          { "{із}" }
          { curlanguage "russian" =
             { "{из}" }
-            {"language is not defined: " language "of" * * warning$ "of"}
+            {"language is not defined: " curlanguage " in bbl.of" * * warning$ "of"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.etal}      %  { "\bblof{}" }
+FUNCTION {bbl.etal}
 { curlanguage "english" =
    {"et~al."}
    { curlanguage "german" =
@@ -471,14 +549,31 @@
          {"{та~ін.}"}
          { curlanguage "russian" =
             {"и~др."}
-            {"language is not defined: " language  "et~al" * * warning$ "et~al."}
+            {"language is not defined: " curlanguage  " in bbl.etal" * * warning$ "et~al."}
          if$}
       if$}
    if$}
 if$}
 
+FUNCTION {bbl.and}
+{ curlanguage "english" =
+  {"and"}
+   { curlanguage "german" =
+      { "und" }
+      { curlanguage "ukrainian" =
+         {"і"}
+         { curlanguage "russian" =
+            {"и"}
+            { curlanguage "french" =
+                {"et"}
+                {"language is not defined: " curlanguage  " in bbl.and" * * warning$ "and"}
+            if$}
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {bbl.nnumber} %  { "\bblNumber{}" }
+FUNCTION {bbl.nnumber}
 { curlanguage "english" =
    {"Number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -485,12 +580,12 @@
       { "{Номер}" }
       { curlanguage "german" =
          {"{Heft}"} %%% { "Anzahl" }
-         {"language is not defined: " language  "nnumber" * * warning$ "Number"}
+         {"language is not defined: " curlanguage  " in bbl.nnumber" * * warning$ "Number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.number}  %  { "\bblnumber{}" }
+FUNCTION {bbl.number}
 { curlanguage "english" =
    {"number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -497,27 +592,30 @@
       {"{номер}"}
       { curlanguage "german" =
          {"{Heft}"} %%% { "anzahl" }???
-         {"language is not defined: " language  "number" * * warning$ "number"}
+         {"language is not defined: " curlanguage  " in bbl.number" * * warning$ "number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nr}     %   { "\bblno{}" }
+FUNCTION {bbl.nr}
 { curlanguage "english" =
    {"no."}
    { curlanguage "italian" =
-      { "no" }
+      { "no." }
       { curlanguage "ukrainian" = curlanguage "russian" = or
          { "{№}" }
          { curlanguage "german" =
-            {"{H.}"} %%% { "an." }
-            {"language is not defined: " language "nr" * * warning$ "no."}
+            {"{nu.}"} %%% { "an." }
+            { curlanguage "french" =
+                { "no." }
+                {"language is not defined: " curlanguage " in bbl.nr" * * warning$ "no."}
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nnr}     %   { "\bblno{}" }
+FUNCTION {bbl.nnr}
 { curlanguage "english" =
    {"No."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -524,30 +622,30 @@
       { "{№}" }
       { curlanguage "german" =
          {"{H.}"} %%% { "an." }
-         {"language is not defined: " language  "nnr" * * warning$ "No."}
+         {"language is not defined: " curlanguage  " in bbl.nnr" * * warning$ "No."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.in}    %    { "\bblin{}" }
+FUNCTION {bbl.in}
 { curlanguage "english" = curlanguage "german" = or
    {"in"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "{в}" }
-      {"language is not defined: " language  "in" * * warning$ "in"}
+      {"language is not defined: " curlanguage  " in bbl.in" * * warning$ "in"}
    if$}
 if$}
 
-FUNCTION {bbl.iin}  %     { "\bblIn{}" }
+FUNCTION {bbl.iin}
 { curlanguage "english" = curlanguage "german" = or
    {"In"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "{В}" }
-      {"language is not defined: " language  "iin" * * warning$ "In"}
+      {"language is not defined: " curlanguage  " in bbl.iin" * * warning$ "In"}
    if$}
 if$}
 
-FUNCTION {bbl.pages}    % { "\bblpp." }
+FUNCTION {bbl.pages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."} %%% {"pp."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -554,12 +652,12 @@
       {"{с.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "pages" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.pages" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.page}   %   { "\bblp."
+FUNCTION {bbl.page}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -566,12 +664,12 @@
       {"{с.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "page" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.page" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppages}%    { "\bblPp." }
+FUNCTION {bbl.ppages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."} %%%% { "Pp." }
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -578,12 +676,12 @@
       {"{С.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language "ppages" * * warning$ "P."}
+         {"language is not defined: " curlanguage " in bbl.ppages" * * warning$ "P."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppage}  %   { "\bblP." }
+FUNCTION {bbl.ppage}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -590,7 +688,7 @@
       {"{С.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language  "ppage" * * warning$ "P."}
+         {"language is not defined: " curlanguage  " in bbl.ppage" * * warning$ "P."}
       if$}
    if$}
 if$}
@@ -604,7 +702,10 @@
          { "{Режим доступа}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "Mode d'acc\`{e}s" }
+                { "language is not defined: " curlanguage " in bbl.url" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
@@ -618,13 +719,16 @@
          { "{дата обращения}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "{en ligne; acc\'{e}d\'{e}}" }
+                { "language is not defined: " curlanguage " in bbl.urldate" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.techreport} % rename to bbl.techreport
+FUNCTION {bbl.techreport}
 { curlanguage "english" =
    { "Rep." }
    { curlanguage "german" =
@@ -631,7 +735,7 @@
       { "Bericht" }
       { curlanguage "russian" =
          { "{Отчет}" }
-         { "language is not defined: " language "techrep" * * warning$ "Rep." }
+         { "language is not defined: " curlanguage " in bbl.techrep" * * warning$ "Rep." }
       if$}
    if$}
 if$}
@@ -640,10 +744,10 @@
 { curlanguage "english" =
    { "Master's thesis" }
    { curlanguage "german" =
-      { "Diss.~Mag." }
+      { "diss.~mag." }
       { curlanguage "russian" =
-         { "{Квалификационная работа магистра}" }
-         { "language is not defined: " language "mthesis" * * warning$ "Master's thesis" }
+         { "{квалификационная работа магистра}" }
+         { "language is not defined: " curlanguage " in bbl.mthesis" * * warning$ "Master's thesis" }
       if$}
    if$}
 if$}
@@ -652,12 +756,12 @@
 { curlanguage "english" =
    { "Ph.\,D. thesis" }
    { curlanguage "german" =
-      { "Diss.~Ph.\,D." }
+      { "diss.~Ph.\,D." }
       { curlanguage "russian" =
-         { "{дис.\ \ldots\ канд. наук}" }
+         { "{дис.\ \ldots\ канд.\ наук}" }
          { curlanguage "french" =
-           { "Th\`{e}se de doctorat" }
-           { "language is not defined: " language "phdthesis" * * warning$ "Ph.\,D. thesis" }
+           { "th\`{e}se de doctorat" }
+           { "language is not defined: " curlanguage " in bbl.phdthesis" * * warning$ "Ph.\,D. thesis" }
          if$}
       if$}
    if$}
@@ -665,35 +769,22 @@
 
 FUNCTION {bbl.docthesis}
 { curlanguage "english" =
-   { "Dr.\,Sci. dissertation" }
+   { "dr.\,sci. dissertation" }
    { curlanguage "german" =
-      { "Diss.~Dr." }
+      { "diss.~dr." }
       { curlanguage "russian" =
          { "{дис.\ \ldots\ д-ра наук}" }
-         { "language is not defined: " language "docthesis" * * warning$ "Dr.\,Sci. dissertation" }
+         { "language is not defined: " curlanguage " in bbl.docthesis" * * warning$ "Dr.\,Sci. dissertation" }
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.thesis.type}
-{ type "mathesis" =
-  { bbl.mathesis }
-  { type "phdthesis" =
-    { bbl.phdthesis }
-    { type "docthesis" =
-      { bbl.docthesis }
-      %%{ "!!!" type * "t" change.case$ }
-      { type }
-    if$}
-  if$}
-if$}
-
 FUNCTION {bbl.nnoaddress}
 { curlanguage "english" =
    { "S.\ l." }
    { curlanguage "russian" =
       { "{Б.\ м.}" }
-      { "language is not defined: " language "nnoaddress" * * warning$ "S.\ l." }
+      { "language is not defined: " curlanguage " in bbl.nnoaddress" * * warning$ "S.\ l." }
    if$}
 if$}
 
@@ -702,7 +793,7 @@
    { "s.\ n." }
    { curlanguage "russian" =
       { "{б.\ и.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "s.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "s.\ n." }
    if$}
 if$}
 
@@ -711,7 +802,7 @@
    { "S.\ n." }
    { curlanguage "russian" =
       { "{Б.\ и.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "S.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "S.\ n." }
    if$}
 if$}
 
@@ -720,7 +811,7 @@
    { "Text" }
    { curlanguage "russian" = curlanguage "ukrainian" = or
       { "{Текст}" }
-      { "language is not defined: " language "media" * * warning$ "Text" }
+      { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Text" }
    if$}
 if$}
 
@@ -731,7 +822,7 @@
       { "{Электронный ресурс}" }
       { curlanguage "ukrainian" =
         { "{Електронний ресурс}" }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -743,7 +834,7 @@
       { "{Электронный ресурс онлайн}" }
       { curlanguage "ukrainian" =
         { "{Електронний ресурс онлайн}" }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -755,7 +846,7 @@
       { "{рук.}" }
       { curlanguage "ukrainian" =
         { "{рук.}" }
-        { "language is not defined: " language "chief" * * warning$ "chief" }
+        { "language is not defined: " curlanguage " in bbl.chief" * * warning$ "chief" }
       if$}
    if$}
 if$}
@@ -762,12 +853,12 @@
 
 FUNCTION {bbl.executor}
 { curlanguage "english" =
-   { "Executor" }
+   { "executor" }
    { curlanguage "russian" =
       { "{исполн.}" }
       { curlanguage "ukrainian" =
         { "{виконавець}" }
-        { "language is not defined: " language "executor" * * warning$ "executor" }
+        { "language is not defined: " curlanguage " in bbl.executor" * * warning$ "executor" }
       if$}
    if$}
 if$}
@@ -789,7 +880,7 @@
       { "ang." }
       { curlanguage "russian" =
         { "{заявл.}" }
-        { "language is not defined: " language "req" * * warning$ "req" }
+        { "language is not defined: " curlanguage " in bbl.req" * * warning$ "req" }
       if$
       }
     if$
@@ -805,7 +896,7 @@
       { "ausg." }
       { curlanguage "russian" =
         { "{опубл.}" }
-        { "language is not defined: " language "publication" * * warning$ "publication" }
+        { "language is not defined: " curlanguage " in bbl.publication" * * warning$ "publication" }
       if$
       }
     if$
@@ -821,7 +912,7 @@
       { "Prioritat" }
       { curlanguage "russian" =
         { "{приоритет}" }
-        { "language is not defined: " language "priority" * * warning$ "priority" }
+        { "language is not defined: " curlanguage " in bbl.priority" * * warning$ "priority" }
       if$
       }
     if$
@@ -829,112 +920,346 @@
   if$
 }
 
-INTEGERS { nameptr namesleft numnames }
+FUNCTION {bbl.jan}
+{ curlanguage "english" =
+   {"Jan."}
+   { curlanguage "ukrainian" =
+      {"Січ."} % Січень
+      { curlanguage "russian" =
+         { "Янв." }
+         { curlanguage "german" =
+            { "Jan." } % Januar
+            { "language is not defined: bbl.jan for " curlanguage * warning$ "Jan." }
+         if$}
+      if$}
+   if$}
+if$}
 
+FUNCTION {bbl.feb}
+{ curlanguage "english" =
+   {"Feb."}
+   { curlanguage "ukrainian" =
+      {"Лют."} % Лютий
+      { curlanguage "russian" =
+         { "Фев." }
+         { curlanguage "german" =
+            {"Feb."} % Februar
+            {"language is not defined: bbl.feb for " curlanguage * warning$ "Feb."}
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.names}
-{
-  #1 "{vv~}{ll}{~jj}{,~ff}" format.name$
-}
+FUNCTION {bbl.mar}
+{ curlanguage "english" =
+   {"Mar."}
+   { curlanguage "ukrainian" =
+      {"Бер."} % Березень
+      { curlanguage "russian" =
+            { "Март" }
+         { curlanguage "german" =
+            {"März"} % März
+            {"language is not defined: bbl.mar for " curlanguage * warning$ "Mar."}
+         if$}
+      if$}
+   if$}
+if$}
 
+FUNCTION {bbl.apr}
+{ curlanguage "english" =
+   {"Apr."}
+   { curlanguage "ukrainian" =
+      {"Квіт."} % квітень
+      { curlanguage "russian" =
+            { "Апр." }
+         { curlanguage "german" =
+            {"Apr."} % April
+            { "language is not defined: bbl.apr for " curlanguage * warning$ "Apr." }
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.names.rev}
-{
-  's :=
-  #1 'nameptr :=
-  s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr
-      "{ff}{~vv}{~ll}{, jj}" format.name$ 't :=
-      nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
-          if$
-          namesleft #1 >
-            { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
-                { " " * bbl.etal enclose.square.brackets * }
-                { ", " * t * }
-              if$
-            }
-          if$
-        }
-        't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
-  while$
-}
+FUNCTION {bbl.may}
+{ curlanguage "english" =
+   {"May"}
+   { curlanguage "ukrainian" =
+      {"Трав."} % травень
+      { curlanguage "russian" =
+            { "Май" }
+         { curlanguage "german" =
+            {"Mai"}
+            { "language is not defined: bbl.may for " curlanguage * warning$ "May" }
+         if$}
+      if$}
+   if$}
+if$}
 
+FUNCTION {bbl.jun}
+{ curlanguage "english" =
+   {"June"}
+   { curlanguage "ukrainian" =
+      {"Чер."} % червень
+      { curlanguage "russian" =
+            { "Июнь" }
+         { curlanguage "german" =
+            {"Juni"}
+            { "language is not defined: bbl.jun for " curlanguage * warning$ "June" }
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.authors}
-{ author empty$
-    { "" }
-    { author format.names emphasize}
-  if$
-}
+FUNCTION {bbl.jul}
+{ curlanguage "english" =
+   {"July"}
+   { curlanguage "ukrainian" =
+      {"Липень"} %Липень
+      { curlanguage "russian" =
+            { "Июль" }
+         { curlanguage "german" =
+            {"Juli"}
+            { "language is not defined: bbl.jul for " curlanguage * warning$ "July" }
+         if$}
+      if$}
+   if$}
+if$}
 
+FUNCTION {bbl.aug}
+{ curlanguage "english" =
+   {"Aug."}
+   { curlanguage "ukrainian" =
+      {"Серпень"} % Серпень
+      { curlanguage "russian" =
+            { "Авг." }
+         { curlanguage "german" =
+            {"Aug."} % August
+            { "language is not defined: bbl.aug for " curlanguage * warning$ "Aug." }
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.bookauthors}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names}
-  if$
-}
+FUNCTION {bbl.sep}
+{ curlanguage "english" =
+   {"Sep."}
+   { curlanguage "ukrainian" =
+      {"Вер."} % вересень
+      { curlanguage "russian" =
+            { "Сент." }
+         { curlanguage "german" =
+            {"Sep."} % September
+            { "language is not defined: bbl.sep for " curlanguage * warning$ "Sep." }
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.authors.after}
-{ author empty$
-    { "" }
-    { author format.names.rev}
+FUNCTION {bbl.oct}
+{ curlanguage "english" =
+   {"Oct."}
+   { curlanguage "ukrainian" =
+      {"Жов."} % жовтень
+      { curlanguage "russian" =
+            { "Окт." }
+         { curlanguage "german" =
+            {"Okt."} % Oktober
+            { "language is not defined: bbl.oct for " curlanguage * warning$ "Oct." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.nov}
+{ curlanguage "english" =
+   {"Nov."}
+   { curlanguage "ukrainian" =
+      {"Лис."} % листопад
+      { curlanguage "russian" =
+            { "Нояб." }
+         { curlanguage "german" =
+            {"Nov."} % November
+            { "language is not defined: bbl.nov for " curlanguage * warning$ "Nov." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.dec}
+{ curlanguage "english" =
+   {"Dec."}
+   { curlanguage "ukrainian" =
+      {"Груд."} % грудень
+      { curlanguage "russian" =
+            { "Дек." }
+         { curlanguage "german" =
+            {"Dez."} % Dezember
+            { "language is not defined: bbl.dec for " curlanguage * warning$ "Dec." }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {bbl.arxiv}
+{ curlanguage "english" =
+   { "ArXiv" }
+   { curlanguage "ukrainian" =
+      {"ArXiv"}
+      { curlanguage "russian" =
+         { "ArXiv" }
+         { curlanguage "german" =
+            { "ArXiv" }
+            { "language is not defined: bbl.arxiv for " curlanguage * warning$ "ArXiv" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jstor}
+{ curlanguage "english" =
+   { "JSTOR" }
+   { curlanguage "ukrainian" =
+      {"JSTOR"}
+      { curlanguage "russian" =
+         { "JSTOR" }
+         { curlanguage "german" =
+            { "JSTOR" }
+            { "language is not defined: bbl.jstor for " curlanguage * warning$ "JSTOR" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.pubmed}
+{ curlanguage "english" =
+   { "PubMed" }
+   { curlanguage "ukrainian" =
+      {"PubMed"}
+      { curlanguage "russian" =
+         { "PubMed" }
+         { curlanguage "german" =
+            { "PubMed" }
+            { "language is not defined: bbl.pubmed for " curlanguage * warning$ "PubMed" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.googlebooks}
+{ curlanguage "english" =
+   { "Google Books" }
+   { curlanguage "ukrainian" =
+      {"Google Книги"}
+      { curlanguage "russian" =
+         { "Google Книги" }
+         { curlanguage "german" =
+            { "Google Books" }
+            { "language is not defined: bbl.googlebooks for " curlanguage * warning$ "Google Books" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.hdl}
+{ curlanguage "english" =
+   { "Handle.Net" }
+   { curlanguage "ukrainian" =
+      {"Handle.Net"}
+      { curlanguage "russian" =
+         { "Handle.Net" }
+         { curlanguage "german" =
+            { "Handle.Net" }
+            { "language is not defined: bbl.hdl for " curlanguage * warning$ "Handle.Net" }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {address.or.location}
+{
+  address empty$
+    { location }
+    { address }
   if$
 }
 
-FUNCTION {format.bookauthors.after}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names.rev}% always cuts to 4 persons
+FUNCTION {specialitycode.or.number}
+{
+  specialitycode empty$
+    { number }
+    { specialitycode }
   if$
 }
 
-FUNCTION {format.editors.after}
-{ editor empty$
-    { "" }
-    { bbl.edby "\ " * editor format.names.rev * }
+FUNCTION {institution.or.school}
+{
+  institution empty$
+    { school}
+    { institution }
   if$
 }
-
-FUNCTION {format.chief.after}
-{ editor empty$
-    { "" }
-    { bbl.chief "\ " * editor format.names.rev * }
+FUNCTION {date.to.year}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #3 >
+        {
+          date #1 #4 substring$ 'y :=
+          y
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
   if$
 }
 
-FUNCTION {format.executor.after}
-{ author empty$
-    { "" }
-    { bbl.executor ": " * author format.names.rev * }
+FUNCTION {date.to.month}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #6 >
+        {
+          date #6 #2 substring$ 'm :=
+          m
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
   if$
 }
 
-FUNCTION {format.compiler.after}
-{ compiler empty$
-    { "" }
-    { bbl.cmplr "\ " * compiler format.names.rev * }
+FUNCTION {date.to.day}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #10 =
+        {
+          date #9 #2 substring$ 'd :=
+          d
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
   if$
 }
 
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    { title }
+FUNCTION {year.or.date.to.year}
+{
+  year empty$
+    {
+      date.to.year
+    }
+    { year }
   if$
 }
 
@@ -941,39 +1266,39 @@
 FUNCTION {format.month}
 { month empty$
     { "" }
-    { curlanguage "russian" =
-        { month "Jan." =
-            { "Янв." }
-        { month "Feb." =
-            { "Фев." }
-        { month "Mar." =
-            { "Март" }
-        { month "Apr." =
-            { "Апр." }
-        { month "May" =
-            { "Май" }
-        { month "Jun." =
-            { "Июнь" }
-        { month "Jul." =
-            { "Июль" }
-        { month "Aug." =
-            { "Авг." }
-        { month "Sep." =
-            { "Сент." }
-        { month "Oct." =
-            { "Окт." }
-        { month "Nov." =
-            { "Нояб." }
-        { month "Dec." =
-            { "Дек." }
-            { month }
-            if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
-        { month }
-        if$}
+    { month "Jan." =
+        { bbl.jan }
+    { month "Feb." =
+        { bbl.feb }
+    { month "Mar." =
+        { bbl.mar }
+    { month "Apr." =
+        { bbl.apr }
+    { month "May" =
+        { bbl.may }
+    { month "Jun." =
+        { bbl.jun }
+    { month "Jul." =
+        { bbl.jul }
+    { month "Aug." =
+        { bbl.aug }
+    { month "Sep." =
+        { bbl.sep }
+    { month "Oct." =
+        { "Окт." }
+    { month "Nov." =
+        { bbl.nov }
+    { month "Dec." =
+        { bbl.dec }
+        {
+          "unknown month in " cite$ * warning$
+          month
+        }
+        if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
     if$
 }
 FUNCTION {format.date}
-{ year empty$
+{ year.or.date.to.year empty$
     { month empty$
         { "" }
         { "there's a month but no year in " cite$ * warning$
@@ -982,36 +1307,138 @@
       if$
     }
     { month empty$
-        'year
-        { year ". \BibDash " format.month * * }
+        'year.or.date.to.year
+        { year.or.date.to.year ". \BibDash " format.month * * }
       if$
     }
   if$
 }
 
-FUNCTION {address.or.location}
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {fmt.names.first}
+{ #1
+  "{vv~}{ll}{~jj}{,~ff}"
+  format.name$
+}
+
+FUNCTION {fmt.names.three}
 {
-  address empty$
-    { location }
-    { address }
-  if$
+  's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+  { namesleft #0 > }
+  { s nameptr
+      "{vv~}{ll}{~jj}{,~ff}"
+    format.name$ 't :=
+    nameptr #1 >
+      { nameptr #4 = numnames #4 > and
+          { "others" 't :=
+            #1 'namesleft :=
+          }
+          'skip$
+        if$
+        namesleft #1 >
+          { ", " * t * }
+          { t "others" = t "~others" = or
+              { " " * bbl.etal bracketise *}
+              { ", " * t * }
+          if$
+          }
+        if$
+      }
+      't
+    if$
+    nameptr #1 + 'nameptr :=
+    namesleft #1 - 'namesleft :=
+  }
+  while$
 }
 
-FUNCTION {specialitycode.or.number}
+FUNCTION {fmt.names.all}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr
+      %"{vv~}{ll}" format.name$ 't :=
+      "{vv~}{ll}{~jj}{,~ff}"
+      format.name$ 't :=
+      nameptr #1 >
+        { namesleft #1 >
+            { ", " * t * }
+            { numnames #2 >  curlanguage "english" = and
+                { "," * }
+                'skip$
+              if$
+              t "others" = t "~others" = or
+                { " " * bbl.etal bracketise *}
+                { " " bbl.and " " * * * t * }
+              if$
+            }
+          if$
+        }
+        't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+%%<long>    { author fmt.names.all emphasize}
+%%<!long&strict>    { author fmt.names.first emphasize}
+%%<!long&!strict>    { author fmt.names.three emphasize}
+FUNCTION {format.author}
 {
-  specialitycode empty$
-    { number }
-    { specialitycode }
+  author empty$
+    { author } %%%'skip$
+    {author num.names$ #4 <
+      {
+       author fmt.names.first
+      }
+      { "" } %%%'skip$
+    if$}
   if$
 }
 
-FUNCTION {institution.or.school}
-{
-  institution empty$
-    { school}
-    { institution }
+FUNCTION {format.bookauthors.rest}
+{ bookauthor empty$
+    { "" }
+    { bookauthor fmt.names.three emphasize }
   if$
 }
+
+FUNCTION {format.editors.rest}
+{ editor empty$
+    { "" }
+    { bbl.edby "\ " * editor fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.chief.rest}
+{ editor empty$
+    { "" }
+    { bbl.chief "\ " * editor fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.executor.rest}
+{ author empty$
+    { "" }
+    { bbl.executor ": " * author fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.compiler.rest}
+{ compiler empty$
+    { "" }
+    { bbl.compiler "\ " * compiler fmt.names.three * }
+  if$
+}
+
 FUNCTION {output.address.publisher}
 {
   address empty$
@@ -1018,8 +1445,8 @@
     {
       bbl.nnoaddress
       publisher empty$
-        { "~: " * bbl.nopublisher * enclose.square.brackets }
-        { enclose.square.brackets "~: " * publisher * }
+        { "~: " * bbl.nopublisher * bracketise }
+        { bracketise "~: " * publisher * }
       if$
     }
     {
@@ -1026,7 +1453,7 @@
       address output
       new.colon
       publisher empty$
-        { bbl.nopublisher enclose.square.brackets }
+        { bbl.nopublisher bracketise }
         { publisher }
       if$
     }
@@ -1034,21 +1461,13 @@
   output
 }
 
-
-
 FUNCTION {output.bibitem}
-{ newline$
+{
+  set.language
+  newline$
   "\bibitem" write$
   cite$ bracify write$
   newline$
-  langid empty$
-    { language empty$
-        { "english" 'curlanguage := }
-        { language  'curlanguage := }
-      if$
-    }
-    { langid  'curlanguage := }
-  if$
   "\selectlanguageifdefined" curlanguage bracify * write$
   newline$
   ""
@@ -1055,60 +1474,6 @@
   before.all 'output.state :=
 }
 
-
-FUNCTION {n.dashify}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-        { t #1 #2 substring$ "--" = not
-            { "--" *
-              t #2 global.max$ substring$ 't :=
-            }
-            {   { t #1 #1 substring$ "-" = }
-                { "-" *
-                  t #2 global.max$ substring$ 't :=
-                }
-              while$
-            }
-          if$
-        }
-        { t #1 #1 substring$ *
-          t #2 global.max$ substring$ 't :=
-        }
-      if$
-    }
-  while$
-}
-
-FUNCTION {word.in}
-{ bbl.iin
-  " " * }
-
-FUNCTION {format.btitle}
-{ title
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
-    { "~" }
-    { " " }
-  if$
-  swap$ * *
-}
-
-FUNCTION {tie.connect}
- {"~"
-  swap$ * *
- }
-
-FUNCTION {either.or.check}
-{ empty$
-    'pop$
-    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
-  if$
-}
-
 FUNCTION {format.bvolume}
 { volume empty$
     { "" }
@@ -1115,7 +1480,7 @@
     { bbl.vvol volume tie.connect
       series empty$
         'skip$
-        { bbl.of space.word * series emphasize * }
+        { bbl.of spaces.around * series emphasize * }
       if$
       "volume and number" number either.or.check
     }
@@ -1144,31 +1509,7 @@
   if$
 }
 
-FUNCTION {is.num}
-{ chr.to.int$
-  duplicate$ "0" chr.to.int$ < not
-  swap$ "9" chr.to.int$ > not and
-}
 
-FUNCTION {extract.num}
-{ duplicate$ 't :=
-  "" 's :=
-  { t empty$ not }
-  { t #1 #1 substring$
-    t #2 global.max$ substring$ 't :=
-    duplicate$ is.num
-      { s swap$ * 's := }
-      { pop$ "" 't := }
-    if$
-  }
-  while$
-  s empty$
-    'skip$
-    { pop$ s }
-  if$
-}
-
-
 FUNCTION {convert.edition}
 { edition
 }
@@ -1184,38 +1525,6 @@
   if$
 }
 
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
-  #0 'multiresult :=
-    { multiresult not
-      t empty$ not
-      and
-    }
-    { t #1 #1 substring$
-      duplicate$ "-" =
-      swap$ duplicate$ "," =
-      swap$ "+" =
-      or or
-        { #1 'multiresult := }
-        { t #2 global.max$ substring$ 't := }
-      if$
-    }
-  while$
-  multiresult
-}
-
-%%FUNCTION {format.pages}
-%%{ pages empty$
-%%    { "" }
-%%    { pages multi.page.check
-%%        { bbl.ppages pages n.dashify tie.connect }
-%%        { bbl.ppage pages tie.connect }
-%%      if$
-%%    }
-%%  if$
-%%}
 FUNCTION {format.pages}
 { eid empty$
     {
@@ -1236,15 +1545,6 @@
   if$
 }
 
-%%FUNCTION {format.pages.page}
-%%{ pages empty$
-%%    { pagetotal empty$
-%%      { "" }
-%%      { pagetotal bbl.pages tie.connect }
-%%    if$}
-%%    { format.pages}
-%%  if$
-%%}
 FUNCTION {format.pages.page}
 { eid empty$
     { pages empty$
@@ -1307,6 +1607,19 @@
   if$
 }
 
+FUNCTION {bbl.thesis.type}
+{ type "mathesis" =
+  { bbl.mathesis }
+  { type "phdthesis" =
+    { bbl.phdthesis }
+    { type "docthesis" =
+      { bbl.docthesis }
+      %%{ "!!!" type * "t" change.case$ }
+      { type }
+    if$}
+  if$}
+if$}
+
 %%<!utf8>      bbl.thesis.type "t" change.case$
 %%<utf8>      bbl.thesis.type
 FUNCTION {format.thesis.type}
@@ -1327,78 +1640,61 @@
   if$
 }
 
-FUNCTION {author.before}
+FUNCTION {output.author.head}
 {
   author empty$
     'skip$
     {author num.names$ #4 <
-      {format.authors output
-       new.sentence}
+      {
+       author fmt.names.first output
+       new.sentence
+      }
       'skip$
     if$}
   if$
 }
 
-%%<*!long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    {bookauthor num.names$ #4 <
-%%      {format.bookauthors output
-%%       new.sentence}
-%%      'skip$
-%%    if$}
-%%  if$
-%%}
-%%</!long>
-%%<*long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    { format.bookauthors output
-%%      new.sentence
-%%    }
-%%  if$
-%%}
-%%</long>
-
-FUNCTION {author.after}
+FUNCTION {output.author.rest}
 {
   author empty$
     'skip$
-    {format.authors.after output
-       new.semicolon }
+    {author num.names$ #1 >
+      { author fmt.names.all output
+        new.semicolon
+      }
+      'skip$
+    if$}
   if$
 }
 
-FUNCTION {bookauthor.after}
+FUNCTION {bookauthor.rest}
 {
   bookauthor empty$
     'skip$
-    {format.bookauthors.after output
-       new.semicolon }
+    {
+      bookauthor fmt.names.all output
+      new.semicolon
+    }
   if$
 }
 
-FUNCTION {editor.organization.after}
+FUNCTION {editor.organization.rest}
 {
   compiler empty$
     {}
-    { format.compiler.after  output
+    { format.compiler.rest  output
     new.semicolon
     }
   if$
   editor empty$
     {}
-    { format.editors.after  output
+    { format.editors.rest  output.nonnull
     new.semicolon
     }
   if$
   organization empty$
     {}
-    {organization output
+    {organization output.nonnull
     new.semicolon
     }
   if$
@@ -1449,7 +1745,7 @@
     'skip$
     { doi empty$
         'skip$
-        { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
+        { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * }
       if$
     }
   if$
@@ -1459,9 +1755,13 @@
 { duplicate$ empty$
     'skip$
     { media empty$
-        { " " * bbl.media.text enclose.square.brackets * }
-        { " " * bbl.media enclose.square.brackets * }
-      if$
+      { type$ "online" =
+          { " " * bbl.media.online bracketise * }
+          { " " * bbl.media.text   bracketise * }
+        if$
+      }
+      { " " * bbl.media bracketise * }
+    if$
     }
   if$
 }
@@ -1541,14 +1841,15 @@
 FUNCTION {article}
 {
   output.bibitem
-  author.before
-  format.title add.media "title" output.check
+  output.author.head
+  %new.sentence
+  title add.media "title" output.check
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
-  journal emphasize add.doi "journal" output.check % new in v.2
+  journal emphasize add.doi "journal" output.check % new in v1.2
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.volume output
   format.number output
@@ -1565,11 +1866,14 @@
 FUNCTION {book}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.sentence
   format.number.series output
   new.block
@@ -1576,7 +1880,7 @@
   format.edition output
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1594,15 +1898,18 @@
 FUNCTION {booklet}
 {
   output.bibitem
-  author.before
-  format.title add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
   howpublished output
   address.or.location output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1614,15 +1921,18 @@
 FUNCTION {inbook}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  bookauthor.after
-  editor.organization.after
+  bookauthor.rest
+  editor.organization.rest
   new.block
   format.edition output
   new.block
@@ -1629,7 +1939,7 @@
   format.number.series output
   new.sentence
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1647,18 +1957,21 @@
 FUNCTION {incollection}
 {
   output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   format.number.series output
@@ -1675,15 +1988,22 @@
 FUNCTION {proceedings}
 {
   output.bibitem
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon                   % added in v.1.2k
+  titleaddon output           % added in v.1.2k
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
-  output.address.publisher
-  format.date "year" output.check
   new.block
+  format.pages.page output
+  %%%output.address.publisher  % 1.2k moved upper
+  new.block
   note output
   new.sentence
   output.eprint.url
@@ -1693,22 +2013,26 @@
 
 FUNCTION {inproceedings}
 { output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon                % added in v.1.2k
+  titleaddon output        % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
   new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
   format.pages.page output
   new.block
   note output
@@ -1728,10 +2052,12 @@
         }
       if$
     }
-    { format.authors output.nonnull }
+    { format.author output.nonnull }
   if$
   new.block
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   author empty$
     { organization empty$
     {
@@ -1748,7 +2074,7 @@
     }
   if$
   format.edition output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1761,6 +2087,8 @@
 {
   output.bibitem
   title add.media output.nonnull
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   format.type.number output
   add.blank
@@ -1768,9 +2096,9 @@
   new.colon
   ipc output
   new.slash
-  format.authors.after "author" output.check
+  format.author "author" output.check
   add.blank
-  authorcountry enclose.round.brackets output.nonnull
+  authorcountry paranthesify output.nonnull
   new.semicolon
   holder output.nonnull
   new.semicolon
@@ -1785,7 +2113,7 @@
   new.semicolon
   format.prioritydate output
   prioritynumber output
-  prioritycountry enclose.round.brackets output
+  prioritycountry paranthesify output
   new.block
   note output
   new.sentence
@@ -1798,13 +2126,15 @@
 
 FUNCTION {misc}
 { output.bibitem
-  format.authors output
+  %format.author output  % < v.1.2k
+  output.author.head    % v.1.2k
+  %new.sentence            % v.1.2k
   title howpublished new.sentence.checkb
-  format.title add.media output
+  title add.media output
   howpublished new.block.checka
   howpublished output
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1815,13 +2145,16 @@
 
 FUNCTION {unpublished}
 { output.bibitem
-  author.before
-  format.btitle "title" output.check
+  output.author.head
+  new.sentence
+  title "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note "note" output.check
   new.sentence
@@ -1832,12 +2165,14 @@
 
 FUNCTION {online}
 { output.bibitem
-  format.authors output
+  format.author output
   title howpublished new.sentence.checkb
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   howpublished new.dblslash.checka
-  howpublished enclose.square.brackets output
-  editor.organization.after
+  howpublished bracketise output
+  editor.organization.rest
   new.sentence
   new.block
   output.address.publisher
@@ -1856,25 +2191,24 @@
 FUNCTION {electronic} {online}
 FUNCTION {thesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
-  %%type "type" output.check
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
-  %%number output % code of the speciality
   specialitycode.or.number output % code of the speciality, new in v.1.2i
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours from the head zone
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1884,13 +2218,14 @@
   format.annote output
   fin.entry
 }
-
 %%  format.techrep.type.number output.nonnull
 %%  format.url output
 FUNCTION {report}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   type "type" output.check
   new.colon
@@ -1899,14 +2234,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -1919,9 +2254,9 @@
 
 FUNCTION {phdthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
@@ -1930,13 +2265,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1946,12 +2282,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {mastersthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.mathesis format.thesis.type output.nonnull
   new.colon
@@ -1960,13 +2295,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1976,12 +2312,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {docthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.docthesis format.thesis.type output.nonnull
   new.colon
@@ -1990,13 +2325,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicate athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2006,7 +2342,6 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {conference} { inproceedings }
 
 %%  format.url output
@@ -2014,7 +2349,7 @@
 FUNCTION {techreport}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   format.techreport.type output
   new.colon
@@ -2023,14 +2358,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -2055,96 +2390,96 @@
 MACRO {oct} {"Oct."}
 MACRO {nov} {"Nov."}
 MACRO {dec} {"Dec."}
-MACRO {aa}{"Astron. \& Astrophys."}
-MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."}
-MACRO {aj} {"Astron. J."}
+MACRO {aa}{"Astron.\ \& Astrophys."}
+MACRO {aasup}{"Astron.\ \& Astrophys.\ Suppl.\ Ser."}
+MACRO {aj} {"Astron.\ J."}
 MACRO {aph} {"Acta Phys."}
-MACRO {advp} {"Adv. Phys."}
-MACRO {ajp} {"Amer. J. Phys."}
-MACRO {ajm} {"Amer. J. Math."}
-MACRO {amsci} {"Amer. Sci."}
-MACRO {anofd} {"Ann. Fluid Dyn."}
-MACRO {am} {"Ann. Math."}
-MACRO {ap} {"Ann. Phys. (NY)"}
-MACRO {adp} {"Ann. Phys. (Leipzig)"}
-MACRO {ao} {"Appl. Opt."}
-MACRO {apl} {"Appl. Phys. Lett."}
+MACRO {advp} {"Adv.\ Phys."}
+MACRO {ajp} {"Amer.\ J.\ Phys."}
+MACRO {ajm} {"Amer.\ J.\ Math."}
+MACRO {amsci} {"Amer.\ Sci."}
+MACRO {anofd} {"Ann.\ Fluid Dyn."}
+MACRO {am} {"Ann.\ Math."}
+MACRO {ap} {"Ann.\ Phys.\ (NY)"}
+MACRO {adp} {"Ann.\ Phys.\ (Leipzig)"}
+MACRO {ao} {"Appl.\ Opt."}
+MACRO {apl} {"Appl.\ Phys.\ Lett."}
 MACRO {app} {"Astroparticle Phys."}
-MACRO {apj} {"Astrophys. J."}
-MACRO {apjsup} {"Astrophys. J. Suppl."}
-MACRO {apss} {"Astrophys. Space Sci."}
-MACRO {araa} {"Ann. Rev. Astron. Astrophys."}
-MACRO {baas} {"Bull. Amer. Astron. Soc."}
-MACRO {baps} {"Bull. Amer. Phys. Soc."}
-MACRO {cmp} {"Comm. Math. Phys."}
-MACRO {cpam} {"Commun. Pure Appl. Math."}
-MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"}
-MACRO {cpc} {"Comp. Phys. Comm."}
-MACRO {cqg} {"Class. Quant. Grav."}
-MACRO {cra} {"C. R. Acad. Sci. A"}
-MACRO {fed} {"Fusion Eng. \& Design"}
+MACRO {apj} {"Astrophys.\ J."}
+MACRO {apjsup} {"Astrophys.\ J.\ Suppl."}
+MACRO {apss} {"Astrophys.\ Space Sci."}
+MACRO {araa} {"Ann.\ Rev.\ Astron.\ Astrophys."}
+MACRO {baas} {"Bull.\ Amer.\ Astron.\ Soc."}
+MACRO {baps} {"Bull.\ Amer.\ Phys.\ Soc."}
+MACRO {cmp} {"Comm.\ Math.\ Phys."}
+MACRO {cpam} {"Commun.\ Pure Appl.\ Math."}
+MACRO {cppcf} {"Comm.\ Plasma Phys.\ \& Controlled Fusion"}
+MACRO {cpc} {"Comp.\ Phys.\ Comm."}
+MACRO {cqg} {"Class.\ Quant.\ Grav."}
+MACRO {cra} {"C.\ R.\ Acad.\ Sci.\ A"}
+MACRO {fed} {"Fusion Eng.\ \& Design"}
 MACRO {ft} {"Fusion Tech."}
-MACRO {grg} {"Gen. Relativ. Gravit."}
-MACRO {ieeens} {"IEEE Trans. Nucl. Sci."}
-MACRO {ieeeps} {"IEEE Trans. Plasma Sci."}
-MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"}
+MACRO {grg} {"Gen.\ Relativ.\ Gravit."}
+MACRO {ieeens} {"IEEE Trans.\ Nucl.\ Sci."}
+MACRO {ieeeps} {"IEEE Trans.\ Plasma Sci."}
+MACRO {ijimw} {"Interntl.\ J.\ Infrared \& Millimeter Waves"}
 MACRO {ip} {"Infrared Phys."}
 MACRO {irp} {"Infrared Phys."}
-MACRO {jap} {"J. Appl. Phys."}
-MACRO {jasa} {"J. Acoust. Soc. America"}
-MACRO {jcp} {"J. Comp. Phys."}
-MACRO {jchp} {"J. Chem. Phys."}
-MACRO {jetp} {"Sov. Phys.--JETP"}
-MACRO {jfe} {"J. Fusion Energy"}
-MACRO {jfm} {"J. Fluid Mech."}
-MACRO {jmp} {"J. Math. Phys."}
-MACRO {jne} {"J. Nucl. Energy"}
-MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."}
-MACRO {jnm} {"J. Nucl. Mat."}
-MACRO {jpc} {"J. Phys. Chem."}
-MACRO {jpp} {"J. Plasma Phys."}
-MACRO {jpsj} {"J. Phys. Soc. Japan"}
-MACRO {jsi} {"J. Sci. Instrum."}
-MACRO {jvst} {"J. Vac. Sci. \& Tech."}
+MACRO {jap} {"J.\ Appl.\ Phys."}
+MACRO {jasa} {"J.\ Acoust.\ Soc.\ America"}
+MACRO {jcp} {"J.\ Comp.\ Phys."}
+MACRO {jchp} {"J.\ Chem.\ Phys."}
+MACRO {jetp} {"Sov.\ Phys.--JETP"}
+MACRO {jfe} {"J.\ Fusion Energy"}
+MACRO {jfm} {"J.\ Fluid Mech."}
+MACRO {jmp} {"J.\ Math.\ Phys."}
+MACRO {jne} {"J.\ Nucl.\ Energy"}
+MACRO {jnec} {"J.\ Nucl.\ Energy, C: Plasma Phys., Accelerators, Thermonucl.\ Res."}
+MACRO {jnm} {"J.\ Nucl.\ Mat."}
+MACRO {jpc} {"J.\ Phys.\ Chem."}
+MACRO {jpp} {"J.\ Plasma Phys."}
+MACRO {jpsj} {"J.\ Phys.\ Soc.\ Japan"}
+MACRO {jsi} {"J.\ Sci.\ Instrum."}
+MACRO {jvst} {"J.\ Vac.\ Sci.\ \& Tech."}
 MACRO {nat} {"Nature"}
 MACRO {nature} {"Nature"}
-MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"}
-MACRO {nf} {"Nucl. Fusion"}
-MACRO {nim} {"Nucl. Inst. \& Meth."}
-MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."}
-MACRO {np} {"Nucl. Phys."}
-MACRO {npb} {"Nucl. Phys. B"}
-MACRO {nt/f} {"Nucl. Tech./Fusion"}
-MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"}
+MACRO {nedf} {"Nucl.\ Eng.\ \& Design/Fusion"}
+MACRO {nf} {"Nucl.\ Fusion"}
+MACRO {nim} {"Nucl.\ Inst.\ \& Meth."}
+MACRO {nimpr} {"Nucl.\ Inst.\ \& Meth.\ in Phys.\ Res."}
+MACRO {np} {"Nucl.\ Phys."}
+MACRO {npb} {"Nucl.\ Phys.\ B"}
+MACRO {nt/f} {"Nucl.\ Tech./Fusion"}
+MACRO {npbpc} {"Nucl.\ Phys.\ B (Proc.\ Suppl.)"}
 MACRO {inc} {"Nuovo Cimento"}
 MACRO {nc} {"Nuovo Cimento"}
-MACRO {pf} {"Phys. Fluids"}
-MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."}
-MACRO {pfb} {"Phys. Fluids B: Plasma Phys."}
-MACRO {pl} {"Phys. Lett."}
-MACRO {pla} {"Phys. Lett. A"}
-MACRO {plb} {"Phys. Lett. B"}
-MACRO {prep} {"Phys. Rep."}
-MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"}
-MACRO {pp} {"Phys. Plasmas"}
-MACRO {pop} {"Phys. Plasmas"}
-MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"}
-MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"}
-MACRO {prl} {"Phys. Rev. Lett."}
-MACRO {pr} {"Phys. Rev."}
-MACRO {physrev} {"Phys. Rev."}
-MACRO {pra} {"Phys. Rev. A"}
-MACRO {prb} {"Phys. Rev. B"}
-MACRO {prc} {"Phys. Rev. C"}
-MACRO {prd} {"Phys. Rev. D"}
-MACRO {pre} {"Phys. Rev. E"}
-MACRO {ps} {"Phys. Scripta"}
-MACRO {procrsl} {"Proc. Roy. Soc. London"}
-MACRO {rmp} {"Rev. Mod. Phys."}
-MACRO {rsi} {"Rev. Sci. Inst."}
+MACRO {pf} {"Phys.\ Fluids"}
+MACRO {pfa} {"Phys.\ Fluids A: Fluid Dyn."}
+MACRO {pfb} {"Phys.\ Fluids B: Plasma Phys."}
+MACRO {pl} {"Phys.\ Lett."}
+MACRO {pla} {"Phys.\ Lett.\ A"}
+MACRO {plb} {"Phys.\ Lett.\ B"}
+MACRO {prep} {"Phys.\ Rep."}
+MACRO {pnas} {"Proc.\ Nat.\ Acad.\ Sci.\ USA"}
+MACRO {pp} {"Phys.\ Plasmas"}
+MACRO {pop} {"Phys.\ Plasmas"}
+MACRO {ppcf} {"Plasma Phys.\ \& Controlled Fusion"}
+MACRO {phitrsl} {"Philos.\ Trans.\ Roy.\ Soc.\ London"}
+MACRO {prl} {"Phys.\ Rev.\ Lett."}
+MACRO {pr} {"Phys.\ Rev."}
+MACRO {physrev} {"Phys.\ Rev."}
+MACRO {pra} {"Phys.\ Rev.\ A"}
+MACRO {prb} {"Phys.\ Rev.\ B"}
+MACRO {prc} {"Phys.\ Rev.\ C"}
+MACRO {prd} {"Phys.\ Rev.\ D"}
+MACRO {pre} {"Phys.\ Rev.\ E"}
+MACRO {ps} {"Phys.\ Scripta"}
+MACRO {procrsl} {"Proc.\ Roy.\ Soc.\ London"}
+MACRO {rmp} {"Rev.\ Mod.\ Phys."}
+MACRO {rsi} {"Rev.\ Sci.\ Inst."}
 MACRO {science} {"Science"}
-MACRO {sciam} {"Sci. Am."}
-MACRO {sam} {"Stud. Appl. Math."}
+MACRO {sciam} {"Sci.\ Am."}
+MACRO {sam} {"Stud.\ Appl.\ Math."}
 MACRO {st} {"Sky and Telesc."}
 MACRO {cjp} {"Czech. J. Phys."}
 MACRO {el} {"Europhys. Lett."}
@@ -2187,40 +2522,40 @@
 MACRO {suplatt} {"Superlatt. Microstr."}
 MACRO {sust} {"Supercond. Sci. Technol."}
 MACRO {znat} {"Z. Naturforsch."}
-MACRO {appopt} {"Appl. Opt."}
-MACRO {bell}   {"Bell Syst. Tech. J."}
-MACRO {ell}    {"Electron. Lett."}
-MACRO {jasp}   {"J. Appl. Spectr."}
-MACRO {jqe}    {"IEEE J. Quantum Electron."}
-MACRO {jlwt}   {"J. Lightwave Technol."}
-MACRO {jmo}    {"J. Mod. Opt."}
-MACRO {josa}   {"J. Opt. Soc. America"}
-MACRO {josaa}  {"J. Opt. Soc. Amer.~A"}
-MACRO {josab}  {"J. Opt. Soc. Amer.~B"}
-MACRO {jdp}    {"J. Phys. (Paris)"}
-MACRO {oc}     {"Opt. Commun."}
-MACRO {ol}     {"Opt. Lett."}
-MACRO {os}     {"Opt. Spectrosc."}
+MACRO {appopt} {"Appl.\ Opt."}
+MACRO {bell}   {"Bell Syst.\ Tech.\ J."}
+MACRO {ell}    {"Electron.\ Lett."}
+MACRO {jasp}   {"J.\ Appl.\ Spectr."}
+MACRO {jqe}    {"IEEE J.\ Quantum Electron."}
+MACRO {jlwt}   {"J.\ Lightwave Technol."}
+MACRO {jmo}    {"J.\ Mod.\ Opt."}
+MACRO {josa}   {"J.\ Opt.\ Soc.\ America"}
+MACRO {josaa}  {"J.\ Opt.\ Soc.\ Amer.~A"}
+MACRO {josab}  {"J.\ Opt.\ Soc.\ Amer.~B"}
+MACRO {jdp}    {"J.\ Phys.\ (Paris)"}
+MACRO {oc}     {"Opt.\ Commun."}
+MACRO {ol}     {"Opt.\ Lett."}
+MACRO {os}     {"Opt.\ Spectrosc."}
 MACRO {phtl}   {"IEEE Photon. Technol. Lett."}
-MACRO {pspie}  {"Proc. Soc. Photo-Opt. Instrum. Eng."}
+MACRO {pspie}  {"Proc.\ Soc.\ Photo-Opt.\ Instrum. Eng."}
 MACRO {vr}     {"Vision Res."}
-MACRO {zph}    {"Z. f. Physik"}
-MACRO {zphb}   {"Z. f. Physik~B"}
-MACRO {zphd}   {"Z. f. Physik~D"}
+MACRO {zph}    {"Z.\ f.\ Physik"}
+MACRO {zphb}   {"Z.\ f.\ Physik~B"}
+MACRO {zphd}   {"Z.\ f.\ Physik~D"}
 MACRO {sse} {"Solid-State Electron."}
 MACRO {pss} {"Phys. Sol. State"}
 MACRO {nl}  {"Nano Lett."}
-MACRO {sjpp} {"Sov. J. Plasma Phys."}
-MACRO {spd}  {"Sov. Phys.--Doklady"}
-MACRO {sptp} {"Sov. Phys.--Tech. Phys."}
-MACRO       {spu}  {"Sov. Phys.--Uspekhi"}
+MACRO {sjpp} {"Sov.\ J.\ Plasma Phys."}
+MACRO {spd}  {"Sov.\ Phys.--Doklady"}
+MACRO {sptp} {"Sov.\ Phys.--Tech. Phys."}
+MACRO {spu}  {"Sov.\ Phys.--Uspekhi"}
 MACRO {ufn}  {"УФН"}
 MACRO {pu}  {"Phys.--Uspekhi"}
-MACRO {sjot} {"Sov. J. Opt. Technol."}
-MACRO {sjqe} {"Sov. J. Quantum Electron."}
-MACRO {sleb} {"Sov. Phys.--Leb. Inst. Rep."}
-MACRO {stph} {"Sov. Phys.--Techn. Phys."}
-MACRO {stphl}{"Sov. Techn. Phys. Lett."}
+MACRO {sjot} {"Sov.\ J.\ Opt.\ Technol."}
+MACRO {sjqe} {"Sov.\ J.\ Quantum Electron."}
+MACRO {sleb} {"Sov.\ Phys.--Leb.\ Inst.\ Rep."}
+MACRO {stph} {"Sov.\ Phys.--Techn.\ Phys."}
+MACRO {stphl}{"Sov.\ Techn.\ Phys.\ Lett."}
 
 READ
 
@@ -2227,7 +2562,6 @@
 
 
 
-
 STRINGS { longest.label }
 
 INTEGERS { number.label longest.label.width }
@@ -2264,15 +2598,7 @@
   "\providecommand*{\BibUrl}[1]{\url{#1}}"           write$ newline$
   "\providecommand{\BibAnnote}[1]{}"                 write$ newline$
   "\providecommand*{\BibEmph}[1]{#1}"                write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{---}" write$ newline$
-  %\DeclareUTFcharacter[\UTFencname]{x2014}{\cyrdash}
-  %"\let\cyrdash\textemdash" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\hbox to.8em{--\hss--}}" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\textemdash}" write$ newline$
   "\ProvideTextCommandDefault{\cyrdash}{\iflanguage{russian}{\hbox to.8em{--\hss--}}{\textemdash}}" write$ newline$
-  %%"\ProvideTextCommandDefault{\cyrdash}{%"  write$ newline$
-  %%"  \iflanguage{russian}{\hbox to.8em{--\hss--}}{%" write$ newline$
-  %%"    \iflanguage{ukrainian}{\hbox to.8em{--\hss--}}{\textemdash}}}"  write$ newline$
   "\providecommand*{\BibDash}{\ifdim\lastskip>0pt\unskip\nobreak\hskip.2em plus 0.1em\fi" write$ newline$
   "\cyrdash\hskip.2em plus 0.1em\ignorespaces}" write$ newline$
   "\renewcommand{\newblock}{\ignorespaces}" write$ newline$
@@ -2295,5 +2621,6 @@
 
 EXECUTE {end.bib}
 
+\endinput
 %%
 %% End of file `ugost2003.bst'.

Modified: trunk/Master/texmf-dist/bibtex/bst/gost/ugost2003s.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/gost/ugost2003s.bst	2020-12-29 00:54:00 UTC (rev 57250)
+++ trunk/Master/texmf-dist/bibtex/bst/gost/ugost2003s.bst	2020-12-29 02:19:51 UTC (rev 57251)
@@ -6,28 +6,20 @@
 %%
 %% gost.dtx  (with options: `bst,utf8,strict,eprint,sort')
 %% 
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%   http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
+%% IMPORTANT NOTICE:
 %% 
-%% This file has the LPPL maintenance status "maintained".
-%% Maintained by Igor A. Kotelnikov.
+%% For the copyright see the source file.
 %% 
-%% Current version: 1.2j, 2017.01.12
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from ugost2003s.bst.
 %% 
-%% Please, send bug report via e-mail:
-%%   kia999 at mail dot ru <Igor Kotelnikov>
-%% or
-%%   polyama at yahoo dot com <Maksym Polyakov>
+%% For distribution of the original source see the terms
+%% for copying and modification in the file gost.dtx.
 %% 
-
-
-
-%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
 %% This bibstyle attempts to format bibliography according to
 %% GOST 7.1-2003 for bibliographic records.
 
@@ -67,15 +59,15 @@
     language
     langid          % new in v1.2c
     booklanguage
-    %date            % not implemented yet...
+    date            % new in v1.2i
     pagetotal
     url
     urldate
     isbn
     doi
+    eprint
     eprinttype      % = archivePrefix
     eprintclass     % = primaryClass
-    eprint
     % new in v1.2f:
     % appear in biblatex:
     %addendum       % not implemented yet...
@@ -100,9 +92,24 @@
   {}
   { label }
 
-INTEGERS { output.state before.all mid.sentence after.sentence after.block
-after.dblslash after.slash after.colon after.semicolon }
+INTEGERS {
+    output.state
+    before.all
+    mid.sentence
+    after.sentence
+    after.block
+    after.dblslash
+    after.slash
+    after.colon
+    after.semicolon
+}
 
+STRINGS { curlanguage }
+
+STRINGS { s t }
+
+STRINGS { y m d }   % new in v.1.2j
+
 FUNCTION {init.state.consts}
 { #0 'before.all :=
   #1 'mid.sentence :=
@@ -114,11 +121,18 @@
   #7 'after.semicolon :=
 }
 
-STRINGS { s t }
+FUNCTION {set.language}
+{ langid empty$
+    { language empty$
+        { "english" 'curlanguage := }
+        { language  'curlanguage := }
+      if$
+    }
+    { langid  'curlanguage := }
+  if$
+}
 
-STRINGS { curlanguage }
-
-FUNCTION {change.language}
+FUNCTION {reset.language}
 { booklanguage empty$
     { "" }
     { booklanguage  'curlanguage :=
@@ -143,7 +157,7 @@
         { output.state before.all =
             'write$
             { output.state after.dblslash =
-                { "~//" * change.language * " " * write$ }
+                { "~//" * reset.language * " " * write$ }
                 { output.state after.slash =
                     { "~/ " * write$ }
                     { output.state after.colon =
@@ -177,7 +191,9 @@
 FUNCTION {output.check}
 { 't :=
   duplicate$ empty$
-    { pop$ "empty " t * " in " * cite$ * warning$ }
+    { pop$
+      "empty " t * " in " * cite$ * warning$
+    }
     'output.nonnull
   if$
 }
@@ -256,23 +272,6 @@
   if$
 }
 
-INTEGERS { len }
-
-FUNCTION {chop.word}
-{ 's :=
-  'len :=
-  s #1 len substring$ =
-    { s len #1 + global.max$ substring$ }
-    's
-  if$
-}
-
-FUNCTION {non.stop}
-{ duplicate$
-   "}" * add.period$
-   #-1 #1 substring$ "." =
-}
-
 FUNCTION {new.block.checka}
 { empty$
     'skip$
@@ -319,9 +318,21 @@
   if$
 }
 
+%%
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {spaces.around}
+{ " " swap$ * " " * }
+
 FUNCTION {emphasize}
 { duplicate$ empty$
-    { pop$ "" }
+    %{ pop$ "" }
+    'skip$       % v.1.2k
     { "\BibEmph{" swap$ * "}" * }
   if$
 }
@@ -333,7 +344,7 @@
   if$
 }
 
-FUNCTION {enclose.square.brackets}
+FUNCTION {bracketise}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -341,7 +352,7 @@
   if$
 }
 
-FUNCTION {enclose.round.brackets}
+FUNCTION {paranthesify}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -349,25 +360,92 @@
   if$
 }
 
-FUNCTION {space.word}
-{ " " swap$ * " " * }
+INTEGERS { len }
 
-FUNCTION {bbl.edby}    %  { "\bbledby{}" }
+FUNCTION {chop.word}
+{ 's :=
+  'len :=
+  s #1 len substring$ =
+    { s len #1 + global.max$ substring$ }
+    's
+  if$
+}
+
+FUNCTION {tie.connect}
+ {"~" swap$ * *
+ }
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { t #1 #2 substring$ "--" = not
+            { "--" *
+              t #2 global.max$ substring$ 't :=
+            }
+            {   { t #1 #1 substring$ "-" = }
+                { "-" *
+                  t #2 global.max$ substring$ 't :=
+                }
+              while$
+            }
+          if$
+        }
+        { t #1 #1 substring$ *
+          t #2 global.max$ substring$ 't :=
+        }
+      if$
+    }
+  while$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+        { #1 'multiresult := }
+        { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {bbl.edby}
 { curlanguage "english" =
-   {"Ed.\ by"}
+   {"ed.\ by"}
    { curlanguage "ukrainian" =
-      {"Під ред."}
+      {"під ред."}
       { curlanguage "russian" =
-         {"Под ред."}
+         {"под ред."}
          { curlanguage "german" =
             { "ed." }
-            {"language is not defined: " language "edby" * * warning$ "Ed.\ by"}
+            {"language is not defined: " curlanguage " in bbl.edby" * * warning$ "Ed.\ by"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.cmplr}
+FUNCTION {bbl.compiler}
 { curlanguage "english" =
    { "Compiler"}
    { curlanguage "german" =
@@ -376,15 +454,15 @@
          {"{Укл.}"}
          { curlanguage "russian" =
             {"{Сост.}"}
-            {"language is not defined: " language  "cmplr" * * warning$ "Compiler"}
+            {"language is not defined: " curlanguage  " in bbl.compiler" * * warning$ "Compiler"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.edition} %  { "\bbledition{}" }
+FUNCTION {bbl.edition}
 { curlanguage "english" =
-   {"edition"}
+   {"ed."}
    { curlanguage "ukrainian" =
       {"{вид.}"}
       { curlanguage "russian" =
@@ -395,7 +473,7 @@
                {"edizione"}
                { curlanguage "french" =
                   {"\'{e}dition"}
-                  {"language is not defined: " language  "edition" * * warning$ "edition"}
+                  {"language is not defined: " curlanguage  " in bbl.edition" * * warning$ "ed."}
                if$}
             if$}
          if$}
@@ -403,7 +481,7 @@
    if$}
 if$}
 
-FUNCTION {bbl.vvolume} %  { "\bblVolume{}" }
+FUNCTION {bbl.vvolume}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Volume"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -410,12 +488,12 @@
       { "Том" }
       { curlanguage "german" =
          {"{Band}"} %%%% { "Volumen" }
-         {"language is not defined: " language  "vvolume" * * warning$ "Volume"}
+         {"language is not defined: " curlanguage  " in bbl.vvolume" * * warning$ "Volume"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.vvol}    %  { "\bblVol{}" }
+FUNCTION {bbl.vvol}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Vol."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -422,12 +500,12 @@
       {"Т."}
       { curlanguage "german" =
          {"{Bd.}"} %%%% { "Vol." }
-         {"language is not defined: " language  "vvol" * * warning$ "Vol."}
+         {"language is not defined: " curlanguage  " in bbl.vvol" * * warning$ "Vol."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iissue}  %  { "\bblIssue{}" }
+FUNCTION {bbl.iissue}
 { curlanguage "english" =
    {"Issue"}
    { curlanguage "ukrainian" =
@@ -436,13 +514,13 @@
          {"Выпуск"}
          { curlanguage "german" =
             {"{Heft}"} %%%% { "Ausgabe" }
-            {"language is not defined: " language "iissue" * * warning$ "Issue"}
+            {"language is not defined: " curlanguage " in bbl.iissue" * * warning$ "Issue"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iiss}  %  { "\bblIss{}" }
+FUNCTION {bbl.iiss}
 { curlanguage "english" =
    {"Iss."}
    { curlanguage "ukrainian" =
@@ -451,13 +529,13 @@
          {"Вып."}
          { curlanguage "german" =
             {"{H.}"}
-            {"language is not defined: " language "iiss" * * warning$ "Iss."}
+            {"language is not defined: " curlanguage " in bbl.iiss" * * warning$ "Iss."}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.of}      %  { "\bblof{}" }
+FUNCTION {bbl.of}
 { curlanguage "english" =
    {"of"}
    { curlanguage "german" =
@@ -466,13 +544,13 @@
          { "{із}" }
          { curlanguage "russian" =
             { "{из}" }
-            {"language is not defined: " language "of" * * warning$ "of"}
+            {"language is not defined: " curlanguage " in bbl.of" * * warning$ "of"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.etal}      %  { "\bblof{}" }
+FUNCTION {bbl.etal}
 { curlanguage "english" =
    {"et~al."}
    { curlanguage "german" =
@@ -481,14 +559,31 @@
          {"{та~ін.}"}
          { curlanguage "russian" =
             {"и~др."}
-            {"language is not defined: " language  "et~al" * * warning$ "et~al."}
+            {"language is not defined: " curlanguage  " in bbl.etal" * * warning$ "et~al."}
          if$}
       if$}
    if$}
 if$}
 
+FUNCTION {bbl.and}
+{ curlanguage "english" =
+  {"and"}
+   { curlanguage "german" =
+      { "und" }
+      { curlanguage "ukrainian" =
+         {"і"}
+         { curlanguage "russian" =
+            {"и"}
+            { curlanguage "french" =
+                {"et"}
+                {"language is not defined: " curlanguage  " in bbl.and" * * warning$ "and"}
+            if$}
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {bbl.nnumber} %  { "\bblNumber{}" }
+FUNCTION {bbl.nnumber}
 { curlanguage "english" =
    {"Number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -495,12 +590,12 @@
       { "{Номер}" }
       { curlanguage "german" =
          {"{Heft}"} %%% { "Anzahl" }
-         {"language is not defined: " language  "nnumber" * * warning$ "Number"}
+         {"language is not defined: " curlanguage  " in bbl.nnumber" * * warning$ "Number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.number}  %  { "\bblnumber{}" }
+FUNCTION {bbl.number}
 { curlanguage "english" =
    {"number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -507,27 +602,30 @@
       {"{номер}"}
       { curlanguage "german" =
          {"{Heft}"} %%% { "anzahl" }???
-         {"language is not defined: " language  "number" * * warning$ "number"}
+         {"language is not defined: " curlanguage  " in bbl.number" * * warning$ "number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nr}     %   { "\bblno{}" }
+FUNCTION {bbl.nr}
 { curlanguage "english" =
    {"no."}
    { curlanguage "italian" =
-      { "no" }
+      { "no." }
       { curlanguage "ukrainian" = curlanguage "russian" = or
          { "{№}" }
          { curlanguage "german" =
-            {"{H.}"} %%% { "an." }
-            {"language is not defined: " language "nr" * * warning$ "no."}
+            {"{nu.}"} %%% { "an." }
+            { curlanguage "french" =
+                { "no." }
+                {"language is not defined: " curlanguage " in bbl.nr" * * warning$ "no."}
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nnr}     %   { "\bblno{}" }
+FUNCTION {bbl.nnr}
 { curlanguage "english" =
    {"No."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -534,30 +632,30 @@
       { "{№}" }
       { curlanguage "german" =
          {"{H.}"} %%% { "an." }
-         {"language is not defined: " language  "nnr" * * warning$ "No."}
+         {"language is not defined: " curlanguage  " in bbl.nnr" * * warning$ "No."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.in}    %    { "\bblin{}" }
+FUNCTION {bbl.in}
 { curlanguage "english" = curlanguage "german" = or
    {"in"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "{в}" }
-      {"language is not defined: " language  "in" * * warning$ "in"}
+      {"language is not defined: " curlanguage  " in bbl.in" * * warning$ "in"}
    if$}
 if$}
 
-FUNCTION {bbl.iin}  %     { "\bblIn{}" }
+FUNCTION {bbl.iin}
 { curlanguage "english" = curlanguage "german" = or
    {"In"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "{В}" }
-      {"language is not defined: " language  "iin" * * warning$ "In"}
+      {"language is not defined: " curlanguage  " in bbl.iin" * * warning$ "In"}
    if$}
 if$}
 
-FUNCTION {bbl.pages}    % { "\bblpp." }
+FUNCTION {bbl.pages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."} %%% {"pp."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -564,12 +662,12 @@
       {"{с.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "pages" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.pages" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.page}   %   { "\bblp."
+FUNCTION {bbl.page}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -576,12 +674,12 @@
       {"{с.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "page" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.page" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppages}%    { "\bblPp." }
+FUNCTION {bbl.ppages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."} %%%% { "Pp." }
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -588,12 +686,12 @@
       {"{С.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language "ppages" * * warning$ "P."}
+         {"language is not defined: " curlanguage " in bbl.ppages" * * warning$ "P."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppage}  %   { "\bblP." }
+FUNCTION {bbl.ppage}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -600,7 +698,7 @@
       {"{С.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language  "ppage" * * warning$ "P."}
+         {"language is not defined: " curlanguage  " in bbl.ppage" * * warning$ "P."}
       if$}
    if$}
 if$}
@@ -614,7 +712,10 @@
          { "{Режим доступа}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "Mode d'acc\`{e}s" }
+                { "language is not defined: " curlanguage " in bbl.url" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
@@ -628,13 +729,16 @@
          { "{дата обращения}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "{en ligne; acc\'{e}d\'{e}}" }
+                { "language is not defined: " curlanguage " in bbl.urldate" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.techreport} % rename to bbl.techreport
+FUNCTION {bbl.techreport}
 { curlanguage "english" =
    { "Rep." }
    { curlanguage "german" =
@@ -641,7 +745,7 @@
       { "Bericht" }
       { curlanguage "russian" =
          { "{Отчет}" }
-         { "language is not defined: " language "techrep" * * warning$ "Rep." }
+         { "language is not defined: " curlanguage " in bbl.techrep" * * warning$ "Rep." }
       if$}
    if$}
 if$}
@@ -650,10 +754,10 @@
 { curlanguage "english" =
    { "Master's thesis" }
    { curlanguage "german" =
-      { "Diss.~Mag." }
+      { "diss.~mag." }
       { curlanguage "russian" =
-         { "{Квалификационная работа магистра}" }
-         { "language is not defined: " language "mthesis" * * warning$ "Master's thesis" }
+         { "{квалификационная работа магистра}" }
+         { "language is not defined: " curlanguage " in bbl.mthesis" * * warning$ "Master's thesis" }
       if$}
    if$}
 if$}
@@ -662,12 +766,12 @@
 { curlanguage "english" =
    { "Ph.\,D. thesis" }
    { curlanguage "german" =
-      { "Diss.~Ph.\,D." }
+      { "diss.~Ph.\,D." }
       { curlanguage "russian" =
-         { "{дис.\ \ldots\ канд. наук}" }
+         { "{дис.\ \ldots\ канд.\ наук}" }
          { curlanguage "french" =
-           { "Th\`{e}se de doctorat" }
-           { "language is not defined: " language "phdthesis" * * warning$ "Ph.\,D. thesis" }
+           { "th\`{e}se de doctorat" }
+           { "language is not defined: " curlanguage " in bbl.phdthesis" * * warning$ "Ph.\,D. thesis" }
          if$}
       if$}
    if$}
@@ -675,35 +779,22 @@
 
 FUNCTION {bbl.docthesis}
 { curlanguage "english" =
-   { "Dr.\,Sci. dissertation" }
+   { "dr.\,sci. dissertation" }
    { curlanguage "german" =
-      { "Diss.~Dr." }
+      { "diss.~dr." }
       { curlanguage "russian" =
          { "{дис.\ \ldots\ д-ра наук}" }
-         { "language is not defined: " language "docthesis" * * warning$ "Dr.\,Sci. dissertation" }
+         { "language is not defined: " curlanguage " in bbl.docthesis" * * warning$ "Dr.\,Sci. dissertation" }
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.thesis.type}
-{ type "mathesis" =
-  { bbl.mathesis }
-  { type "phdthesis" =
-    { bbl.phdthesis }
-    { type "docthesis" =
-      { bbl.docthesis }
-      %%{ "!!!" type * "t" change.case$ }
-      { type }
-    if$}
-  if$}
-if$}
-
 FUNCTION {bbl.nnoaddress}
 { curlanguage "english" =
    { "S.\ l." }
    { curlanguage "russian" =
       { "{Б.\ м.}" }
-      { "language is not defined: " language "nnoaddress" * * warning$ "S.\ l." }
+      { "language is not defined: " curlanguage " in bbl.nnoaddress" * * warning$ "S.\ l." }
    if$}
 if$}
 
@@ -712,7 +803,7 @@
    { "s.\ n." }
    { curlanguage "russian" =
       { "{б.\ и.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "s.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "s.\ n." }
    if$}
 if$}
 
@@ -721,7 +812,7 @@
    { "S.\ n." }
    { curlanguage "russian" =
       { "{Б.\ и.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "S.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "S.\ n." }
    if$}
 if$}
 
@@ -730,7 +821,7 @@
    { "Text" }
    { curlanguage "russian" = curlanguage "ukrainian" = or
       { "{Текст}" }
-      { "language is not defined: " language "media" * * warning$ "Text" }
+      { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Text" }
    if$}
 if$}
 
@@ -741,7 +832,7 @@
       { "{Электронный ресурс}" }
       { curlanguage "ukrainian" =
         { "{Електронний ресурс}" }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -753,7 +844,7 @@
       { "{Электронный ресурс онлайн}" }
       { curlanguage "ukrainian" =
         { "{Електронний ресурс онлайн}" }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -765,7 +856,7 @@
       { "{рук.}" }
       { curlanguage "ukrainian" =
         { "{рук.}" }
-        { "language is not defined: " language "chief" * * warning$ "chief" }
+        { "language is not defined: " curlanguage " in bbl.chief" * * warning$ "chief" }
       if$}
    if$}
 if$}
@@ -772,12 +863,12 @@
 
 FUNCTION {bbl.executor}
 { curlanguage "english" =
-   { "Executor" }
+   { "executor" }
    { curlanguage "russian" =
       { "{исполн.}" }
       { curlanguage "ukrainian" =
         { "{виконавець}" }
-        { "language is not defined: " language "executor" * * warning$ "executor" }
+        { "language is not defined: " curlanguage " in bbl.executor" * * warning$ "executor" }
       if$}
    if$}
 if$}
@@ -799,7 +890,7 @@
       { "ang." }
       { curlanguage "russian" =
         { "{заявл.}" }
-        { "language is not defined: " language "req" * * warning$ "req" }
+        { "language is not defined: " curlanguage " in bbl.req" * * warning$ "req" }
       if$
       }
     if$
@@ -815,7 +906,7 @@
       { "ausg." }
       { curlanguage "russian" =
         { "{опубл.}" }
-        { "language is not defined: " language "publication" * * warning$ "publication" }
+        { "language is not defined: " curlanguage " in bbl.publication" * * warning$ "publication" }
       if$
       }
     if$
@@ -831,7 +922,7 @@
       { "Prioritat" }
       { curlanguage "russian" =
         { "{приоритет}" }
-        { "language is not defined: " language "priority" * * warning$ "priority" }
+        { "language is not defined: " curlanguage " in bbl.priority" * * warning$ "priority" }
       if$
       }
     if$
@@ -839,112 +930,346 @@
   if$
 }
 
-INTEGERS { nameptr namesleft numnames }
+FUNCTION {bbl.jan}
+{ curlanguage "english" =
+   {"Jan."}
+   { curlanguage "ukrainian" =
+      {"Січ."} % Січень
+      { curlanguage "russian" =
+         { "Янв." }
+         { curlanguage "german" =
+            { "Jan." } % Januar
+            { "language is not defined: bbl.jan for " curlanguage * warning$ "Jan." }
+         if$}
+      if$}
+   if$}
+if$}
 
+FUNCTION {bbl.feb}
+{ curlanguage "english" =
+   {"Feb."}
+   { curlanguage "ukrainian" =
+      {"Лют."} % Лютий
+      { curlanguage "russian" =
+         { "Фев." }
+         { curlanguage "german" =
+            {"Feb."} % Februar
+            {"language is not defined: bbl.feb for " curlanguage * warning$ "Feb."}
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.names}
-{
-  #1 "{vv~}{ll}{~jj}{,~ff}" format.name$
-}
+FUNCTION {bbl.mar}
+{ curlanguage "english" =
+   {"Mar."}
+   { curlanguage "ukrainian" =
+      {"Бер."} % Березень
+      { curlanguage "russian" =
+            { "Март" }
+         { curlanguage "german" =
+            {"März"} % März
+            {"language is not defined: bbl.mar for " curlanguage * warning$ "Mar."}
+         if$}
+      if$}
+   if$}
+if$}
 
+FUNCTION {bbl.apr}
+{ curlanguage "english" =
+   {"Apr."}
+   { curlanguage "ukrainian" =
+      {"Квіт."} % квітень
+      { curlanguage "russian" =
+            { "Апр." }
+         { curlanguage "german" =
+            {"Apr."} % April
+            { "language is not defined: bbl.apr for " curlanguage * warning$ "Apr." }
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.names.rev}
-{
-  's :=
-  #1 'nameptr :=
-  s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr
-      "{ff}{~vv}{~ll}{, jj}" format.name$ 't :=
-      nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
-          if$
-          namesleft #1 >
-            { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
-                { " " * bbl.etal enclose.square.brackets * }
-                { ", " * t * }
-              if$
-            }
-          if$
-        }
-        't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
-  while$
-}
+FUNCTION {bbl.may}
+{ curlanguage "english" =
+   {"May"}
+   { curlanguage "ukrainian" =
+      {"Трав."} % травень
+      { curlanguage "russian" =
+            { "Май" }
+         { curlanguage "german" =
+            {"Mai"}
+            { "language is not defined: bbl.may for " curlanguage * warning$ "May" }
+         if$}
+      if$}
+   if$}
+if$}
 
+FUNCTION {bbl.jun}
+{ curlanguage "english" =
+   {"June"}
+   { curlanguage "ukrainian" =
+      {"Чер."} % червень
+      { curlanguage "russian" =
+            { "Июнь" }
+         { curlanguage "german" =
+            {"Juni"}
+            { "language is not defined: bbl.jun for " curlanguage * warning$ "June" }
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.authors}
-{ author empty$
-    { "" }
-    { author format.names emphasize}
-  if$
-}
+FUNCTION {bbl.jul}
+{ curlanguage "english" =
+   {"July"}
+   { curlanguage "ukrainian" =
+      {"Липень"} %Липень
+      { curlanguage "russian" =
+            { "Июль" }
+         { curlanguage "german" =
+            {"Juli"}
+            { "language is not defined: bbl.jul for " curlanguage * warning$ "July" }
+         if$}
+      if$}
+   if$}
+if$}
 
+FUNCTION {bbl.aug}
+{ curlanguage "english" =
+   {"Aug."}
+   { curlanguage "ukrainian" =
+      {"Серпень"} % Серпень
+      { curlanguage "russian" =
+            { "Авг." }
+         { curlanguage "german" =
+            {"Aug."} % August
+            { "language is not defined: bbl.aug for " curlanguage * warning$ "Aug." }
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.bookauthors}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names}
-  if$
-}
+FUNCTION {bbl.sep}
+{ curlanguage "english" =
+   {"Sep."}
+   { curlanguage "ukrainian" =
+      {"Вер."} % вересень
+      { curlanguage "russian" =
+            { "Сент." }
+         { curlanguage "german" =
+            {"Sep."} % September
+            { "language is not defined: bbl.sep for " curlanguage * warning$ "Sep." }
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {format.authors.after}
-{ author empty$
-    { "" }
-    { author format.names.rev}
+FUNCTION {bbl.oct}
+{ curlanguage "english" =
+   {"Oct."}
+   { curlanguage "ukrainian" =
+      {"Жов."} % жовтень
+      { curlanguage "russian" =
+            { "Окт." }
+         { curlanguage "german" =
+            {"Okt."} % Oktober
+            { "language is not defined: bbl.oct for " curlanguage * warning$ "Oct." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.nov}
+{ curlanguage "english" =
+   {"Nov."}
+   { curlanguage "ukrainian" =
+      {"Лис."} % листопад
+      { curlanguage "russian" =
+            { "Нояб." }
+         { curlanguage "german" =
+            {"Nov."} % November
+            { "language is not defined: bbl.nov for " curlanguage * warning$ "Nov." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.dec}
+{ curlanguage "english" =
+   {"Dec."}
+   { curlanguage "ukrainian" =
+      {"Груд."} % грудень
+      { curlanguage "russian" =
+            { "Дек." }
+         { curlanguage "german" =
+            {"Dez."} % Dezember
+            { "language is not defined: bbl.dec for " curlanguage * warning$ "Dec." }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {bbl.arxiv}
+{ curlanguage "english" =
+   { "ArXiv" }
+   { curlanguage "ukrainian" =
+      {"ArXiv"}
+      { curlanguage "russian" =
+         { "ArXiv" }
+         { curlanguage "german" =
+            { "ArXiv" }
+            { "language is not defined: bbl.arxiv for " curlanguage * warning$ "ArXiv" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jstor}
+{ curlanguage "english" =
+   { "JSTOR" }
+   { curlanguage "ukrainian" =
+      {"JSTOR"}
+      { curlanguage "russian" =
+         { "JSTOR" }
+         { curlanguage "german" =
+            { "JSTOR" }
+            { "language is not defined: bbl.jstor for " curlanguage * warning$ "JSTOR" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.pubmed}
+{ curlanguage "english" =
+   { "PubMed" }
+   { curlanguage "ukrainian" =
+      {"PubMed"}
+      { curlanguage "russian" =
+         { "PubMed" }
+         { curlanguage "german" =
+            { "PubMed" }
+            { "language is not defined: bbl.pubmed for " curlanguage * warning$ "PubMed" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.googlebooks}
+{ curlanguage "english" =
+   { "Google Books" }
+   { curlanguage "ukrainian" =
+      {"Google Книги"}
+      { curlanguage "russian" =
+         { "Google Книги" }
+         { curlanguage "german" =
+            { "Google Books" }
+            { "language is not defined: bbl.googlebooks for " curlanguage * warning$ "Google Books" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.hdl}
+{ curlanguage "english" =
+   { "Handle.Net" }
+   { curlanguage "ukrainian" =
+      {"Handle.Net"}
+      { curlanguage "russian" =
+         { "Handle.Net" }
+         { curlanguage "german" =
+            { "Handle.Net" }
+            { "language is not defined: bbl.hdl for " curlanguage * warning$ "Handle.Net" }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {address.or.location}
+{
+  address empty$
+    { location }
+    { address }
   if$
 }
 
-FUNCTION {format.bookauthors.after}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names.rev}% always cuts to 4 persons
+FUNCTION {specialitycode.or.number}
+{
+  specialitycode empty$
+    { number }
+    { specialitycode }
   if$
 }
 
-FUNCTION {format.editors.after}
-{ editor empty$
-    { "" }
-    { bbl.edby "\ " * editor format.names.rev * }
+FUNCTION {institution.or.school}
+{
+  institution empty$
+    { school}
+    { institution }
   if$
 }
-
-FUNCTION {format.chief.after}
-{ editor empty$
-    { "" }
-    { bbl.chief "\ " * editor format.names.rev * }
+FUNCTION {date.to.year}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #3 >
+        {
+          date #1 #4 substring$ 'y :=
+          y
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
   if$
 }
 
-FUNCTION {format.executor.after}
-{ author empty$
-    { "" }
-    { bbl.executor ": " * author format.names.rev * }
+FUNCTION {date.to.month}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #6 >
+        {
+          date #6 #2 substring$ 'm :=
+          m
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
   if$
 }
 
-FUNCTION {format.compiler.after}
-{ compiler empty$
-    { "" }
-    { bbl.cmplr "\ " * compiler format.names.rev * }
+FUNCTION {date.to.day}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #10 =
+        {
+          date #9 #2 substring$ 'd :=
+          d
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
   if$
 }
 
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    { title }
+FUNCTION {year.or.date.to.year}
+{
+  year empty$
+    {
+      date.to.year
+    }
+    { year }
   if$
 }
 
@@ -951,39 +1276,39 @@
 FUNCTION {format.month}
 { month empty$
     { "" }
-    { curlanguage "russian" =
-        { month "Jan." =
-            { "Янв." }
-        { month "Feb." =
-            { "Фев." }
-        { month "Mar." =
-            { "Март" }
-        { month "Apr." =
-            { "Апр." }
-        { month "May" =
-            { "Май" }
-        { month "Jun." =
-            { "Июнь" }
-        { month "Jul." =
-            { "Июль" }
-        { month "Aug." =
-            { "Авг." }
-        { month "Sep." =
-            { "Сент." }
-        { month "Oct." =
-            { "Окт." }
-        { month "Nov." =
-            { "Нояб." }
-        { month "Dec." =
-            { "Дек." }
-            { month }
-            if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
-        { month }
-        if$}
+    { month "Jan." =
+        { bbl.jan }
+    { month "Feb." =
+        { bbl.feb }
+    { month "Mar." =
+        { bbl.mar }
+    { month "Apr." =
+        { bbl.apr }
+    { month "May" =
+        { bbl.may }
+    { month "Jun." =
+        { bbl.jun }
+    { month "Jul." =
+        { bbl.jul }
+    { month "Aug." =
+        { bbl.aug }
+    { month "Sep." =
+        { bbl.sep }
+    { month "Oct." =
+        { "Окт." }
+    { month "Nov." =
+        { bbl.nov }
+    { month "Dec." =
+        { bbl.dec }
+        {
+          "unknown month in " cite$ * warning$
+          month
+        }
+        if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
     if$
 }
 FUNCTION {format.date}
-{ year empty$
+{ year.or.date.to.year empty$
     { month empty$
         { "" }
         { "there's a month but no year in " cite$ * warning$
@@ -992,36 +1317,138 @@
       if$
     }
     { month empty$
-        'year
-        { year ". \BibDash " format.month * * }
+        'year.or.date.to.year
+        { year.or.date.to.year ". \BibDash " format.month * * }
       if$
     }
   if$
 }
 
-FUNCTION {address.or.location}
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {fmt.names.first}
+{ #1
+  "{vv~}{ll}{~jj}{,~ff}"
+  format.name$
+}
+
+FUNCTION {fmt.names.three}
 {
-  address empty$
-    { location }
-    { address }
-  if$
+  's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+  { namesleft #0 > }
+  { s nameptr
+      "{vv~}{ll}{~jj}{,~ff}"
+    format.name$ 't :=
+    nameptr #1 >
+      { nameptr #4 = numnames #4 > and
+          { "others" 't :=
+            #1 'namesleft :=
+          }
+          'skip$
+        if$
+        namesleft #1 >
+          { ", " * t * }
+          { t "others" = t "~others" = or
+              { " " * bbl.etal bracketise *}
+              { ", " * t * }
+          if$
+          }
+        if$
+      }
+      't
+    if$
+    nameptr #1 + 'nameptr :=
+    namesleft #1 - 'namesleft :=
+  }
+  while$
 }
 
-FUNCTION {specialitycode.or.number}
+FUNCTION {fmt.names.all}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr
+      %"{vv~}{ll}" format.name$ 't :=
+      "{vv~}{ll}{~jj}{,~ff}"
+      format.name$ 't :=
+      nameptr #1 >
+        { namesleft #1 >
+            { ", " * t * }
+            { numnames #2 >  curlanguage "english" = and
+                { "," * }
+                'skip$
+              if$
+              t "others" = t "~others" = or
+                { " " * bbl.etal bracketise *}
+                { " " bbl.and " " * * * t * }
+              if$
+            }
+          if$
+        }
+        't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+%%<long>    { author fmt.names.all emphasize}
+%%<!long&strict>    { author fmt.names.first emphasize}
+%%<!long&!strict>    { author fmt.names.three emphasize}
+FUNCTION {format.author}
 {
-  specialitycode empty$
-    { number }
-    { specialitycode }
+  author empty$
+    { author } %%%'skip$
+    {author num.names$ #4 <
+      {
+       author fmt.names.first
+      }
+      { "" } %%%'skip$
+    if$}
   if$
 }
 
-FUNCTION {institution.or.school}
-{
-  institution empty$
-    { school}
-    { institution }
+FUNCTION {format.bookauthors.rest}
+{ bookauthor empty$
+    { "" }
+    { bookauthor fmt.names.three emphasize }
   if$
 }
+
+FUNCTION {format.editors.rest}
+{ editor empty$
+    { "" }
+    { bbl.edby "\ " * editor fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.chief.rest}
+{ editor empty$
+    { "" }
+    { bbl.chief "\ " * editor fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.executor.rest}
+{ author empty$
+    { "" }
+    { bbl.executor ": " * author fmt.names.three * }
+  if$
+}
+
+FUNCTION {format.compiler.rest}
+{ compiler empty$
+    { "" }
+    { bbl.compiler "\ " * compiler fmt.names.three * }
+  if$
+}
+
 FUNCTION {output.address.publisher}
 {
   address empty$
@@ -1028,8 +1455,8 @@
     {
       bbl.nnoaddress
       publisher empty$
-        { "~: " * bbl.nopublisher * enclose.square.brackets }
-        { enclose.square.brackets "~: " * publisher * }
+        { "~: " * bbl.nopublisher * bracketise }
+        { bracketise "~: " * publisher * }
       if$
     }
     {
@@ -1036,7 +1463,7 @@
       address output
       new.colon
       publisher empty$
-        { bbl.nopublisher enclose.square.brackets }
+        { bbl.nopublisher bracketise }
         { publisher }
       if$
     }
@@ -1044,21 +1471,13 @@
   output
 }
 
-
-
 FUNCTION {output.bibitem}
-{ newline$
+{
+  set.language
+  newline$
   "\bibitem" write$
   cite$ bracify write$
   newline$
-  langid empty$
-    { language empty$
-        { "english" 'curlanguage := }
-        { language  'curlanguage := }
-      if$
-    }
-    { langid  'curlanguage := }
-  if$
   "\selectlanguageifdefined" curlanguage bracify * write$
   newline$
   ""
@@ -1065,60 +1484,6 @@
   before.all 'output.state :=
 }
 
-
-FUNCTION {n.dashify}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-        { t #1 #2 substring$ "--" = not
-            { "--" *
-              t #2 global.max$ substring$ 't :=
-            }
-            {   { t #1 #1 substring$ "-" = }
-                { "-" *
-                  t #2 global.max$ substring$ 't :=
-                }
-              while$
-            }
-          if$
-        }
-        { t #1 #1 substring$ *
-          t #2 global.max$ substring$ 't :=
-        }
-      if$
-    }
-  while$
-}
-
-FUNCTION {word.in}
-{ bbl.iin
-  " " * }
-
-FUNCTION {format.btitle}
-{ title
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
-    { "~" }
-    { " " }
-  if$
-  swap$ * *
-}
-
-FUNCTION {tie.connect}
- {"~"
-  swap$ * *
- }
-
-FUNCTION {either.or.check}
-{ empty$
-    'pop$
-    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
-  if$
-}
-
 FUNCTION {format.bvolume}
 { volume empty$
     { "" }
@@ -1125,7 +1490,7 @@
     { bbl.vvol volume tie.connect
       series empty$
         'skip$
-        { bbl.of space.word * series emphasize * }
+        { bbl.of spaces.around * series emphasize * }
       if$
       "volume and number" number either.or.check
     }
@@ -1154,31 +1519,7 @@
   if$
 }
 
-FUNCTION {is.num}
-{ chr.to.int$
-  duplicate$ "0" chr.to.int$ < not
-  swap$ "9" chr.to.int$ > not and
-}
 
-FUNCTION {extract.num}
-{ duplicate$ 't :=
-  "" 's :=
-  { t empty$ not }
-  { t #1 #1 substring$
-    t #2 global.max$ substring$ 't :=
-    duplicate$ is.num
-      { s swap$ * 's := }
-      { pop$ "" 't := }
-    if$
-  }
-  while$
-  s empty$
-    'skip$
-    { pop$ s }
-  if$
-}
-
-
 FUNCTION {convert.edition}
 { edition
 }
@@ -1194,38 +1535,6 @@
   if$
 }
 
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
-  #0 'multiresult :=
-    { multiresult not
-      t empty$ not
-      and
-    }
-    { t #1 #1 substring$
-      duplicate$ "-" =
-      swap$ duplicate$ "," =
-      swap$ "+" =
-      or or
-        { #1 'multiresult := }
-        { t #2 global.max$ substring$ 't := }
-      if$
-    }
-  while$
-  multiresult
-}
-
-%%FUNCTION {format.pages}
-%%{ pages empty$
-%%    { "" }
-%%    { pages multi.page.check
-%%        { bbl.ppages pages n.dashify tie.connect }
-%%        { bbl.ppage pages tie.connect }
-%%      if$
-%%    }
-%%  if$
-%%}
 FUNCTION {format.pages}
 { eid empty$
     {
@@ -1246,15 +1555,6 @@
   if$
 }
 
-%%FUNCTION {format.pages.page}
-%%{ pages empty$
-%%    { pagetotal empty$
-%%      { "" }
-%%      { pagetotal bbl.pages tie.connect }
-%%    if$}
-%%    { format.pages}
-%%  if$
-%%}
 FUNCTION {format.pages.page}
 { eid empty$
     { pages empty$
@@ -1317,6 +1617,19 @@
   if$
 }
 
+FUNCTION {bbl.thesis.type}
+{ type "mathesis" =
+  { bbl.mathesis }
+  { type "phdthesis" =
+    { bbl.phdthesis }
+    { type "docthesis" =
+      { bbl.docthesis }
+      %%{ "!!!" type * "t" change.case$ }
+      { type }
+    if$}
+  if$}
+if$}
+
 %%<!utf8>      bbl.thesis.type "t" change.case$
 %%<utf8>      bbl.thesis.type
 FUNCTION {format.thesis.type}
@@ -1337,78 +1650,61 @@
   if$
 }
 
-FUNCTION {author.before}
+FUNCTION {output.author.head}
 {
   author empty$
     'skip$
     {author num.names$ #4 <
-      {format.authors output
-       new.sentence}
+      {
+       author fmt.names.first output
+       new.sentence
+      }
       'skip$
     if$}
   if$
 }
 
-%%<*!long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    {bookauthor num.names$ #4 <
-%%      {format.bookauthors output
-%%       new.sentence}
-%%      'skip$
-%%    if$}
-%%  if$
-%%}
-%%</!long>
-%%<*long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    { format.bookauthors output
-%%      new.sentence
-%%    }
-%%  if$
-%%}
-%%</long>
-
-FUNCTION {author.after}
+FUNCTION {output.author.rest}
 {
   author empty$
     'skip$
-    {format.authors.after output
-       new.semicolon }
+    {author num.names$ #1 >
+      { author fmt.names.all output
+        new.semicolon
+      }
+      'skip$
+    if$}
   if$
 }
 
-FUNCTION {bookauthor.after}
+FUNCTION {bookauthor.rest}
 {
   bookauthor empty$
     'skip$
-    {format.bookauthors.after output
-       new.semicolon }
+    {
+      bookauthor fmt.names.all output
+      new.semicolon
+    }
   if$
 }
 
-FUNCTION {editor.organization.after}
+FUNCTION {editor.organization.rest}
 {
   compiler empty$
     {}
-    { format.compiler.after  output
+    { format.compiler.rest  output
     new.semicolon
     }
   if$
   editor empty$
     {}
-    { format.editors.after  output
+    { format.editors.rest  output.nonnull
     new.semicolon
     }
   if$
   organization empty$
     {}
-    {organization output
+    {organization output.nonnull
     new.semicolon
     }
   if$
@@ -1459,7 +1755,7 @@
     'skip$
     { doi empty$
         'skip$
-        { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
+        { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * }
       if$
     }
   if$
@@ -1469,9 +1765,13 @@
 { duplicate$ empty$
     'skip$
     { media empty$
-        { " " * bbl.media.text enclose.square.brackets * }
-        { " " * bbl.media enclose.square.brackets * }
-      if$
+      { type$ "online" =
+          { " " * bbl.media.online bracketise * }
+          { " " * bbl.media.text   bracketise * }
+        if$
+      }
+      { " " * bbl.media bracketise * }
+    if$
     }
   if$
 }
@@ -1551,14 +1851,15 @@
 FUNCTION {article}
 {
   output.bibitem
-  author.before
-  format.title add.media "title" output.check
+  output.author.head
+  %new.sentence
+  title add.media "title" output.check
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
-  journal emphasize add.doi "journal" output.check % new in v.2
+  journal emphasize add.doi "journal" output.check % new in v1.2
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.volume output
   format.number output
@@ -1575,11 +1876,14 @@
 FUNCTION {book}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.sentence
   format.number.series output
   new.block
@@ -1586,7 +1890,7 @@
   format.edition output
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1604,15 +1908,18 @@
 FUNCTION {booklet}
 {
   output.bibitem
-  author.before
-  format.title add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
   howpublished output
   address.or.location output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1624,15 +1931,18 @@
 FUNCTION {inbook}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  bookauthor.after
-  editor.organization.after
+  bookauthor.rest
+  editor.organization.rest
   new.block
   format.edition output
   new.block
@@ -1639,7 +1949,7 @@
   format.number.series output
   new.sentence
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1657,18 +1967,21 @@
 FUNCTION {incollection}
 {
   output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   format.number.series output
@@ -1685,15 +1998,22 @@
 FUNCTION {proceedings}
 {
   output.bibitem
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon                   % added in v.1.2k
+  titleaddon output           % added in v.1.2k
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
-  output.address.publisher
-  format.date "year" output.check
   new.block
+  format.pages.page output
+  %%%output.address.publisher  % 1.2k moved upper
+  new.block
   note output
   new.sentence
   output.eprint.url
@@ -1703,22 +2023,26 @@
 
 FUNCTION {inproceedings}
 { output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon                % added in v.1.2k
+  titleaddon output        % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
   new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
   format.pages.page output
   new.block
   note output
@@ -1738,10 +2062,12 @@
         }
       if$
     }
-    { format.authors output.nonnull }
+    { format.author output.nonnull }
   if$
   new.block
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   author empty$
     { organization empty$
     {
@@ -1758,7 +2084,7 @@
     }
   if$
   format.edition output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1771,6 +2097,8 @@
 {
   output.bibitem
   title add.media output.nonnull
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   format.type.number output
   add.blank
@@ -1778,9 +2106,9 @@
   new.colon
   ipc output
   new.slash
-  format.authors.after "author" output.check
+  format.author "author" output.check
   add.blank
-  authorcountry enclose.round.brackets output.nonnull
+  authorcountry paranthesify output.nonnull
   new.semicolon
   holder output.nonnull
   new.semicolon
@@ -1795,7 +2123,7 @@
   new.semicolon
   format.prioritydate output
   prioritynumber output
-  prioritycountry enclose.round.brackets output
+  prioritycountry paranthesify output
   new.block
   note output
   new.sentence
@@ -1808,13 +2136,15 @@
 
 FUNCTION {misc}
 { output.bibitem
-  format.authors output
+  %format.author output  % < v.1.2k
+  output.author.head    % v.1.2k
+  %new.sentence            % v.1.2k
   title howpublished new.sentence.checkb
-  format.title add.media output
+  title add.media output
   howpublished new.block.checka
   howpublished output
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1825,13 +2155,16 @@
 
 FUNCTION {unpublished}
 { output.bibitem
-  author.before
-  format.btitle "title" output.check
+  output.author.head
+  new.sentence
+  title "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note "note" output.check
   new.sentence
@@ -1842,12 +2175,14 @@
 
 FUNCTION {online}
 { output.bibitem
-  format.authors output
+  format.author output
   title howpublished new.sentence.checkb
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   howpublished new.dblslash.checka
-  howpublished enclose.square.brackets output
-  editor.organization.after
+  howpublished bracketise output
+  editor.organization.rest
   new.sentence
   new.block
   output.address.publisher
@@ -1866,25 +2201,24 @@
 FUNCTION {electronic} {online}
 FUNCTION {thesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
-  %%type "type" output.check
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
-  %%number output % code of the speciality
   specialitycode.or.number output % code of the speciality, new in v.1.2i
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours from the head zone
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1894,13 +2228,14 @@
   format.annote output
   fin.entry
 }
-
 %%  format.techrep.type.number output.nonnull
 %%  format.url output
 FUNCTION {report}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   type "type" output.check
   new.colon
@@ -1909,14 +2244,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -1929,9 +2264,9 @@
 
 FUNCTION {phdthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
@@ -1940,13 +2275,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1956,12 +2292,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {mastersthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.mathesis format.thesis.type output.nonnull
   new.colon
@@ -1970,13 +2305,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1986,12 +2322,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {docthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.docthesis format.thesis.type output.nonnull
   new.colon
@@ -2000,13 +2335,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicate athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2016,7 +2352,6 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {conference} { inproceedings }
 
 %%  format.url output
@@ -2024,7 +2359,7 @@
 FUNCTION {techreport}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   format.techreport.type output
   new.colon
@@ -2033,14 +2368,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -2065,96 +2400,96 @@
 MACRO {oct} {"Oct."}
 MACRO {nov} {"Nov."}
 MACRO {dec} {"Dec."}
-MACRO {aa}{"Astron. \& Astrophys."}
-MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."}
-MACRO {aj} {"Astron. J."}
+MACRO {aa}{"Astron.\ \& Astrophys."}
+MACRO {aasup}{"Astron.\ \& Astrophys.\ Suppl.\ Ser."}
+MACRO {aj} {"Astron.\ J."}
 MACRO {aph} {"Acta Phys."}
-MACRO {advp} {"Adv. Phys."}
-MACRO {ajp} {"Amer. J. Phys."}
-MACRO {ajm} {"Amer. J. Math."}
-MACRO {amsci} {"Amer. Sci."}
-MACRO {anofd} {"Ann. Fluid Dyn."}
-MACRO {am} {"Ann. Math."}
-MACRO {ap} {"Ann. Phys. (NY)"}
-MACRO {adp} {"Ann. Phys. (Leipzig)"}
-MACRO {ao} {"Appl. Opt."}
-MACRO {apl} {"Appl. Phys. Lett."}
+MACRO {advp} {"Adv.\ Phys."}
+MACRO {ajp} {"Amer.\ J.\ Phys."}
+MACRO {ajm} {"Amer.\ J.\ Math."}
+MACRO {amsci} {"Amer.\ Sci."}
+MACRO {anofd} {"Ann.\ Fluid Dyn."}
+MACRO {am} {"Ann.\ Math."}
+MACRO {ap} {"Ann.\ Phys.\ (NY)"}
+MACRO {adp} {"Ann.\ Phys.\ (Leipzig)"}
+MACRO {ao} {"Appl.\ Opt."}
+MACRO {apl} {"Appl.\ Phys.\ Lett."}
 MACRO {app} {"Astroparticle Phys."}
-MACRO {apj} {"Astrophys. J."}
-MACRO {apjsup} {"Astrophys. J. Suppl."}
-MACRO {apss} {"Astrophys. Space Sci."}
-MACRO {araa} {"Ann. Rev. Astron. Astrophys."}
-MACRO {baas} {"Bull. Amer. Astron. Soc."}
-MACRO {baps} {"Bull. Amer. Phys. Soc."}
-MACRO {cmp} {"Comm. Math. Phys."}
-MACRO {cpam} {"Commun. Pure Appl. Math."}
-MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"}
-MACRO {cpc} {"Comp. Phys. Comm."}
-MACRO {cqg} {"Class. Quant. Grav."}
-MACRO {cra} {"C. R. Acad. Sci. A"}
-MACRO {fed} {"Fusion Eng. \& Design"}
+MACRO {apj} {"Astrophys.\ J."}
+MACRO {apjsup} {"Astrophys.\ J.\ Suppl."}
+MACRO {apss} {"Astrophys.\ Space Sci."}
+MACRO {araa} {"Ann.\ Rev.\ Astron.\ Astrophys."}
+MACRO {baas} {"Bull.\ Amer.\ Astron.\ Soc."}
+MACRO {baps} {"Bull.\ Amer.\ Phys.\ Soc."}
+MACRO {cmp} {"Comm.\ Math.\ Phys."}
+MACRO {cpam} {"Commun.\ Pure Appl.\ Math."}
+MACRO {cppcf} {"Comm.\ Plasma Phys.\ \& Controlled Fusion"}
+MACRO {cpc} {"Comp.\ Phys.\ Comm."}
+MACRO {cqg} {"Class.\ Quant.\ Grav."}
+MACRO {cra} {"C.\ R.\ Acad.\ Sci.\ A"}
+MACRO {fed} {"Fusion Eng.\ \& Design"}
 MACRO {ft} {"Fusion Tech."}
-MACRO {grg} {"Gen. Relativ. Gravit."}
-MACRO {ieeens} {"IEEE Trans. Nucl. Sci."}
-MACRO {ieeeps} {"IEEE Trans. Plasma Sci."}
-MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"}
+MACRO {grg} {"Gen.\ Relativ.\ Gravit."}
+MACRO {ieeens} {"IEEE Trans.\ Nucl.\ Sci."}
+MACRO {ieeeps} {"IEEE Trans.\ Plasma Sci."}
+MACRO {ijimw} {"Interntl.\ J.\ Infrared \& Millimeter Waves"}
 MACRO {ip} {"Infrared Phys."}
 MACRO {irp} {"Infrared Phys."}
-MACRO {jap} {"J. Appl. Phys."}
-MACRO {jasa} {"J. Acoust. Soc. America"}
-MACRO {jcp} {"J. Comp. Phys."}
-MACRO {jchp} {"J. Chem. Phys."}
-MACRO {jetp} {"Sov. Phys.--JETP"}
-MACRO {jfe} {"J. Fusion Energy"}
-MACRO {jfm} {"J. Fluid Mech."}
-MACRO {jmp} {"J. Math. Phys."}
-MACRO {jne} {"J. Nucl. Energy"}
-MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."}
-MACRO {jnm} {"J. Nucl. Mat."}
-MACRO {jpc} {"J. Phys. Chem."}
-MACRO {jpp} {"J. Plasma Phys."}
-MACRO {jpsj} {"J. Phys. Soc. Japan"}
-MACRO {jsi} {"J. Sci. Instrum."}
-MACRO {jvst} {"J. Vac. Sci. \& Tech."}
+MACRO {jap} {"J.\ Appl.\ Phys."}
+MACRO {jasa} {"J.\ Acoust.\ Soc.\ America"}
+MACRO {jcp} {"J.\ Comp.\ Phys."}
+MACRO {jchp} {"J.\ Chem.\ Phys."}
+MACRO {jetp} {"Sov.\ Phys.--JETP"}
+MACRO {jfe} {"J.\ Fusion Energy"}
+MACRO {jfm} {"J.\ Fluid Mech."}
+MACRO {jmp} {"J.\ Math.\ Phys."}
+MACRO {jne} {"J.\ Nucl.\ Energy"}
+MACRO {jnec} {"J.\ Nucl.\ Energy, C: Plasma Phys., Accelerators, Thermonucl.\ Res."}
+MACRO {jnm} {"J.\ Nucl.\ Mat."}
+MACRO {jpc} {"J.\ Phys.\ Chem."}
+MACRO {jpp} {"J.\ Plasma Phys."}
+MACRO {jpsj} {"J.\ Phys.\ Soc.\ Japan"}
+MACRO {jsi} {"J.\ Sci.\ Instrum."}
+MACRO {jvst} {"J.\ Vac.\ Sci.\ \& Tech."}
 MACRO {nat} {"Nature"}
 MACRO {nature} {"Nature"}
-MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"}
-MACRO {nf} {"Nucl. Fusion"}
-MACRO {nim} {"Nucl. Inst. \& Meth."}
-MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."}
-MACRO {np} {"Nucl. Phys."}
-MACRO {npb} {"Nucl. Phys. B"}
-MACRO {nt/f} {"Nucl. Tech./Fusion"}
-MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"}
+MACRO {nedf} {"Nucl.\ Eng.\ \& Design/Fusion"}
+MACRO {nf} {"Nucl.\ Fusion"}
+MACRO {nim} {"Nucl.\ Inst.\ \& Meth."}
+MACRO {nimpr} {"Nucl.\ Inst.\ \& Meth.\ in Phys.\ Res."}
+MACRO {np} {"Nucl.\ Phys."}
+MACRO {npb} {"Nucl.\ Phys.\ B"}
+MACRO {nt/f} {"Nucl.\ Tech./Fusion"}
+MACRO {npbpc} {"Nucl.\ Phys.\ B (Proc.\ Suppl.)"}
 MACRO {inc} {"Nuovo Cimento"}
 MACRO {nc} {"Nuovo Cimento"}
-MACRO {pf} {"Phys. Fluids"}
-MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."}
-MACRO {pfb} {"Phys. Fluids B: Plasma Phys."}
-MACRO {pl} {"Phys. Lett."}
-MACRO {pla} {"Phys. Lett. A"}
-MACRO {plb} {"Phys. Lett. B"}
-MACRO {prep} {"Phys. Rep."}
-MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"}
-MACRO {pp} {"Phys. Plasmas"}
-MACRO {pop} {"Phys. Plasmas"}
-MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"}
-MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"}
-MACRO {prl} {"Phys. Rev. Lett."}
-MACRO {pr} {"Phys. Rev."}
-MACRO {physrev} {"Phys. Rev."}
-MACRO {pra} {"Phys. Rev. A"}
-MACRO {prb} {"Phys. Rev. B"}
-MACRO {prc} {"Phys. Rev. C"}
-MACRO {prd} {"Phys. Rev. D"}
-MACRO {pre} {"Phys. Rev. E"}
-MACRO {ps} {"Phys. Scripta"}
-MACRO {procrsl} {"Proc. Roy. Soc. London"}
-MACRO {rmp} {"Rev. Mod. Phys."}
-MACRO {rsi} {"Rev. Sci. Inst."}
+MACRO {pf} {"Phys.\ Fluids"}
+MACRO {pfa} {"Phys.\ Fluids A: Fluid Dyn."}
+MACRO {pfb} {"Phys.\ Fluids B: Plasma Phys."}
+MACRO {pl} {"Phys.\ Lett."}
+MACRO {pla} {"Phys.\ Lett.\ A"}
+MACRO {plb} {"Phys.\ Lett.\ B"}
+MACRO {prep} {"Phys.\ Rep."}
+MACRO {pnas} {"Proc.\ Nat.\ Acad.\ Sci.\ USA"}
+MACRO {pp} {"Phys.\ Plasmas"}
+MACRO {pop} {"Phys.\ Plasmas"}
+MACRO {ppcf} {"Plasma Phys.\ \& Controlled Fusion"}
+MACRO {phitrsl} {"Philos.\ Trans.\ Roy.\ Soc.\ London"}
+MACRO {prl} {"Phys.\ Rev.\ Lett."}
+MACRO {pr} {"Phys.\ Rev."}
+MACRO {physrev} {"Phys.\ Rev."}
+MACRO {pra} {"Phys.\ Rev.\ A"}
+MACRO {prb} {"Phys.\ Rev.\ B"}
+MACRO {prc} {"Phys.\ Rev.\ C"}
+MACRO {prd} {"Phys.\ Rev.\ D"}
+MACRO {pre} {"Phys.\ Rev.\ E"}
+MACRO {ps} {"Phys.\ Scripta"}
+MACRO {procrsl} {"Proc.\ Roy.\ Soc.\ London"}
+MACRO {rmp} {"Rev.\ Mod.\ Phys."}
+MACRO {rsi} {"Rev.\ Sci.\ Inst."}
 MACRO {science} {"Science"}
-MACRO {sciam} {"Sci. Am."}
-MACRO {sam} {"Stud. Appl. Math."}
+MACRO {sciam} {"Sci.\ Am."}
+MACRO {sam} {"Stud.\ Appl.\ Math."}
 MACRO {st} {"Sky and Telesc."}
 MACRO {cjp} {"Czech. J. Phys."}
 MACRO {el} {"Europhys. Lett."}
@@ -2197,48 +2532,46 @@
 MACRO {suplatt} {"Superlatt. Microstr."}
 MACRO {sust} {"Supercond. Sci. Technol."}
 MACRO {znat} {"Z. Naturforsch."}
-MACRO {appopt} {"Appl. Opt."}
-MACRO {bell}   {"Bell Syst. Tech. J."}
-MACRO {ell}    {"Electron. Lett."}
-MACRO {jasp}   {"J. Appl. Spectr."}
-MACRO {jqe}    {"IEEE J. Quantum Electron."}
-MACRO {jlwt}   {"J. Lightwave Technol."}
-MACRO {jmo}    {"J. Mod. Opt."}
-MACRO {josa}   {"J. Opt. Soc. America"}
-MACRO {josaa}  {"J. Opt. Soc. Amer.~A"}
-MACRO {josab}  {"J. Opt. Soc. Amer.~B"}
-MACRO {jdp}    {"J. Phys. (Paris)"}
-MACRO {oc}     {"Opt. Commun."}
-MACRO {ol}     {"Opt. Lett."}
-MACRO {os}     {"Opt. Spectrosc."}
+MACRO {appopt} {"Appl.\ Opt."}
+MACRO {bell}   {"Bell Syst.\ Tech.\ J."}
+MACRO {ell}    {"Electron.\ Lett."}
+MACRO {jasp}   {"J.\ Appl.\ Spectr."}
+MACRO {jqe}    {"IEEE J.\ Quantum Electron."}
+MACRO {jlwt}   {"J.\ Lightwave Technol."}
+MACRO {jmo}    {"J.\ Mod.\ Opt."}
+MACRO {josa}   {"J.\ Opt.\ Soc.\ America"}
+MACRO {josaa}  {"J.\ Opt.\ Soc.\ Amer.~A"}
+MACRO {josab}  {"J.\ Opt.\ Soc.\ Amer.~B"}
+MACRO {jdp}    {"J.\ Phys.\ (Paris)"}
+MACRO {oc}     {"Opt.\ Commun."}
+MACRO {ol}     {"Opt.\ Lett."}
+MACRO {os}     {"Opt.\ Spectrosc."}
 MACRO {phtl}   {"IEEE Photon. Technol. Lett."}
-MACRO {pspie}  {"Proc. Soc. Photo-Opt. Instrum. Eng."}
+MACRO {pspie}  {"Proc.\ Soc.\ Photo-Opt.\ Instrum. Eng."}
 MACRO {vr}     {"Vision Res."}
-MACRO {zph}    {"Z. f. Physik"}
-MACRO {zphb}   {"Z. f. Physik~B"}
-MACRO {zphd}   {"Z. f. Physik~D"}
+MACRO {zph}    {"Z.\ f.\ Physik"}
+MACRO {zphb}   {"Z.\ f.\ Physik~B"}
+MACRO {zphd}   {"Z.\ f.\ Physik~D"}
 MACRO {sse} {"Solid-State Electron."}
 MACRO {pss} {"Phys. Sol. State"}
 MACRO {nl}  {"Nano Lett."}
-MACRO {sjpp} {"Sov. J. Plasma Phys."}
-MACRO {spd}  {"Sov. Phys.--Doklady"}
-MACRO {sptp} {"Sov. Phys.--Tech. Phys."}
-MACRO       {spu}  {"Sov. Phys.--Uspekhi"}
+MACRO {sjpp} {"Sov.\ J.\ Plasma Phys."}
+MACRO {spd}  {"Sov.\ Phys.--Doklady"}
+MACRO {sptp} {"Sov.\ Phys.--Tech. Phys."}
+MACRO {spu}  {"Sov.\ Phys.--Uspekhi"}
 MACRO {ufn}  {"УФН"}
 MACRO {pu}  {"Phys.--Uspekhi"}
-MACRO {sjot} {"Sov. J. Opt. Technol."}
-MACRO {sjqe} {"Sov. J. Quantum Electron."}
-MACRO {sleb} {"Sov. Phys.--Leb. Inst. Rep."}
-MACRO {stph} {"Sov. Phys.--Techn. Phys."}
-MACRO {stphl}{"Sov. Techn. Phys. Lett."}
+MACRO {sjot} {"Sov.\ J.\ Opt.\ Technol."}
+MACRO {sjqe} {"Sov.\ J.\ Quantum Electron."}
+MACRO {sleb} {"Sov.\ Phys.--Leb.\ Inst.\ Rep."}
+MACRO {stph} {"Sov.\ Phys.--Techn.\ Phys."}
+MACRO {stphl}{"Sov.\ Techn.\ Phys.\ Lett."}
 
 READ
 
-
 FUNCTION {sortify}
 { purify$
 }
-
 %% =====================================
 %% This version from old Gost package
 %%<*!natbib>
@@ -2325,10 +2658,9 @@
         {author sort.format.names }
         {title sort.format.title}
       if$
-     }
+     }   
   if$
 }
-
 FUNCTION {presort}%#1
 {
   author.title.sort
@@ -2387,15 +2719,7 @@
   "\providecommand*{\BibUrl}[1]{\url{#1}}"           write$ newline$
   "\providecommand{\BibAnnote}[1]{}"                 write$ newline$
   "\providecommand*{\BibEmph}[1]{#1}"                write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{---}" write$ newline$
-  %\DeclareUTFcharacter[\UTFencname]{x2014}{\cyrdash}
-  %"\let\cyrdash\textemdash" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\hbox to.8em{--\hss--}}" write$ newline$
-  %"\ProvideTextCommandDefault{\cyrdash}{\textemdash}" write$ newline$
   "\ProvideTextCommandDefault{\cyrdash}{\iflanguage{russian}{\hbox to.8em{--\hss--}}{\textemdash}}" write$ newline$
-  %%"\ProvideTextCommandDefault{\cyrdash}{%"  write$ newline$
-  %%"  \iflanguage{russian}{\hbox to.8em{--\hss--}}{%" write$ newline$
-  %%"    \iflanguage{ukrainian}{\hbox to.8em{--\hss--}}{\textemdash}}}"  write$ newline$
   "\providecommand*{\BibDash}{\ifdim\lastskip>0pt\unskip\nobreak\hskip.2em plus 0.1em\fi" write$ newline$
   "\cyrdash\hskip.2em plus 0.1em\ignorespaces}" write$ newline$
   "\renewcommand{\newblock}{\ignorespaces}" write$ newline$
@@ -2418,5 +2742,6 @@
 
 EXECUTE {end.bib}
 
+\endinput
 %%
 %% End of file `ugost2003s.bst'.

Modified: trunk/Master/texmf-dist/bibtex/bst/gost/ugost2008.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/gost/ugost2008.bst	2020-12-29 00:54:00 UTC (rev 57250)
+++ trunk/Master/texmf-dist/bibtex/bst/gost/ugost2008.bst	2020-12-29 02:19:51 UTC (rev 57251)
@@ -4,30 +4,22 @@
 %%
 %% The original source files were:
 %%
-%% gost.dtx  (with options: `bst,utf8,modern,eprint')
+%% gost.dtx  (with options: `bst,utf8,eprint')
 %% 
-%% This file may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%%   http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
+%% IMPORTANT NOTICE:
 %% 
-%% This file has the LPPL maintenance status "maintained".
-%% Maintained by Igor A. Kotelnikov.
+%% For the copyright see the source file.
 %% 
-%% Current version: 1.2j, 2017.01.12
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from ugost2008.bst.
 %% 
-%% Please, send bug report via e-mail:
-%%   kia999 at mail dot ru <Igor Kotelnikov>
-%% or
-%%   polyama at yahoo dot com <Maksym Polyakov>
+%% For distribution of the original source see the terms
+%% for copying and modification in the file gost.dtx.
 %% 
-
-
-
-%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
 %% This bibstyle attempts to format bibliography according to
 %% GOST 7.0.5-2008 for bibliographic reference.
 
@@ -67,15 +59,15 @@
     language
     langid          % new in v1.2c
     booklanguage
-    %date            % not implemented yet...
+    date            % new in v1.2i
     pagetotal
     url
     urldate
     isbn
     doi
+    eprint
     eprinttype      % = archivePrefix
     eprintclass     % = primaryClass
-    eprint
     % new in v1.2f:
     % appear in biblatex:
     %addendum       % not implemented yet...
@@ -100,9 +92,24 @@
   {}
   { label }
 
-INTEGERS { output.state before.all mid.sentence after.sentence after.block
-after.dblslash after.slash after.colon after.semicolon }
+INTEGERS {
+    output.state
+    before.all
+    mid.sentence
+    after.sentence
+    after.block
+    after.dblslash
+    after.slash
+    after.colon
+    after.semicolon
+}
 
+STRINGS { curlanguage }
+
+STRINGS { s t }
+
+STRINGS { y m d }   % new in v.1.2j
+
 FUNCTION {init.state.consts}
 { #0 'before.all :=
   #1 'mid.sentence :=
@@ -114,11 +121,18 @@
   #7 'after.semicolon :=
 }
 
-STRINGS { s t }
+FUNCTION {set.language}
+{ langid empty$
+    { language empty$
+        { "english" 'curlanguage := }
+        { language  'curlanguage := }
+      if$
+    }
+    { langid  'curlanguage := }
+  if$
+}
 
-STRINGS { curlanguage }
-
-FUNCTION {change.language}
+FUNCTION {reset.language}
 { booklanguage empty$
     { "" }
     { booklanguage  'curlanguage :=
@@ -143,7 +157,7 @@
         { output.state before.all =
             'write$
             { output.state after.dblslash =
-                { "~//" * change.language * " " * write$ }
+                { "~//" * reset.language * " " * write$ }
                 { output.state after.slash =
                     { "~/ " * write$ }
                     { output.state after.colon =
@@ -177,7 +191,9 @@
 FUNCTION {output.check}
 { 't :=
   duplicate$ empty$
-    { pop$ "empty " t * " in " * cite$ * warning$ }
+    { pop$
+      "empty " t * " in " * cite$ * warning$
+    }
     'output.nonnull
   if$
 }
@@ -256,13 +272,6 @@
   if$
 }
 
-
-FUNCTION {non.stop}
-{ duplicate$
-   "}" * add.period$
-   #-1 #1 substring$ "." =
-}
-
 FUNCTION {new.block.checka}
 { empty$
     'skip$
@@ -309,9 +318,21 @@
   if$
 }
 
+%%
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {spaces.around}
+{ " " swap$ * " " * }
+
 FUNCTION {emphasize}
 { duplicate$ empty$
-    { pop$ "" }
+    %{ pop$ "" }
+    'skip$       % v.1.2k
     { "\BibEmph{" swap$ * "}" * }
   if$
 }
@@ -323,7 +344,7 @@
   if$
 }
 
-FUNCTION {enclose.square.brackets}
+FUNCTION {bracketise}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -331,7 +352,7 @@
   if$
 }
 
-FUNCTION {enclose.round.brackets}
+FUNCTION {paranthesify}
 {
   duplicate$ empty$
     { pop$ "" }
@@ -339,25 +360,82 @@
   if$
 }
 
-FUNCTION {space.word}
-{ " " swap$ * " " * }
 
-FUNCTION {bbl.edby}    %  { "\bbledby{}" }
+FUNCTION {tie.connect}
+ {"~" swap$ * *
+ }
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+        { t #1 #2 substring$ "--" = not
+            { "--" *
+              t #2 global.max$ substring$ 't :=
+            }
+            {   { t #1 #1 substring$ "-" = }
+                { "-" *
+                  t #2 global.max$ substring$ 't :=
+                }
+              while$
+            }
+          if$
+        }
+        { t #1 #1 substring$ *
+          t #2 global.max$ substring$ 't :=
+        }
+      if$
+    }
+  while$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+        { #1 'multiresult := }
+        { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {bbl.edby}
 { curlanguage "english" =
-   {"Ed.\ by"}
+   {"ed.\ by"}
    { curlanguage "ukrainian" =
-      {"Під ред."}
+      {"під ред."}
       { curlanguage "russian" =
-         {"Под ред."}
+         {"под ред."}
          { curlanguage "german" =
             { "ed." }
-            {"language is not defined: " language "edby" * * warning$ "Ed.\ by"}
+            {"language is not defined: " curlanguage " in bbl.edby" * * warning$ "Ed.\ by"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.cmplr}
+FUNCTION {bbl.compiler}
 { curlanguage "english" =
    { "Compiler"}
    { curlanguage "german" =
@@ -366,15 +444,15 @@
          {"{Укл.}"}
          { curlanguage "russian" =
             {"{Сост.}"}
-            {"language is not defined: " language  "cmplr" * * warning$ "Compiler"}
+            {"language is not defined: " curlanguage  " in bbl.compiler" * * warning$ "Compiler"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.edition} %  { "\bbledition{}" }
+FUNCTION {bbl.edition}
 { curlanguage "english" =
-   {"edition"}
+   {"ed."}
    { curlanguage "ukrainian" =
       {"{вид.}"}
       { curlanguage "russian" =
@@ -385,7 +463,7 @@
                {"edizione"}
                { curlanguage "french" =
                   {"\'{e}dition"}
-                  {"language is not defined: " language  "edition" * * warning$ "edition"}
+                  {"language is not defined: " curlanguage  " in bbl.edition" * * warning$ "ed."}
                if$}
             if$}
          if$}
@@ -393,7 +471,7 @@
    if$}
 if$}
 
-FUNCTION {bbl.vvolume} %  { "\bblVolume{}" }
+FUNCTION {bbl.vvolume}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Volume"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -400,12 +478,12 @@
       { "Том" }
       { curlanguage "german" =
          {"{Band}"} %%%% { "Volumen" }
-         {"language is not defined: " language  "vvolume" * * warning$ "Volume"}
+         {"language is not defined: " curlanguage  " in bbl.vvolume" * * warning$ "Volume"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.vvol}    %  { "\bblVol{}" }
+FUNCTION {bbl.vvol}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"Vol."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -412,12 +490,12 @@
       {"Т."}
       { curlanguage "german" =
          {"{Bd.}"} %%%% { "Vol." }
-         {"language is not defined: " language  "vvol" * * warning$ "Vol."}
+         {"language is not defined: " curlanguage  " in bbl.vvol" * * warning$ "Vol."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iissue}  %  { "\bblIssue{}" }
+FUNCTION {bbl.iissue}
 { curlanguage "english" =
    {"Issue"}
    { curlanguage "ukrainian" =
@@ -426,13 +504,13 @@
          {"Выпуск"}
          { curlanguage "german" =
             {"{Heft}"} %%%% { "Ausgabe" }
-            {"language is not defined: " language "iissue" * * warning$ "Issue"}
+            {"language is not defined: " curlanguage " in bbl.iissue" * * warning$ "Issue"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.iiss}  %  { "\bblIss{}" }
+FUNCTION {bbl.iiss}
 { curlanguage "english" =
    {"Iss."}
    { curlanguage "ukrainian" =
@@ -441,13 +519,13 @@
          {"Вып."}
          { curlanguage "german" =
             {"{H.}"}
-            {"language is not defined: " language "iiss" * * warning$ "Iss."}
+            {"language is not defined: " curlanguage " in bbl.iiss" * * warning$ "Iss."}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.of}      %  { "\bblof{}" }
+FUNCTION {bbl.of}
 { curlanguage "english" =
    {"of"}
    { curlanguage "german" =
@@ -456,13 +534,13 @@
          { "{із}" }
          { curlanguage "russian" =
             { "{из}" }
-            {"language is not defined: " language "of" * * warning$ "of"}
+            {"language is not defined: " curlanguage " in bbl.of" * * warning$ "of"}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.etal}      %  { "\bblof{}" }
+FUNCTION {bbl.etal}
 { curlanguage "english" =
    {"et~al."}
    { curlanguage "german" =
@@ -471,14 +549,31 @@
          {"{та~ін.}"}
          { curlanguage "russian" =
             {"и~др."}
-            {"language is not defined: " language  "et~al" * * warning$ "et~al."}
+            {"language is not defined: " curlanguage  " in bbl.etal" * * warning$ "et~al."}
          if$}
       if$}
    if$}
 if$}
 
+FUNCTION {bbl.and}
+{ curlanguage "english" =
+  {"and"}
+   { curlanguage "german" =
+      { "und" }
+      { curlanguage "ukrainian" =
+         {"і"}
+         { curlanguage "russian" =
+            {"и"}
+            { curlanguage "french" =
+                {"et"}
+                {"language is not defined: " curlanguage  " in bbl.and" * * warning$ "and"}
+            if$}
+         if$}
+      if$}
+   if$}
+if$}
 
-FUNCTION {bbl.nnumber} %  { "\bblNumber{}" }
+FUNCTION {bbl.nnumber}
 { curlanguage "english" =
    {"Number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -485,12 +580,12 @@
       { "{Номер}" }
       { curlanguage "german" =
          {"{Heft}"} %%% { "Anzahl" }
-         {"language is not defined: " language  "nnumber" * * warning$ "Number"}
+         {"language is not defined: " curlanguage  " in bbl.nnumber" * * warning$ "Number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.number}  %  { "\bblnumber{}" }
+FUNCTION {bbl.number}
 { curlanguage "english" =
    {"number"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -497,27 +592,30 @@
       {"{номер}"}
       { curlanguage "german" =
          {"{Heft}"} %%% { "anzahl" }???
-         {"language is not defined: " language  "number" * * warning$ "number"}
+         {"language is not defined: " curlanguage  " in bbl.number" * * warning$ "number"}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nr}     %   { "\bblno{}" }
+FUNCTION {bbl.nr}
 { curlanguage "english" =
    {"no."}
    { curlanguage "italian" =
-      { "no" }
+      { "no." }
       { curlanguage "ukrainian" = curlanguage "russian" = or
          { "{№}" }
          { curlanguage "german" =
-            {"{H.}"} %%% { "an." }
-            {"language is not defined: " language "nr" * * warning$ "no."}
+            {"{nu.}"} %%% { "an." }
+            { curlanguage "french" =
+                { "no." }
+                {"language is not defined: " curlanguage " in bbl.nr" * * warning$ "no."}
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.nnr}     %   { "\bblno{}" }
+FUNCTION {bbl.nnr}
 { curlanguage "english" =
    {"No."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -524,30 +622,30 @@
       { "{№}" }
       { curlanguage "german" =
          {"{H.}"} %%% { "an." }
-         {"language is not defined: " language  "nnr" * * warning$ "No."}
+         {"language is not defined: " curlanguage  " in bbl.nnr" * * warning$ "No."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.in}    %    { "\bblin{}" }
+FUNCTION {bbl.in}
 { curlanguage "english" = curlanguage "german" = or
    {"in"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "{в}" }
-      {"language is not defined: " language  "in" * * warning$ "in"}
+      {"language is not defined: " curlanguage  " in bbl.in" * * warning$ "in"}
    if$}
 if$}
 
-FUNCTION {bbl.iin}  %     { "\bblIn{}" }
+FUNCTION {bbl.iin}
 { curlanguage "english" = curlanguage "german" = or
    {"In"}
    { curlanguage "ukrainian" = curlanguage "russian" = or
       { "{В}" }
-      {"language is not defined: " language  "iin" * * warning$ "In"}
+      {"language is not defined: " curlanguage  " in bbl.iin" * * warning$ "In"}
    if$}
 if$}
 
-FUNCTION {bbl.pages}    % { "\bblpp." }
+FUNCTION {bbl.pages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."} %%% {"pp."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -554,12 +652,12 @@
       {"{с.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "pages" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.pages" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.page}   %   { "\bblp."
+FUNCTION {bbl.page}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"p."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -566,12 +664,12 @@
       {"{с.}"}
       { curlanguage "german" =
          {"S."} %%%% { "s." }
-         {"language is not defined: " language  "page" * * warning$ "p."}
+         {"language is not defined: " curlanguage  " in bbl.page" * * warning$ "p."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppages}%    { "\bblPp." }
+FUNCTION {bbl.ppages}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."} %%%% { "Pp." }
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -578,12 +676,12 @@
       {"{С.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language "ppages" * * warning$ "P."}
+         {"language is not defined: " curlanguage " in bbl.ppages" * * warning$ "P."}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.ppage}  %   { "\bblP." }
+FUNCTION {bbl.ppage}
 { curlanguage "english" = curlanguage "french" = or curlanguage "italian" = or
    {"P."}
    { curlanguage "ukrainian" = curlanguage "russian" = or
@@ -590,7 +688,7 @@
       {"{С.}"}
       { curlanguage "german" =
          {"S."}
-         {"language is not defined: " language  "ppage" * * warning$ "P."}
+         {"language is not defined: " curlanguage  " in bbl.ppage" * * warning$ "P."}
       if$}
    if$}
 if$}
@@ -604,7 +702,10 @@
          { "{Режим доступа}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "Mode d'acc\`{e}s" }
+                { "language is not defined: " curlanguage " in bbl.url" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
@@ -618,13 +719,16 @@
          { "{дата обращения}" }
          { curlanguage "german" =
             { "{online; abgerufen}" }
-            { "language is not defined: " language "urldate" * * warning$ "online; accessed" }
+            { curlanguage "french" =
+                { "{en ligne; acc\'{e}d\'{e}}" }
+                { "language is not defined: " curlanguage " in bbl.urldate" * * warning$ "online; accessed" }
+            if$}
          if$}
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.techreport} % rename to bbl.techreport
+FUNCTION {bbl.techreport}
 { curlanguage "english" =
    { "Rep." }
    { curlanguage "german" =
@@ -631,7 +735,7 @@
       { "Bericht" }
       { curlanguage "russian" =
          { "{Отчет}" }
-         { "language is not defined: " language "techrep" * * warning$ "Rep." }
+         { "language is not defined: " curlanguage " in bbl.techrep" * * warning$ "Rep." }
       if$}
    if$}
 if$}
@@ -640,10 +744,10 @@
 { curlanguage "english" =
    { "Master's thesis" }
    { curlanguage "german" =
-      { "Diss.~Mag." }
+      { "diss.~mag." }
       { curlanguage "russian" =
-         { "{Квалификационная работа магистра}" }
-         { "language is not defined: " language "mthesis" * * warning$ "Master's thesis" }
+         { "{квалификационная работа магистра}" }
+         { "language is not defined: " curlanguage " in bbl.mthesis" * * warning$ "Master's thesis" }
       if$}
    if$}
 if$}
@@ -652,12 +756,12 @@
 { curlanguage "english" =
    { "Ph.\,D. thesis" }
    { curlanguage "german" =
-      { "Diss.~Ph.\,D." }
+      { "diss.~Ph.\,D." }
       { curlanguage "russian" =
-         { "{дис.\ \ldots\ канд. наук}" }
+         { "{дис.\ \ldots\ канд.\ наук}" }
          { curlanguage "french" =
-           { "Th\`{e}se de doctorat" }
-           { "language is not defined: " language "phdthesis" * * warning$ "Ph.\,D. thesis" }
+           { "th\`{e}se de doctorat" }
+           { "language is not defined: " curlanguage " in bbl.phdthesis" * * warning$ "Ph.\,D. thesis" }
          if$}
       if$}
    if$}
@@ -665,35 +769,22 @@
 
 FUNCTION {bbl.docthesis}
 { curlanguage "english" =
-   { "Dr.\,Sci. dissertation" }
+   { "dr.\,sci. dissertation" }
    { curlanguage "german" =
-      { "Diss.~Dr." }
+      { "diss.~dr." }
       { curlanguage "russian" =
          { "{дис.\ \ldots\ д-ра наук}" }
-         { "language is not defined: " language "docthesis" * * warning$ "Dr.\,Sci. dissertation" }
+         { "language is not defined: " curlanguage " in bbl.docthesis" * * warning$ "Dr.\,Sci. dissertation" }
       if$}
    if$}
 if$}
 
-FUNCTION {bbl.thesis.type}
-{ type "mathesis" =
-  { bbl.mathesis }
-  { type "phdthesis" =
-    { bbl.phdthesis }
-    { type "docthesis" =
-      { bbl.docthesis }
-      %%{ "!!!" type * "t" change.case$ }
-      { type }
-    if$}
-  if$}
-if$}
-
 FUNCTION {bbl.nnoaddress}
 { curlanguage "english" =
    { "S.\ l." }
    { curlanguage "russian" =
       { "{Б.\ м.}" }
-      { "language is not defined: " language "nnoaddress" * * warning$ "S.\ l." }
+      { "language is not defined: " curlanguage " in bbl.nnoaddress" * * warning$ "S.\ l." }
    if$}
 if$}
 
@@ -702,7 +793,7 @@
    { "s.\ n." }
    { curlanguage "russian" =
       { "{б.\ и.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "s.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "s.\ n." }
    if$}
 if$}
 
@@ -711,7 +802,7 @@
    { "S.\ n." }
    { curlanguage "russian" =
       { "{Б.\ и.}" }
-      { "language is not defined: " language "nnopublisher" * * warning$ "S.\ n." }
+      { "language is not defined: " curlanguage " in bbl.nnopublisher" * * warning$ "S.\ n." }
    if$}
 if$}
 
@@ -720,7 +811,7 @@
    { "Text" }
    { curlanguage "russian" = curlanguage "ukrainian" = or
       { "{Текст}" }
-      { "language is not defined: " language "media" * * warning$ "Text" }
+      { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Text" }
    if$}
 if$}
 
@@ -731,7 +822,7 @@
       { "{Электронный ресурс}" }
       { curlanguage "ukrainian" =
         { "{Електронний ресурс}" }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -743,7 +834,7 @@
       { "{Электронный ресурс онлайн}" }
       { curlanguage "ukrainian" =
         { "{Електронний ресурс онлайн}" }
-        { "language is not defined: " language "media" * * warning$ "Electronic resource" }
+        { "language is not defined: " curlanguage " in bbl.media" * * warning$ "Electronic resource" }
       if$}
    if$}
 if$}
@@ -755,7 +846,7 @@
       { "{рук.}" }
       { curlanguage "ukrainian" =
         { "{рук.}" }
-        { "language is not defined: " language "chief" * * warning$ "chief" }
+        { "language is not defined: " curlanguage " in bbl.chief" * * warning$ "chief" }
       if$}
    if$}
 if$}
@@ -762,12 +853,12 @@
 
 FUNCTION {bbl.executor}
 { curlanguage "english" =
-   { "Executor" }
+   { "executor" }
    { curlanguage "russian" =
       { "{исполн.}" }
       { curlanguage "ukrainian" =
         { "{виконавець}" }
-        { "language is not defined: " language "executor" * * warning$ "executor" }
+        { "language is not defined: " curlanguage " in bbl.executor" * * warning$ "executor" }
       if$}
    if$}
 if$}
@@ -789,7 +880,7 @@
       { "ang." }
       { curlanguage "russian" =
         { "{заявл.}" }
-        { "language is not defined: " language "req" * * warning$ "req" }
+        { "language is not defined: " curlanguage " in bbl.req" * * warning$ "req" }
       if$
       }
     if$
@@ -805,7 +896,7 @@
       { "ausg." }
       { curlanguage "russian" =
         { "{опубл.}" }
-        { "language is not defined: " language "publication" * * warning$ "publication" }
+        { "language is not defined: " curlanguage " in bbl.publication" * * warning$ "publication" }
       if$
       }
     if$
@@ -821,7 +912,7 @@
       { "Prioritat" }
       { curlanguage "russian" =
         { "{приоритет}" }
-        { "language is not defined: " language "priority" * * warning$ "priority" }
+        { "language is not defined: " curlanguage " in bbl.priority" * * warning$ "priority" }
       if$
       }
     if$
@@ -829,68 +920,462 @@
   if$
 }
 
+FUNCTION {bbl.jan}
+{ curlanguage "english" =
+   {"Jan."}
+   { curlanguage "ukrainian" =
+      {"Січ."} % Січень
+      { curlanguage "russian" =
+         { "Янв." }
+         { curlanguage "german" =
+            { "Jan." } % Januar
+            { "language is not defined: bbl.jan for " curlanguage * warning$ "Jan." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.feb}
+{ curlanguage "english" =
+   {"Feb."}
+   { curlanguage "ukrainian" =
+      {"Лют."} % Лютий
+      { curlanguage "russian" =
+         { "Фев." }
+         { curlanguage "german" =
+            {"Feb."} % Februar
+            {"language is not defined: bbl.feb for " curlanguage * warning$ "Feb."}
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.mar}
+{ curlanguage "english" =
+   {"Mar."}
+   { curlanguage "ukrainian" =
+      {"Бер."} % Березень
+      { curlanguage "russian" =
+            { "Март" }
+         { curlanguage "german" =
+            {"März"} % März
+            {"language is not defined: bbl.mar for " curlanguage * warning$ "Mar."}
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.apr}
+{ curlanguage "english" =
+   {"Apr."}
+   { curlanguage "ukrainian" =
+      {"Квіт."} % квітень
+      { curlanguage "russian" =
+            { "Апр." }
+         { curlanguage "german" =
+            {"Apr."} % April
+            { "language is not defined: bbl.apr for " curlanguage * warning$ "Apr." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.may}
+{ curlanguage "english" =
+   {"May"}
+   { curlanguage "ukrainian" =
+      {"Трав."} % травень
+      { curlanguage "russian" =
+            { "Май" }
+         { curlanguage "german" =
+            {"Mai"}
+            { "language is not defined: bbl.may for " curlanguage * warning$ "May" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jun}
+{ curlanguage "english" =
+   {"June"}
+   { curlanguage "ukrainian" =
+      {"Чер."} % червень
+      { curlanguage "russian" =
+            { "Июнь" }
+         { curlanguage "german" =
+            {"Juni"}
+            { "language is not defined: bbl.jun for " curlanguage * warning$ "June" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jul}
+{ curlanguage "english" =
+   {"July"}
+   { curlanguage "ukrainian" =
+      {"Липень"} %Липень
+      { curlanguage "russian" =
+            { "Июль" }
+         { curlanguage "german" =
+            {"Juli"}
+            { "language is not defined: bbl.jul for " curlanguage * warning$ "July" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.aug}
+{ curlanguage "english" =
+   {"Aug."}
+   { curlanguage "ukrainian" =
+      {"Серпень"} % Серпень
+      { curlanguage "russian" =
+            { "Авг." }
+         { curlanguage "german" =
+            {"Aug."} % August
+            { "language is not defined: bbl.aug for " curlanguage * warning$ "Aug." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.sep}
+{ curlanguage "english" =
+   {"Sep."}
+   { curlanguage "ukrainian" =
+      {"Вер."} % вересень
+      { curlanguage "russian" =
+            { "Сент." }
+         { curlanguage "german" =
+            {"Sep."} % September
+            { "language is not defined: bbl.sep for " curlanguage * warning$ "Sep." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.oct}
+{ curlanguage "english" =
+   {"Oct."}
+   { curlanguage "ukrainian" =
+      {"Жов."} % жовтень
+      { curlanguage "russian" =
+            { "Окт." }
+         { curlanguage "german" =
+            {"Okt."} % Oktober
+            { "language is not defined: bbl.oct for " curlanguage * warning$ "Oct." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.nov}
+{ curlanguage "english" =
+   {"Nov."}
+   { curlanguage "ukrainian" =
+      {"Лис."} % листопад
+      { curlanguage "russian" =
+            { "Нояб." }
+         { curlanguage "german" =
+            {"Nov."} % November
+            { "language is not defined: bbl.nov for " curlanguage * warning$ "Nov." }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.dec}
+{ curlanguage "english" =
+   {"Dec."}
+   { curlanguage "ukrainian" =
+      {"Груд."} % грудень
+      { curlanguage "russian" =
+            { "Дек." }
+         { curlanguage "german" =
+            {"Dez."} % Dezember
+            { "language is not defined: bbl.dec for " curlanguage * warning$ "Dec." }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {bbl.arxiv}
+{ curlanguage "english" =
+   { "ArXiv" }
+   { curlanguage "ukrainian" =
+      {"ArXiv"}
+      { curlanguage "russian" =
+         { "ArXiv" }
+         { curlanguage "german" =
+            { "ArXiv" }
+            { "language is not defined: bbl.arxiv for " curlanguage * warning$ "ArXiv" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.jstor}
+{ curlanguage "english" =
+   { "JSTOR" }
+   { curlanguage "ukrainian" =
+      {"JSTOR"}
+      { curlanguage "russian" =
+         { "JSTOR" }
+         { curlanguage "german" =
+            { "JSTOR" }
+            { "language is not defined: bbl.jstor for " curlanguage * warning$ "JSTOR" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.pubmed}
+{ curlanguage "english" =
+   { "PubMed" }
+   { curlanguage "ukrainian" =
+      {"PubMed"}
+      { curlanguage "russian" =
+         { "PubMed" }
+         { curlanguage "german" =
+            { "PubMed" }
+            { "language is not defined: bbl.pubmed for " curlanguage * warning$ "PubMed" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.googlebooks}
+{ curlanguage "english" =
+   { "Google Books" }
+   { curlanguage "ukrainian" =
+      {"Google Книги"}
+      { curlanguage "russian" =
+         { "Google Книги" }
+         { curlanguage "german" =
+            { "Google Books" }
+            { "language is not defined: bbl.googlebooks for " curlanguage * warning$ "Google Books" }
+         if$}
+      if$}
+   if$}
+if$}
+
+FUNCTION {bbl.hdl}
+{ curlanguage "english" =
+   { "Handle.Net" }
+   { curlanguage "ukrainian" =
+      {"Handle.Net"}
+      { curlanguage "russian" =
+         { "Handle.Net" }
+         { curlanguage "german" =
+            { "Handle.Net" }
+            { "language is not defined: bbl.hdl for " curlanguage * warning$ "Handle.Net" }
+         if$}
+      if$}
+   if$}
+if$}
+FUNCTION {address.or.location}
+{
+  address empty$
+    { location }
+    { address }
+  if$
+}
+
+FUNCTION {specialitycode.or.number}
+{
+  specialitycode empty$
+    { number }
+    { specialitycode }
+  if$
+}
+
+FUNCTION {institution.or.school}
+{
+  institution empty$
+    { school}
+    { institution }
+  if$
+}
+FUNCTION {date.to.year}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #3 >
+        {
+          date #1 #4 substring$ 'y :=
+          y
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {date.to.month}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #6 >
+        {
+          date #6 #2 substring$ 'm :=
+          m
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {date.to.day}
+{
+  date empty$
+    { date }
+    {
+      date text.length$ #10 =
+        {
+          date #9 #2 substring$ 'd :=
+          d
+        }
+        {
+          "wrong format of date in " cite$ * ": date=" * date * warning$
+          date
+        }
+      if$
+    }
+  if$
+}
+
+FUNCTION {year.or.date.to.year}
+{
+  year empty$
+    {
+      date.to.year
+    }
+    { year }
+  if$
+}
+
+FUNCTION {format.month}
+{ month empty$
+    { "" }
+    { month "Jan." =
+        { bbl.jan }
+    { month "Feb." =
+        { bbl.feb }
+    { month "Mar." =
+        { bbl.mar }
+    { month "Apr." =
+        { bbl.apr }
+    { month "May" =
+        { bbl.may }
+    { month "Jun." =
+        { bbl.jun }
+    { month "Jul." =
+        { bbl.jul }
+    { month "Aug." =
+        { bbl.aug }
+    { month "Sep." =
+        { bbl.sep }
+    { month "Oct." =
+        { "Окт." }
+    { month "Nov." =
+        { bbl.nov }
+    { month "Dec." =
+        { bbl.dec }
+        {
+          "unknown month in " cite$ * warning$
+          month
+        }
+        if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
+    if$
+}
+FUNCTION {format.date}
+{ year.or.date.to.year empty$
+    { month empty$
+        { "" }
+        { "there's a month but no year in " cite$ * warning$
+          format.month
+        }
+      if$
+    }
+    { month empty$
+        'year.or.date.to.year
+        { year.or.date.to.year ". \BibDash " format.month * * }
+      if$
+    }
+  if$
+}
+
 INTEGERS { nameptr namesleft numnames }
 
+FUNCTION {fmt.names.first}
+{ #1
+  "{vv~}{ll}{~jj}{~ff}"
+  format.name$
+}
 
-FUNCTION {format.names}
+FUNCTION {fmt.names.three}
 {
   's :=
   #1 'nameptr :=
   s num.names$ 'numnames :=
   numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr
-      "{vv~}{ll}{~jj}{~ff}" format.name$ 't :=
-      nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
+  { namesleft #0 > }
+  { s nameptr
+      "{vv~}{ll}{~jj}{~ff}"
+    format.name$ 't :=
+    nameptr #1 >
+      { nameptr #4 = numnames #4 > and
+          { "others" 't :=
+            #1 'namesleft :=
+          }
+          'skip$
+        if$
+        namesleft #1 >
+          { ", " * t * }
+          { t "others" = t "~others" = or
+              { " " * bbl.etal * }
+              { ", " * t * }
           if$
-          namesleft #1 >
-            { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
-                { " " * bbl.etal * }
-                { ", " * t * }
-              if$
-            }
-          if$
-        }
-        't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
+          }
+        if$
+      }
+      't
+    if$
+    nameptr #1 + 'nameptr :=
+    namesleft #1 - 'namesleft :=
+  }
   while$
 }
 
-
-FUNCTION {format.names.rev}
-{
-  's :=
+FUNCTION {fmt.names.all}
+{ 's :=
   #1 'nameptr :=
   s num.names$ 'numnames :=
   numnames 'namesleft :=
     { namesleft #0 > }
     { s nameptr
-      "{ff}{~vv}{~ll}{, jj}" format.name$ 't :=
+      %"{vv~}{ll}" format.name$ 't :=
+      "{vv~}{ll}{~jj}{~ff}"
+      format.name$ 't :=
       nameptr #1 >
-        { nameptr #4 =
-          numnames #4 > and
-            { "others" 't :=
-              #1 'namesleft := }
-            'skip$
-          if$
-          namesleft #1 >
+        { namesleft #1 >
             { ", " * t * }
-            { t "others" =
-          t "~others" =
-          or
+            { numnames #2 >  curlanguage "english" = and
+                { "," * }
+                'skip$
+              if$
+              t "others" = t "~others" = or
                 { " " * bbl.etal * }
-                { ", " * t * }
+                { " " bbl.and " " * * * t * }
               if$
             }
           if$
@@ -903,145 +1388,57 @@
   while$
 }
 
-
-FUNCTION {format.authors}
-{ author empty$
-    { "" }
-    { author format.names emphasize}
+%%<long>    { author fmt.names.all emphasize}
+%%<!long&strict>    { author fmt.names.first emphasize}
+%%<!long&!strict>    { author fmt.names.three emphasize}
+FUNCTION {format.author}
+{
+  author empty$
+    { author } %%%'skip$
+    {author num.names$ #4 <
+      {
+       author fmt.names.three
+      }
+      { "" } %%%'skip$
+    if$}
   if$
 }
 
-
-FUNCTION {format.bookauthors}
+FUNCTION {format.bookauthors.rest}
 { bookauthor empty$
     { "" }
-    { bookauthor format.names}
+    { bookauthor fmt.names.three emphasize }
   if$
 }
 
-FUNCTION {format.authors.after}
-{ author empty$
-    { "" }
-    { author format.names.rev}
-  if$
-}
-
-FUNCTION {format.bookauthors.after}
-{ bookauthor empty$
-    { "" }
-    { bookauthor format.names.rev}% always cuts to 4 persons
-  if$
-}
-
-FUNCTION {format.editors.after}
+FUNCTION {format.editors.rest}
 { editor empty$
     { "" }
-    { bbl.edby "\ " * editor format.names.rev * }
+    { bbl.edby "\ " * editor fmt.names.three * }
   if$
 }
 
-FUNCTION {format.chief.after}
+FUNCTION {format.chief.rest}
 { editor empty$
     { "" }
-    { bbl.chief "\ " * editor format.names.rev * }
+    { bbl.chief "\ " * editor fmt.names.three * }
   if$
 }
 
-FUNCTION {format.executor.after}
+FUNCTION {format.executor.rest}
 { author empty$
     { "" }
-    { bbl.executor ": " * author format.names.rev * }
+    { bbl.executor ": " * author fmt.names.three * }
   if$
 }
 
-FUNCTION {format.compiler.after}
+FUNCTION {format.compiler.rest}
 { compiler empty$
     { "" }
-    { bbl.cmplr "\ " * compiler format.names.rev * }
+    { bbl.compiler "\ " * compiler fmt.names.three * }
   if$
 }
 
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    { title }
-  if$
-}
-
-FUNCTION {format.month}
-{ month empty$
-    { "" }
-    { curlanguage "russian" =
-        { month "Jan." =
-            { "Янв." }
-        { month "Feb." =
-            { "Фев." }
-        { month "Mar." =
-            { "Март" }
-        { month "Apr." =
-            { "Апр." }
-        { month "May" =
-            { "Май" }
-        { month "Jun." =
-            { "Июнь" }
-        { month "Jul." =
-            { "Июль" }
-        { month "Aug." =
-            { "Авг." }
-        { month "Sep." =
-            { "Сент." }
-        { month "Oct." =
-            { "Окт." }
-        { month "Nov." =
-            { "Нояб." }
-        { month "Dec." =
-            { "Дек." }
-            { month }
-            if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}
-        { month }
-        if$}
-    if$
-}
-FUNCTION {format.date}
-{ year empty$
-    { month empty$
-        { "" }
-        { "there's a month but no year in " cite$ * warning$
-          format.month
-        }
-      if$
-    }
-    { month empty$
-        'year
-        { year ". \BibDash " format.month * * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {address.or.location}
-{
-  address empty$
-    { location }
-    { address }
-  if$
-}
-
-FUNCTION {specialitycode.or.number}
-{
-  specialitycode empty$
-    { number }
-    { specialitycode }
-  if$
-}
-
-FUNCTION {institution.or.school}
-{
-  institution empty$
-    { school}
-    { institution }
-  if$
-}
 FUNCTION {output.address.publisher}
 {
   address empty$ location empty$ and
@@ -1055,21 +1452,13 @@
   if$
   publisher output
 }
-
-
 FUNCTION {output.bibitem}
-{ newline$
+{
+  set.language
+  newline$
   "\bibitem" write$
   cite$ bracify write$
   newline$
-  langid empty$
-    { language empty$
-        { "english" 'curlanguage := }
-        { language  'curlanguage := }
-      if$
-    }
-    { langid  'curlanguage := }
-  if$
   "\selectlanguageifdefined" curlanguage bracify * write$
   newline$
   ""
@@ -1076,60 +1465,6 @@
   before.all 'output.state :=
 }
 
-
-FUNCTION {n.dashify}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-        { t #1 #2 substring$ "--" = not
-            { "--" *
-              t #2 global.max$ substring$ 't :=
-            }
-            {   { t #1 #1 substring$ "-" = }
-                { "-" *
-                  t #2 global.max$ substring$ 't :=
-                }
-              while$
-            }
-          if$
-        }
-        { t #1 #1 substring$ *
-          t #2 global.max$ substring$ 't :=
-        }
-      if$
-    }
-  while$
-}
-
-FUNCTION {word.in}
-{ bbl.iin
-  " " * }
-
-FUNCTION {format.btitle}
-{ title
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
-    { "~" }
-    { " " }
-  if$
-  swap$ * *
-}
-
-FUNCTION {tie.connect}
- {"~"
-  swap$ * *
- }
-
-FUNCTION {either.or.check}
-{ empty$
-    'pop$
-    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
-  if$
-}
-
 FUNCTION {format.bvolume}
 { volume empty$
     { "" }
@@ -1136,7 +1471,7 @@
     { bbl.vvol volume tie.connect
       series empty$
         'skip$
-        { bbl.of space.word * series emphasize * }
+        { bbl.of spaces.around * series emphasize * }
       if$
       "volume and number" number either.or.check
     }
@@ -1165,31 +1500,7 @@
   if$
 }
 
-FUNCTION {is.num}
-{ chr.to.int$
-  duplicate$ "0" chr.to.int$ < not
-  swap$ "9" chr.to.int$ > not and
-}
 
-FUNCTION {extract.num}
-{ duplicate$ 't :=
-  "" 's :=
-  { t empty$ not }
-  { t #1 #1 substring$
-    t #2 global.max$ substring$ 't :=
-    duplicate$ is.num
-      { s swap$ * 's := }
-      { pop$ "" 't := }
-    if$
-  }
-  while$
-  s empty$
-    'skip$
-    { pop$ s }
-  if$
-}
-
-
 FUNCTION {convert.edition}
 { edition
 }
@@ -1205,38 +1516,6 @@
   if$
 }
 
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
-  #0 'multiresult :=
-    { multiresult not
-      t empty$ not
-      and
-    }
-    { t #1 #1 substring$
-      duplicate$ "-" =
-      swap$ duplicate$ "," =
-      swap$ "+" =
-      or or
-        { #1 'multiresult := }
-        { t #2 global.max$ substring$ 't := }
-      if$
-    }
-  while$
-  multiresult
-}
-
-%%FUNCTION {format.pages}
-%%{ pages empty$
-%%    { "" }
-%%    { pages multi.page.check
-%%        { bbl.ppages pages n.dashify tie.connect }
-%%        { bbl.ppage pages tie.connect }
-%%      if$
-%%    }
-%%  if$
-%%}
 FUNCTION {format.pages}
 { eid empty$
     {
@@ -1257,15 +1536,6 @@
   if$
 }
 
-%%FUNCTION {format.pages.page}
-%%{ pages empty$
-%%    { pagetotal empty$
-%%      { "" }
-%%      { pagetotal bbl.pages tie.connect }
-%%    if$}
-%%    { format.pages}
-%%  if$
-%%}
 FUNCTION {format.pages.page}
 { eid empty$
     { pages empty$
@@ -1328,6 +1598,19 @@
   if$
 }
 
+FUNCTION {bbl.thesis.type}
+{ type "mathesis" =
+  { bbl.mathesis }
+  { type "phdthesis" =
+    { bbl.phdthesis }
+    { type "docthesis" =
+      { bbl.docthesis }
+      %%{ "!!!" type * "t" change.case$ }
+      { type }
+    if$}
+  if$}
+if$}
+
 %%<!utf8>      bbl.thesis.type "t" change.case$
 %%<utf8>      bbl.thesis.type
 FUNCTION {format.thesis.type}
@@ -1348,81 +1631,61 @@
   if$
 }
 
-FUNCTION {author.before}
+FUNCTION {output.author.head}
 {
   author empty$
     'skip$
     {author num.names$ #4 <
-      {format.authors output
-       new.sentence}
+      {
+       author fmt.names.three output
+       new.sentence
+      }
       'skip$
     if$}
   if$
 }
 
-%%<*!long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    {bookauthor num.names$ #4 <
-%%      {format.bookauthors output
-%%       new.sentence}
-%%      'skip$
-%%    if$}
-%%  if$
-%%}
-%%</!long>
-%%<*long>
-%%FUNCTION {bookauthor.before}
-%%{
-%%  bookauthor empty$
-%%    'skip$
-%%    { format.bookauthors output
-%%      new.sentence
-%%    }
-%%  if$
-%%}
-%%</long>
-
-FUNCTION {author.after}
+FUNCTION {output.author.rest}
 {
   author empty$
     'skip$
     {author num.names$ #3 >
-      {format.authors.after output
-       new.semicolon }
+      { author fmt.names.all output
+        new.semicolon
+      }
       'skip$
     if$}
   if$
 }
 
-FUNCTION {bookauthor.after}
+FUNCTION {bookauthor.rest}
 {
   bookauthor empty$
     'skip$
-    {format.bookauthors.after output
-       new.semicolon }
+    {
+      bookauthor fmt.names.three output
+      new.semicolon
+    }
   if$
 }
 
-FUNCTION {editor.organization.after}
+FUNCTION {editor.organization.rest}
 {
   compiler empty$
     {}
-    { format.compiler.after  output
+    { format.compiler.rest  output
     new.semicolon
     }
   if$
   editor empty$
     {}
-    { format.editors.after  output
+    { format.editors.rest  output.nonnull
     new.semicolon
     }
   if$
   organization empty$
     {}
-    {organization output
+    {organization output.nonnull
     new.semicolon
     }
   if$
@@ -1473,7 +1736,7 @@
     'skip$
     { doi empty$
         'skip$
-        { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * }
+        { "\href{https://doi.org/" doi * "}{" * swap$ * "}" * }
       if$
     }
   if$
@@ -1484,7 +1747,7 @@
     'skip$
     { media empty$
         'skip$
-        { " " * bbl.media enclose.square.brackets * }
+        { " " * bbl.media bracketise * }
       if$
     }
   if$
@@ -1565,14 +1828,15 @@
 FUNCTION {article}
 {
   output.bibitem
-  author.before
-  format.title add.media "title" output.check
+  output.author.head
+  %new.sentence
+  title add.media "title" output.check
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
-  journal emphasize add.doi "journal" output.check % new in v.2
+  journal emphasize add.doi "journal" output.check % new in v1.2
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.volume output
   format.number output
@@ -1589,11 +1853,14 @@
 FUNCTION {book}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.sentence
   format.number.series output
   new.block
@@ -1600,7 +1867,7 @@
   format.edition output
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1618,15 +1885,18 @@
 FUNCTION {booklet}
 {
   output.bibitem
-  author.before
-  format.title add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
   howpublished output
   address.or.location output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1638,15 +1908,18 @@
 FUNCTION {inbook}
 {
   output.bibitem
-  author.before
-  format.btitle add.doi add.media "title" output.check
+  output.author.head
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  bookauthor.after
-  editor.organization.after
+  bookauthor.rest
+  editor.organization.rest
   new.block
   format.edition output
   new.block
@@ -1653,7 +1926,7 @@
   format.number.series output
   new.sentence
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   new.block
@@ -1671,18 +1944,21 @@
 FUNCTION {incollection}
 {
   output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.bvolume output
   format.number.series output
@@ -1699,15 +1975,22 @@
 FUNCTION {proceedings}
 {
   output.bibitem
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon                   % added in v.1.2k
+  titleaddon output           % added in v.1.2k
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
-  output.address.publisher
-  format.date "year" output.check
   new.block
+  format.pages.page output
+  %%%output.address.publisher  % 1.2k moved upper
+  new.block
   note output
   new.sentence
   output.eprint.url
@@ -1717,22 +2000,26 @@
 
 FUNCTION {inproceedings}
 { output.bibitem
-  author.before
+  output.author.head
   new.sentence
-  format.title add.doi add.media "title" output.check
+  new.sentence
+  title add.doi add.media "title" output.check
+  new.colon                % added in v.1.2k
+  titleaddon output        % added in v.1.2k
   new.slash
-  author.after
+  output.author.rest
   new.dblslash
   booktitle "booktitle" output.check
   new.slash
-  editor.organization.after
+  editor.organization.rest
   new.block
+  output.address.publisher    % 1.2k moved from below
+  new.block                   % added in v.1.2k
+  format.date "year/date" output.check
+  new.block
   format.bvolume output
   format.number.series output
   new.block
-  output.address.publisher
-  format.date "year" output.check
-  new.block
   format.pages.page output
   new.block
   note output
@@ -1752,10 +2039,12 @@
         }
       if$
     }
-    { format.authors output.nonnull }
+    { format.author output.nonnull }
   if$
   new.block
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   author empty$
     { organization empty$
     {
@@ -1772,7 +2061,7 @@
     }
   if$
   format.edition output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1785,6 +2074,8 @@
 {
   output.bibitem
   title add.media output.nonnull
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   format.type.number output
   add.blank
@@ -1792,9 +2083,9 @@
   new.colon
   ipc output
   new.slash
-  format.authors.after "author" output.check
+  format.author "author" output.check
   add.blank
-  authorcountry enclose.round.brackets output.nonnull
+  authorcountry paranthesify output.nonnull
   new.semicolon
   holder output.nonnull
   new.semicolon
@@ -1809,7 +2100,7 @@
   new.semicolon
   format.prioritydate output
   prioritynumber output
-  prioritycountry enclose.round.brackets output
+  prioritycountry paranthesify output
   new.block
   note output
   new.sentence
@@ -1822,13 +2113,15 @@
 
 FUNCTION {misc}
 { output.bibitem
-  format.authors output
+  %format.author output  % < v.1.2k
+  output.author.head    % v.1.2k
+  %new.sentence            % v.1.2k
   title howpublished new.sentence.checkb
-  format.title add.media output
+  title add.media output
   howpublished new.block.checka
   howpublished output
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note output
   new.sentence
@@ -1839,13 +2132,16 @@
 
 FUNCTION {unpublished}
 { output.bibitem
-  author.before
-  format.btitle "title" output.check
+  output.author.head
+  new.sentence
+  title "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.slash
-  author.after
-  editor.organization.after
+  output.author.rest
+  editor.organization.rest
   new.block
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   note "note" output.check
   new.sentence
@@ -1856,12 +2152,14 @@
 
 FUNCTION {online}
 { output.bibitem
-  format.authors output
+  format.author output
   title howpublished new.sentence.checkb
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   howpublished new.dblslash.checka
   howpublished output
-  editor.organization.after
+  editor.organization.rest
   new.sentence
   new.block
   output.address.publisher
@@ -1880,25 +2178,24 @@
 FUNCTION {electronic} {online}
 FUNCTION {thesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
-  %%type "type" output.check
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
-  %%number output % code of the speciality
   specialitycode.or.number output % code of the speciality, new in v.1.2i
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours from the head zone
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1908,13 +2205,14 @@
   format.annote output
   fin.entry
 }
-
 %%  format.techrep.type.number output.nonnull
 %%  format.url output
 FUNCTION {report}
 {
   output.bibitem
-  format.title add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
+  new.colon          % added in v.1.2k
+  titleaddon output  % added in v.1.2k
   new.colon
   type "type" output.check
   new.colon
@@ -1923,14 +2221,14 @@
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.semicolon
-  format.chief.after output % from editor field
+  format.chief.rest output % from editor field
   new.semicolon
-  format.executor.after output % from author field
+  format.executor.rest output % from author field
   new.block
   address.or.location output
   new.colon
   organization output
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block                % v.2
   format.pages.page output % v.2
   new.sentence % или new.block ?
@@ -1943,9 +2241,9 @@
 
 FUNCTION {phdthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.phdthesis format.thesis.type output.nonnull
   new.colon
@@ -1954,13 +2252,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -1970,12 +2269,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {mastersthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.doi add.media "title" output.check
+  title add.doi add.media "title" output.check
   new.colon
   bbl.mathesis format.thesis.type output.nonnull
   new.colon
@@ -1984,13 +2282,14 @@
   new.colon
   titleaddon output % date of defence and approvement; new in v.1.2i
   new.slash
-  format.authors.after output
+  %%%format.author.rest output %% dupplicates athours
+  output.author.rest            %% prints if num.names$ > 3 or > 1
   new.semicolon
   %institution "institution" output.check
   institution.or.school "institution/school" output.check
   new.block
   output.address.publisher
-  format.date "year" output.check
+  format.date "year/date" output.check
   new.block
   format.pages.page output
   new.block
@@ -2000,12 +2299,11 @@
   format.annote output
   fin.entry
 }
-
 FUNCTION {docthesis}
 { output.bibitem
-  format.authors "author" output.check
+  format.author "author" output.check
   new.sentence
-  format.btitle add.do