From fee6f23b63a6d10923ad26bdc2e332147651ad75 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 28 Oct 2023 20:10:02 +0000 Subject: francais-bst (28oct23) git-svn-id: svn://tug.org/texlive/trunk@68686 c570f23f-e606-0410-a88d-b1316a301751 --- .../bibtex/bst/francais-bst/francais.bst | 172 +- .../bibtex/bst/francais-bst/francaissc.bst | 184 +- Master/texmf-dist/doc/bibtex/francais-bst/README | 109 - .../texmf-dist/doc/bibtex/francais-bst/README.md | 174 + .../doc/bibtex/francais-bst/francais-bst.pdf | Bin 0 -> 43186 bytes .../source/bibtex/francais-bst/francais-bst.ins | 30 + .../source/bibtex/francais-bst/francais-bst.mbs | 8214 ++++++++++++++++++++ .../source/bibtex/francais-bst/francais.dbj | 580 ++ .../source/bibtex/francais-bst/francaisbst.dbj | 31 + .../source/bibtex/francais-bst/francaissc.dbj | 580 ++ .../tex/latex/francais-bst/francaisbst.tex | 56 +- 11 files changed, 9807 insertions(+), 323 deletions(-) delete mode 100644 Master/texmf-dist/doc/bibtex/francais-bst/README create mode 100644 Master/texmf-dist/doc/bibtex/francais-bst/README.md create mode 100644 Master/texmf-dist/doc/bibtex/francais-bst/francais-bst.pdf create mode 100644 Master/texmf-dist/source/bibtex/francais-bst/francais-bst.ins create mode 100644 Master/texmf-dist/source/bibtex/francais-bst/francais-bst.mbs create mode 100644 Master/texmf-dist/source/bibtex/francais-bst/francais.dbj create mode 100644 Master/texmf-dist/source/bibtex/francais-bst/francaisbst.dbj create mode 100644 Master/texmf-dist/source/bibtex/francais-bst/francaissc.dbj (limited to 'Master') diff --git a/Master/texmf-dist/bibtex/bst/francais-bst/francais.bst b/Master/texmf-dist/bibtex/bst/francais-bst/francais.bst index d6451e76c42..0f2344896cd 100644 --- a/Master/texmf-dist/bibtex/bst/francais-bst/francais.bst +++ b/Master/texmf-dist/bibtex/bst/francais-bst/francais.bst @@ -4,35 +4,31 @@ %% %% The original source files were: %% -%% merlin.mbs (with options: `babel,ay,nat,lang,vonx,nm-rev1,jnrlst,blkyear,dt-beg,yr-per,note-yr,tit-qq,qt-g,qx,vnum-nr,volp-com,pgsep-s,jwdpg,pp-last,jwdvol,num-xser,numser,ser-vol,ser-ed,pg-bk,pre-edn,isbn,issn,agu-doi,doi,edby,blk-com,blknt,pp,ed,abr,ord,and-xcom,etal-xc,url,url-nt,nfss,') +%% francais-bst.mbs (with options: `babel,ay,nat,lang,vonx,nm-rev1,jnrlst,keyxyr,blkyear,dt-beg,yr-per,note-yr,tit-qq,qt-g,qx,trtit-b,vnum-nr,volp-com,pgsep-s,jwdpg,jwdvol,num-xser,numser,ser-vol,ser-ed,pg-bk,pre-pub,pre-edn,isbn,url-doi,edparxc,edby,blk-com,blknt,pp,ed,abr,ord,and-xcom,etal-xc,url,url-blk,nfss,') %% -%% >> Style bibliographique compatible avec natbib permettant de composer -%% >> des bibliographies en francais conformes aux regles de typographie -%% >> enoncees dans -%% >> -%% >> Malo, M. "Guide de la communication ecrite", Quebec Amerique, 1996. -%% >> ISBN 978-2-8903-7875-9. -%% >> -%% >> Style cree et maintenu par Vincent Goulet -%% >> . -%% >> -%% >> Version 1.1 2013-05-12 +%% Copyright (C) 2012-2023 Vincent Goulet %% -%% Copyright 1994-2011 Patrick W Daly - % =============================================================== - % IMPORTANT NOTICE: - % This bibliographic style (bst) file has been generated from one or - % more master bibliographic style (mbs) files, listed above. - % - % This generated file can be redistributed and/or modified under the terms - % of the LaTeX Project Public License Distributed from CTAN - % archives in directory macros/latex/base/lppl.txt; either - % version 1 of the License, or any later version. - % =============================================================== +%% This file may be distributed and/or modified under the conditions +%% of the LaTeX Project Public License, either version 1.3c of this +%% license or (at your option) any later version. The latest version +%% of this license is in: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Vincent Goulet +%% . +%% +%% This work consists of the master bibliographic style file +%% francais-bst.mbs; the driver files francais.dbj and francaissc.dbj; +%% the derived files francais.bst, francaissc.bst, francaisbst.tex. +%% + % ------------------------------------------------------------------- % Name and version information of the main mbs file: - % \ProvidesFile{merlin.mbs}[2011/11/18 4.33 (PWD, AO, DPC)] + % \ProvidesFile{francais-bst.mbs}[2023/10/28 v2.0 (VG, PWD, AO, DPC)] % For use with BibTeX version 0.99a or later - %------------------------------------------------------------------- + % ------------------------------------------------------------------- % This bibliography style file requires a file named francaisbst.tex % containing the definitions of word commands like \bbleditor, etc. % This is an author-year citation style bibliography. As such, it is @@ -60,7 +56,7 @@ % \citeauthor{key} ==>> Jones et al. % \citeauthor*{key} ==>> Jones, Baker, and Smith % \citeyear{key} ==>> 1990 - %--------------------------------------------------------------------- + % ------------------------------------------------------------------- ENTRY { address @@ -74,7 +70,6 @@ ENTRY howpublished institution isbn - issn journal key language @@ -422,6 +417,23 @@ FUNCTION {bibinfo.warn} } if$ } +FUNCTION {format.url} +{ + doi empty$ + { + url + duplicate$ empty$ + { pop$ "" } + { "\urlprefix\url{" swap$ * "}" * } + if$ + } + { + doi + "\doiprefix\urldoi{" swap$ * "}" * + } + if$ +} + INTEGERS { nameptr namesleft numnames } @@ -534,9 +546,9 @@ FUNCTION {get.bbl.editor} FUNCTION {format.editors} { editor "editor" format.names duplicate$ empty$ 'skip$ { - "," * " " * get.bbl.editor + "(" swap$ * ")" * * } if$ @@ -556,23 +568,6 @@ FUNCTION {format.isbn} if$ } -FUNCTION {format.issn} -{ issn "issn" bibinfo.check - duplicate$ empty$ 'skip$ - { - "ISSN " swap$ * - } - if$ -} - -FUNCTION {format.doi} -{ doi empty$ - { "" } - { - "\doi{" doi * "}" * - } - if$ -} FUNCTION {select.language} { duplicate$ empty$ 'pop$ @@ -586,10 +581,6 @@ FUNCTION {select.language} FUNCTION {format.note} { - url empty$ - 'skip$ - { "\urlprefix\url{" url * "}" * output } - if$ note empty$ { "" } { note #1 #1 substring$ @@ -1010,11 +1001,15 @@ FUNCTION {format.vol.num.pages} ", " bbl.nr * number tie.or.space.prefix pop$ * swap$ * } if$ * + eid empty$ + { format.journal.pages } + { format.journal.eid } + if$ } FUNCTION {format.chapter.pages} { chapter empty$ - { "" } + 'format.pages { type empty$ { bbl.chapter } { type "l" change.case$ @@ -1024,6 +1019,10 @@ FUNCTION {format.chapter.pages} chapter tie.or.space.prefix "chapter" bibinfo.check * * + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ } if$ } @@ -1135,16 +1134,12 @@ FUNCTION {article} emphasize "journal" output.check format.vol.num.pages output - format.doi output } { format.article.crossref output.nonnull + format.pages output } if$ - eid empty$ - { format.journal.pages } - { format.journal.eid } - if$ - format.issn output + format.url output new.sentence format.note output fin.entry @@ -1154,6 +1149,7 @@ FUNCTION {book} author empty$ { format.editors "author and editor" output.check editor format.key output + add.blank } { format.authors output.nonnull crossref missing$ @@ -1177,7 +1173,7 @@ FUNCTION {book} if$ format.isbn output format.book.pages output - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1194,7 +1190,7 @@ FUNCTION {booklet} address "address" bibinfo.check output format.isbn output format.book.pages output - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1218,11 +1214,11 @@ FUNCTION {inbook} format.btitle "title" output.check crossref missing$ { + format.number.series output + format.publisher.address output format.bvolume output format.chapter.pages "chapter and pages" output.check format.edition output - format.number.series output - format.publisher.address output } { format.chapter.pages "chapter and pages" output.check @@ -1233,8 +1229,7 @@ FUNCTION {inbook} { format.isbn output } 'skip$ if$ - format.pages "pages" output.check - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1250,18 +1245,17 @@ FUNCTION {incollection} end.quote.title crossref missing$ { format.in.ed.booktitle "booktitle" output.check - format.edition output - format.chapter.pages output format.number.series output format.publisher.address output + format.edition output + format.chapter.pages output format.isbn output } { format.incoll.inproc.crossref output.nonnull format.chapter.pages output } if$ - format.pages "pages" output.check - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1283,14 +1277,15 @@ FUNCTION {inproceedings} format.publisher.address output } if$ + format.bvolume output + format.pages output format.isbn output - format.issn output } { format.incoll.inproc.crossref output.nonnull + format.pages output } if$ - format.pages "pages" output.check - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1306,7 +1301,7 @@ FUNCTION {manual} organization "organization" bibinfo.check output address "address" bibinfo.check output format.edition output - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1323,7 +1318,7 @@ FUNCTION {mastersthesis} bbl.mthesis format.thesis.type output.nonnull school "school" bibinfo.warn output address "address" bibinfo.check output - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1338,7 +1333,7 @@ FUNCTION {misc} format.title output end.quote.title howpublished "howpublished" bibinfo.check output - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1354,7 +1349,7 @@ FUNCTION {phdthesis} bbl.phdthesis format.thesis.type output.nonnull school "school" bibinfo.warn output address "address" bibinfo.check output - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1376,8 +1371,7 @@ FUNCTION {proceedings} } if$ format.isbn output - format.issn output - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1389,13 +1383,12 @@ FUNCTION {techreport} author format.key output format.date "year" output.check date.block - format.title + format.btitle "title" output.check - end.quote.title format.tr.number output.nonnull institution "institution" bibinfo.warn output address "address" bibinfo.check output - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1409,7 +1402,7 @@ FUNCTION {unpublished} date.block format.title "title" output.check end.quote.title - format.doi output + format.url output new.sentence format.note "note" output.check fin.entry @@ -1511,6 +1504,7 @@ FUNCTION {calc.label} "(" * year duplicate$ empty$ + short.list key field.or.null = or { pop$ "" } 'skip$ if$ @@ -1698,27 +1692,21 @@ FUNCTION {begin.bib} if$ "\begin{thebibliography}{" number.label int.to.str$ * "}" * write$ newline$ - "\ProvideTextCommand{\guillemotleft}{OT1}{%" - write$ newline$ - " \leavevmode\raise .27ex\hbox{$\scriptscriptstyle\ll$}}" - write$ newline$ - "\ProvideTextCommand{\guillemotright}{OT1}{%" - write$ newline$ - " \leavevmode\raise .27ex\hbox{$\scriptscriptstyle\gg$}}" - write$ newline$ - "\newcommand{\enquote}[1]{\guillemotleft#1\guillemotright}" + "\let\enquote\frquote" write$ newline$ "\providecommand{\natexlab}[1]{#1}" write$ newline$ "\providecommand{\url}[1]{\texttt{#1}}" write$ newline$ - "\providecommand{\urlprefix}{URL }" + "\providecommand{\urlprefix}{}" + write$ newline$ + "\providecommand{\doiprefix}{doi: }" write$ newline$ - "\expandafter\ifx\csname urlstyle\endcsname\relax" + "\expandafter\ifx\csname href\endcsname\relax" write$ newline$ - " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else" + " \providecommand{\urldoi}[1]{#1}\else" write$ newline$ - " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi" + " \providecommand{\urldoi}[1]{\href{https://doi.org/#1}{#1}}\fi" write$ newline$ "\providecommand{\selectlanguage}[1]{\relax}" write$ newline$ diff --git a/Master/texmf-dist/bibtex/bst/francais-bst/francaissc.bst b/Master/texmf-dist/bibtex/bst/francais-bst/francaissc.bst index 3a024a53654..904788a49a5 100644 --- a/Master/texmf-dist/bibtex/bst/francais-bst/francaissc.bst +++ b/Master/texmf-dist/bibtex/bst/francais-bst/francaissc.bst @@ -4,39 +4,31 @@ %% %% The original source files were: %% -%% merlin.mbs (with options: `babel,ay,nat,lang,vonx,nm-rev1,jnrlst,nmft,nmft-sc,nmand-rm,lab,lab-sc,and-rm,blkyear,dt-beg,yr-per,note-yr,tit-qq,qt-g,qx,vnum-nr,volp-com,pgsep-s,jwdpg,pp-last,jwdvol,num-xser,numser,ser-vol,ser-ed,pg-bk,pre-edn,isbn,issn,agu-doi,doi,edby,blk-com,blknt,pp,ed,abr,ord,and-xcom,etal-xc,etal-rm,url,url-nt,nfss,') +%% francais-bst.mbs (with options: `babel,ay,nat,lang,vonx,nm-rev1,jnrlst,nmft,nmft-sc,nmand-rm,lab,lab-sc,and-rm,keyxyr,blkyear,dt-beg,yr-per,note-yr,tit-qq,qt-g,qx,trtit-b,vnum-nr,volp-com,pgsep-s,jwdpg,jwdvol,num-xser,numser,ser-vol,ser-ed,pg-bk,pre-pub,pre-edn,isbn,url-doi,edparxc,edby,blk-com,blknt,pp,ed,abr,ord,and-xcom,etal-xc,url,url-blk,nfss,') %% -%% >> Style bibliographique compatible avec natbib permettant de composer -%% >> des bibliographies en francais conformes aux regles de typographie -%% >> enoncees dans -%% >> -%% >> Malo, M. "Guide de la communication ecrite", Quebec Amerique, 1996. -%% >> ISBN 978-2-8903-7875-9. -%% >> -%% >> Version avec les noms d'auteurs en petites capitales dans la -%% >> bibliographie *et* dans les citations. La conjonction "et" et le -%% >> marqueur "et collab." sont en romain normal. -%% >> -%% >> Style cree et maintenu par Vincent Goulet -%% >> . -%% >> -%% >> Version 1.1 2013-05-12 +%% Copyright (C) 2012-2023 Vincent Goulet %% -%% Copyright 1994-2011 Patrick W Daly - % =============================================================== - % IMPORTANT NOTICE: - % This bibliographic style (bst) file has been generated from one or - % more master bibliographic style (mbs) files, listed above. - % - % This generated file can be redistributed and/or modified under the terms - % of the LaTeX Project Public License Distributed from CTAN - % archives in directory macros/latex/base/lppl.txt; either - % version 1 of the License, or any later version. - % =============================================================== +%% This file may be distributed and/or modified under the conditions +%% of the LaTeX Project Public License, either version 1.3c of this +%% license or (at your option) any later version. The latest version +%% of this license is in: +%% +%% https://www.latex-project.org/lppl.txt +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Vincent Goulet +%% . +%% +%% This work consists of the master bibliographic style file +%% francais-bst.mbs; the driver files francais.dbj and francaissc.dbj; +%% the derived files francais.bst, francaissc.bst, francaisbst.tex. +%% + % ------------------------------------------------------------------- % Name and version information of the main mbs file: - % \ProvidesFile{merlin.mbs}[2011/11/18 4.33 (PWD, AO, DPC)] + % \ProvidesFile{francais-bst.mbs}[2023/10/28 v2.0 (VG, PWD, AO, DPC)] % For use with BibTeX version 0.99a or later - %------------------------------------------------------------------- + % ------------------------------------------------------------------- % This bibliography style file requires a file named francaisbst.tex % containing the definitions of word commands like \bbleditor, etc. % This is an author-year citation style bibliography. As such, it is @@ -64,7 +56,7 @@ % \citeauthor{key} ==>> Jones et al. % \citeauthor*{key} ==>> Jones, Baker, and Smith % \citeyear{key} ==>> 1990 - %--------------------------------------------------------------------- + % ------------------------------------------------------------------- ENTRY { address @@ -78,7 +70,6 @@ ENTRY howpublished institution isbn - issn journal key language @@ -438,6 +429,23 @@ FUNCTION {bibinfo.warn} } if$ } +FUNCTION {format.url} +{ + doi empty$ + { + url + duplicate$ empty$ + { pop$ "" } + { "\urlprefix\url{" swap$ * "}" * } + if$ + } + { + doi + "\doiprefix\urldoi{" swap$ * "}" * + } + if$ +} + INTEGERS { nameptr namesleft numnames } @@ -472,7 +480,7 @@ FUNCTION {format.names} if$ t "others" = { - " " * bbl.etal * + " " * bbl.etal bib.name.font * } { bbl.and @@ -551,9 +559,9 @@ FUNCTION {get.bbl.editor} FUNCTION {format.editors} { editor "editor" format.names duplicate$ empty$ 'skip$ { - "," * " " * get.bbl.editor + "(" swap$ * ")" * * } if$ @@ -573,23 +581,6 @@ FUNCTION {format.isbn} if$ } -FUNCTION {format.issn} -{ issn "issn" bibinfo.check - duplicate$ empty$ 'skip$ - { - "ISSN " swap$ * - } - if$ -} - -FUNCTION {format.doi} -{ doi empty$ - { "" } - { - "\doi{" doi * "}" * - } - if$ -} FUNCTION {select.language} { duplicate$ empty$ 'pop$ @@ -603,10 +594,6 @@ FUNCTION {select.language} FUNCTION {format.note} { - url empty$ - 'skip$ - { "\urlprefix\url{" url * "}" * output } - if$ note empty$ { "" } { note #1 #1 substring$ @@ -666,7 +653,7 @@ FUNCTION {format.full.names} if$ t "others" = { - " " * bbl.etal * + " " * bbl.etal cite.name.font * } { bbl.and @@ -1028,11 +1015,15 @@ FUNCTION {format.vol.num.pages} ", " bbl.nr * number tie.or.space.prefix pop$ * swap$ * } if$ * + eid empty$ + { format.journal.pages } + { format.journal.eid } + if$ } FUNCTION {format.chapter.pages} { chapter empty$ - { "" } + 'format.pages { type empty$ { bbl.chapter } { type "l" change.case$ @@ -1042,6 +1033,10 @@ FUNCTION {format.chapter.pages} chapter tie.or.space.prefix "chapter" bibinfo.check * * + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ } if$ } @@ -1153,16 +1148,12 @@ FUNCTION {article} emphasize "journal" output.check format.vol.num.pages output - format.doi output } { format.article.crossref output.nonnull + format.pages output } if$ - eid empty$ - { format.journal.pages } - { format.journal.eid } - if$ - format.issn output + format.url output new.sentence format.note output fin.entry @@ -1172,6 +1163,7 @@ FUNCTION {book} author empty$ { format.editors "author and editor" output.check editor format.key output + add.blank } { format.authors output.nonnull crossref missing$ @@ -1195,7 +1187,7 @@ FUNCTION {book} if$ format.isbn output format.book.pages output - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1212,7 +1204,7 @@ FUNCTION {booklet} address "address" bibinfo.check output format.isbn output format.book.pages output - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1236,11 +1228,11 @@ FUNCTION {inbook} format.btitle "title" output.check crossref missing$ { + format.number.series output + format.publisher.address output format.bvolume output format.chapter.pages "chapter and pages" output.check format.edition output - format.number.series output - format.publisher.address output } { format.chapter.pages "chapter and pages" output.check @@ -1251,8 +1243,7 @@ FUNCTION {inbook} { format.isbn output } 'skip$ if$ - format.pages "pages" output.check - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1268,18 +1259,17 @@ FUNCTION {incollection} end.quote.title crossref missing$ { format.in.ed.booktitle "booktitle" output.check - format.edition output - format.chapter.pages output format.number.series output format.publisher.address output + format.edition output + format.chapter.pages output format.isbn output } { format.incoll.inproc.crossref output.nonnull format.chapter.pages output } if$ - format.pages "pages" output.check - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1301,14 +1291,15 @@ FUNCTION {inproceedings} format.publisher.address output } if$ + format.bvolume output + format.pages output format.isbn output - format.issn output } { format.incoll.inproc.crossref output.nonnull + format.pages output } if$ - format.pages "pages" output.check - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1324,7 +1315,7 @@ FUNCTION {manual} organization "organization" bibinfo.check output address "address" bibinfo.check output format.edition output - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1341,7 +1332,7 @@ FUNCTION {mastersthesis} bbl.mthesis format.thesis.type output.nonnull school "school" bibinfo.warn output address "address" bibinfo.check output - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1356,7 +1347,7 @@ FUNCTION {misc} format.title output end.quote.title howpublished "howpublished" bibinfo.check output - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1372,7 +1363,7 @@ FUNCTION {phdthesis} bbl.phdthesis format.thesis.type output.nonnull school "school" bibinfo.warn output address "address" bibinfo.check output - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1394,8 +1385,7 @@ FUNCTION {proceedings} } if$ format.isbn output - format.issn output - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1407,13 +1397,12 @@ FUNCTION {techreport} author format.key output format.date "year" output.check date.block - format.title + format.btitle "title" output.check - end.quote.title format.tr.number output.nonnull institution "institution" bibinfo.warn output address "address" bibinfo.check output - format.doi output + format.url output new.sentence format.note output fin.entry @@ -1427,7 +1416,7 @@ FUNCTION {unpublished} date.block format.title "title" output.check end.quote.title - format.doi output + format.url output new.sentence format.note "note" output.check fin.entry @@ -1456,13 +1445,13 @@ FUNCTION {format.lab.names} s num.names$ duplicate$ #2 > { pop$ - " " * bbl.etal * + " " * bbl.etal cite.name.font * } { #2 < 'skip$ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = { - " " * bbl.etal * + " " * bbl.etal cite.name.font * } { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ cite.name.font @@ -1531,6 +1520,7 @@ FUNCTION {calc.label} "(" * year duplicate$ empty$ + short.list key field.or.null = or { pop$ "" } 'skip$ if$ @@ -1718,27 +1708,21 @@ FUNCTION {begin.bib} if$ "\begin{thebibliography}{" number.label int.to.str$ * "}" * write$ newline$ - "\ProvideTextCommand{\guillemotleft}{OT1}{%" - write$ newline$ - " \leavevmode\raise .27ex\hbox{$\scriptscriptstyle\ll$}}" - write$ newline$ - "\ProvideTextCommand{\guillemotright}{OT1}{%" - write$ newline$ - " \leavevmode\raise .27ex\hbox{$\scriptscriptstyle\gg$}}" - write$ newline$ - "\newcommand{\enquote}[1]{\guillemotleft#1\guillemotright}" + "\let\enquote\frquote" write$ newline$ "\providecommand{\natexlab}[1]{#1}" write$ newline$ "\providecommand{\url}[1]{\texttt{#1}}" write$ newline$ - "\providecommand{\urlprefix}{URL }" + "\providecommand{\urlprefix}{}" + write$ newline$ + "\providecommand{\doiprefix}{doi: }" write$ newline$ - "\expandafter\ifx\csname urlstyle\endcsname\relax" + "\expandafter\ifx\csname href\endcsname\relax" write$ newline$ - " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else" + " \providecommand{\urldoi}[1]{#1}\else" write$ newline$ - " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi" + " \providecommand{\urldoi}[1]{\href{https://doi.org/#1}{#1}}\fi" write$ newline$ "\providecommand{\selectlanguage}[1]{\relax}" write$ newline$ diff --git a/Master/texmf-dist/doc/bibtex/francais-bst/README b/Master/texmf-dist/doc/bibtex/francais-bst/README deleted file mode 100644 index 587b640f699..00000000000 --- a/Master/texmf-dist/doc/bibtex/francais-bst/README +++ /dev/null @@ -1,109 +0,0 @@ -This package contains natbib compatible bibliography style files to -typeset bibliographies using French typographic standards. The styles -were created using makebst from package custom-bib. - -LICENCE - -LaTeX Project Public License, version 1.3c or (at your option) any -later version. - -*** The rest of this file is in French for the target audience *** - -DESCRIPTION - -francais.bst et francaissc.bst sont des styles bibliographiques -compatibles avec le paquetage natbib permettant de composer des -bibliographies en français conformes aux règles de présentation -proposées dans: - - Malo, M. "Guide de la communication écrite", Québec Amérique. 1996. - ISBN 978-2-8903-7875-9. - -Avec francais.bst, les noms d'auteur dans la bibliographie *et* dans -les citations apparaissent en police standard. C'est la pratique -usuelle au Québec. - -Avec francaissc.bst, les noms d'auteur dans la bibliographie *et* dans -les citations apparaissent plutôt en petites capitales. Cela semble -être la pratique usuelle en France et ailleurs dans la Francophonie. - -CONTENU DE L'ARCHIVE - -- francais.bst: style français avec noms en police standard; -- francaissc.bst: style français avec noms en petites capitales; -- francaisbst.tex: définitions françaises de mots clés; -- README: le présent fichier. - -INSTALLATION - -On peut simplement déposer les fichiers francais.bst, francaissc.bst -et francaisbst.tex dans son dossier de travail. - -Pour une installation plus complète et permanente, il est préférable -de placer les fichiers dans son arborescence TeX personnelle. Les -emplacements finaux des fichiers devraient être: - - $TEXMFHOME/bibtex/bst/francais.bst - $TEXMFHOME/bibtex/bst/francaissc.bst - $TEXMFHOME/tex/latex/francais-bst/francaisbst.tex - -UTILISATION - -Un document faisant appel à ces styles sera normalement en français, -donc le paquetage babel sera chargé. Les styles requièrent le -paquetage natbib et, pour bien fonctionner, celui-ci devrait être -chargé avant babel. On aura donc dans le préambule de son document: - - \usepackage{natbib} - \usepackage[francais]{babel} - -De plus, pour que la césure de mots fonctionne adéquatement avec les -mots comportant des lettres accentuées, il faut utiliser les polices -T1. Elles sont chargées avec: - - \usepackage[T1]{fontenc} - -Enfin, on spécifie le style de bibliographie avec - - \bibliographystyle{francais} - -ou - - \bibliographystyle{francaissc} - -GUILLEMETS FRANÇAIS - -La bibliographie a recours aux guillemets français « et » pour les -titres d'articles, entre autres. Les guillemets devraient apparaître -correctement dès lors que le document utilise les polices T1 (voir -ci-dessus). Si ce n'est pas le cas, essayer de charger les paquetages -ae et aeguill: - - \usepackage{ae,aeguill} - -PERSONNALISATION - -Si les traductions françaises de certains mots clés ne vous -conviennent pas, simplement modifier le fichier francaisbst.tex. - - - -RÉVISIONS - -* Version 1.1 - 2013-05-12 - - Modifications à francaissc.bst pour que la conjonction "et" et le - marqueur "et collab." soient en romain plutôt qu'en petites - capitales. Merci à François Legendre pour le - tuyau. - - Introduction d'un numéro de version, puisqu'il semble que ce sera - utile. - -* Version 1.0a - 2013-05-03 - - Corrections à la doc du fichier README - -* Version 1.0 - Octobre 2012 - - Version initiale diff --git a/Master/texmf-dist/doc/bibtex/francais-bst/README.md b/Master/texmf-dist/doc/bibtex/francais-bst/README.md new file mode 100644 index 00000000000..9efba0e9903 --- /dev/null +++ b/Master/texmf-dist/doc/bibtex/francais-bst/README.md @@ -0,0 +1,174 @@ +# Bibliographic styles `francais` and `francaissc` + +The package **francais-bst** provides the bibliography styles +`francais` and `francaissc` to typeset author-year bibliographies +using the French typographic standards outlined in "Guide de la +communication écrite au cégep, à l'université et en entreprise", by +Marie Malo (Québec Amérique, 1996). + +The styles were originally generated using the program `makebst` by +Patrick W. Daly. The master bibliographic style file is heavily based +on `merlin.mbs` from the package **custom-bib**. + +## Licence + +LaTeX Project Public License, version 1.3c or (at your option) any +later version. + +## Version + +2.0 (2023-10-28) + +## Author + +Vincent Goulet + +## Source code repository + +https://gitlab.com/vigou3/francais-bst + +## Contents + +- `francais-bst.ins`: installation script; see below; +- `francais-bst.mbs`: master bibliographic style and documentation; +- `francais.dbj`, `francaissc.dbj`, `francaisbst.dbj`: driver files + for the bibliographic styles and the language definition file; +- `francais-bst.pdf`: documentation of the styles; +- `README.md`: this file. + +## Installation + +The package **francais-bst** is distributed through the +Comprehensive TeX Archive Network (CTAN) and it is part of the +standard TeX distributions. Therefore, we strongly recommend using +the package manager of your distribution to install or update the +package. + +TeX experts may generate the bibliographic styles and the language +definition file by running the file `francais-bst.ins` through +LaTeX: + + latex francais-bst.ins + +The compilation will create the bibliographic styles (`francais.bst`, +`francaissc.bst`) and the language definition file +(`francaisbst.tex`). These files should ideally be moved into a local +or personal TeX tree as follows: + +``` +$TEXMFHOME/bibtex/bst/francais.bst +$TEXMFHOME/bibtex/bst/francaissc.bst +$TEXMFHOME/tex/latex/francais-bst/francaisbst.tex +``` + +## Documentation + +The file `francais-bst.pdf` contains the documentation of the styles +and the master bibliographic style. You may recreate these documents +from the file `francais-bst.mbs` as follows: + + xelatex francais-bst.mbs + makeindex -s gglo.ist -o francais-bst.gls francais-bst.glo + xelatex francais-bst.mbs + xelatex francais-bst.mbs + +## Version history + +The version history of the class appears in `francais-bst.pdf`. + +## Comments or suggestions + +The Gitlab [project repository](https://gitlab.com/vigou3/francais-bst) +is the best place to report bugs or to propose improvements to the +project. + +====================================================================== + +# Styles bibliographiques `francais` et `francaissc` + +Le paquetage **francais-bst** contient les styles bibliographiques +`francais` et `francaissc` pour composer des bibliographies en +français conformes aux règles de présentation de la méthode +auteur-date proposées dans l'ouvrage de référence de Marie Malo, +«Guide de la communication écrite au cégep, à l'université et en +entreprise» (Québec Amérique, 1996). + +Les styles ont été développé à l'origine à l'aide du programme +`makebst` de Patrick W. Daly. Le fichier maitre de styles +bibliographiques dérive étroitement du fichier `merlin.mbs` du +paquetage **custom-bib**. + +## Licence + +LaTeX Project Public License, version 1.3c ou (à votre choix) toute +version ultérieure. + +## Version + +2.0 (2023-10-28) + +## Auteur + +Vincent Goulet + +## Dépôt du code source + +https://gitlab.com/vigou3/francais-bst + +## Contenu du paquetage + +- `francais-bst.ins`: procédure d'installation; voir ci-dessous; +- `francais-bst.mbs`: fichier maitre de styles bibliographiques et + documentation; +- `francais.dbj`, `francaissc.dbj`, `francaisbst.dbj`: scripts de + génération des styles bibliographiques et du fichier de localisation + français; +- `francais-bst.pdf`: documentation des styles; +- `README.md`: le présent fichier. + +## Installation + +Le paquetage **francais-bst** est distribué via le réseau de sites +Comprehensive TeX Archive Network (CTAN) et il fait partie des +distributions TeX standards. Par conséquent, nous recommandons +fortement d'installer ou de mettre à jour le paquetage à l'aide du +gestionnaire de paquetages de votre distribution. + +Les experts TeX peuvent générer les styles bibliographiques et le +fichier de localisation français en compilant le fichier +`francais-bst.ins` avec LaTeX: + + latex francais-bst.ins + +La compilation créera les styles de bibliographie (`francais.bst`, +`francaissc.bst`) et le fichier de localisation français +(`francaisbst.tex`). Idéalement, ces fichiers seront ensuite placés +une arborescence TeX locale ou personnelle comme ceci: + +``` +$TEXMFHOME/bibtex/bst/francais.bst +$TEXMFHOME/bibtex/bst/francaissc.bst +$TEXMFHOME/tex/latex/francais-bst/francaisbst.tex +``` + +## Documentation + +Le fichier `francais-bst.pdf` contient la documentation des styles et +du fichier maitre de styles bibliographiques. Utilisez les commandes +suivantes pour recréer le document à partir du fichier +`francais-bst.mbs`: + + xelatex francais-bst.mbs + makeindex -s gglo.ist -o francais-bst.gls francais-bst.glo + xelatex francais-bst.mbs + xelatex francais-bst.mbs + +## Historique des versions + +L'historique des versions se trouve dans `francais-bst.pdf`. + +## Commentaires et suggestions + +Le [dépôt du projet](https://gitlab.com/vigou3/francais-bst) dans +GitLab demeure le meilleur endroit pour rapporter des bogues ou pour +proposer des améliorations au projet. diff --git a/Master/texmf-dist/doc/bibtex/francais-bst/francais-bst.pdf b/Master/texmf-dist/doc/bibtex/francais-bst/francais-bst.pdf new file mode 100644 index 00000000000..bd71ee574d6 Binary files /dev/null and b/Master/texmf-dist/doc/bibtex/francais-bst/francais-bst.pdf differ diff --git a/Master/texmf-dist/source/bibtex/francais-bst/francais-bst.ins b/Master/texmf-dist/source/bibtex/francais-bst/francais-bst.ins new file mode 100644 index 00000000000..1c790a9eea9 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/francais-bst/francais-bst.ins @@ -0,0 +1,30 @@ +%% Master batch file to produce the bibliographic styles francais.bst +%% and francaissc.bst, and the language file francaisbst.tex from +%% francais-bst.mbs +%% +\input docstrip.tex + +\batchinput{francais.dbj} +\batchinput{francaissc.dbj} +\batchinput{francaisbst.dbj} + +\obeyspaces +\Msg{**************************************************************} +\Msg{* *} +\Msg{* The bibliographic styles francais and francaissc are now *} +\Msg{* ready to use! *} +\Msg{* *} +\Msg{* To produce the documentation of the styles, run the file *} +\Msg{* the file francais-bst.mbs through XeLaTeX. *} +\Msg{* *} +\Msg{* ========================================================== *} +\Msg{* *} +\Msg{* Les styles bibliographiques francais et francaissc sont *} +\Msg{* maintenant prêts à l'emploi! *} +\Msg{* *} +\Msg{* Pour produire la documentation des styles, compiler le *} +\Msg{* fichier francais-bst.mbs avec XeLaTeX. *} +\Msg{* *} +\Msg{**************************************************************} + +\endbatchfile diff --git a/Master/texmf-dist/source/bibtex/francais-bst/francais-bst.mbs b/Master/texmf-dist/source/bibtex/francais-bst/francais-bst.mbs new file mode 100644 index 00000000000..56a16074812 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/francais-bst/francais-bst.mbs @@ -0,0 +1,8214 @@ +% \iffalse meta-comment -*- mode: doctex -*- +% +% Master bibliography style for francais.bst and francaissc.bst +% +% Copyright (C) 2012-2023 Vincent Goulet +% +% This file may be distributed and/or modified under the conditions +% of the LaTeX Project Public License, either version 1.3c of this +% license or (at your option) any later version. The latest version +% of this license is in: +% +% https://www.latex-project.org/lppl.txt +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Vincent Goulet +% . +% +% This work derives from merlin.mbs, part of the custom-bib +% collection, a contribution to the LaTeX2e system. +% Copyright 1994-2011 Patrick W Daly +% Max-Planck-Institut f\"ur Sonnensystemforschung +% Max-Planck-Str. 2 +% D-37191 Katlenburg-Lindau +% Germany +% E-mail: daly@mps.mpg.de +% +%<*!tail> +% (The following notice appears in bst files generated from this file) + % ------------------------------------------------------------------- + % Name and version information of the main mbs file: +%\fi + % \ProvidesFile{francais-bst.mbs}[2023/10/28 v2.0 (VG, PWD, AO, DPC)] +%\iffalse +% +%<*a&!a> +% The following ensures that the driver part is not seen by makebst +% The driver part must not contain any \end other than \end{document} ! +\ifx\endoptions\undefined\let\tempx=\relax\else + \long\def\tempx#1\end#2{}\fi\tempx +% +%<*driver> +\NeedsTeXFormat{LaTeX2e}% +\documentclass[article,oneside,11pt,x11names,french]{memoir} + \usepackage{babel} + \usepackage{metalogo} + \usepackage{enumitem} + + %% Le chargement de doc.sty cause des conflits avec memoir. Il faut: + %% + %% - annuler la définition de l'environnement 'glossary' de memoir; + %% - remettre en place les définitions standards des + %% commandes pour l'index et le glossaire sur lesquelles se base + %% doc.sty. + \let\theglossary\relax % avoid conflict with doc.sty + \let\endtheglossary\relax % avoid conflict with doc.sty + \makeatletter + \def\makeindex{% + \newwrite\@indexfile + \immediate\openout\@indexfile=\jobname.idx + \def\index{\@bsphack\begingroup + \@sanitize + \@wrindex}\typeout + {Writing index file \jobname.idx}% + \let\makeindex\@empty + } + \@onlypreamble\makeindex + \def\@wrindex#1{% + \protected@write\@indexfile{}% + {\string\indexentry{#1}{\thepage}}% + \endgroup + \@esphack} + \def\index{\@bsphack\begingroup \@sanitize\@index} + \def\@index#1{\endgroup\@esphack} + \def\makeglossary{% + \newwrite\@glossaryfile + \immediate\openout\@glossaryfile=\jobname.glo + \def\glossary{\@bsphack\begingroup + \@sanitize + \@wrglossary}\typeout + {Writing glossary file \jobname.glo }% + \let\makeglossary\@empty + } + \@onlypreamble\makeglossary + \def\@wrglossary#1{% + \protected@write\@glossaryfile{}% + {\string\glossaryentry{#1}{\thepage}}% + \endgroup + \@esphack} + \def\glossary{\@bsphack\begingroup\@sanitize\@index} + \@twosidefalse\@mparswitchfalse % turn off twoside option + \makeatother + \usepackage{doc} + \def\changes#1#2#3{\glossary{#1>#3}} % simplification + \DisableCrossrefs + \CodelineNumbered + \RecordChanges + \OnlyDescription + \DontCheckModules + + %% Polices de caractères + \iftutex + \usepackage[babel=true]{microtype} + \usepackage{fontspec} + \usepackage{unicode-math} + \setmainfont{STIXTwoText} + [ + Extension = .otf, + UprightFont = *-Regular, + BoldFont = *-SemiBold, + ItalicFont = *-Italic, + BoldItalicFont = *-SemiBoldItalic, + Numbers = {Proportional,OldStyle}, + Scale = 1, + Ligatures = TeX + ] + \setsecheadstyle{\normalfont\Large\sffamily\bfseries\raggedright} + \setsubsecheadstyle{\normalfont\large\sffamily\bfseries\raggedright} + \setsubsubsecheadstyle{\normalfont\sffamily\bfseries\raggedright} + \else + \usepackage[babel=true]{microtype} + \usepackage[utf8]{inputenc} + \usepackage[T1]{fontenc} + \usepackage[stix2]{newtxmath} + \fi + \usepackage[book,medium,proportional,oldstyle,scale=0.92]{FiraSans} + \usepackage[medium,lining,scale=0.90]{FiraMono} + + %% Couleurs + \usepackage{xcolor} + \definecolor{link}{rgb}{0,0.4,0.6} % liens internes + \definecolor{url}{rgb}{0.6,0,0} % liens externes + \definecolor{citation}{rgb}{0,0.5,0} % citations + + %% Hyperliens + \AtEndPreamble{% + \usepackage{bookmark} % charge hyperref + \hypersetup{% + colorlinks = true, + urlcolor = {url}, + linkcolor = {link}, + citecolor = {citation}} + \bookmarksetup{% + open = true, + depth = 3, + numbered = true} + } + + %% Désactiver le niveau des chapitres de memoir + \let\chapter\relax + \counterwithout{section}{chapter} + + %% Aligner à gauche l'environnement enumerate + \setlist[enumerate]{leftmargin=*,align=left} + + %% Configurer du glossaire + \GlossaryPrologue{\section*{Historique des versions}% + \addcontentsline{toc}{section}{Historique des versions}} + \setcounter{GlossaryColumns}{2} + \setlength{\GlossaryMin}{5cm} + + %% Commandes sémantiques additionnelles + \let\class\textsf + \let\pkg\textbf + \makeatletter + \renewcommand\code{\bgroup\@makeother\_\@makeother\~\@makeother\$\code@} + \def\code@#1{{\normalfont\ttfamily\hyphenchar\font=-1 #1}\egroup} + \makeatother + \newcommand*\frbstname{francais} + \newcommand*\frscbstname{francaissc} + \newcommand*\frbst{\code{\frbstname}} + \newcommand*\frscbst{\code{\frscbstname}} + \newcommand*\btx{\textsc{Bib}\TeX} + \newcommand*\dtx{\textsf{docstrip}} + + %% Redéfinir \year pour utiliser l'information de \filedate plutôt + %% que la date de compilation + \def\parsedate#1/#2/#3\relax{\def\year{#1}} + + %% Convertir la date en format ISO + \def\isodate#1/#2/#3\relax{#1-#2-#3} + + \MakeShortVerb{\|} + +\begin{document} + \DocInput{francais-bst.mbs} +\end{document} +% +% end of meta-comment \fi +% \GetFileInfo{francais-bst.mbs} +% \expandafter\parsedate\filedate\relax +% +% \changes{1.0}{2012-10-18}{Version initiale.} +% \changes{1.0a}{2013-05-03}{Corrections à la documentation dans le +% fichier \texttt{README}.} +% \changes{1.1}{2013-05-12}{Modifications à \texttt{francaissc.bst} +% pour que la conjonction «et» et le marqueur «et collab.» soient en +% romain plutôt qu'en petites capitales. Merci à François Legendre +% \url{f.legendre@gmail.com} pour le tuyau.} +% \changes{1.1}{2013-05-12}{Introduction d'un numéro de version.} +% \changes{2.0}{2023-10-28}{Documentation améliorée en format PDF.} +% \changes{2.0}{2023-10-28}{Le titre d'un rapport technique est +% maintenant composé comme celui d'un livre, plutôt que comme celui +% d'un article.} +% \changes{2.0}{2023-10-28}{Les URL ne sont plus précédées de +% l'étiquette «URL».} +% \changes{2.0}{2023-10-28}{La présentation des identificateurs +% d'objets numériques (DOI) a été complètement révisée.} +% \changes{2.0}{2023-10-28}{Le numéro ISSN n'est plus affiché dans les +% notices bibliographiques (il demeure permis dans les bases de +% données).} +% \changes{2.0}{2023-10-28}{La disposition de certains éléments dans +% la notice bibliographique a été révisée.} +% +% \title{Styles bibliographiques {\frbst} et {\frscbst}} +% \author{Vincent Goulet \\ École d'actuariat, Université Laval} +% \date{Version {\fileversion} du {\expandafter\isodate\filedate\relax}} +% +% \maketitle +% +% \section{Introduction} +% +% Les styles bibliographiques {\frbst} et {\frscbst} permettent de +% composer des bibliographies en français conformes aux règles de +% présentation de la méthode auteur-date proposées dans l'ouvrage de +% référence de Marie Malo, \emph{Guide de la communication écrite au +% cégep, à l'université et en entreprise} (Québec Amérique, 1996). +% +% Les styles ont été développé à l'origine à l'aide du programme +% \code{makebst} de Patrick W.~Daly. Le fichier maitre de styles +% bibliographiques \code{\filename} dérive étroitement du fichier +% \code{merlin.mbs} du paquetage % +% \href{https://ctan.org/pkg/custom-bib}{\pkg{custom-bib}}. +% +% \section{Installation} +% \label{sec:installation} +% +% Les styles bibliographiques sont distribués dans le paquetage % +% \href{https://ctan.org/pkg/francais-bst}{\pkg{francais-bst}} % +% via le réseau de sites \emph{Comprehensive {\TeX} Archive Network} +% (CTAN). Le paquetage fait partie des distributions {\TeX} standards +% telles que {TeX}~Live, Mac{\TeX} et MiK{\TeX}. +% +% Je recommande fortement d'installer ou de mettre à jour le paquetage +% à l'aide du gestionnaire de paquetages de votre distribution {\TeX}. +% Par exemple, avec {\TeX}~Live, vous pouvez effectuer ces opérations +% dans l'assistant graphique, ou encore avec l'une ou l'autre des +% commandes ci-dessous: +% \begin{quote} +% \code{tlmgr install francais-bst} +% \end{quote} +% ou +% \begin{quote} +% \code{tlmgr update francais-bst} +% \end{quote} +% +% S'il vous est impossible d'installer des paquetages ou de mettre à +% jour la distribution {\TeX} --- notamment si vous utilisez une +% plateforme de rédaction en ligne --- vous pouvez procéder à une +% installation simplifiée des styles, mais dont la portée sera +% limitée à votre projet. Pour ce faire, téléchargez l'archive % +% \begin{quote} +% \code{francais-bst-project-install.zip} +% \end{quote} +% depuis le % +% \href{https://gitlab.com/vigou3/francais-bst/-/releases}{% +% dépôt du projet \code{francais-bst}} % +% et décompressez celle-ci dans le répertoire de votre projet. Vous +% disposerez alors de tous les fichiers essentiels du paquetage à +% l'intérieur de ce projet. % +% +% Si votre expertise {\TeX} vous pousse à préférer une installation +% manuelle avec accès à l'intégralité du code source des styles +% bibliographiques, consultez les instructions qui se trouvent dans le +% fichier \code{README.md} du paquetage. % +% +% \section{Utilisation des styles bibliographiques} +% \label{sec:utilisation} +% +% Les styles {\frbst} et {\frscbst} sont conçus pour composer des +% bibliographies selon la méthode auteur-date dans des documents en +% français. Ils reposent sur les paquetages % +% \href{https://ctan.org/pkg/babel}{\pkg{babel}} % +% et % +% \href{https://ctan.org/pkg/natbib}{\pkg{natbib}}. % +% Ce dernier doit être chargé avant \pkg{babel}. Le préambule du +% document devrait donc contenir les commandes: +% \begin{quote} +% \cmdprint{\usepackage}\code{\{natbib\}} \\ +% \cmdprint{\usepackage}\code{[french]\{babel\}} +% \end{quote} +% +% Je recommande fortement d'enregistrer le code source d'un ouvrage en +% français dans le codage de caractères % +% \href{https://fr.wikipedia.org/wiki/UTF-8}{UTF-8} % +% et de le compiler avec un moteur {\TeX} moderne qui prend d'emblée +% en charge ce type de codage, comme {\XeLaTeX}. Vous pourrez ainsi +% entrer les lettres accentuées directement au clavier («\code{é}») +% sans devoir passer par les commandes {\TeX} («\code{{\bs}'e}»). +% +% Si vous utilisez toujours {\LaTeX} ou {pdf\LaTeX}, vous devrez +% charger les polices T1 pour que la césure de mots fonctionne +% adéquatement avec les mots comportant des lettres accentuées: +% \begin{quote} +% \cmdprint{\usepackage}\code{[T1]\{fontenc\}} +% \end{quote} +% Les guillemets français «~» devraient normalement apparaitre +% correctement dans la bibliographie (notamment autour des titres +% d'articles). Si ce n'est pas le cas, essayez aussi de charger les +% paquetages +% \href{https://ctan.org/pkg/ae}{\pkg{ae}} % +% et +% \href{https://ctan.org/pkg/aeguill}{\pkg{aeguill}}: +% \begin{quote} +% \cmdprint{\usepackage}\code{\{ae,aeguill\}} +% \end{quote} +% +% Enfin, pour utiliser les styles de bibliographie, insérez dans le +% document l'une ou l'autre des commandes +% \begin{quote} +% \cmdprint{\bibliographystyle}\code{\{francais\}} \\ +% \cmdprint{\bibliographystyle}\code{\{francaissc\}} +% \end{quote} +% +% \section{Caractéristiques des styles bibliographiques} +% \label{sec:caracteristiques} +% +% Les styles {\frbst} et {\frscbst} sont conçus pour produire des +% bibliographies auteur-date conformes aux règles de typographie +% française. +% +% Avec le style {\frbst}, les noms d'auteurs apparaissent en police +% standard tant dans la bibliographie que dans dans les citations. +% C'est la pratique usuelle au Québec. Avec le style {\frscbst}, les +% noms d'auteurs apparaissent plutôt en petites capitales dans la +% bibliographie et dans les citations. Cela semble être la pratique +% usuelle en France et ailleurs dans la Francophonie. +% +% Les styles prennent en charge tous les types de documents standards +% de {\BibTeX} (\code{article}, \code{book}, \code{proceedings}, +% etc.), ainsi que tous les champs standards (\code{author}, +% \code{title}, \code{journal}, etc.). Ils ajoutent toutefois les +% champs suivants: +% \begin{description}[font=\mdseries\ttfamily,style=nextline,leftmargin=3em] +% \item[doi] L'identificateur d'objet numérique (DOI) d'une ressource. +% Entrez la valeur sous la forme \code{prefix/suffix} (par exemple: +% \code{10.1000/182}). Les styles créent automatiquement un +% hyperlien vers la ressource. +% \item[isbn] Le numéro international normalisé du livre (ISBN) d'un +% ouvrage. Lorsque disponible, le numéro est affiché dans la liste +% des références. +% \item[issn] Le numéro international normalisé des publications en +% série (ISSN) d'une publication en série, tel qu'un magazine. Bien +% que permis dans la base de données bibliographiques, ce numéro +% n'est pas affiché dans la liste des références. +% \item[language] La langue de la référence, exprimée selon la +% nomenclature de \pkg{babel}. Inclure cette information dans une +% entrée assure que la coupure des mots du titre sera effectuée +% selon les règles de la langue de celui-ci. +% \item[url] L'adresse URL de la référence. Si une adresse URL et un +% identificateur DOI sont tous deux présents dans la base de +% données, ce dernier aura priorité. +% \end{description} +% +% \section{Personnalisation des mots-clés} +% \label{sec:personnalisation} +% +% Les bibliographies comportent nombre de termes et de locutions --- +% \emph{editor}, \emph{edited by}, \emph{et~al.}, etc. --- qui doivent +% être adaptés pour le français. Les styles {\frbst} et {\frscbst} ont +% recours aux définitions qui se trouvent dans le fichier de +% localisation \code{francaisbst.tex}. +% +% Vous pouvez personnaliser le fichier \code{francaisbst.tex} pour +% l'adapter à vos besoins. Pour ce faire, créez une copie du fichier +% livré dans le paquetage \pkg{francais-bst} et modifiez cette copie. +% Placez ensuite votre version de \code{francaisbst.tex} dans le +% répertoire de votre projet ou, encore mieux, dans l'arborescence +% {\TeX} de votre répertoire personnel, normalement sous +% \begin{quote} +% \code{\$TEXMFHOME/tex/latex/francais-bst/francaisbst.tex} +% \end{quote} +% +% \section{Production des styles bibliographiques} +% \label{sec:production} +% +% Les fichiers de styles bibliographiques \code{\frbstname.bst} et +% \code{\frscbstname.bst}, et le fichier de localisation +% \code{francaisbst.tex} sont générés à partir du fichier maitre de +% styles bibliographiques \code{\filename} en compilant leurs scripts +% de génération respectifs avec {\LaTeX}: +% \begin{quote} +% \code{latex francais.dbj} \\ +% \code{latex francaissc.dbj} \\ +% \code{latex francaisbst.dbj} +% \end{quote} +% +% \section{Changements par rapport à \code{merlin.mbs}} +% \label{sec:changements} +% +% Cette section documente les changements apportés au fichier +% \code{merlin.mbs} du paquetage \pkg{custom-bib} pour produire le +% fichier maitre de styles bibliographiques \code{\filename}. +% +% \begin{enumerate} +% \item La fonction \code{format.url} a été retravaillée pour produire +% une URL simplifiée pour les identificateurs d'objet numérique +% (DOI). La définition de \code{merlin.mbs} produit une URL de la +% forme +% \begin{quote} +% URL \texttt{http://dx.doi.org/\meta{doi}} +% \end{quote} +% La nouvelle définition produit plutôt +% \begin{quote} +% doi: \meta{doi} +% \end{quote} +% Lorsque le paquetage \pkg{hyperref} est chargé, \meta{doi} est un +% hyperlien vers ce qui est aujourd'hui l'URL recommandée pour les +% DOI: \code{https://doi.org/\meta{doi}}. Le texte et l'hyperlien +% sont produits par la commande \cmd{\urldoi} qui est insérée dans +% le fichier \texttt{.bbl}. Vous pouvez redéfinir cette commande +% dans votre document pour l'adapter à vos besoins, si désiré. +% \item La commande \cmd{\urlprefix} est vide, de sorte que «URL» +% n'apparait pas devant les URL dans la bibliographie. De nouveau, +% vous pouvez redéfinir la commande dans votre document ni désiré. +% \item Les guillemets français «~» sont produits par la commande +% \cmd{\frquote} de \pkg{babel-french} (version $\geq$ 3.1) plutôt +% qu'avec les commandes \cmd{\guillemotleft} et +% \cmd{\guillemotright}. +% \item Les définitions françaises de mots-clés se trouvent dans +% \code{francaisbst.tex}, plutôt que dans \code{babelbst.tex}. +% \item L'option \code{bblbst} permet d'extraire le fichier +% \code{francaisbst.tex}. +% \item L'information sur le menu de \code{makebst} est reléguée à la +% documentation complète. Désactiver la commande +% \cmd{\OnlyDescription} dans \code{\filename}, puis compiler le +% fichier avec {pdf\LaTeX} ou {\XeLaTeX} pour obtenir la +% documentation complète. +% \end{enumerate} +% +% \StopEventually{\PrintChanges} +% +% \begin{quote} +% \itshape À partir de ce point, la documentation est celle, en +% anglais, du fichier \code{merlin.mbs}, dont l'auteur est Patrick +% W.~Daly. +% \end{quote} +% +% \section{The Menu Information}\label{sec:menu} +% +% Here I describe the options and menu information for this particular +% master file \texttt{\filename}. To construct a \dtx{} driver file +% to generate a desired \texttt{.bst} file, simply process \texttt{makebst.tex} +% with \TeX\ or \LaTeX, and give +% \begin{quote}\code{\filename}\end{quote} +% when prompted for the name of the master file. Then answer the questions +% in the menus that follow. The menu information is extracted from here. +% +% All the menu information is nested between \dtx{} guard options +% |%<*options>| \dots\ |%|, and the last command is +% |\endoptions|. The rest of the file is nested between +% \begin{quote} +% |%<*!options&!driver&!bblbst>| \dots\ || +% \end{quote} +% in order to exclude it if \dtx{} is used to +% extract the menu information, the documentation driver, or the +% \texttt{francaisbst.tex} file. +% +% The main coding is divided into two sections, the \emph{head} and +% \emph{tail}; in between come any external language or journal name +% support files. The head part is marked with the \dtx{} guard option +% || and the tail with ||. This roundabout means of +% doing things makes it possible to process \texttt{\filename} with +% \texttt{.dbj} files that were generated for the older +% \texttt{genbst.mbs} file by simply changing the name of the source +% file. If both \texttt{head} and \texttt{tail} (and \texttt{exlang}) +% options are omitted, as they are in the older \texttt{.dbj} files, +% \texttt{\filename} is processed completely in one pass. To include +% external files, two passes are needed, one for each part, with the +% external file(s) coming in between. +% +% Note too that if the internal language commands are taken (i.e., if +% \texttt{exlang} option is not given) then the default language is +% English, which is tested for as ||. This too permits the simple +% update of older \texttt{.dbj}, at least for English. +% +% \subsection*{Selecting Language} +% Explicit words in the bibliography style, such as \textsl{and}, +% \textsl{editor}, etc., +% are represented by functions \texttt{bbl.and}, \texttt{bbl.editor}, and so on. +% By default these functions translate to the normal English text, but +% other languages are also possible. +% +% The definitions of these functions for other languages are contained in +% external files. At this point, we can make use of features in +% \texttt{makebst} (version~3.0 or later) to ask for the name of such a +% definition file, and store it in |\cfile|. If no external file is +% specified, then the internal definitions are taken, for which there are +% two possibilities: English or \LaTeX{} commands (Babel). +% +% The commands |\MBswitch|, |\mes|, |\MBaskfile|, |\wr|, |\pc|, |\spsp| are +% defined in \texttt{makebst.tex}. +% +% If |\MBswitch| does not exist, then the version of \texttt{makebst} +% cannot support external files. +% +% \begin{macrocode} +%<*options> +\expandafter\ifx\csname beginoptiongroup\endcsname\relax + \mes{^^J******************^^J% + !!!!!! VERSION CLASH !!!!!!!!!^^J% + This mbs file requires makebst version 4.0 or more^^J% + You must update makebst to run it with this mbs file^^J% + No docstrip batch file can be produced on this run^^J% + ******************} + \let\temp\endinput\else\let\temp\relax\fi\temp + +\newif\ifnumerical +\newif\ifmytemp +\mes{<<< For more information about the meanings of^^J% + <<< the various options, see the section on ^^J% + <<< Menu Information in the .mbs file documentation.} + +\umes{EXTERNAL FILES:} +\expandafter\ifx\csname MBswitch\endcsname\relax + \mes{^^J**************^^J% + Makebst version is less than 3.0^^J% + Cannot add external file for language definition^^J% + **************} + \umes{No included files.}% + \def\cfile{}\def\jfile{}% +\else + \MBaskfile{^^JName of language definition file}(\mroot.\mext)i\cfile + \edef\ctemp{\mroot.\mext} + \ifx\ctemp\cfile\def\cfile{}\fi + \umes{Name of language file: \string\cfile=\cfile.}% +% \end{macrocode} +% +% A second type of external file that can be added is one containing names +% of journals that are to be prestored into the \texttt{.bst} file. +% Several file names are allowed here, with the root names separated by +% commas, and with the common extension added at the end. To assist later +% parsing of the names, an additional comma is added before the extension. +% +% Note that in this case |\MBaskfile| treats the file(s) as output, i.e., +% it does not check if the file(s) actually exist. +% +% The macro |\Mgetnext| allows the root names to be extracted from the +% list of file names. +% \begin{macrocode} + \def\jfile{} + \ask{\yn}{^^JInclude file(s) for extra journal names? (NO)} + \mytempfalse + \if!\yn!\else\if\yn n\else\if\yn N\else\mytemptrue\fi\fi\fi + \ifmytemp + \MBaskfile{^^JFile to include}(physjour,geojour,photjour.mbs)o\jfile + \edef\jfile{\froot,.\fext} + \umes{Name of included files: \string\jfile=\jfile.}% + \else + \umes{No included files.}% + \fi +\fi%MBswitch +\def\Mgetnext#1,#2.#3??{\def\froot{#1}\def\Mrest{#2}\def\fext{#3}} +% \end{macrocode} +% +% If no external files are specified, then both |\cfile| and |\jfile| are +% empty. In this case, do \emph{not} set the options \texttt{head} and +% \texttt{tail}, which control the \dtx{} passes through +% \texttt{filename}. Now only one pass is made. +% +% If there is an external definition file, or an external list of +% journal names, then some extra text must be +% written to fit in with that already written by \texttt{makebst}. This is +% explained in that documentation. The |\MBswitch| command turns the curly +% braces |{..}| into normal characters, and the parentheses |(..)| take on +% their grouping functionality. This permits unbalanced braces to be +% written to the output file. +% +% \begin{macrocode} +\if!\cfile\jfile!\else + \begingroup\MBswitch + \wr(\spsp head,\string\MBopta}) + \if!\cfile!\else + \wr(\string\from{\cfile}{\string\MBopta}) + \fi + \if!\jfile!\else + \let\jxfile\jfile + \loop +% \end{macrocode} +% +% Parse the list of journal name files, adding a new |\from| for each one. +% +% \begin{macrocode} + \expandafter\Mgetnext\jxfile?? + \wr(\string\from{\froot.\fext}{\string\MBopta}) + \edef\jxfile(\Mrest.\fext) + \if!\Mrest!\def\Mtst(1)\else\def\Mtst()\fi + \if!\Mtst! + \repeat + \fi + \wr(\string\from{\mroot.\mext}{tail,\string\MBopta}}) + \wr(\string\def\string\MBopta{\pc) + \endgroup +\fi +% \end{macrocode} +% +% Ask whether there is a need for +% explicit English words or \LaTeX{} commands whose definitions are +% to be found in the file \texttt{francaisbst.tex}. +% +% \begin{macrocode} +\beginoptiongroup{INTERNAL LANGUAGE SUPPORT + (if no external language file)}% + {\if!\cfile!\relax*\fi}% +\optdef{*}{}{English}{words used explicitly} +\optdef{b}{babel}{Babel} + {(words replaced by commands defined in francaisbst.tex)} +\getans +\endoptiongroup +\if!\cfile!\relax\else +\wr{\spsp\spsp exlang,\pc: External language file} +\fi +% \end{macrocode} +% +% \subsection*{Author--year or numerical} +% The first question is whether a numerical or author--year citation +% style is to be used. If the latter, the supporting system is my +% \code{natbib.sty}, which expects |\bibitem| to have an optional +% argument containing the short form of the authors, plus year in +% parentheses. E.g., +% \begin{quote} +% |\bibitem[Daly et al.(1990)]{key}...| +% \end{quote} +% There is now a newer version of \texttt{natbib.sty} (v5.3) that +% supports an optional full author list too, as +% \begin{quote} +% |\bibitem[Daly et al.(1990)Daly, Keppler, and Williams]{key}...| +% \end{quote} +% Other systems are also supported, such as the Harvard family of +% bibliography styles (with \texttt{harvard.sty}), which have entries in the +% form +% \begin{quote} +% |\harvarditem[Daly et al.]{Daly, Keppler,|\\ +% | and Williams}{1990}{key}...| +% \end{quote} +% or the astronomy family (with \texttt{astron.sty}) with entries like +% \begin{quote} +% |\bibitem[\protect\astroncite{Daly et al.}{1990}]{key}...| +% \end{quote} +% or the Chicago family (with \texttt{chicago.sty}) with entries like +% \begin{quote} +% |\bibitem[\protect\citeautheryear{Daly, Keppler, and|\\ +% | Williams}{Daly et al.}{1990}]{key}...| +% \end{quote} +% or the `named' variant of Chicago (with \texttt{named.sty}) with entries like +% \begin{quote} +% |\bibitem[\protect\citeauthoryear{Daly et al.}{1990}]{key}...| +% \end{quote} +% or the so-called ``author--date'' group (with \texttt{authordate1-4.sty}) +% with entries of the form +% \begin{quote} +% |\bibitem[\protect\citename{Daly et al.}1990]{key}...| +% \end{quote} +% Finally, there is the \texttt{apalike} format of Oren Patashnik, for use +% with \texttt{apalike.sty} that has entries of the form +% \begin{quote} +% |\bibitem[Daly et al., 1990]{key}...| +% \end{quote} +% +% In addition to numerical or author--year citation styles, there is also a +% \texttt{cite} style available in which the label is the same as the cite +% key. This is for listing entire contents of databases with the cite key +% visible. +% +% A flag |\ifnumerical| is established because some of the following menu +% features depend on which system is to be used. +% +% The \texttt{alph} option produces labels as in \texttt{alpha.bst}; options +% \texttt{alf-1} and \texttt{alf-f} modify these. Standard is: first three +% letters of the single author (Dal90 for Daly, 1990) and first letters of +% first three authors (DK90 for Daly and Kopka, 1990). Alternatives are first +% three letters of the first author, no matter how many authors there are, and +% full name of first author. +% \begin{macrocode} +\beginoptiongroup{STYLE OF CITATIONS:}{} +\optdef{*}{}{Numerical}{as in standard LaTeX} +\optdef{a}{ay}{Author-year}{with some non-standard interface} +\optdef{b}{alph}{Alpha style, Jon90 or JWB90}{for single or multiple authors} +\optdef{o}{alph,alf-1}{Alpha style, Jon90}{even for multiple authors} +\optdef{f}{alph,alf-f}{Alpha style, Jones90}{(full name of first author)} +\optdef{c}{cite}{Cite key}{(special for listing contents of bib file)} +\getans +\endoptiongroup +\if\ans a\numericalfalse\else\numericaltrue\fi +\if\ans b\mytempfalse \else\mytemptrue \fi +\beginoptiongroup{HTML OUTPUT + (if non author-year citations)} + {\ifnumerical*\fi} +\optdef{*}{}{Normal LaTeX}{output} +\optdef{h}{html}{Hypertext}{output, in HTML code, in paragraphs} +\optdef{n}{html,htlist}{Hypertext list}{with sequence numbers} +\optdef{k}{html,htdes}{Hypertext with keys}{for viewing databases} +\getans +\endoptiongroup +\beginoptiongroup{AUTHOR--YEAR SUPPORT SYSTEM + (if author-year citations)} + {\ifnumerical\else*\fi} +\optdef{*}{nat}{Natbib}{for use with natbib v5.3 or later} +\optdef{o}{}{Older Natbib}{without full authors citations} +\optdef{l}{alk}{Apalike}{for use with apalike.sty} +\optdef{h}{har}{Harvard}{system with harvard.sty} +\optdef{a}{ast}{Astronomy}{system with astron.sty} +\optdef{c}{cay}{Chicago}{system with chicago.sty} +\optdef{n}{nmd}{Named}{system with named.sty} +\optdef{d}{cn}{Author-date}{system with authordate1-4.sty} +\getans +% \end{macrocode} +% The \texttt{harvard} family has been extended for \LaTeXe, and the new +% \texttt{.bst} files allow the word \textsl{and} and the brackets around years +% to be variable with commands. These features may be added too. +% The URL field used to be exclusively part of Harvard, but now exists +% independently of it too. +% +% \begin{macrocode} +\beginoptiongroup{HARVARD EXTENSIONS INCLUDED + (if Harvard support selected)} + {\if\ans h*\fi}% +\optdef{*}{harnm}{With Harvard extensions}{for LaTeX2e version of harvard.sty} +\optdef{n}{}{Older Harvard}{style, for LaTeX 2.09} +\getans +\endoptiongroup +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Language switching} +% A \texttt{language} field can be present to specify the original language of +% the reference; with \verb!\setlanguage!, the hyphenation patterns are set for +% setting the title in that language. +% \begin{macrocode} +\beginoptiongroup{LANGUAGE FIELD}{} +\optdef{*}{}{No language field}{} +\optdef{l}{lang}{Add language field}{to switch hyphenation patterns temporarily} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Annotations} +% Annotations to a reference are additional information not normally printed +% out in the list of references. They are used for listing databases. +% The coding here was offered by Soren Dayton. +% \begin{macrocode} +\beginoptiongroup{ANNOTATIONS:}{} +\optdef{*}{}{No annotations}{will be recognized} +\optdef{a}{annote}{Annotations}{in annote field or in .tex file of citekey name} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Presentations} +% Presentations are talks at meetings, oral or poster, that are not otherwise +% published. The author making the presentation is indicated with the \texttt{key} +% entry, which is the speaker's number within the author list. The font used +% to highlight the speaker is either bold or italics, depending on the secondary +% option, otherwise not highlighted. +% \begin{macrocode} +\beginoptiongroup{PRESENTATIONS:}{} +\optdef{*}{}{Do not add presentation type}{for conference talks} +\optdef{p}{pres}{Add presentation, speaker not highlighted}{} +\optdef{b}{pres,pres-bf}{Presentation, speaker bold face}{} +\optdef{i}{pres,pres-it}{Presentaion, speaker italic}{} +\optdef{c}{pres,pres-sc}{Presentaion, speaker in small caps}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Ordering of the listed references} +% Choices here depend on citation style. The default in both cases is +% alphabetical order of all authors. For numerical style, one may also +% choose an unsorted order, which means the order is the same as the original +% citations. This corresponds to \texttt{unsrt.bst}. Order of citation is +% also offered for author--year for \texttt{natbib}-type styles that can +% also be used for numerical listings. +% +% Another possibility is to order first by year, then authors. This too only +% makes sense for numerical citations. However, it is offered for author--year +% in the event that a \texttt{natbib}-type style is used for numerical +% listings. +% +% For the alpha style, the ordering is by label only, so no option is +% offered here (|\ifnumerical| is \meta{true} and |\ifmytemp| is \meta{false}). +% +% For author--year, the second choice is by label. (The label is the +% optional |\bibitem| argument, and is what is printed in place of the +% |\cite| command.) With this option, all the papers with the same first +% author are ordered so that the one-author papers come first, followed by +% the two-author papers, followed by the multiple-author papers. This is a +% more sensible system for author--year citations, and is demanded by some +% journals (like JGR). +% +% One problem that can arise here is when two or more references have the +% same set of authors and year; normally they are then ordered by the +% title, ignoring initial words like \textsl{the} and \textsl{a}, with the +% letters a, b, +% c, \dots, added to the year. This can mean that a set of references with +% a natural sequence will be put into a different order. An alternative is +% to order them by the citation keyword instead of by title. This of course +% assumes that the keywords in this case reflect that natural sequence. +% \begin{macrocode} +\let\ans\relax +\beginoptiongroup{ORDERING OF REFERENCES + (if non-author/year and non-alph)} + {\ifnumerical\ifmytemp*\fi\fi}% +\optdef{*}{}{Alphabetical}{by all authors} +\optdef{c}{seq-no}{Citation order}{(unsorted, like unsrt.bst)} +\optdef{d}{seq-yr}{Year ordered}{and then by authors} +\optdef{r}{seq-yrr}{Reverse year ordered}{and then by authors} +\getans +\endoptiongroup +% +\beginoptiongroup{ORDERING OF REFERENCES + (if author-year citations)} + {\ifnumerical\else*\fi}% +\optdef{*}{}{Alphabetical}{by all authors} +\optdef{l}{seq-lab}{By label}% + {(Jones before Jones and James before Jones et al)} +\optdef{m}{seq-labc}{By label and cite order}% + {(like above but all Jones et al ordered as cited)} +\optdef{k}{seq-key}{By label and cite key}{instead of label and title, as above} +\optdef{d}{seq-yr}{Year ordered}{and then by authors (for publication lists)} +\optdef{r}{seq-yrr}{Reverse year ordered}{and then by authors (most recent first)} +\optdef{c}{seq-no}{Citation order}{(unsorted, only meaningful for numericals)} +\getans +\endoptiongroup +% \end{macrocode} +% The standard \btx\ styles consider the \emph{von} part of the name to be a +% fixed part of the surname. European usage tends to alphabetize ignoring these +% honorifics. +% \begin{macrocode} +\beginoptiongroup{ORDER ON VON PART + (if not citation order)} + {\if\ans c\else*\fi}% +\optdef{*}{}{Sort on von part}{(de la Maire before Defoe)} +\optdef{x}{vonx}{Sort without von part}{(de la Maire after Mahone)} +\getans +\endoptiongroup +% \end{macrocode} +% +% Sorting normally treats authors with the same surname but different initials +% or first name separately; but a strict ordering by cite label would lump all +% Smiths together. +% \begin{macrocode} +\beginoptiongroup{IGNORE FIRST NAMES (if author-year citations)} + {\ifnumerical\else*\fi}% +\optdef{*}{}{Respect first names}{or initials, treat as different authors} +\optdef{x}{xintls}{Sort on surname only}{and treat all Smiths as one} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Formatting author names} +% The default is that the full names of the authors are listed, given names +% first, unabbreviated. Of course, if only the initials have been given in +% the \texttt{.bib} file, then that is all that can appear in the list. Other +% possibilities are to use initials (even if full names in the \texttt{.bib} +% file) either before or after the surnames. A specialty of the journals of +% the American Geophysical Union is to have only the first name with +% reversed initials. +% +% If the reference is part of a larger work with editors, then the editor +% names appear later in the reference text, usually as ``edited by \dots'' +% or as ``\emph{names} (editors)''. In these cases, the editor names are +% not usually reversed (surname first) even if the authors' names are. +% An option is provided to format such editor names exactly as the authors'. +% \begin{macrocode} +\beginoptiongroup{AUTHOR NAMES:}{} +\optdef{*}{ed-au}{Full, surname last}{(John Frederick Smith)} +\optdef{f}{nm-revf}{Full, surname first}{(Smith, John Frederick)} +\optdef{i}{nm-init,ed-au}{Initials + surname}{(J. F. Smith)} +\optdef{r}{nm-rev}{Surname + initials}{(Smith, J. F.)} +\optdef{s}{nm-rv}{Surname + dotless initials}{(Smith J F)} +\optdef{w}{nm-rvvc}{Surname + comma + spaceless initials}{(Smith, J.F.)} +\optdef{x}{nm-rvx}{Surname + pure initials}{(Smith JF)} +\optdef{y}{nm-rvcx}{Surname + comma + pure initials}{(Smith, JF)} +\optdef{z}{nm-rvv}{Surname + spaceless initials}{(Smith J.F.)} +\optdef{a}{nm-rev1}{Only first name reversed, initials}% + {(AGU style: Smith, J. F., H. K. Jones)} +\optdef{b}{nm-revv1}{First name reversed, with full names}% + {(Smith, John Fred, Harry Kab Jones)} +\getans +\endoptiongroup +\mytempfalse +\if\ans f\mytemptrue\fi +\if\ans r\mytemptrue\fi +\if\ans s\mytemptrue\fi +\if\ans x\mytemptrue\fi +\if\ans y\mytemptrue\fi +\if\ans a\mytemptrue\fi +\if\ans b\mytemptrue\fi +\beginoptiongroup{EDITOR NAMES IN COLLECTIONS + (if author names reversed)} + {\ifmytemp*\fi} +\if\ans r +\optdef{*}{}{Editor names NOT reversed}{as edited by J. J. Smith} +\fi +\if\ans s +\optdef{*}{}{Editor names NOT reversed}{as edited by J J Smith} +\fi +\if\ans a +\optdef{*}{}{Editor names NOT reversed}{as edited by J. J. Smith} +\fi +\if\ans x +\optdef{*}{}{Editor names NOT reversed}{as edited by JJ Smith} +\fi +\if\ans f +\optdef{*}{}{Editor names NOT reversed}{as edited by John James Smith} +\fi +\if\ans y +\optdef{*}{}{Editor names NOT reversed}{as edited by J.J. Smith} +\fi +\if\ans b +\optdef{*}{}{Editor names NOT reversed}{as edited by John James Smith} +\fi +\optdef{r}{ed-rev}{Editor names reversed}{just like authors'} +\getans +\beginoptiongroup{POSITION OF JUNIOR + (if author names reversed)} + {} +\optdef{*}{jnrlst}{Junior comes last}{as Smith, John, Jr.} +\optdef{m}{}{Junior between}{as Smith, Jr., John} +\getans +\endoptiongroup +\endoptiongroup + +\beginoptiongroup{JUNIOR PART IN THE CITATION + (if author-year citations)} + {\ifnumerical\else*\fi}% +\optdef{*}{}{No `junior' part in the citations}{but in the ref listing} +\optdef{j}{jnrlab}{`Junior' in citations}{as well as in ref listing} +\getans +\endoptiongroup + +\beginoptiongroup{PUNCTUATION BETWEEN AUTHOR NAMES:}{} +\optdef{*}{}{Author names separated by commas}{} +\optdef{s}{aunm-semi}{Names separated by semi-colon}{} +\optdef{h}{aunm-sl}{Names separated by slash}{/} +\getans +\endoptiongroup + +\beginoptiongroup{ADJACENT REFERENCES WITH REPEATED NAMES:}{} +\optdef{*}{}{Author/editor names always present}{} +\optdef{d}{nmdash}{Repeated author/editor names replaced by dash}{} +\optdef{2}{nmdash,nmd-2}{Repeated author/editor names replaced by 2 dashes}{} +\optdef{3}{nmdash,nmd-3}{Repeated author/editor names replaced by 3 dashes}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Number of authors} +% Normally the complete list of authors as given in the \texttt{.bib} file is +% presented in the reference list. However, some journals prefer to limit +% them to a maximum. If there are more than this maximum number of author +% names, then a minimum number plus \textsl{et al.} are listed. +% +% Because no test for consistency of the numbers is carried out in the +% \texttt{.bst} file itself (it might be possible, but I found it too complex), +% this is done here. +% \begin{macrocode} +\beginoptiongroup{NUMBER OF AUTHORS IN BIBLIOGRAPHY:}{} +\optdef{*}{}{All authors}{included in listing} +\optdef{l}{nmlm}{Limited authors}{(et al replaces missing names)} +\getans +\endoptiongroup +\if\ans l +\loop + \ask{\num}{Maximum number of authors (1-99)} + \ifnum\num>99\relax + \mes{*** Must be between 1 and 99} +\repeat +\def\parsenum#1#2{\if#2\relax\wr{\spsp\spsp x#1,\pc: Maximum of #1\space authors} + \else\wr{\spsp\spsp x#10,x#2,\pc: Maximum of #1#2\space authors}\fi} +\expandafter\parsenum\num\relax +\mes{\spsp You have selected maximum \num\space authors} +\edef\numx{\num} +\loop + \ask{\num}{Minimum number (before et al given) (1-\numx)} + \ifnum\num>\numx + \mes{*** Must be between 1 and \numx} +\repeat +\def\parsenum#1#2{\if#2\relax\wr{\spsp\spsp m#1,\pc: Minimum of #1\space authors} + \else\wr{\spsp\spsp m#10,m#2,\pc: Minimum of #1#2\space authors}\fi} +\expandafter\parsenum\num\relax +\mes{\spsp You have selected minimum \num\space authors} +\fi + +% \end{macrocode} +% +% Something that I finally added after being asked many times, is to allow for +% more than one name in the citation before inserting \textsl{et~al.} +% to allow more than 2 authors before truncating +% \begin{macrocode} +\beginoptiongroup{AUTHORS IN CITATIONS:}{} +\optdef{*}{}{One author et al}{for three or more authors} +\optdef{m}{mcite}{Some other truncation scheme}{} +\getans +\endoptiongroup +\mytempfalse +\if\ans m\mytemptrue\fi +\beginoptiongroup{MAX AUTHORS BEFORE ET AL: + (if regular cite not selected)} + {\ifmytemp*\fi}% +\optdef{*}{mct-1}{One et al}{} +\optdef{2}{mct-2}{One, Two et al}{} +\optdef{3}{mct-3}{One, Two, Three et al}{} +\optdef{4}{mct-4}{One, Two, Three, Four et al}{} +\optdef{5}{mct-5}{One, Two, Three, Four, Five et al}{} +\optdef{6}{mct-6}{One, Two, Three, Four, Five, Six et al}{} +\getans +\endoptiongroup +\beginoptiongroup{MAX AUTHORS WITHOUT ET AL: + (if regular cite not selected)} + {\ifmytemp*\fi}% +\optdef{*}{mct-x2}{Two authors without truncating}{} +\optdef{3}{mct-x3}{Three authors}{without truncating} +\optdef{4}{mct-x4}{Four authors}{without truncating} +\optdef{5}{mct-x5}{Five authors}{without truncating} +\optdef{6}{mct-x6}{Six authors}{without truncating} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Typeface of names} +% The author names in the list of references normally appear in the current +% typeface. This may be changed to small caps, bold, or italics. +% +% Alternatively, the surnames only can be formatted, with the first names in the +% regular font. One can also specify that the words `and' and `et~al.'\ should be +% in the regular font, or that `et~al.'\ be italic. +% +% Another possibility is that the names be put into a command |\bibnamefont{..}|, +% which must be defined in the \LaTeX\ document. By default, this command does +% not format its argument. There is also a |\bibfnamefont| command for the first +% names, to be user-defined. +% +% Editor names in a collection or in a book will not normally have these +% fonts applied to them; this may be additionally selected. +% +% \begin{macrocode} +\beginoptiongroup{TYPEFACE FOR AUTHORS IN LIST OF REFERENCES:}{} +\optdef{*}{}{Normal font for author names}{} +\optdef{s}{nmft,nmft-sc}{Small caps authors}{(\string\sc)} +\optdef{i}{nmft,nmft-it}{Italic authors}{(\string\it\space or \string\em)} +\optdef{b}{nmft,nmft-bf}{Bold authors}{(\string\bf)} +\optdef{u}{nmft,nmft-def}{User defined author font}{(\string\bibnamefont)} +\getans +\endoptiongroup +\mytempfalse +\if\ans i\mytemptrue\fi +\if\ans s\mytemptrue\fi +\if\ans b\mytemptrue\fi +\if\ans u\mytemptrue\fi +\beginoptiongroup{FONT FOR FIRST NAMES + (if non-default font for authors)} + {\ifmytemp*\fi}% +\optdef{*}{}{First names same font as surnames}{} +\optdef{r}{fnm-rm}{First names in normal font}{} +\optdef{u}{fnm-def}{First names in user defined font}{(\string\bibfnamefont)} +\getans +\beginoptiongroup{EDITOR NAMES IN INCOLLECTION ETC:}{} +\optdef{*}{}{Editors incollection normal font}{} +\optdef{a}{nmfted}{Editors incollection like authors}{font} +\getans +\endoptiongroup + +\beginoptiongroup{FONT FOR `AND' IN LIST:}{} +\optdef{*}{}{`And' in author font}{(JONES AND JAMES)} +\optdef{r}{nmand-rm}{`And' in normal font}{(JONES and JAMES)} +\getans +\endoptiongroup +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Names in Citation label} +% This applies to author--year style only. The label is the text written +% by the |\cite| command, and for author--year style, this is something like +% `Daly et al.\ (1990b)'. One may select italics for the authors and for the +% extra label attached to the year. The year always remains plain. +% +% This parallels the font selection for the names in the list of references +% except that there no choice for the first names, since only surnames +% are used in the labels. A user-defined |\citefontname| may also +% be selected, but this \emph{must} be defined by the user since there +% will be no default definition for it. +% +% If a font is selected for the cited authors, then the word `and' may be +% optionally put in the normal font. +% +% It is not possible to select the type of brackets for the year, since +% this is determined by the \LaTeX{} style option that manages the +% author--year citations. This is not standard \LaTeX, so that there are a +% number of private style files for achieving this. +% \begin{macrocode} +\beginoptiongroup{FONT OF CITATION LABELS IN TEXT + (if author-year citations)} + {\ifnumerical\else*\fi}% +\optdef{*}{}{Cited authors plain}{as result of \string\cite\space command} +\optdef{i}{lab,lab-it}{Cited authors italic}{} +\optdef{s}{lab,lab-sc}{Cited authors small caps}{} +\optdef{b}{lab,lab-bf}{Cited authors bold}{} +\optdef{u}{lab,lab-def}{User defined citation font}{(\string\citenamefont)} +\getans + +\mytempfalse +\if\ans i\mytemptrue\fi +\if\ans s\mytemptrue\fi +\if\ans b\mytemptrue\fi +\if\ans u\mytemptrue\fi +\beginoptiongroup{FONT FOR `AND' IN CITATIONS + (if non-default font for citation lables)} + {\ifmytemp*\fi}% +\optdef{*}{}{Cited `and' in author font}{} +\optdef{r}{and-rm}{Cited `and' in normal font}{} +\getans +\endoptiongroup +\beginoptiongroup{FONT OF EXTRA LABEL + (The extra letter on the year)}{} +\optdef{*}{}{Extra label plain}{} +\optdef{i}{xlab-it}{Extra label italic}{} +\getans +\endoptiongroup +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Label for missing author names} +% +% If the author and/or editor is missing, the standard \texttt{.bst} files +% use the \texttt{key} field in place of the names for purposes of ordering the +% entries. +% +% For author--year styles, the \texttt{key} field is even inserted in the +% reference list and in the label in place of the authors. Optionally, one can +% suppress the year in this case, which causes \texttt{natbib} (version~7) +% to print only that key text as a code designation for the work. Thus if +% \texttt{KEY = "CS1-345"} and there are no authors, then |\citep| produces +% (CS1-345) and |\citet| simply CS1-345. That is, they behave like +% |\citeauthor|. If \texttt{natbib} did not recognize the blank year, one would +% get (CS1-345, ) and CS1-345 (). (Earlier versions of \texttt{natbib} crash on +% a blank year.) +% \begin{macrocode} +\beginoptiongroup{LABEL WHEN AUTHORS MISSING + (if author-year citations)} + {\ifnumerical\else*\fi}% +\optdef{*}{keyxyr}{Year blank when KEY replaces missing author}{(for natbib 7.0)} +\optdef{y}{}{Year included when KEY replaces missing author}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Missing date} +% A missing date can be set to ???? or simply left blank. In the latter case, +% \texttt{natbib} version~7 will print only the authors without any year +% punctuation or brackets. +% +% \begin{macrocode} +\beginoptiongroup{MISSING DATE + (if author-year citations)} + {\ifnumerical\else*\fi}% +\optdef{*}{}{Missing date set to ????}{in label and text} +\optdef{b}{blkyear}{Missing date left blank}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Position of date} +% This applies to author--year style only. It makes sense to put the date +% immediately after the author list, since the two items (author and year) +% are the identifiers of the reference. Default position is at the +% end of the references, before any notes. It is also possible to place +% it even after the notes. +% +% Medical journals have a system where the date is part of the journal +% specification, as Lancet 1994;45(2):34--40. Otherwise the date appears at +% the end. +% \begin{macrocode} +\beginoptiongroup{DATE POSITION:}{} +\optdef{*}{}{Date at end}{} +\optdef{b}{dt-beg}{Date after authors}{} +\optdef{j}{dt-jnl}{Date part of journal spec.}{(as 1994;45:34-40) else at end} +\optdef{e}{dt-end}{Date at very end}{after any notes} +\getans +\endoptiongroup +\if\ans b\mytemptrue\else\if\ans j\mytemptrue\else\mytempfalse\fi\fi +% \end{macrocode} +% +% \subsection*{Format of date} +% The year may be enclosed in parentheses, brackets, or preceded by a +% colon. If none of these are selected, the date (month plus year) appears. +% For author--year, the date normally consists only of the year, no month, +% but this may be overridden. +% +% If the date comes just after the authors, then one might want special +% punctuation following it, like a colon, or space only. The latter is +% probably desirable if the date is brackets or parentheses. +% +% The date can even be put into bold face. +% \begin{macrocode} +\beginoptiongroup{DATE FORMAT + (if non author-year citations)} + {\ifnumerical*\fi}% +\optdef{*}{}{Plain month and year}{without any brackets} +\optdef{p}{yr-par}{Date in parentheses}{as (May 1993)} +\optdef{b}{yr-brk}{Date in brackets}{as [May 1993]} +\optdef{c}{yr-col}{Date preceded by colon}{as `: May 1993'} +\optdef{d}{yr-per}{Date preceded by period}{as `. May 1993'} +\optdef{m}{yr-com}{Date preceded by comma}{as `, May 1993'} +\optdef{s}{yr-blk}{Date preceded by space}{only, as ` May 1993'} +\getans +\beginoptiongroup{SUPPRESS MONTH:}{} +\optdef{*}{}{Date is month and year}{} +\optdef{x}{xmth}{Date is year only}{} +\getans +\endoptiongroup +\beginoptiongroup{REVERSED DATE + (if including month)} + {\if\ans x\else*\fi}% +\optdef{*}{}{Date as month year}{} +\optdef{r}{dtrev}{Date as year month}{} +\getans +\endoptiongroup +\endoptiongroup + +\beginoptiongroup{DATE FORMAT + (if author-year citations)} + {\ifnumerical\else*\fi}% +\optdef{*}{}{Year plain}{without any brackets} +\optdef{p}{yr-par}{Year in parentheses}{as (1993)} +\optdef{b}{yr-brk}{Year in brackets}{as [1993]} +\optdef{c}{yr-col}{Year preceded by colon}{as `: 1993'} +\optdef{d}{yr-per}{Year preceded by period}{as `. 1993'} +\optdef{m}{yr-com}{Date preceded by comma}{as `, 1993'} +\optdef{s}{yr-blk}{Year preceded by space}{only, as ` 1993'} +\getans +\beginoptiongroup{INCLUDE MONTHS:}{} +\optdef{*}{}{Date is year only}{without the month} +\optdef{m}{aymth}{Include month in date}{} +\getans +\endoptiongroup +\beginoptiongroup{REVERSED DATE + (if including month)} + {\if\ans m*\fi}% +\optdef{*}{}{Date as month year}{} +\optdef{r}{dtrev}{Date as year month}{} +\getans +\endoptiongroup +\endoptiongroup + +\beginoptiongroup{DATE PUNCTUATION + (if date not at end)} + {\ifmytemp*\fi}% +\optdef{*}{}{Date with standard block punctuation}{(comma or period)} +\optdef{c}{yrp-col}{Colon after date}{as 1994:} +\optdef{s}{yrp-semi}{Semi-colon after date}{as 1994;} +\optdef{p}{yrp-per}{Period after date}{even when blocks use commas} +\optdef{x}{yrp-x}{No punct. after date}{} +\getans +\beginoptiongroup{BLANK AFTER DATE:}{} +\optdef{*}{}{Space after date}{and punctuation} +\optdef{x}{yrpp-xsp}{No space after date}{as 1994:45} +\getans +\endoptiongroup +\endoptiongroup +\beginoptiongroup{DATE FONT:}{} +\optdef{*}{}{Date in normal font}{} +\optdef{b}{dtbf}{Date in bold face}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% Normally in author--year citations, the \texttt{year} entry is truncated +% to the last 4 characters, which should be the 4 digits of the year. Some +% users have requested the possibility of suppressing this truncation so +% that they may put text in the \texttt{year} field, such as ``in press.'' +% Another use for it is when years are given as ``1968--72''. Actually, +% I have no idea why the year should be truncated at all. +% \begin{macrocode} +\beginoptiongroup{TRUNCATE YEAR + (if author-year citations)} + {\ifnumerical\else*\fi}% +\optdef{*}{note-yr}{Year text full}{as 1990--1993 or `in press'} +\optdef{t}{}{Year truncated}{to last 4 digits} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Article title in journal} +% The title of an article in a journal or in a collection (a book, or +% conference proceedings) may appear plain, in italics, within single +% or double quotes or even in guillemets. The last is best with T1 coding; a +% poor man's version for OT1 is provided; \LaTeXe\ is required in both cases. +% +% Furthermore, it may have sentence capitalization (first +% word and word following colon) or be capitalized as in the \texttt{.bib} file +% entry. That is why it is recommended to capitalize the entry text as it +% should appear when fully capitalized, putting words that are always +% capitalized in braces. Example: +% \begin{quote} +% |TITLE="The Results of the {Giotto} Mission"| +% \end{quote} +% which produces either ``The results of the Giotto mission'' or ``The +% Results of the Giotto Mission'', depending on option. +% +% Additionally, the article titles may be fully suppressed. +% \begin{macrocode} +\beginoptiongroup{TITLE OF ARTICLE:}{} +\optdef{*}{}{Title plain}{with no special font} +\optdef{i}{tit-it}{Title italic}{(\string\em)} +\optdef{q}{tit-qq,qt-s}{Title and punctuation in single quotes}{(`Title,' ..)} +\optdef{d}{tit-qq}{Title and punctuation in double quotes}{(``Title,'' ..)} +\optdef{g}{tit-qq,qt-g}{Title and punctuation in guillemets}{(<> ..)} +\optdef{x}{tit-qq,qt-s,qx}{Title in single quotes}{(`Title', ..)} +\optdef{y}{tit-qq,qx}{Title in double quotes}{(``Title'', ..)} +\optdef{z}{tit-qq,qt-g,qx}{Title in guillemets}{(<>, ..)} +\getans +\endoptiongroup +\mytempfalse +\if\ans q\mytemptrue\fi +\if\ans d\mytemptrue\fi +\if\ans g\mytemptrue\fi +\if\ans x\mytemptrue\fi +\if\ans y\mytemptrue\fi +\if\ans z\mytemptrue\fi +\beginoptiongroup{COLLECTION/PROCEEDINGS TITLES + (if quoted title)} + {\ifmytemp*\fi}% +\optdef{*}{bt-qq}{Quote collection and proceedings titles}{too} +\optdef{x}{}{Collection and proceedings titles not in quotes}{} +\getans +\endoptiongroup +\beginoptiongroup{CAPITALIZATION OF ARTICLE TITLE:}{} +\optdef{*}{}{Sentence style}{(capitalize first word and those in braces)} +\optdef{t}{atit-u}{Title style}{(just as in bib entry)} +\getans +\endoptiongroup + +\beginoptiongroup{ARTICLE TITLE PRESENT:}{} +\optdef{*}{}{Article title present}{in journals and proceedings} +\optdef{x}{jtit-x}{No article title}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Journal names} +% Abbreviated journal names normally contain periods; the periods may be +% removed with this option. In fact, only letters, numbers, and spacing are +% retained. +% \begin{macrocode} +\beginoptiongroup{JOURNAL NAMES:}{} +\optdef{*}{}{Periods in journal names}{are retained, as `Phys. Rev.'} +\optdef{x}{jxper}{Dotless journal names}{as `Phys Rev'} +\getans +\endoptiongroup +% \end{macrocode} +% Journal name is normally printed in italics; can be left in normal font. +% \begin{macrocode} +\beginoptiongroup{JOURNAL NAME FONT:}{} +\optdef{*}{}{Journal name italics}{} +\optdef{r}{jttl-rm}{Journal name normal}{font} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Title of Theses and Technical Reports} +% The title of a these (PhD or Master's) is normally treated the same +% as that of a book. Optionally, it may be formatted like that of +% an article. +% +% The title of a technical report is normally treated the same as that +% of an article. Optionally, it may be formatted like that of a book. +% +% \begin{macrocode} +\beginoptiongroup{THESIS TITLE:}{} +\optdef{*}{}{Thesis titles like books}{} +\optdef{a}{thtit-a}{Thesis title like article}{} +\optdef{x}{thtit-x}{No thesis title}{} +\getans +\endoptiongroup + +\beginoptiongroup{TECHNICAL REPORT TITLE:}{} +\optdef{*}{}{Tech. report title like articles}{} +\optdef{b}{trtit-b}{Tech. report title like books}{} +\getans +\endoptiongroup + +\beginoptiongroup{TECHNICAL REPORT NUMBER:}{} +\optdef{*}{}{Tech. report and number plain}{as `Tech. Rep. 123'} +\optdef{i}{trnum-it}{Tech. report and number italic}% + {as `{\string\it\space Tech. Rep. 123'}} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Journal reference} +% Great diversity of opinion exists as to how a journal reference is to be +% formatted. It consists of a volume, possibly a number, and page limits. +% The number is really only necessary if the page numbers within one volume +% start at 1 for each physical `number'. Since journals are often bound +% together in one volume later, it makes more sense to number the pages +% continuously through the whole volume. +% +% I am only aware of one journal that used to reset the pagination for each +% `number', in which case the number was part of the page designation. +% I had erroneously provided an option \texttt{vnum-pg} to achieve this, but I +% now realize that instead, for this one journal, the database entries must +% contain \texttt{pages="(2)33--2(55)"}. This option has been removed at +% version 3.84. +% +% A number of styles for journal specifications are +% \begin{quote} +% \begin{tabular}{l@{\qquad}l} +% 21(2):33--55 & 21, no.\ 2: 33--55\\ +% \textbf{21}(2):33--55 & \textbf{21}, \#2, 33--55\\ +% \textit{21}(2), 33--55 & \textit{21} (2); 33--55 \\ +% 21(2) (1995) 33--55 & 21(1995), 33-55\\ +% 21(2) 33--55 & vol.~21 (2), pp.~33--55 +% \end{tabular} +% \end{quote} +% +% Here both start and stop page numbers have been given; often only the +% start page is wanted. +% +% It is also possible to include the year as part of the journal specification, +% in which case the year is always in parentheses, attached snugly or with space +% to the volume, or preceding the pages. +% +% \begin{macrocode} +\beginoptiongroup{JOURNAL VOLUME:}{} +\optdef{*}{}{Volume plain}{as vol(num)} +\optdef{i}{vol-it}{Volume italic}{as {\string\em\space vol}(num)} +\optdef{b}{vol-bf}{Volume bold}{as {\string\bf\space vol}(num)} +\optdef{d}{vol-2bf}{Volume and number bold}{as {\string\bf\space vol(num)}} +\getans +\endoptiongroup +% \end{macrocode} +% +% The form of the `number' is also given: in parentheses, with `no.', +% with \#, or omitted. The \texttt{vnum-b} option is meant to be used +% with \texttt{jdt-v} and \texttt{jdt-vs} but could be used alone. +% \begin{macrocode} +\beginoptiongroup{JOURNAL VOL AND NUMBER:}{} +\optdef{*}{}{Journal vol(num)}{as 34(2)} +\optdef{s}{vnum-sp}{Journal vol (num)}{as 34 (2)} +\optdef{c}{vnum-cm}{Journal vol, num}{as 34, 2} +\optdef{n}{vnum-nr}{Journal vol, no. num}{as 34, no. 2} +\optdef{h}{vnum-h}{Journal vol, \string\# number}{as 34, \string\#2} +\optdef{b}{vnum-b}{Journal vol number}{as 34 2} +\optdef{x}{vnum-x}{Journal vol, without number}{as 34} +\getans +\endoptiongroup + +\beginoptiongroup{VOLUME PUNCTUATION:}{} +\optdef{*}{}{Volume with colon}{as vol(num):ppp} +\optdef{s}{volp-sp}{Volume with colon and space}{as vol(num): ppp} +\optdef{h}{volp-semi}{Volume with semi-colon}{as vol(num); ppp} +\optdef{c}{volp-com}{Volume with comma}{as vol(num), ppp} +\optdef{b}{volp-blk}{Volume with blank}{as vol(num) ppp} +\getans +\endoptiongroup + +\beginoptiongroup{YEAR IN JOURNAL SPECIFICATION:}{} +\optdef{*}{}{Journal year like others}{as given by date position} +\optdef{v}{jdt-v}{Journal vol(year)}{as 34(1995)} +\optdef{s}{jdt-vs}{Journal vol (year)}{as 34 (1995)} +\optdef{p}{jdt-p}{Year with pages}{as 34(2), (1995) 1345--1387} +\optdef{c}{jdt-pc}{Year, comma, pages}{as 34(2), (1995), 1345--1387} +\getans +\endoptiongroup + +\beginoptiongroup{PAGE NUMBERS:}{} +\optdef{*}{}{Start and stop page numbers}{given} +\optdef{f}{jpg-1}{Only start page number}{} +\getans +\endoptiongroup + +\beginoptiongroup{LARGE PAGE NUMBERS:}{} +\optdef{*}{}{No separators for large page numbers}{} +\optdef{c}{pgsep-c}{Comma inserted over 9999}{as 11,234} +\optdef{s}{pgsep-s}{Thin space inserted over 9999}{as 11 234} +\optdef{p}{pgsep-p}{Period inserted over 9999}{as 11.234} +\getans +\endoptiongroup + +\beginoptiongroup{WORD `PAGE' IN ARTICLES:}{} +\optdef{*}{}{Article pages numbers only}{as 234-256} +\optdef{p}{jwdpg}{Include `page' in articles}{as pp. 234--256} +\getans +\endoptiongroup +% \end{macrocode} +% +% Some journals want page numbers at the end, even for books, proceedings, as +% well as for journals. +% \begin{macrocode} +\beginoptiongroup{POSITION OF PAGES:}{} +\optdef{*}{}{Pages given mid text}{as is normal} +\optdef{e}{pp-last}{Pages at end}{but before any notes} +\getans +\endoptiongroup + +\beginoptiongroup{WORD `VOLUME' IN ARTICLES:}{} +\optdef{*}{}{Article volume as number only}{as 21} +\optdef{p}{jwdvol}{Include `volume' in articles}{as vol. 21} +\getans +\endoptiongroup +% \end{macrocode} +% +% Fiddle with the format and location of the number/series for collections and +% inproceedings. +% \begin{macrocode} +\beginoptiongroup{NUMBER AND SERIES FOR COLLECTIONS:}{} +\optdef{*}{num-xser}{Allows number without series}{and suppresses word "number"} +\optdef{s}{}{Standard BibTeX}{as: "number 123 in Total Works"; error if number and no series} +\getans +\endoptiongroup + +\beginoptiongroup{POSITION OF NUMBER AND SERIES:}{} +\optdef{*}{}{After chapter and pages}{as in standard BibTeX} +\optdef{t}{numser}{Just before publisher}{or organization} +\getans +\endoptiongroup +% \end{macrocode} +% +% Fiddle with the format and location of series and volume with books and collections. +% \begin{macrocode} +\beginoptiongroup{VOLUME AND SERIES FOR BOOKS/COLLECTIONS:}{} +\optdef{*}{}{Vol. 23 of Series}{as in standard BibTeX} +\optdef{s}{ser-vol}{Series, vol. 23}{} +\getans +\endoptiongroup + +\beginoptiongroup{POSITION OF VOLUME AND SERIES FOR INCOLLECTIONS:}{} +\optdef{*}{}{Series and volume after the editors}{} +\optdef{e}{ser-ed}{Series and volume after booktitle}{and before editors} +\getans +\endoptiongroup +% \end{macrocode} +% +% It is possible to decide whether the journal name should be +% separated from the following specifications with a blank or comma. +% \begin{macrocode} +\beginoptiongroup{JOURNAL NAME PUNCTUATION:}{} +\optdef{*}{}{Comma after journal}{name} +\optdef{x}{jnm-x}{Space after journal}{name} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Books} +% The title of a book (as opposed to an article in a book or journal) is +% normally italicized. This may be set to the regular font. +% +% The page numbers in books may be set in parentheses, as (pp.\ 345--350). +% \begin{macrocode} +\beginoptiongroup{BOOK TITLE:}{} +\optdef{*}{}{Book title italic}{(\string\em)} +\optdef{p}{btit-rm,bt-rm}{Book title plain}{(no font command)} +\getans +\endoptiongroup + +\beginoptiongroup{PAGES IN BOOKS:}{} +\optdef{*}{}{Pages in book plain}{as pp. 50-55} +\optdef{p}{bkpg-par}{Pages in book in parentheses}{as (pp. 50-55)} +\optdef{x}{bkpg-x}{Pages in book bare}{as 50-55} +\getans +\endoptiongroup +\beginoptiongroup{TOTAL PAGES OF A BOOK:}{} +\optdef{*}{}{Total book pages not printed}{} +\optdef{p}{pg-bk}{For book: 345 pages}{or pp.} +\optdef{a}{pg-bk,pg-pre}{Total book pages before publisher}{} +\getans +\endoptiongroup +% \end{macrocode} +% Some psychology journals wish to have the publisher's address preceding +% the name, separated by colon, as +% \begin{quote}New York: Wiley and Sons\end{quote} +% +% Some journals (e.g.\ Nature) put publisher in parentheses with date, +% as (Wiley and Sons, New York, 1983). These normally put the date in +% parentheses at the end anyway, so this is a merging of the two sets of +% parentheses. +% \begin{macrocode} +\beginoptiongroup{PUBLISHER ADDRESS:}{} +\optdef{*}{}{Publisher, address}{as Harcourt, New York} +\optdef{a}{add-pub}{Address: Publisher}{as New York: Harcourt} +\getans +\endoptiongroup + +\beginoptiongroup{PUBLISHER IN PARENTHESES:}{} +\optdef{*}{}{Publisher as normal block}{without parentheses} +\optdef{p}{pub-par}{Publisher in parentheses}{} +\optdef{d}{pub-date}{Publisher and date in parentheses}{(Oxford, 1994)} +\optdef{c}{pub-date,pub-xc}{Publisher and date in parentheses, no comma}{(Oxford 1994)} +\optdef{f}{pub-date,pub-xpar}{Publisher and date without parentheses}{Oxford, 1994} +\optdef{k}{pub-date,pub-xpar,pub-xc}{Publisher and date, no parentheses, no comma}{Oxford 1994} +\getans +\endoptiongroup + +\beginoptiongroup{PUBLISHER POSITION:}{} +\optdef{*}{}{Publisher after chapter, pages}{} +\optdef{p}{pre-pub}{Publisher before chapter, pages}{} +\optdef{e}{pre-edn}{Publisher after edition}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{ISBN, ISSN, DOI numbers} +% Books normally possess an ISBN number. This may be included as an +% optional entry for \texttt{book}, \texttt{inbook}, \texttt{booklet}, +% \texttt{incollection}, \texttt{proceedings}, \texttt{inproceedings}. +% However, it should be suppressed for \texttt{inbook} etc.\ when +% there is a crossref to another book with the ISBN number. +% +% Periodicals contain an ISSN number. Add this to \texttt{article}, or +% course, but also to \texttt{inproceedings} and \texttt{proceedings}, since +% they are sometimes printed in a periodical. +% +% Journal articles that appear online are given a DOI number, something more +% robust than a URL that can change as machines are upgraded. +% The American Geophysical Union (AGU) uses the DOI as part of the +% page number substitution for electronic journals, placing the number +% where the pages would normally appear. +% \begin{macrocode} +\beginoptiongroup{ISBN NUMBER:}{} +\optdef{*}{isbn}{Include ISBN}{for books, booklets, etc.} +\optdef{x}{}{No ISBN}{} +\getans +\endoptiongroup + +\beginoptiongroup{ISSN NUMBER:}{} +\optdef{*}{issn}{Include ISSN}{for periodicals} +\optdef{x}{}{No ISSN}{} +\getans +\endoptiongroup + +\beginoptiongroup{DOI NUMBER:}{} +\optdef{*}{doi}{Include DOI}{as "doi: number"} +\optdef{u}{url-doi}{Format DOI as URL //doi.org/doi}{(must give url options!)} +\optdef{a}{agu-doi,doi}{Insert DOI AGU style}{as part of page number} +\optdef{x}{}{No DOI}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Editor of book without author} +% +% This is normally +% \begin{quote} +% J. K. James, editor +% \end{quote} +% but may also be +% \begin{quote} +% J. K. James, (editor)\\ +% J. K. James (editor), +% \end{quote} +% Alternatively, the word \textsl{editor} may be capitalized and/or +% abbreviated. +% +% \begin{macrocode} +\beginoptiongroup{`EDITOR' AFTER NAMES (EDITED BOOKS WITHOUT AUTHORS):}{} +\optdef{*}{}{Word `editor' after name}{} +\optdef{a}{edpar}{`Name (editor),'}{in parentheses, after name, comma after} +\optdef{b}{edpar,bkedcap}{`Name (Editor),'}{as above, editor upper case} +\optdef{c}{edparc}{`Name, (editor)'}{in parentheses, after name, comma between} +\optdef{d}{edparc,bkedcap}{`Name, (Editor)'}{as above, editor upper case} +\optdef{e}{edparxc}{`Name (editor)'}{in parentheses, after name, no commas} +\optdef{f}{edparxc,bkedcap}{`Name (Editor)'}{as above, editor upper case} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Edited by} +% For an article within an edited collection, the normal form is +% \begin{quote} +% In J. K. James, editor, \emph{Title of Collection} \dots +% \end{quote} +% Alternative forms are +% \begin{quote} +% In J. K. James (editor), \emph{Title} \dots\\ +% In \emph{Title}, edited by J. K. James \dots\\ +% In \emph{Title} (Edited by J. K. James) \dots +% \end{quote} +% If none of the \texttt{edby} variations is used, then the same system is +% used as for edited books, i.e. \texttt{edpar} applies. +% \begin{macrocode} +\beginoptiongroup{EDITOR IN COLLECTIONS:}{} +\optdef{*}{}{Same as for edited book}{(names before booktitle)} +\optdef{b}{edby}{In booktitle, edited by .. }{(where .. is names)} +\optdef{p}{edby-par}{In booktitle (edited by ..)}{} +\optdef{c}{edby-parc}{In booktitle, (edited by ..)}{} +\optdef{e}{edby,edbyx}{In booktitle, editor ..}{} +\optdef{f}{edby,edbyw}{In booktitle, (editor) ..}{} +\optdef{k}{edby-par,edbyx}{In booktitle (editor..)}{} +\optdef{g}{edby-parc,edbyx}{In booktitle, (editor..)}{} +\optdef{j}{edby,edbyy}{In booktitle, .., editor}{} +\optdef{m}{edby-par,edbyy}{In booktitle (.., editor)}{} +\getans +\endoptiongroup +\mytempfalse +\if\ans p\mytemptrue\fi +\if\ans k\mytemptrue\fi +\if\ans c\mytemptrue\fi +\if\ans f\mytemptrue\fi +\beginoptiongroup{CAPITALIZE `EDITOR' OR `EDITED BY' + (if editor capitalizable)} + {\ifmytemp*\fi}% +\optdef{*}{}{`(editor,..)' or `(edited by..)'}{in lower case} +\optdef{c}{edcap}{`(Editor,..)' or `(Edited by..)'}{in upper case} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Block punctuation} +% Blocks are logical sections of the reference specification, such as the +% author block, the journal block, editor block, etc. These are normally +% separated by periods, but alternatively a comma may be used. Another +% choice is to use commas except after titles where a period is given. +% +% \LaTeX\ offers an \texttt{openbib} option, which means that the blocks +% are not only new sentences, but new lines as well. This can only +% function when the default option here is taken, for then the command +% |\newblock| is placed between the blocks. This command is normally +% defined to do nothing, but \LaTeX\ redefines it to issue a new line +% when open bibliographies are wanted. +% \begin{macrocode} +\beginoptiongroup{PUNCTUATION BETWEEN SECTIONS (BLOCKS):}{} +\optdef{*}{}{\string\newblock\space after blocks} + {(periods or new lines with openbib option)} +\optdef{c}{blk-com}{Comma between blocks}{} +\optdef{s}{blk-com,com-semi}{Semi-colon between blocks}{} +\optdef{b}{blk-com,com-blank}{Blanks between blocks}{} +\optdef{t}{blk-tit}{Period after titles of articles, books, etc}{else commas} +\optdef{u}{blk-tit,tit-col}{Colon after titles of articles, books, etc}{else commas} +\optdef{a}{blk-tita}{Period after titles of articles}{else commas} +\optdef{d}{blk-tita,tit-col}{Colon after titles of articles}{else commas} +\getans +\endoptiongroup +\mytempfalse +\if\ans c\mytemptrue\fi +\if\ans s\mytemptrue\fi +\if\ans b\mytemptrue\fi +\if\ans t\mytemptrue\fi +\if\ans a\mytemptrue\fi +\beginoptiongroup{PUNCTUATION BEFORE NOTES + (if not using \string\newblock)} + {\ifmytemp*\fi}% +\optdef{*}{}{Notes have regular punctuation}{like all other blocks} +\optdef{p}{blknt}{Notes preceded by period}{} +\getans +\endoptiongroup +\beginoptiongroup{PUNCTUATION AFTER AUTHORS:}{} +\optdef{*}{}{Author block normal}{with regular block punctuation} +\optdef{c}{au-col}{Author block with colon}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{\textsl{In} with colon} +% When referring to works in a collection, one begins the block describing +% that collection with \textsl{In}. Optionally, one may add a colon. +% \begin{macrocode} +\beginoptiongroup{PUNCTUATION AFTER `IN':}{} +\optdef{*}{}{Space after `in'}{for incollection or inproceedings} +\optdef{c}{in-col}{Colon after `in'}{(as `In: ...')} +\optdef{i}{in-it}{Italic `in'}{and space} +\optdef{d}{in-col,in-it}{Italic `in' and colon}{} +\optdef{x}{in-x}{No word `in'}{for edited works} +\getans +\endoptiongroup +\beginoptiongroup{`IN' WITH JOURNAL NAMES + (if using 'in' with collections)} + {\if\ans x\else*\fi} +\optdef{*}{}{No `in' before journal name}{} +\optdef{i}{injnl}{Add `in' before journal name}{in style for incollection} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Final punctuation} +% The punctuation at the end of the reference is normally a period. This +% may be suppressed. +% \begin{macrocode} +\beginoptiongroup{FINAL PUNCTUATION:}{} +\optdef{*}{}{Period at very end}{of the listed reference} +\optdef{x}{fin-bare}{No period at end}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Abbreviations} +% A number of words may be abbreviated: pages, editors, volume, chapter, +% and so on. The first two may be independently set to abbreviation, the +% rest with a single option. +% +% Additionally, the edition numbers may be +% output as words (first, second, etc.) or as numbers (1st, 2nd, etc.). +% (Recall that the input in the \texttt{.bib} file is always as English +% words.) +% \begin{macrocode} +\beginoptiongroup{ABBREVIATE WORD `PAGES' + (if not using external language file)} + {\if!\cfile!\relax*\fi}% +\optdef{*}{}{`Page(s)'}{(no abbreviation)} +\optdef{a}{pp}{`Page' abbreviated}{as p. or pp.} +\optdef{x}{ppx}{`Page' omitted}{} +\getans +\beginoptiongroup{ABBREVIATE WORD `EDITORS':}{} +\optdef{*}{}{`Editor(s)'}{(no abbreviation)} +\optdef{a}{ed}{`Editor' abbreviated}{as ed. or eds.} +\getans +\endoptiongroup + +\beginoptiongroup{OTHER ABBREVIATIONS:}{} +\optdef{*}{}{No abbreviations}{of volume, edition, chapter, etc} +\optdef{a}{abr}{Abbreviations}{of such words} +\getans +\endoptiongroup +\beginoptiongroup{ABBREVIATION FOR `EDITION' + (if abbreviating words)} + {\if\ans a*\fi}% +\optdef{*}{}{`Edition' abbreviated as `edn'}{} +\optdef{a}{ednx}{`Edition' abbreviated as `ed'}{} +\getans +\beginoptiongroup{MONTHS WITH DOTS:}{} +\optdef{*}{}{Months with dots}{as Jan.} +\optdef{x}{mth-bare}{Months without dots}{as Feb Mar} +\getans +\endoptiongroup +\endoptiongroup +\beginoptiongroup{EDITION NUMBERS:}{} +\optdef{*}{xedn}{Editions as in database}{saving much processing memory} +\optdef{w}{}{Write out editions}{as first, second, third, etc} +\optdef{n}{ord}{Numerical editions}{as 1st, 2nd, 3rd, etc} +\getans +\endoptiongroup +\endoptiongroup +% \end{macrocode} +% +% The above choices about abbreviations are made only if the internal +% languages are taken (English or \texttt{babel}). For an external language +% definition file, these choices, along with possible other ones, are made +% in the external file, which is read in at this point. +% \begin{macrocode} +\umes{Reading external language file \string\cfile=\cfile}% +\if!\cfile!\relax\else + \input\cfile +\fi +% \end{macrocode} +% +% This file contains the standard set of stored journal names present in +% the basic bibliography style files. If other files containing journal +% names are to be included, they may only contain the options \texttt{jabr} +% or \texttt{jaa} since these options are selected here. No option +% menus from the journal-name files will be read in. +% \begin{macrocode} +\beginoptiongroup{STORED JOURNAL NAMES:}{} +\optdef{*}{}{Full journal names}{for prestored journals} +\optdef{a}{jabr}{Abbreviated journal names}{} +\optdef{s}{jabr,jaa}{Abbreviated with astronomy shorthands}{like ApJ and AJ} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Variations on \textsl{and}} +% It is possible to replace the word \textsl{and} with an ampersand \&, and to +% specify whether a comma is to precede \textsl{and} in a list of more than two +% names. +% +% A variable \textsl{and} may be provided for with the command |\BIBand| +% in place of the word. In this case, the command must be defined in the +% document file or some other package called. (This is intended for situations +% where an ampersand is wanted in parenthetical citations, but the word in +% textual ones.) +% +% \begin{macrocode} +\beginoptiongroup{AMPERSAND:}{} +\optdef{*}{}{Use word `and'}{in author lists} +\optdef{a}{amper}{Use ampersand}{in place of `and'} +\optdef{v}{varand}{Use \string\BIBand}{in place of `and'} +\getans +\endoptiongroup + +\beginoptiongroup{COMMA BEFORE `AND':}{} +\optdef{*}{}{Comma before `and'}{as `Tom, Dick, and Harry'} +\optdef{n}{and-xcom}{No comma before `and'}{as `Tom, Dick and Harry'} +\optdef{c}{and-com}{Comma even with 2 authors}{as `Tom, and Harry'} +\getans +\endoptiongroup +\beginoptiongroup{COMMA BEFORE `AND' EVEN FOR COLLECTION EDITORS + (if using comma before `and' with authors)} + {\if\ans c*\fi}% +\optdef{*}{and-com-ed}{Comma with 2 editors}{in collections} +\optdef{x}{}{Two editors without comma}{as `Tom and Harry'} +\getans +\endoptiongroup +\beginoptiongroup{NO `AND' IN REFERENCE LIST:}{} +\optdef{*}{}{With `and'}{before last author in reference list} +\optdef{x}{xand}{No `and'}{as `Tom, Dick, Harry'} +\getans +\endoptiongroup + +\beginoptiongroup{COMMA BEFORE `ET AL':}{} +\optdef{*}{}{Comma before `et al'}{in reference list} +\optdef{x}{etal-xc}{No comma before `et al'}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Font of \textsl{et al}} +% One can chose that \textsl{et~al.}\ be put into italics. +% Or, if the authors are in a different font from the regular one, the +% \textsl{et~al.}\ can still be Roman. +% \begin{macrocode} +\beginoptiongroup{FONT OF `ET AL':}{} +\optdef{*}{}{Plain et al}{} +\optdef{i}{etal-it}{Italic et al}{} +\optdef{r}{etal-rm}{Roman et al}{even when authors something else} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Additional Data Fields}\label{sec:revtex} +% The American Physical Society's REV\TeX\ package contains \btx\ support +% with a \texttt{bst} file generated from a variant of +% \texttt{\filename}. The extra fields are also available here. +% \begin{itemize} +% \item \textbf{collaboration}: A collaboration name associated with a +% reference. +% \item \textbf{eprint}: The e-print citation for the reference (Los Alamos +% or otherwise). E-print numbers can be turned into hyperlinks to the +% online article. The output is\\ +% \hspace*{2em}|\eprint{|\textit{eprint-spec}|}| +% \item \textbf{archive}: is an optional argument for |\eprint|, as\\ +% \hspace*{2em}|\eprint[|\textit{archive-des}|]{|\textit{eprint-spec}|}|\\ +% The \textit{archive-des} is some code such as \texttt{arXiv} that is +% translated to a base URL by a class or package file. The default definition +% of |\eprint| ignores \textit{archive-des} and prints \textit{eprint-spec} +% as a URL. +% \item \textbf{url}: A URL associated with the reference. Can be turned +% into a hyperlink. +% \end{itemize} +% +% A collaboration appears as part of the author list and the other two +% appear at the end of the citaton. The URL field can be selected +% independently of this option. +% +% In addition there are new fields for journals like Phys.\ Rev.~D that +% no longer use page numbers. +% \begin{itemize} +% \item \textbf{eid}: Electronic article identifier. +% \item \textbf{numpages}: Number of pages in an article. For use in +% conjunction with the \textbf{eid} field when page counts are +% desired. Deprecated when submitting to Phys.\ Rev. +% +% The \texttt{eprint} (with \texttt{archive}) and \texttt{url} fields may be +% included independently of the other REV\TeX\ fields. +% +% The \texttt{eid} field is now always included, although it is optional for +% the bibliography entries. This electronic identifier is a replacement for the +% page number in electronic journals: it is the sequence number in the printed +% volume. If present, it will be used in place of the page number. +% +% \end{itemize} +% +% \begin{macrocode} +\beginoptiongroup{ADDITIONAL REVTeX DATA FIELDS:}{} +\optdef{*}{}{No additional fields}{for REVTeX} +\optdef{r}{revdata,eprint,url,url-blk}{Include REVTeX data fields} + {collaboration, eid, eprint, archive, numpages, url} +\getans +\mytemptrue +\if\ans r\mytempfalse\fi +\beginoptiongroup{E-PRINT DATA FIELD: +(without REVTeX fields)} +{\ifmytemp*\fi} +\optdef{*}{}{Do not include eprint field}{} +\optdef{e}{eprint}{Include eprint and archive fields}{for electronic publications} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{URL address} +% For electronic documents with an Internet address, add a URL entry. +% Harvard already has this, but here it is done for all styles. +% The URL text will be set with the \verb!\url! command in the \texttt{url} +% package by Donald Arseneau. This package must be loaded for the command +% to work right. It allows line breaks at punctuations. Otherwise, +% \verb!\texttt! is used instead, with no line breaks. The URL text is preceded +% by \verb!\urlprefix! which defaults to ``URL '' but may be redefined by the +% user to be whatever s/he wants. The final space must be included. +% +% Note: selecting the REV\TeX\ fields automatically includes this, so the +% offer only is made if REV\TeX\ has been rejected. +% +% \begin{macrocode} +\beginoptiongroup{URL ADDRESS: +(without REVTeX fields)}{\ifmytemp*\fi} +\optdef{*}{}{No URL}{for electronic (Internet) documents} +\optdef{u}{url,url-blk}{Include URL}{as regular item block} +\optdef{n}{url,url-nt}{URL as note}{} +\optdef{l}{url,url-nl}{URL on new line}{after rest of reference} +\getans +\endoptiongroup +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Reference Component Tagging} +% If reference component tagging is enabled, we +% apply tags like |\bibinfo| and |\eprint| to the fields of data +% in the content of the |\bibitem| statement. We also ensure that +% these commands have a default meaning within the scope of the |thebibliography| +% environment. The default definitions simply print the field and ignore the +% tag. However, other programs or packages might make use of the tag +% information to separate authors from title, for example. +% +% \begin{macrocode} +\beginoptiongroup{REFERENCE COMPONENT TAGS:}{} +\optdef{*}{}{No reference component tags} + {in the \string\bibitem\space entries} +\optdef{b}{bibinfo}{Reference component tags} + {like \string\bibinfo\space in the content of \string\bibitem} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Define emphasis} +% In everything that been mentioned so far, italicization should be +% understood to mean `emphasize' in the \LaTeX{} sense. This means that the +% command |\em| is used. This is not the same as |\it|, which is always +% italics. Rather, with |\em|, the font style switches between |\rm| and +% |\it| depending on the context. Here one may choose to true italics, or +% to switch off italics altogether. +% \begin{macrocode} +\beginoptiongroup{EMPHASIS: + (affects all so-called italics)}{} +\optdef{*}{}{Use emphasis}{ie, \string\em, allows font switching} +\optdef{i}{em-it}{Use true italics}{ie, \string\it, absolute italics} +\optdef{x}{em-x}{No italics}{at all} +\optdef{u}{em-ul}{Underlining}{in place of italics, best with ulem package} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Plain \TeX\ compatibility} +% Bold face, italics, and emphasis are made with the \LaTeXe\ commands, +% which makes them incompatible with the obsolete \LaTeX2.09, and with +% Plain \TeX. There are also some extra testing for existing commands +% that best work with \LaTeXe\ syntax. +% +% If the bibliography style file is to be fully compatible with Plain \TeX, +% do not select the option \texttt{nfss} but do take \texttt{plntx}. +% \begin{macrocode} +\beginoptiongroup{COMPATIBILITY WITH PLAIN TEX:}{} +\optdef{*}{nfss}{Use LaTeX commands}{which may not work with Plain TeX} +\optdef{t}{plntx}{Use only Plain TeX}{commands for fonts and testing} +\getans +\endoptiongroup +% \end{macrocode} +% +% Terminate the options list. If a language definition file has been called, +% then we have a closing brace too many, so add another dummy opening brace. +% \begin{macrocode} +\if!\cfile\jfile!\else +\begingroup\MBswitch +\wr(,{\pc) +\endgroup +\fi + +\endoptions +%</options> +% \end{macrocode} +% +% \section{The Bibliographic Coding} +% +% \begin{macrocode} +%<*!options&!driver&!bblbst> +%<*!tail> + % For use with BibTeX version 0.99a or later + % ------------------------------------------------------------------- +%<*(!nmft&(nmft-it|nmft-sc|nmft-bf|nmft-def))|(!lab&(lab-it|lab-bf|lab-sc|lab-def))> + % WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING + % The input dbj file contains one of the options +%<nmft-it|nmft-sc|nmft-bf|nmft-def> % nmft-it, nmft-bf, nmft-sc, or nmft-def +%<lab-it|lab-sc|lab-bf|lab-def> % lab-it, lab-bf, lab-sc, or lab-def + % without the corresponding general option(s): +%<nmft-it|nmft-sc|nmft-bf|nmft-def> % nmft +%<lab-it|lab-sc|lab-bf|lab-def> % lab + % (You may be using an older dbj with a newer version of merlin.mbs) + % Please edit your dbj file to add the general option(s) and reprocess. + % +%</(!nmft&(nmft-it|nmft-sc|nmft-bf|nmft-def))|(!lab&(lab-it|lab-bf|lab-sc|lab-def))> +%<*!exlang> +%<!babel> % This bibliography style file is intended for texts in ENGLISH +%<*babel> + % This bibliography style file requires a file named francaisbst.tex + % containing the definitions of word commands like \bbleditor, etc. +%</babel> +%</!exlang> +%<*exlang> + % This bibliography style file is intended for texts in +%<bahasa> % BAHASA +%<brazilian> % BRAZILIAN +%<catalan> % CATALAN +%<croatian> % CROATIAN +%<czech> % CZECH +%<danish> % DANISH +%<dansk> % DANSK +%<dutch> % DUTCH +%<english> % ENGLISH +%<esperanto> % ESPERANTO +%<finnish> % FINNISH +%<french> % FRENCH +%<galacian> % GALACIAN +%<german> % GERMAN +%<hungarian> % HUNGARIAN +%<italian> % ITALIAN +%<norwegian> % NORWEGIAN +%<norsk> % NORWEGIAN +%<polski> % POLISH +%<polish> % POLISH +%<portuguese> % PORTUGUESE +%<romanian> % ROMANIAN +%<russian> % RUSSIAN +%<slovak> % SLOVAK +%<slovenian> % SLOVENIAN +%<slovene> % SLOVENIAN +%<spanish> % SPANISH +%<swedish> % SWEDISH +%<turkish> % TURKISH +%</exlang> +%<*!html> +%<*ay> + % This is an author-year citation style bibliography. As such, it is + % non-standard LaTeX, and requires a special package file to function properly. + % Such a package is natbib.sty by Patrick W. Daly +%<*alk> + % or: apalike.sty by Oren Patashnik + % The form of the \bibitem entries is + % \bibitem[Jones et al., 1990]{key}... +%</alk> +%<*!(har|ast|alk|cay|nmd|cn)> + % The form of the \bibitem entries is + % \bibitem[Jones et al.(1990)]{key}... +%<nat> % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}... + % The essential feature is that the label (the 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! +%<nat> % With natbib v5.3, a full list of authors may also follow the year. + % In natbib.sty, it is possible to define the type of enclosures that is + % really wanted (brackets or parentheses), but in either case, there must + % be parentheses in the label. + % The \cite command functions as follows: + % \citet{key} ==>> Jones et al. (1990) +%<nat> % \citet*{key} ==>> Jones, Baker, and Smith (1990) + % \citep{key} ==>> (Jones et al., 1990) +%<nat> % \citep*{key} ==>> (Jones, Baker, and Smith, 1990) + % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2) + % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990) + % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., 1990, p. 32) + % \citeauthor{key} ==>> Jones et al. +%<nat> % \citeauthor*{key} ==>> Jones, Baker, and Smith + % \citeyear{key} ==>> 1990 +%</!(har|ast|alk|cay|nmd|cn)> +%<*har> + % or: harvard.sty by Peter Williams and Thorsten Schnier +%<harnm> % (needs natbib v5.3 or harvard v2.0.3) + % The form of the bibitem entries is + % \harvarditem[Jones et al.]{Jones, Baker, and Smith}{1990}{key}... +%</har> +%<*cay> + % or: chicago.sty + % The form of the bibitem entries is + % \bibitem[\protect\citeauthoryear{Jones, Baker, and Smith} + % {Jones et al.}{1990}{key}... +%</cay> +%<*nmd> + % or: named.sty + % The form of the bibitem entries is + % \bibitem[\protect\citeauthoryear{Jones et al.}{1990}]{key}... +%</nmd> +%<*ast> + % or: astron.sty + % The form of the bibitem entries is + % \bibitem[\protect\astroncite{Jones et al.}{1990}]{key}... +%</ast> +%<*cn> + % or: authordate1-4.sty + % The form of the bibitem entries is + % \bibitem[\protect\citename{Jones et al.}1990]{key}... +%</cn> +%</ay> +%<*!ay> +%<*!alph&!cite> + % This is a numerical citation style, and as such is standard LaTeX. +%</!alph&!cite> +%<*alph> + % This is a labelled citation style similar to the standard alpha.bst, + % where labels are of the form Dal90 or DBK89. +%</alph> +%<*cite&!alph> + % This is a special pseudo-numerical bibliography style, intended to be + % used to list all the entries in a bib database +%</cite&!alph> + % It requires no extra package to interface to the main text. + % The form of the \bibitem entries is +%<!alph&!cite> % \bibitem{key}... +%<alph> % \bibitem[label]{key}... +%<!alph&cite> % \bibitem[key]{key}... +%<*!cite|alph> + % Usage of \cite is as follows: +%<*!alph&!cite> + % \cite{key} ==>> [#] + % \cite[chap. 2]{key} ==>> [#, chap. 2] + % where # is a number determined by the ordering in the reference list. +%</!alph&!cite> +%<*alph> + % \cite{key} ==>> [label] + % \cite[chap. 2]{key} ==>> [label, chap. 2] + % The order in the reference list is by label. +%</alph> +%<*seq-no&!alph> + % The order in the reference list is that by which the works were originally + % cited in the text, or that in the database. +%</seq-no&!alph> +%<*!seq-no&!alph> + % The order in the reference list is alphabetical by authors. +%</!seq-no&!alph> +%</!cite|alph> +%</!ay> +%</!html> +%<*html> + % This bibliographic style file produces HTML output instead of LaTeX. + % The LaTeX special characters are not translated, so that the output + % (which has the .bbl ending still) will have to be further massaged, + % and renamed with .html or .htm. The title and heading may also need + % to be revised. + % +%<htlist&!htdes> % The output is a numbered list. +%<htdes> % The output is an unnumbered list with the keys printed +%<htdes> % before each entry. +%<!htlist&!htdes> % The output is lists each entry as one paragraph. +%</html> + % ------------------------------------------------------------------- + +% \end{macrocode} +% +% \begin{macro}{`ENTRY'} +% The new \texttt{harvard.sty} of \LaTeXe{} includes an entry URL, or +% rather it is included in the new \texttt{.bst} files for it. Add it +% here too, but only for option \texttt{harnm}. +% +% Books normally have an ISBN number. +% This entry is (optionally) included, modelled after that in +% \texttt{xbtxbst.doc}. +% \begin{macrocode} +ENTRY + { address +%<annote> annote +%<eprint> archive + author + booktitle + chapter +%<revdata> collaboration +%<doi|url-doi> doi + edition + editor + eid +%<eprint> eprint + howpublished + institution +%<isbn> isbn +%<issn> issn + journal + key +%<lang> language + month + note + number +%<revdata> numpages + organization + pages + publisher + school + series + title + type +%<url|harnm|revdata> url + volume + year + } + {} +%<!ay&!alph> { label } +%<!ay&alph> { label extra.label sort.label } +%<ay> { label extra.label sort.label short.list } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +% \end{macrocode} +% +% \begin{macro}{`init.state.consts'} +% \begin{macrocode} +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} +% \end{macrocode} +% \end{macro} +% +% |s| and |t| are general-purpose scratch registers whose value does not persist +% past the end of a function. They also do not appear to be used to communicate +% between functions or to be clobbered within a sub-function call. Hopefully. +% \begin{macrocode} +STRINGS { s t} +% \end{macrocode} +% +% \begin{macro}{`output.nonnull'} +% \begin{macrocode} +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = +%<!blk-com|(!com-semi&!com-blank)> { ", " * write$ } +%<blk-com&com-semi> { "; " * write$ } +%<blk-com&!com-semi&com-blank> { " " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ +%<!html> "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`output'} +% \begin{macrocode} +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`output.check'} +% \begin{macrocode} +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`fin.entry'} +% I have often been asked to add an annotation function. This suggestion is +% from Soren Dayton; it inputs a file with the same name as the cite key, or +% uses the text in the \texttt{annote} field. It will only work with \LaTeXe. +% \begin{macrocode} +FUNCTION {fin.entry} +%<*!fin-bare> +{ add.period$ + write$ +%</!fin-bare> +%<*fin-bare> +{ duplicate$ empty$ + 'pop$ + 'write$ + if$ +%</fin-bare> +%<html&htdes> "</dd>" write$ +%<html&!htdes&htlist> "</li>" write$ +%<html&!htdes&!htlist> "</p>" write$ + newline$ +%<*annote> +%<*!html> + annote missing$ + { "\bibAnnoteFile{" cite$ * "}" * write$ newline$ } + { "\bibAnnote{" cite$ * "}{" * annote * "}" * write$ newline$ + } + if$ +%</!html> +%<*html> + "<blockquote><strong>Key:</strong> " + cite$ * write$ + annote missing$ + { newline$ } + { "<br><strong>Annotation:</strong>" write$ newline$ + annote write$ newline$ + } + if$ + "</blockquote>" write$ newline$ +%</html> +%</annote> +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`new.block'} +% \begin{macrocode} +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`new.sentence'} +% \begin{macrocode} +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`add.blank'} +% When text is printed with \texttt{output} or +% \texttt{output.check}, the \texttt{output.state} is set such that +% a comma will precede the next output text. For special effects, we want to +% suppress this comma, inserting a blank instead. Hence the +% \texttt{output.state} is changed to \texttt{before.all}, meaning no +% punctuation is to be inserted. +% \begin{macrocode} +FUNCTION {add.blank} +{ " " * before.all 'output.state := +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`add.colon'} +% \begin{macrocode} +%<*au-col|tit-col> +FUNCTION {add.colon} +{ duplicate$ empty$ + 'skip$ + { ":" * add.blank } + if$ +} + +%</au-col|tit-col> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`no.blank.or.punct'} +% Another frill is to suppresss both blanks and punctuation. The |\hspace| +% permits a line break at this point. +% \begin{macrocode} +%<*yrpp-xsp> +FUNCTION {no.blank.or.punct} +%<*!html> +{ "\hspace{0pt}" * before.all 'output.state := +} +%</!html> +%<html>{ before.all 'output.state := } + +%</yrpp-xsp> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`date.block'} +% The \texttt{date.block} function is used for special punctuating effects +% after the date. +% \begin{macrocode} +FUNCTION {date.block} +{ +%<*!yrp-x> +%<yrp-col> ":" * +%<*!yrp-col> +%<yrp-semi> ";" * +%<*!yrp-semi> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&!yrp-per> skip$ +%<(blk-com|blk-tit|blk-tita)&yrp-per> new.sentence +%</!yrp-semi> +%</!yrp-col> +%</!yrp-x> +%<*yrp-x|yrp-col|yrp-semi> +%<!yrpp-xsp> add.blank +%<yrpp-xsp> no.blank.or.punct +%</yrp-x|yrp-col|yrp-semi> +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`not'} +% \begin{macrocode} +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`and'} +% \begin{macrocode} +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`or'} +% \begin{macrocode} +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`non.stop'} +% This function (my invention) tests if the last character in the string +% on the stack is \texttt{. ! ?} by using \texttt{add.period\$}. It is to +% be used for conditional italic correction or adding commas. +% \begin{macrocode} +%<*!tit-it&tit-qq> +FUNCTION {non.stop} +{ duplicate$ + "}" * add.period$ + #-1 #1 substring$ "." = +} + +%</!tit-it&tit-qq> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`remove.dots'} +% This macro removes any periods from the string on the stack. To be used +% for undotting journal names, months, and juniors. Previously +% \texttt{purify\$} was used for this, but that removes more than just +% dots. +% +% May 2007, Joseph A. Wright (Morning Star, UK) contributed a revision to allow +% the dot accent |\.| to be retained. +% \begin{macrocode} +%<*nm-rv|nm-rvx|nm-rvcx|mth-bare|jxper> +STRINGS {z} + +FUNCTION {remove.dots} +{ 'z := + "" + { z empty$ not } + { z #1 #2 substring$ + duplicate$ "\." = + { z #3 global.max$ substring$ 'z := * } + { pop$ + z #1 #1 substring$ + z #2 global.max$ substring$ 'z := + duplicate$ "." = 'pop$ + { * } + if$ + } + if$ + } + while$ +} +%</nm-rv|nm-rvx|nm-rvcx|mth-bare|jxper> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`new.block.checka'} +% \begin{macrocode} +%<*!ay> +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} +%</!ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`new.block.checkb'} +% \begin{macrocode} +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`new.sentence.checka'} +% \begin{macrocode} +%<*!ay> +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} +%</!ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`new.sentence.checkb'} +% \begin{macrocode} +%<*!ay> +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} +%</!ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`field.or.null'} +% \begin{macrocode} +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`emphasize'} +% Emphasis can be either italic or the alternating font. The font command +% may be NFSS or regular \LaTeX~2.09 declarations. +% \begin{macrocode} +FUNCTION {emphasize} +%<*!em-x> +{ duplicate$ empty$ + { pop$ "" } +%<html> { "<i>" swap$ * "</i>" * } +%<*!html> +%<em-ul> { "\uline{" swap$ * "}" * } +%<*!em-ul> +%<*!nfss> +%<!em-it> { "{\em " swap$ * "\/}" * } +%<em-it> { "{\it " swap$ * "\/}" * } +%</!nfss> +%<*nfss> +%<!em-it> { "\emph{" swap$ * "}" * } +%<em-it> { "\textit{" swap$ * "}" * } +%</nfss> +%</!em-ul> +%</!html> + if$ +} +%</!em-x> +%<em-x>{ skip$ } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`bolden'} +% The bold font command may be NFSS or the regular \LaTeX~2.09 declaration. +% \begin{macrocode} +%<*nmft-bf|vol-bf|vol-2bf|lab-bf|dtbf|pres-bf> +FUNCTION {bolden} +{ duplicate$ empty$ + { pop$ "" } +%<html> { "<b>" swap$ * "</b>" * } +%<*!html> +%<!nfss> { "{\bf " swap$ * "}" * } +%<nfss> { "\textbf{" swap$ * "}" * } +%</!html> + if$ +} +%</nmft-bf|vol-bf|vol-2bf|lab-bf|dtbf|pres-bf> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`scaps'} +% To put text into small caps. +% \begin{macrocode} +%<*lab-sc|nmft-sc|pres-sc> +FUNCTION {scaps} +{ duplicate$ empty$ + { pop$ "" } +%<html> { skip$ } +%<*!html> +%<!nfss> { "{\sc " swap$ * "}" * } +%<nfss> { "\textsc{" swap$ * "}" * } +%</!html> + if$ +} +%</lab-sc|nmft-sc|pres-sc> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`bib.name.font'} +% \begin{macro}{`bib.fname.font'} +% \begin{macro}{`cite.name.font'} +% Define functions for formatting the author/editor names, one for the +% surnames (\texttt{bib.name.font}) and one for the first names +% (\texttt{bib.fname.font}). These could be identical, or the latter is +% deactivated if first names are not to be formatted, only the last names. +% +% For citations, we have \texttt{cite.name.font}. Here only surnames appear. +% +% It is also possible to have a user-defined font command for each, which the +% user must define in his work. These are |\bibnamefont{}| and |\bibfnamefont{}|, +% and some defaults are provided that simply repeat the arguments. Two commands +% are needed if \texttt{nmft-def} and \texttt{fnm-def} are both given. +% +% If neither \texttt{fnm-def} nor \texttt{fnm-rm} are given, then the first names +% are formatted the same as the surnames. +% \begin{macrocode} +%<*nmft> +FUNCTION {bib.name.font} +%<nmft-it>{ emphasize } +%<!nmft-it&nmft-bf>{ bolden } +%<!nmft-it&!nmft-bf&nmft-sc>{ scaps } +%<*!nmft-it&!nmft-bf&!nmft-sc&nmft-def> +{ duplicate$ empty$ + { pop$ "" } +%<!html> { "\bibnamefont{" swap$ * "}" * } +%<html> { skip$ } + if$ +} +%</!nmft-it&!nmft-bf&!nmft-sc&nmft-def> +FUNCTION {bib.fname.font} +%<!fnm-rm&!fnm-def>{ bib.name.font } +%<fnm-rm>{ skip$ } +%<*!fnm-rm&fnm-def> +{ duplicate$ empty$ + { pop$ "" } +%<!html> { "\bibfnamefont{" swap$ * "}" * } +%<html> { skip$ } + if$ +} +%</!fnm-rm&fnm-def> +%</nmft> +% \end{macrocode} +% +% \begin{macrocode} +%<*lab> +FUNCTION {cite.name.font} +%<lab-it>{ emphasize } +%<!lab-it&lab-bf>{ bolden } +%<!lab-it&!lab-bf&lab-sc>{ scaps } +%<*!lab-it&!lab-bf&!lab-sc&lab-def> +{ duplicate$ empty$ + { pop$ "" } +%<!html> { "\citenamefont{" swap$ * "}" * } +%<html> { skip$ } + if$ +} +%</!lab-it&!lab-bf&!lab-sc&lab-def> +%</lab> +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{`tie.or.space.prefix'} +% The function \texttt{tie.or.space.prefix} determines whether +% the top item on the stack requires a tie character and +% slips that (or a space character if not) ahead of it. +% At this point a font switch or other function can be applied to +% the top item on the stack, and the appropriate space found +% just ahead of it on the stack. +% +% The sequence \texttt{tie.or.space.prefix} \texttt{*} \texttt{*} is a common idiom +% for joining the top two stack objects with a tie or space +% depending on the length of the top object. +% +% Another idiom is to apply \texttt{tie.or.space.prefix}, apply a font switch, +% and then swap and join. In this case the tie or space follows the object. +% \begin{macrocode} +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`capitalize'} +% Capitalizing is easy for regular languages, but for \texttt{babel}, +% some trickery stuff is needed; definitions of |\capitalize| and +% |\Capitalize| are written to the \texttt{.bbl} file. +% \begin{macrocode} + +FUNCTION {capitalize} +%<!babel>{ "u" change.case$ "t" change.case$ } +%<babel>{ "\capitalize" swap$ * } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`space.word'} +% The function \texttt{space.word} adds a space before and after the word or +% words currently on the stack. This was added for the \texttt{bbl.}$nnn$ +% functions, that contain only a word without spacing, but replace explicit +% text in the originals that were spaced out. Its seems more flexible to +% define the word functions to be without spacing. +% \begin{macrocode} +FUNCTION {space.word} +{ " " swap$ * " " * } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} + % Here are the language-specific definitions for explicit words. + % Each function has a name bbl.xxx where xxx is the English word. +% \end{macrocode} +% +% \begin{macrocode} +%<*!exlang> +% \end{macrocode} +% +% \begin{macro}{`bbl.xxx'} +% These are the default English words. There is no default language +% option: one of \texttt{english} or \texttt{babel} must be given. +% \begin{macrocode} +%<*!babel> + % The language selected here is ENGLISH +FUNCTION {bbl.and} +%<!varand|html>{ "and"} +%<varand&!html>{ "\protect\BIBand{}"} + +FUNCTION {bbl.etal} +{ "et~al." } + +FUNCTION {bbl.editors} +%<!ed>{ "editors" } +%<ed>{ "eds." } + +FUNCTION {bbl.editor} +%<!ed>{ "editor" } +%<ed>{ "ed." } + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +%<!abr>{ "edition" } +%<abr&!ednx>{ "edn." } +%<abr&ednx>{ "ed." } + +FUNCTION {bbl.volume} +%<!abr>{ "volume" } +%<abr>{ "vol." } + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +%<!abr>{ "number" } +%<abr>{ "no." } + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +%<!pp&!ppx>{ "pages" } +%<pp>{ "pp." } +%<!pp&ppx>{ "" } + +FUNCTION {bbl.page} +%<!pp&!ppx>{ "page" } +%<pp>{ "p." } +%<!pp&ppx>{ "" } + +%<*revdata> +FUNCTION {bbl.eidpp} +{ "pages" } + +%</revdata> +FUNCTION {bbl.chapter} +%<!abr>{ "chapter" } +%<abr>{ "chap." } + +FUNCTION {bbl.techrep} +%<!abr>{ "Technical Report" } +%<abr>{ "Tech. Rep." } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +%<*!xedn> +FUNCTION {bbl.first} +%<!ord>{ "First" } +%<ord>{ "1st" } + +FUNCTION {bbl.second} +%<!ord>{ "Second" } +%<ord>{ "2nd" } + +FUNCTION {bbl.third} +%<!ord>{ "Third" } +%<ord>{ "3rd" } + +FUNCTION {bbl.fourth} +%<!ord>{ "Fourth" } +%<ord>{ "4th" } + +FUNCTION {bbl.fifth} +%<!ord>{ "Fifth" } +%<ord>{ "5th" } + +FUNCTION {bbl.st} +{ "st" } + +FUNCTION {bbl.nd} +{ "nd" } + +FUNCTION {bbl.rd} +{ "rd" } + +FUNCTION {bbl.th} +{ "th" } + +%</!xedn> +%<*!abr> +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +%</!abr> +%<*abr> +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."} + +%</abr> +%</!babel> +% \end{macrocode} +% +% Here are the definitions for \texttt{babel} option, i.e., explicit +% translations are not used, but rather only \LaTeX{} macros that must be +% defined in the file \texttt{francaisbst.tex}. This could allow automatic +% language selection. +% \begin{macrocode} +%<*babel> + % The BABEL language selection is made here; definitions in francaisbst.tex. +FUNCTION {bbl.and} +{ "\bbland{}"} + +FUNCTION {bbl.etal} +{ "\bbletal{}"} + +FUNCTION {bbl.editors} +%<!ed>{ "\bbleditors{}" } +%<ed>{ "\bbleds{}" } + +FUNCTION {bbl.editor} +%<!ed>{ "\bbleditor{}" } +%<ed>{ "\bbled{}" } + +FUNCTION {bbl.edby} +{ "\bbledby{}" } + +FUNCTION {bbl.edition} +%<!abr>{ "\bbledition{}" } +%<abr>{ "\bbledn{}" } + +FUNCTION {bbl.volume} +%<!abr>{ "\bblvolume{}" } +%<abr>{ "\bblvol{}" } + +FUNCTION {bbl.of} +{ "\bblof{}" } + +FUNCTION {bbl.number} +%<!abr>{ "\bblnumber{}" } +%<abr>{ "\bblno{}" } + +FUNCTION {bbl.nr} +{ "\bblno{}" } + +FUNCTION {bbl.in} +{ "\bblin{}" } + +FUNCTION {bbl.pages} +%<!pp&!ppx>{ "\bblpages{}" } +%<pp>{ "\bblpp{}" } +%<!pp&ppx>{ "" } + +FUNCTION {bbl.page} +%<!pp&!ppx>{ "\bblpage{}" } +%<pp>{ "\bblp{}" } +%<!pp&ppx>{ "" } + +FUNCTION {bbl.chapter} +%<!abr>{ "\bblchapter{}" } +%<abr>{ "\bblchap{}" } + +FUNCTION {bbl.techrep} +%<!abr>{ "\bbltechreport{}" } +%<abr>{ "\bbltechrep{}" } + +FUNCTION {bbl.mthesis} +{ "\bblmthesis{}" } + +FUNCTION {bbl.phdthesis} +{ "\bblphdthesis{}" } + +%<*revdata> +FUNCTION {bbl.eidpp} +{ "\bbleidpp{}" } + +%</revdata> +%<*!xedn> +FUNCTION {bbl.first} +%<!ord>{ "\bblfirst{}" } +%<ord>{ "\bblfirsto{}" } + +FUNCTION {bbl.second} +%<!ord>{ "\bblsecond{}" } +%<ord>{ "\bblsecondo{}" } + +FUNCTION {bbl.third} +%<!ord>{ "\bblthird{}" } +%<ord>{ "\bblthirdo{}" } + +FUNCTION {bbl.fourth} +%<!ord>{ "\bblfourth{}" } +%<ord>{ "\bblfourtho{}" } + +FUNCTION {bbl.fifth} +%<!ord>{ "\bblfifth{}" } +%<ord>{ "\bblfiftho{}" } + +FUNCTION {bbl.st} +{ "\bblst{}" } + +FUNCTION {bbl.nd} +{ "\bblnd{}" } + +FUNCTION {bbl.rd} +{ "\bblrd{}" } + +FUNCTION {bbl.th} +{ "\bblth{}" } + +%</!xedn> +MACRO {jan} {"\bbljan{}"} + +MACRO {feb} {"\bblfeb{}"} + +MACRO {mar} {"\bblmar{}"} + +MACRO {apr} {"\bblapr{}"} + +MACRO {may} {"\bblmay{}"} + +MACRO {jun} {"\bbljun{}"} + +MACRO {jul} {"\bbljul{}"} + +MACRO {aug} {"\bblaug{}"} + +MACRO {sep} {"\bblsep{}"} + +MACRO {oct} {"\bbloct{}"} + +MACRO {nov} {"\bblnov{}"} + +MACRO {dec} {"\bbldec{}"} + +%</babel> +% \end{macrocode} +% +% \begin{macro}{`eng.ord'} +% This function adds English endings for ordinals 1, 2, 3. However, if +% the second last digit is 1, then the ending is `th' for all last digits. +% So far, all other languages included do not have this problem, and it is +% sufficient to add the \textsl{th} equivalent. This might change with further +% languages. +% +% This function must be included with \texttt{babel} too, since that includes +% English. This means that the language definition files must also provide +% for |\bblst|, |\bblnd|, and |\bblrd|, setting them all equal to |\bblth|. +% +% \begin{macrocode} +%<*(english|!exlang)&!xedn> +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bbl.st * } + { duplicate$ "2" = + { pop$ bbl.nd * } + { "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +%</(english|!exlang)&!xedn> +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</!exlang> +% \end{macrocode} +% +% \begin{macrocode} +%</!tail> +% \end{macrocode} +% +% \begin{macrocode} +%<*!head> +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%<*!jabr> +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} +%</!jabr> +% \end{macrocode} +% +% Journal abbreviations have been revised from the original Patashnik +% ones with help of Conrado Badenas and the IUA recommendations. +% \begin{macrocode} +%<*jabr> +MACRO {acmcs} {"ACM Comput. Surv."} + +MACRO {acta} {"Acta Inf."} + +MACRO {cacm} {"Commun. ACM"} + +MACRO {ibmjrd} {"IBM J. Res. Dev."} + +MACRO {ibmsj} {"IBM Syst.~J."} + +MACRO {ieeese} {"IEEE Trans. Software Eng."} + +MACRO {ieeetc} {"IEEE Trans. Comput."} + +MACRO {ieeetcad} + {"IEEE Trans. Comput. Aid. Des."} + +MACRO {ipl} {"Inf. Process. Lett."} + +MACRO {jacm} {"J.~ACM"} + +MACRO {jcss} {"J.~Comput. Syst. Sci."} + +MACRO {scp} {"Sci. Comput. Program."} + +MACRO {sicomp} {"SIAM J. Comput."} + +MACRO {tocs} {"ACM Trans. Comput. Syst."} + +MACRO {tods} {"ACM Trans. Database Syst."} + +MACRO {tog} {"ACM Trans. Graphic."} + +MACRO {toms} {"ACM Trans. Math. Software"} + +MACRO {toois} {"ACM Trans. Office Inf. Syst."} + +MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} + +MACRO {tcs} {"Theor. Comput. Sci."} + +%</jabr> +% \end{macrocode} +% +% \begin{macro}{`bibinfo.check'} +% Define functions that encapsulate the argument +% in a \TeX\ macro that allows for further processing when the +% bibliography is processed, or allows for a separate computer +% program to parse the |\bibitem| contents. +% +% The following table summarizes how each of the \btx{} entries +% is accessed for output; these are the points where +% the \texttt{format.bibinfo} or \texttt{bibinfo.check} functions +% are called. +% \subsubsection*{Trapped via \texttt{format.bibinfo}} +% \begin{description} +% \item[ \texttt{author} ]\texttt{format.names} +% \item[ \texttt{collaboration} ]\texttt{format.authors} +% \item[ \texttt{editor} ]\texttt{format.editors} (\texttt{book}, \texttt{inbook}, \texttt{proceedings}), \texttt{format.names.ed} (\texttt{format.in.ed.booktitle}) +% \item[ \texttt{eid} ]\texttt{format.journal.eid} (\texttt{format.vol.num.pages}, article) checks the output from \texttt{format.journal.pages} +% \item[ \texttt{isbn} ]\texttt{format.isbn} +% \item[ \texttt{issn} ]\texttt{format.issn} +% \item[ \texttt{journal} ]\texttt{format.article.crossref}, article +% \item[ \texttt{numpages} ]\texttt{format.journal.eid} +% \item[ \texttt{organization} ]\texttt{format.organization.address} (\texttt{inproceedings}, \texttt{proceedings}), \texttt{manual} +% \item[ \texttt{pages} ]\texttt{format.book}.pages (\texttt{book}, \texttt{booklet}), \texttt{format.pages} (\texttt{format.journal.pages}, \texttt{format.chapter.pages}, \texttt{article}, \texttt{inbook}, \texttt{incollection}, \texttt{inproceedings}) +% \item[ \texttt{publisher} ]\texttt{format.publisher.address} (like \texttt{output.check}, \texttt{inproceedings}, \texttt{proceedings}) +% \item[ \texttt{title} ]\texttt{format.title}, \texttt{format.btitle}, \texttt{misc}, \texttt{presort}, \texttt{bib.sort.order} +% \item[ \texttt{volume} ]\texttt{format.bvolume}, \texttt{format.vol.num.pages}, \texttt{format.book.crossref} +% \item[ \texttt{year} ]in optional argument of \texttt{\char`\\bibitem}, \texttt{format.date} (as part of date), \texttt{format.year}, \texttt{format.org.or.pub} +% \item[ \texttt{booktitle} ]\texttt{format.in.ed.booktitle} (\texttt{incollection}, \texttt{inproceedings}), \texttt{format.incoll.inproc.crossref} +% \item[ \texttt{howpublished} ]\texttt{booklet}, \texttt{misc} +% \item[ \texttt{edition} ]\texttt{convert.edition.format.edition} +% \item[ \texttt{institution} ]\texttt{techreport} +% \item[ \texttt{school} ]\texttt{mastersthesis}, \texttt{phdthesis} +% \item[ \texttt{address} ]\texttt{format.org.or.pub}, \texttt{booklet}, \texttt{manual}, \texttt{mastersthesis}, \texttt{phdthesis}, \texttt{techreport} +% \item[ \texttt{chapter} ]\texttt{format.chapter.pages} +% \item[ \texttt{number} ]\texttt{format.number.series}, \texttt{format.vol.num.pages}, \texttt{format.tr.number} +% \item[ \texttt{series} ]\texttt{format.bvolume}, \texttt{format.number.series}, \texttt{format.book.crossref} +% \item[ \texttt{type} ]\texttt{format.chapter.pages}, \texttt{format.thesis.type}, \texttt{format.tr.number} +% \item[ \texttt{month} ]\texttt{format.date} +% \item[ \texttt{note} ]\texttt{format.note} +% \item[ \texttt{annote} ]\texttt{fin.entry} +% \end{description} +% +% \subsubsection*{Encapsulated via \texttt{\char`\\url}} +% \begin{description} +% \item[ \texttt{url} ]\texttt{format.url} (\texttt{\char`\\harvardurl}, \texttt{\char`\\url}), \texttt{format.url} (\texttt{\char`\\url}), \texttt{format.note} (\texttt{\char`\\url}) +% \end{description} +% +% \subsubsection*{Encapsulated via \texttt{\char`\\doi}} +% \begin{description} +% \item[ \texttt{doi} ]\texttt{format.doi} (\texttt{\char`\\doi}) +% \end{description} +% +% \subsubsection*{Encapsulated via \texttt{\char`\\eprint}} +% \begin{description} +% \item[ \texttt{eprint} ]\texttt{format.eprint} +% \item[ \texttt{archive} ]\texttt{format.eprint} +% \end{description} +% +% \subsubsection*{Not encapsulated:} +% \begin{description} +% \item[ \texttt{key} ]cite key +% \item[ \texttt{language} ]operand of \texttt{\char`\\selectlanguage} +% \end{description} +% +% \subsubsection*{\texttt{bibinfo} tag, but not a \btx{} field} +% \begin{description} +% \item[ \texttt{date} ]\texttt{format.date} +% \end{description} +% +% Provides robust access to fields, checking against \texttt{missing\$} +% and \texttt{empty\$}. A \dtx{} option allows giving +% a warning if either is the case. +% +% If not, it encapsulates the argument in a \TeX\ macro |\bibinfo|. +% The encapsulation is enabled by the \texttt{bibinfo} \dtx{} option: +% if turned off, it simply pops the unneeded object. +% +% \texttt{field} \texttt{string} \texttt{->} \texttt{encapsulated-field} +% +% \texttt{empty} \texttt{string} \texttt{->} \texttt{empty} +% Side effect: warning. +% \begin{macrocode} +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { +%<bibinfo.warning> swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ +%<!bibinfo.warning> pop$ pop$ + "" + } + { duplicate$ empty$ + { +%<bibinfo.warning> swap$ "empty " swap$ * " in " * cite$ * warning$ +%<!bibinfo.warning> swap$ pop$ + } + { swap$ +%<bibinfo> "\bibinfo{" swap$ * "}{" * swap$ * "}" * +%<!bibinfo> pop$ + } + if$ + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`bibinfo.warn'} +% Replaces \texttt{output.check} +% with \texttt{bibinfo.warn} followed by \texttt{output}. +% +% \texttt{field} \texttt{string} \texttt{->} \texttt{encapsulated-field} +% +% \texttt{empty} \texttt{string} \texttt{->} \texttt{empty} +% +% Side effect: warning if the field is empty. +% Note: if the \dtx{} option \texttt{bibinfo} is not in effect, +% then no encapsulation is done. +% \begin{macrocode} +FUNCTION {bibinfo.warn} +{ swap$ + duplicate$ missing$ + { + swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ "empty " swap$ * " in " * cite$ * warning$ + } + { swap$ +%<bibinfo> "\bibinfo{" swap$ * "}{" * swap$ * "}" * +%<!bibinfo> pop$ + } + if$ + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.eprint'} +% The access function for the \texttt{eprint} field. +% +% If the \texttt{bibinfo} \dtx{} option is selected, then this function +% encapsulates the argument in a \TeX\ macro |\eprint|. +% +% \texttt{->} \texttt{encapsulated-URL} +% \begin{macrocode} +%<*eprint> +FUNCTION {format.eprint} +{ eprint duplicate$ empty$ + 'skip$ + { "\eprint" + archive empty$ + 'skip$ + { "[" * archive * "]" * } + if$ + "{" * swap$ * "}" * + } + if$ +} +%</eprint> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`write.url'} +% This function taken over from \texttt{agsm.sty}, the main \texttt{harvard} +% bib style. For non-Harvard styles that want to add the URL on a new line +% after the reference, use this function too, but defined slightly +% differently. +% \begin{macrocode} +%<*(harnm|url-nl)&!revdata> +FUNCTION {write.url} +%<*!html> +{ +%<*url-doi&url> + doi empty$ + { url } + { "http://dx.doi.org/" doi * } + if$ +%</url-doi&url> +%<!url-doi|!url> url + duplicate$ empty$ + { pop$ } +%<harnm> { "\newline\harvardurl{" swap$ * "}" * write$ newline$ } +%<!harnm&url-nl> { "\newline\urlprefix\url{" swap$ * "}" * write$ newline$ } + if$ +} +%</!html> +%<*html> +{ +%<*url-doi&url> + doi empty$ + { url } + { "http://dx.doi.org/" doi * } + if$ +%</url-doi&url> +%<!url-doi|!url> url + duplicate$ empty$ + { pop$ } + { duplicate$ "<br><a href=" quote$ * swap$ * quote$ + * ">" * swap$ * "</a>" * write$ newline$ } + if$ +} +%</html> + +%</(harnm|url-nl)&!revdata> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.url'} +% This function is reworked for \texttt{\filename} to provide a +% cleaner URL for DOIs. The definition of \cmd{\urldoi} is written in +% the \texttt{.bbl} file by the function \texttt{begin.bib}. When the +% package \pkg{hyperref} is loaded, the \meta{doi} is a hyperlink to +% \texttt{https://doi.org/\meta{doi}}. +% \begin{macrocode} +%<*(url-blk&!harnm)|revdata> +FUNCTION {format.url} +{ +%<url-doi&url> doi empty$ +%<url-doi&url> { + url + duplicate$ empty$ + { pop$ "" } +%<!html> { "\urlprefix\url{" swap$ * "}" * } +%<html> { +%<html> duplicate$ "<a href=" quote$ * swap$ * quote$ * +%<html> ">" * swap$ * "</a>" * +%<html> } + if$ +%<*url-doi&url> + } + { + doi +%<!html> "\doiprefix\urldoi{" swap$ * "}" * +%<html> duplicate$ "doi:<a href=" quote$ * "https://doi.org/" * +%<html> swap$ * quote$ * ">" * swap$ * "</a>" * + } + if$ +%</url-doi&url> +} + +%</(url-blk&!harnm)|revdata> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`check.speaker'} +% The \texttt{presentation} type uses the \texttt{key} entry to indicate which +% author is the speaker, as the sequence number in the author list. The speaker's +% name is put into a different font, depending on the extra option. If no font +% is specified, all names are the same. +% \begin{macrocode} +INTEGERS { nameptr namesleft numnames } + +%<*pres-bf|pres-it|pres-sc> +FUNCTION {check.speaker} +{ key empty$ 'skip$ + { key nameptr int.to.str$ = + { +%<pres-bf> bolden +%<pres-it&!pres-bf> emphasize +%<pres-sc&!pres-it&!pres-bf> scaps + } + 'skip$ + if$ + } + if$ +} + +%</pres-bf|pres-it|pres-sc> +% \end{macrocode} +% \end{macro} + +% \begin{macro}{`format.names'} +% The \texttt{harvard} package now (version 2.0.3, for \LaTeXe) uses +% |\harvardand| in place of the word \textsl{and} so that it can be changed +% at run time. This is allowed for with the option \texttt{harnm}, which +% need not be used only with the \texttt{har} option. +% This seems like a useless feature for \texttt{.bst} files made from +% this multilanguage source. However, it is included anyway, which means +% if \texttt{harnm} option selected, one must redefine |\harvardand| +% in the document for the language being used. +% +% The location of the junior part for reversed name is not obvious. Prior +% to version 4.0, I always had it attached to the last name, as +% Smith, Jr, John, put it probably is better as Smith, John, Jr. For the +% AGU \texttt{nm-rev1} I always did it this way, probably because I had a +% good AGU example to follow. Dilemma: do I just change them all or add an +% option to do it? The option will maintain consistency with older +% versions, but this could also be considered a bug fix rather than a new +% feature. Solution: use the option, since I have found other \texttt{.bst} +% files from Beebe and Harvard that put junior between surname and first +% name. +% +% |bibinfo| is a variable used to store a string telling it whether the +% names being formatted are authors or editors, since this function is called +% for both purposes. Every call to this function must push the string onto the stack +% just before the call. +% \begin{macrocode} +STRINGS { bibinfo} + +% \end{macrocode} +% +% Stack note: if the names argument is a non-nil list, this function returns +% one object on the stack, the formatted list of names. +% +% \texttt{names`string} \texttt{bibinfo`string} \texttt{->} \texttt{author-list`string} +% \begin{macrocode} +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr +% \end{macrocode} +% Here is the author formatting when the names are not set in any special +% font, or when the entire name set in a single special font. +% \begin{macrocode} +%<*!(nmft&(fnm-rm|fnm-def))> +%<*!nm-rev1&!nm-revv1> +%<nm-init> "{f.~}{vv~}{ll}{, jj}" +%<*!nm-init> +%<nm-rev&!jnrlst> "{vv~}{ll}{, jj}{, f.}" +%<nm-rev&jnrlst> "{vv~}{ll}{, f.}{, jj}" +%<*!nm-rev> +%<nm-rv&!jnrlst> "{vv~}{ll}{ jj}{ f{~}}" +%<nm-rv&jnrlst> "{vv~}{ll}{ f{~}}{ jj}" +%<*!nm-rv> +%<nm-rvx&!jnrlst> "{vv~}{ll}{ jj}{ f{}}" +%<nm-rvx&jnrlst> "{vv~}{ll}{ f{}}{ jj}" +%<*!nm-rvx> +%<nm-rvcx&!jnrlst> "{vv~}{ll}{, jj}{, f{}}" +%<nm-rvcx&jnrlst> "{vv~}{ll}{, f{}}{, jj}" +%<*!nm-rvcx> +%<nm-rvv&!jnrlst> "{vv~}{ll}{ jj}{ f{.}.}" +%<nm-rvv&jnrlst> "{vv~}{ll}{ f{.}.}{ jj}" +%<*!nm-rvv> +%<nm-rvvc&!jnrlst> "{vv~}{ll}{, jj}{, f{.}.}" +%<nm-rvvc&jnrlst> "{vv~}{ll}{, f{.}.}{, jj}" +%<*!nm-rvvc> +%<nm-revf&!jnrlst> "{vv~}{ll}{, jj}{, ff}" +%<nm-revf&jnrlst> "{vv~}{ll}{, ff}{, jj}" +%<*!nm-revf> + "{ff~}{vv~}{ll}{, jj}" +%</!nm-revf> +%</!nm-rvvc> +%</!nm-rvv> +%</!nm-rvcx> +%</!nm-rvx> +%</!nm-rv> +%</!nm-rev> +%</!nm-init> +%</!nm-rev1&!nm-revv1> +%<*nm-rev1> + duplicate$ #1 > + { "{f.~}{vv~}{ll}{, jj}" } +%<!jnrlst> { "{vv~}{ll}{, jj}{, f.}" } +%<jnrlst> { "{vv~}{ll}{, f.}{, jj}" } + if$ +%</nm-rev1> +%<*!nm-rev1&nm-revv1> + duplicate$ #1 > + { "{ff~}{vv~}{ll}{, jj}" } +%<!jnrlst> { "{vv~}{ll}{, jj}{, ff}" } +%<jnrlst> { "{vv~}{ll}{, ff}{, jj}" } + if$ +%</!nm-rev1&nm-revv1> + format.name$ +%<nm-rv|nm-rvx> remove.dots +%<nmft&nmand-rm> bib.name.font +%</!(nmft&(fnm-rm|fnm-def))> +% \end{macrocode} +% Here is the author formatting when the first and last names are +% set in (possibly different) special fonts. +% +% The junior part is optionally between the reversed names, or after them. +% \begin{macrocode} +%<*nmft&(fnm-rm|fnm-def)> +%<*!nm-rev1&!nm-revv1> +%<*nm-init> + "{f.}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ +%</nm-init> +%<*!nm-init> +%<*nm-rev> + "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj, }{f.}" +%<jnrlst> "{f.}{, jj}" + format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ +%</nm-rev> +%<*!nm-rev> +%<*nm-rv> + "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj }{f{~}}" +%<jnrlst> "{f{~}}{ jj}" + format.name$ duplicate$ empty$ 'skip$ + { remove.dots bib.fname.font " " swap$ * } + if$ +%</nm-rv> +%<*!nm-rv> +%<*nm-rvx> + "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj }{f{}}" +%<jnrlst> "{f{}}{ jj}" + format.name$ duplicate$ empty$ 'skip$ + { remove.dots bib.fname.font " " swap$ * } + if$ +%</nm-rvx> +%<*!nm-rvx> +%<*nm-rvcx> + "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj, }{f{}}" +%<jnrlst> "{f{}}{, jj}" + format.name$ duplicate$ empty$ 'skip$ + { remove.dots bib.fname.font ", " swap$ * } + if$ +%</nm-rvcx> +%<*!nm-rvcx> +%<*nm-rvv> + "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj }{f{.}.}" +%<jnrlst> "{f{.}.}{ jj}" + format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font " " swap$ * } + if$ +%</nm-rvv> +%<*!nm-rvv> +%<*nm-rvvc> + "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj, }{f{.}.}" +%<jnrlst> "{f{.}.}{, jj}" + format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ +%</nm-rvvc> +%<*!nm-rvvc> +%<*nm-revf> + "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj, }{ff}" +%<jnrlst> "{ff}{, jj}" + format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ +%</nm-revf> +%<*!nm-revf> + "{ff}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ +%</!nm-revf> +%</!nm-rvvc> +%</!nm-rvv> +%</!nm-rvcx> +%</!nm-rvx> +%</!nm-rv> +%</!nm-rev> +%</!nm-init> +%</!nm-rev1&!nm-revv1> +%<*nm-rev1> + nameptr #1 > + { "{f.}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ + } + { "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj, }{f.}" +%<jnrlst> "{f.}{, jj}" + format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ + } + if$ +%</nm-rev1> +%<*!nm-rev1&nm-revv1> + nameptr #1 > + { "{ff}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ + } + { "{vv~}{ll}" format.name$ bib.name.font + s nameptr +%<!jnrlst> "{jj, }{ff}" +%<jnrlst> "{ff}{, jj}" + format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ + } + if$ +%</!nm-rev1&nm-revv1> + * +%</nmft&(fnm-rm|fnm-def)> + bibinfo bibinfo.check +%<*pres-bf|pres-it|pres-sc> + type$ "presentation" = + { check.speaker } + 'skip$ + if$ +%</pres-bf|pres-it|pres-sc> + 't := + nameptr #1 > + { +%<*nmlm> +%<m1> nameptr #1 +%<m2> nameptr #2 +%<m3> nameptr #3 +%<m4> nameptr #4 +%<m5> nameptr #5 +%<m6> nameptr #6 +%<m7> nameptr #7 +%<m8> nameptr #8 +%<m9> nameptr #9 +%<m0> nameptr #0 +%<m10> #10 + +%<m20> #20 + +%<m30> #30 + +%<m40> #40 + +%<m50> #50 + +%<m60> #60 + +%<m70> #70 + +%<m80> #80 + +%<m90> #90 + + #1 + = +%<x1> numnames #1 +%<x2> numnames #2 +%<x3> numnames #3 +%<x4> numnames #4 +%<x5> numnames #5 +%<x6> numnames #6 +%<x7> numnames #7 +%<x8> numnames #8 +%<x9> numnames #9 +%<x0> numnames #0 +%<x10> #10 + +%<x20> #20 + +%<x30> #30 + +%<x40> #40 + +%<x50> #50 + +%<x60> #60 + +%<x70> #70 + +%<x80> #80 + +%<x90> #90 + + > and + { "others" 't := + #1 'namesleft := } + 'skip$ + if$ +%</nmlm> + namesleft #1 > +%<!aunm-semi&!aunm-sl> { ", " * t * } +%<aunm-semi> { "; " * t * } +%<aunm-sl&!aunm-semi> { "/ " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ +%<(and-com|xand)&!aunm-semi&!aunm-sl> "," * +%<(and-com|xand)&aunm-semi> ";" * +%<(and-com|xand)&aunm-sl&!aunm-semi> "/" * +%<*!and-xcom&!and-com&!xand> + numnames #2 > +%<etal-xc> t "others" = not and +%<!aunm-semi&!aunm-sl> { "," * } +%<aunm-semi> { ";" * } +%<aunm-sl&!aunm-semi> { "/" * } + 'skip$ + if$ +%</!and-xcom&!and-com&!xand> + t "others" = + { +%<nmft&!nmand-rm&!(fnm-rm|fnm-def)&(etal-it|etal-rm)> bib.name.font +%<*!etal-it> +%<nmft&(nmand-rm|(fnm-rm|fnm-def))&!etal-rm> " " * bbl.etal bib.name.font * +%<!(nmft&(nmand-rm|(fnm-rm|fnm-def)))|etal-rm> " " * bbl.etal * +%</!etal-it> +%<etal-it> " " * bbl.etal emphasize * +%<nmft&!nmand-rm&!(fnm-rm|fnm-def)&!(etal-it|etal-rm)> bib.name.font + } +%<*!xand> + { +%<*!harnm> +%<!amper> bbl.and +%<amper> "\&" +%</!harnm> +%<harnm> "\harvardand{}" +%<nmft&!nmand-rm&(fnm-rm|fnm-def)> bib.name.font + space.word * t * + } +%</!xand> +%<xand> { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +%<*nmft&!nmand-rm&!(fnm-rm|fnm-def)> + t "others" = + 'skip$ + { bib.name.font } + if$ +%</nmft&!nmand-rm&!(fnm-rm|fnm-def)> + } if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.names.ed'} +% When editors are used in place of authors to identify the work, the +% names are always formatted just like authors'. However, in collections, +% where ``edited by'' or ``\emph{names} (editors)'' are given, it is +% normal not to reverse the names, even if the authors' are. The option +% \texttt{ed-rev} sees to it that editor names are always formatted exactly +% like those of authors, being reversed if necessary. +% +% The option \texttt{ed-au} is identical to \texttt{ed-rev}, but is more +% logical. It means editors (in incollections) are formatted exactly like +% authors, with all the font, reversing, and number limitations. This is +% selected automatically with \texttt{nm-init} and \texttt{nm-} default to save +% programming memory. +% +% The option \texttt{nm-revf} in this case acts the same as the default +% when no \texttt{nm-} option given: full names with surname last. Therefore +% it is not necessary to test for it at all, since it, like the default, +% has the lowest priority: any other \texttt{nm-} option clobbers it. +% +% The options \texttt{aunm-semi} and \texttt{aunm-sl} will put a semi-colon or +% slash between editor names, just as for authors, when \texttt{ed-rev} not +% selected, in keeping with the idea that in this case both authors and editors +% are to be formatted the same. +% +% This function either dispatches to \texttt{format.names} or executes code +% which is similar. In the latter case, names are always presented first +% followed by surname (``last name''); name limit processing (\texttt{nmlm}) is not executed; +% and endgame processing differs in being qualified by \texttt{nmfted}. +% +% Stack note: if the names (second) argument is a non-nil list, this function returns +% with one object on the stack, the formatted list of names. +% +% \texttt{names`string} \texttt{bibinfo`string} \texttt{->} \texttt{author-list`string} +% \begin{macrocode} +FUNCTION {format.names.ed} +{ +%<ed-rev|ed-au> format.names +%<*!ed-rev&!ed-au> + 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr +% \end{macrocode} +% Editor name is handled as a single object, with no separation of first and last name. +% \begin{macrocode} +%<*!(nmft&nmfted&(fnm-rm|fnm-def))> +%<nm-init|nm-rev|nm-rev1> "{f.~}{vv~}{ll}{, jj}" +%<*!nm-init&!nm-rev&!nm-rev1> +%<nm-revv1> "{ff~}{vv~}{ll}{, jj}" +%<*!nm-revv1> +%<nm-rv> "{f{~}~}{vv~}{ll}{ jj}" +%<*!nm-rv> +%<nm-rvx> "{f{}~}{vv~}{ll}{ jj}" +%<*!nm-rvx> +%<nm-rvcx> "{f{}~}{vv~}{ll}{ jj}" +%<*!nm-rvcx> +%<nm-rvv|nm-rvvc> "{f{.}.~}{vv~}{ll}{ jj}" +%<*!nm-rvv&!nm-rvvc> + "{ff~}{vv~}{ll}{, jj}" +%</!nm-rvv&!nm-rvvc> +%</!nm-rvcx> +%</!nm-rvx> +%</!nm-rv> +%</!nm-revv1> +%</!nm-init&!nm-rev&!nm-rev1> + format.name$ +%<nm-rv|nm-rvx|nm-rvcx> remove.dots +%<nmft&nmfted&nmand-rm> bib.name.font +%</!(nmft&nmfted&(fnm-rm|fnm-def))> +% \end{macrocode} +% Editor first and last name handled separately. +% \begin{macrocode} +%<*(nmft&nmfted&(fnm-rm|fnm-def))> +%<*nm-init|nm-rev|nm-rev1> + "{f.}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ +%</nm-init|nm-rev|nm-rev1> +%<*!nm-init&!nm-rev&!nm-rev1> +%<*nm-revv1> + "{ff}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ +%</nm-revv1> +%<*!nm-revv1> +%<*nm-rv> + "{f{~}}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { remove.dots bib.fname.font " " swap$ * } + if$ +%</nm-rv> +%<*!nm-rv> +%<*nm-rvx|nm-rvcx> + "{f{}}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { remove.dots bib.fname.font " " swap$ * } + if$ +%</nm-rvx|nm-rvcx> +%<*!nm-rvx&!nm-rvcx> +%<*nm-rvv|nm-rvvc> + "{f{.}.}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font " " swap$ * } + if$ +%</nm-rvv|nm-rvvc> +%<*!nm-rvv&!nm-rvvc> + "{ff}" format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ +%</!nm-rvv&!nm-rvvc> +%</!nm-rvx&!nm-rvcx> +%</!nm-rv> +%</!nm-revv1> +%</!nm-init&!nm-rev&!nm-rev1> + * +%</(nmft&nmfted&(fnm-rm|fnm-def))> + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > +%<!aunm-semi&!aunm-sl> { ", " * t * } +%<aunm-semi> { "; " * t * } +%<aunm-sl&!aunm-semi> { "/ " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ +%<(and-com-ed|xand)&!aunm-semi&!aunm-sl> "," * +%<(and-com-ed|xand)&aunm-semi> ";" * +%<(and-com-ed|xand)&aunm-sl&!aunm-semi> "/" * +%<*!and-xcom&!and-com-ed&!xand> + numnames #2 > +%<etal-xc> t "others" = not and +%<!aunm-semi&!aunm-sl> { "," * } +%<aunm-semi> { ";" * } +%<aunm-sl&!aunm-semi> { "/" * } + 'skip$ + if$ +%</!and-xcom&!and-com-ed&!xand> + t "others" = + { + +%<nmft&nmfted&!nmand-rm&!(fnm-rm|fnm-def)&(etal-it|etal-rm)> bib.name.font +%<*!etal-it> +%<nmft&nmfted&(nmand-rm|(fnm-rm|fnm-def))&!etal-rm> " " * bbl.etal bib.name.font * +%<!(nmft&nmfted&(nmand-rm|(fnm-rm|fnm-def)))|etal-rm> " " * bbl.etal * +%</!etal-it> +%<etal-it> " " * bbl.etal emphasize * +%<nmft&nmfted&!nmand-rm&!(fnm-rm|fnm-def)&!(etal-it|etal-rm)> bib.name.font + } +%<*!xand> + { +%<*!harnm> +%<!amper> bbl.and +%<amper> "\&" +%</!harnm> +%<harnm> "\harvardand{}" +%<nmft&nmfted&!nmand-rm&(fnm-rm|fnm-def)> bib.name.font + space.word * t * + } +%</!xand> +%<xand> { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +%<*nmft&nmfted&!nmand-rm&!(fnm-rm|fnm-def)> + t "others" = + 'skip$ + { bib.name.font } + if$ +%</nmft&nmfted&!nmand-rm&!(fnm-rm|fnm-def)> + } if$ +%</!ed-rev&!ed-au> +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.key'} +% \begin{macrocode} +%<*ay> +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +%</ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.authors'} +% +% \begin{macrocode} +FUNCTION {format.authors} +{ author "author" format.names +%<*revdata> + duplicate$ empty$ 'skip$ + { collaboration "collaboration" bibinfo.check + duplicate$ empty$ 'skip$ + { " (" swap$ * ")" * } + if$ + * + } + if$ +%</revdata> +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`get.bbl.editor'} +% Use this function universally when accessing the ``editor'' text entity. +% \begin{macrocode} +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.editors'} +% The option \texttt{edpar} puts the word `editor' in parentheses. +% In \texttt{genbst.mbs}, this occurred automatically with the option +% \texttt{ed}, to abbreviate `editor' to `ed'. In \texttt{babel.mbs}, +% this was not the case, because of complications with the word functions. +% Now this possibility is added as a special option, which means there is +% some inconsistency with older \texttt{.dbj} files that called \texttt{ed}: +% the abbreviated `ed' is not put in parentheses unless \texttt{edpar} is +% also called. +% +% Note that the code here is very similar to code in \texttt{format.in.ed.booktitle}; +% the two should be kept coordinated. +% \begin{macrocode} +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { +%<!edpar&!edparxc> "," * + " " * + get.bbl.editor +%<bkedcap> capitalize +%<edpar|edparc|edparxc> "(" swap$ * ")" * + * + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.in.editors'} +% See the note about the option \texttt{edpar} above. +% +% \end{macro} +% +% \begin{macro}{`format.book.pages'} +% \begin{macrocode} +%<*pg-bk> +FUNCTION {format.book.pages} +{ pages "pages" bibinfo.check + duplicate$ empty$ 'skip$ + { " " * bbl.pages * } + if$ +} +%</pg-bk> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.isbn'} +% \begin{macrocode} +%<*isbn> +FUNCTION {format.isbn} +{ isbn "isbn" bibinfo.check + duplicate$ empty$ 'skip$ + { +%<!blk-com&!blk-tit&!blk-tita> new.block + "ISBN " swap$ * + } + if$ +} + +%</isbn> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.issn'} +% \begin{macrocode} +%<*issn> +FUNCTION {format.issn} +{ issn "issn" bibinfo.check + duplicate$ empty$ 'skip$ + { +%<!blk-com&!blk-tit&!blk-tita> new.block + "ISSN " swap$ * + } + if$ +} + +%</issn> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.doi'} +% DOIs like URLs are encapsulated by their own commands, so need no \texttt{bibinfo.check}. +% \begin{macrocode} +%<*doi|(url-doi&!url)> +FUNCTION {format.doi} +{ doi empty$ + { "" } + { +%<!blk-com&!blk-tit&!blk-tita> new.block +%<!html> "\doi{" doi * "}" * +%<html> "doi:" doi * + } + if$ +} +%</doi|(url-doi&!url)> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`select.language'} +% The \texttt{language} field code has been provided by Bernd Feige, of the +% University of Freiburg. +% \begin{macrocode} +%<*lang> +FUNCTION {select.language} +{ duplicate$ empty$ + 'pop$ + { language empty$ + 'skip$ + { "{\selectlanguage{" language * "}" * swap$ * "}" * } + if$ + } + if$ +} + +%</lang> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.note'} +% Notes should be entered as though they were a sentence on their own. +% However, if they appear mid-sentence rather than after a block or sentence, +% the first letter must be lowercase. Thus if a note begins with a proper +% noun, it must be in braces. To avoid a warning about unmatched braces +% with the \texttt{change.case\$} function, check first if the leading +% character is an opening brace. +% +% With options \texttt{url,url-nt}, the URL text is treated as a note, and +% added here. It is output directly, not prepended to the note text. This +% means, if the note is to be a new sentence, the URL text starts that +% sentence, and the regular note is added to that sentence, comma between. +% +% \begin{macrocode} +FUNCTION {format.note} +{ +%<*url-nt&!revdata> + url empty$ + 'skip$ +%<!html> { "\urlprefix\url{" url * "}" * output } +%<html> { "<a href=" quote$ * url * quote$ +%<html> * ">" * url * "</a>" * output } + if$ +%</url-nt&!revdata> + note empty$ + { "" } + { note #1 #1 substring$ + duplicate$ "{" = + 'skip$ + { output.state mid.sentence = + { "l" } + { "u" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + } + if$ +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.title'} +% For a quoted title, any punctuation in the title goes inside the quote. +% Otherwise, the comma or period following the title also goes inside. +% Exception is with \texttt{qx} option, in which case the comma goes +% outside, even when punctuation present; for period (\texttt{!blk-com}) +% is added outside only when punctuation is absent. +% \begin{macrocode} +FUNCTION {format.title} +{ title +%<*!atit-u> + duplicate$ empty$ 'skip$ + { "t" change.case$ } + if$ +%</!atit-u> + "title" bibinfo.check +%<*tit-it|tit-qq|lang> + duplicate$ empty$ 'skip$ + { +%<tit-it> emphasize +%<*!tit-it&tit-qq> + "\enquote{" swap$ * +%<*!qx> +%<*blk-com> + non.stop +%<!com-semi&!com-blank> { ",} " * } +%<com-semi> { ";} " * } +%<!com-semi&com-blank> { "} " * } + { "} " * } + if$ +%</blk-com> +%<!blk-com> add.period$ "}" * +%</!qx> +%<*qx> +%<*blk-com> +%<!com-semi&!com-blank> "}, " * +%<com-semi> "}; " * +%<!com-semi&com-blank> "} " * +%</blk-com> +%<!blk-com> "}" * +%</qx> +%</!tit-it&tit-qq> +%<lang> select.language + } + if$ +%</tit-it|tit-qq|lang> +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`end.quote.title'} +% For a quoted title, the punctuation appears in the quotes. For commas +% between block, this means the inter-block punctuation is already present, +% so it must be suppressed after every \texttt{format.title output}. This +% is done by setting the \texttt{output.state} to \texttt{before.all}, but +% only if there really was a title. Call this macro every time after +% titles are output. +% \begin{macrocode} +%<*blk-com&tit-qq> +FUNCTION {end.quote.title} +{ title empty$ + 'skip$ + { before.all 'output.state := } + if$ +} +%</blk-com&tit-qq> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`end.quote.btitle'} +% Similar to |end.quote.title| except that it is only applied if titles of +% proceedings and collections are quoted, and if +% neither \texttt{edby}, \texttt{edby-par}, nor \texttt{edby-par} are selected +% (this is the default case in the relevant menu of the \texttt{makebst.tex} run). +% These options add text after the booktitle, +% so additional punctuation need not be suppressed. Unless there is no editor! +% +% Note: this function is called after the result of \texttt{format.in.ed.booktitle} +% has been output, and attempts to predict what that output had been. +% Would it not be better to call this function while that result is still +% on the stack? +% \begin{macrocode} +%<*bt-qq> +FUNCTION {end.quote.btitle} +{ booktitle empty$ + 'skip$ +%<!edby&!edby-par&!edby-parc> { before.all 'output.state := } +%<*edby|edby-par|edby-parc> + { editor empty$ + { before.all 'output.state := } + 'skip$ + if$ + } +%</edby|edby-par|edby-parc> + if$ +} +%</bt-qq> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`make.full.names'} +% In versions before 2.2, there were two functions \texttt{calc.long.label} +% and \texttt{format.long.lab.names} that made up the string +% \texttt{long.label} for each entry. This contains the full author list. +% However, there was a bug in the one routine, entered by mistake when an +% earlier bug was removed, and more seriously, the string +% \texttt{long.label} was limited to \texttt{entry.max\$} characters, 100 on +% my system. Author lists were truncated. Thus, \texttt{make.full.names} +% is used instead to enter the full list of names directly in the +% \texttt{output.bibitem} function, without an intermediate string. This +% involves changing the order of some function definitions, especially +% \texttt{output.bibitem} must come later. +% \begin{macrocode} +%<*har|cay|nat> +FUNCTION {format.full.names} +{'s := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr +%<!jnrlab> "{vv~}{ll}" format.name$ +%<*jnrlab> +%<!nm-rv&!nm-rvv&!nm-rvx&!nm-rvcx> "{vv~}{ll}{, jj}" format.name$ +%<nm-rv|nm-rvv|nm-rvx|nm-rvcx> "{vv~}{ll}{ jj}" format.name$ +%</jnrlab> +%<lab&and-rm> cite.name.font + 't := + nameptr #1 > + { +%<*nmlm> +%<m1> nameptr #1 +%<m2> nameptr #2 +%<m3> nameptr #3 +%<m4> nameptr #4 +%<m5> nameptr #5 +%<m6> nameptr #6 +%<m7> nameptr #7 +%<m8> nameptr #8 +%<m9> nameptr #9 +%<m0> nameptr #0 +%<m10> #10 + +%<m20> #20 + +%<m30> #30 + +%<m40> #40 + +%<m50> #50 + +%<m60> #60 + +%<m70> #70 + +%<m80> #80 + +%<m90> #90 + + #1 + = +%<x1> numnames #1 +%<x2> numnames #2 +%<x3> numnames #3 +%<x4> numnames #4 +%<x5> numnames #5 +%<x6> numnames #6 +%<x7> numnames #7 +%<x8> numnames #8 +%<x9> numnames #9 +%<x0> numnames #0 +%<x10> #10 + +%<x20> #20 + +%<x30> #30 + +%<x40> #40 + +%<x50> #50 + +%<x60> #60 + +%<x70> #70 + +%<x80> #80 + +%<x90> #90 + + > and + { "others" 't := + #1 'namesleft := } + 'skip$ + if$ +%</nmlm> + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { +%<lab&!and-rm&(etal-it|etal-rm)> cite.name.font +%<*!etal-it> +%<lab&and-rm&!etal-rm> " " * bbl.etal cite.name.font * +%<!lab|!and-rm|etal-rm> " " * bbl.etal * +%</!etal-it> +%<etal-it> " " * bbl.etal emphasize * +%<lab&!and-rm&!(etal-it|etal-rm)> cite.name.font + } + { +%<*!harnm> +%<*!and-xcom> + numnames #2 > + { "," * } + 'skip$ + if$ +%</!and-xcom> +%<!amper> bbl.and +%<amper> "\&" +%</!harnm> +%<harnm> "\harvardand{}" + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +%<*lab&!and-rm> + t "others" = + 'skip$ + { cite.name.font } + if$ +%</lab&!and-rm> +} + +FUNCTION {author.editor.key.full} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.key.full} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {editor.key.full} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.full + { type$ "proceedings" = + 'editor.key.full + 'author.key.full + if$ + } + if$ +} + +%</har|cay|nat> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`output.bibitem'} +% A user has pointed out to me that if the label argument in square brackets +% are put into braces (within the squares) it is then resistent to any +% problems if square braces should appear within the label. Do this, but +% only for the \texttt{nat} option. +% \begin{macrocode} +FUNCTION {output.bibitem} +{ newline$ +%<*!html> +%<*ay> +%<!har&!nat> "\bibitem[" write$ +%<!har&nat> "\bibitem[{" write$ +%<har> "\harvarditem" write$ +%<nmd> "\protect\citeauthoryear{" write$ +%<ast> "\protect\astroncite{" write$ +%<cay> "\protect\citeauthoryear{" make.full.names * "}{" * write$ +%<cn> "\protect\citename{" write$ +%<!har> label write$ +%<har> make.full.names duplicate$ label = +%<har> 'skip$ +%<har> { "[" label * "]" * write$ } +%<har> if$ +%<har> "{" swap$ * "}{" * write$ +%<har> year duplicate$ empty$ +%<cn> ", }" year duplicate$ empty$ +%<cay|nmd|ast> "}{" year duplicate$ empty$ +%<(har|cn|cay|nmd|ast)&blkyear> { pop$ "" } +%<(har|cn|cay|nmd|ast)&!blkyear> { pop$ "????" } +%<har|cn|cay|nmd|ast> 'skip$ +%<har|cn|cay|nmd|ast> if$ +%<har> extra.label * "}{" * write$ +%<cn> * extra.label * "]{" * write$ +%<cay|nmd|ast> * extra.label * "}]{" * write$ +%<alk> "]{" write$ +%<!(har|cay|nmd|ast|alk|cn|nat)> ")]{" write$ +%<nat> ")" make.full.names duplicate$ short.list = +%<nat> { pop$ } +%<nat> { * } +%<nat> if$ +%<nat> "}]{" * write$ +%</ay> +%<!ay&!(cite|alph)> "\bibitem{" write$ +%<!ay&(cite|alph)> "\bibitem[" label * "]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" +%</!html> +%<*html> +%<*htdes> + "<dt><strong><tt>" write$ + cite$ write$ + "</tt></strong></dt>" write$ newline$ + "<dd>" +%</htdes> +%<htlist&!htdes> "<li>" +%<!htlist&!htdes> "<p>" +%</html> + before.all 'output.state := +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`if.digit'} +% Add \texttt{if.digit} and \texttt{n.separate} to convert large page numbers +% to a separated number. +% \begin{macrocode} +%<*pgsep-c|pgsep-s|pgsep-p> +FUNCTION {if.digit} +{ duplicate$ "0" = + swap$ duplicate$ "1" = + swap$ duplicate$ "2" = + swap$ duplicate$ "3" = + swap$ duplicate$ "4" = + swap$ duplicate$ "5" = + swap$ duplicate$ "6" = + swap$ duplicate$ "7" = + swap$ duplicate$ "8" = + swap$ "9" = or or or or or or or or or +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`n.separate'} +% \texttt{pgsep-s}, \texttt{pgsep-p} +% Large page numbers are to be separated in threes, with thin space, comma +% or period. The number must be 5 digits before the separation occurs. +% No provision is made for numbers of 7 or more digits. +% \begin{macrocode} +FUNCTION {n.separate} +{ 't := + "" + #0 'numnames := + { t empty$ not } + { t #-1 #1 substring$ if.digit + { numnames #1 + 'numnames := } + { #0 'numnames := } + if$ + t #-1 #1 substring$ swap$ * + t #-2 global.max$ substring$ 't := + numnames #5 = + { duplicate$ #1 #2 substring$ swap$ + #3 global.max$ substring$ +%<pgsep-c> "," swap$ * * +%<pgsep-p> "." swap$ * * +%<pgsep-s&!html> "\," swap$ * * +%<pgsep-s&html> " " swap$ * * + } + 'skip$ + if$ + } + while$ +} +%</pgsep-c|pgsep-s|pgsep-p> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`n.dashify'} +% \begin{macrocode} +FUNCTION {n.dashify} +{ +%<pgsep-c|pgsep-s|pgsep-p> n.separate + '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$ +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`word.in'} +% The function \texttt{word.in} prints the word \textsl{in} for references +% that are +% contained in a larger work, or in conference proceedings. One may have a +% colon after the word with the option \texttt{in-col}. If blocks of text are +% to be separated with commas (option \texttt{blk-com}) then the word remains +% in lower case, as it is defined in \texttt{bbl.in}; but if blocks act as +% sentences, then it must be capitalized. +% \begin{macrocode} +FUNCTION {word.in} +%<in-x>{ "" } +%<*!in-x> +%<blk-com|blk-tita>{ bbl.in +%<!blk-com&!blk-tita>{ bbl.in capitalize +%<in-col> ":" * +%<in-it> emphasize + " " * } +%</!in-x> + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.date'} +% The new \texttt{harvard.sty} allows variable brackets around the date +% in the reference list. It uses |\harvardyearleft| and |\harvardyearright| +% in the \texttt{.bst} files. Allow this with the option \texttt{harnm}, +% which could actually be used without the \texttt{har} option. Note that +% this overrides the other year formatting options, except for the preceding punctuation. +% \begin{macrocode} +%<*ay> +FUNCTION {format.date} +{ year "year" bibinfo.check duplicate$ empty$ + { +%<*!blkyear> + "empty year in " cite$ * "; set to ????" * warning$ + pop$ "????" +%</!blkyear> + } + 'skip$ + if$ +%<*aymth> + month "month" bibinfo.check duplicate$ empty$ + 'skip$ + { +%<dtrev> swap$ + " " * swap$ + } + if$ + * +%<mth-bare> remove.dots +%</aymth> +%<dtbf> bolden + extra.label * +%<*!harnm> +%<*yr-par|yr-brk|yr-col|yr-blk|yr-com|yr-per> + before.all 'output.state := +%<yr-par> " (" swap$ * ")" * +%<!yr-par&yr-brk> " [" swap$ * "]" * +%<!yr-par&!yr-brk&yr-col> ": " swap$ * +%<!yr-par&!yr-brk&!yr-col&yr-com> ", " swap$ * +%<!yr-par&!yr-brk&!yr-col&!yr-com&yr-per> after.sentence 'output.state := +%<!yr-par&!yr-brk&!yr-col&!yr-com&!yr-per&yr-blk> " " swap$ * +%</yr-par|yr-brk|yr-col|yr-blk|yr-com|yr-per> +%</!harnm> +%<*harnm> + before.all 'output.state := + " \harvardyearleft " swap$ * "\harvardyearright{}" * +%<yr-col> ":" swap$ * +%<!yr-col&yr-com> "," swap$ * +%<!yr-col&!yr-com&yr-per> after.sentence 'output.state := +%<!yr-col&!yr-com&!yr-per&yr-blk> " " swap$ * +%</harnm> +} +%</ay> +%<*!ay> +FUNCTION {format.date} +{ +%<!xmth> month "month" bibinfo.check +%<xmth> "" + duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { swap$ 'skip$ + { +%<showstack> month year +%<!dtrev> swap$ + " " * swap$ + } + if$ + * +%<mth-bare> remove.dots + } + if$ +%<dtbf> bolden +%<*yr-par|yr-brk|yr-col|yr-com|yr-per|yr-blk> + duplicate$ empty$ + 'skip$ + { + before.all 'output.state := +%<yr-par> " (" swap$ * ")" * +%<!yr-par&yr-brk> " [" swap$ * "]" * +%<!yr-par&!yr-brk&yr-col> ": " swap$ * +%<!yr-par&!yr-brk&!yr-col&yr-com> ", " swap$ * +%<!yr-par&!yr-brk&!yr-col&!yr-com&yr-per> after.sentence 'output.state := +%<!yr-par&!yr-brk&!yr-col&!yr-com&!yr-per&yr-blk> " " swap$ * + } + if$ +%</yr-par|yr-brk|yr-col|yr-com|yr-per|yr-blk> +} +%</!ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.year'} +% For the options that put the year into the journal specifications, use a +% special formatter separate from the regular date formatter. +% The year is always in parentheses (except for appended to journal name). +% \begin{macrocode} +%<*jdt-p|jdt-pc|jdt-v|jdt-vs> +FUNCTION{format.year} +{ year "year" bibinfo.check duplicate$ empty$ + { "empty year in " cite$ * +%<ay&!blkyear> "; set to ????" * + warning$ +%<ay&!blkyear> pop$ "????" + } + { +%<!ay&jdt-vs> " (" swap$ * ")" * +%<!ay&!jdt-vs> "(" swap$ * ")" * + } + if$ +%<*ay> + extra.label * +%<jdt-vs> " (" swap$ * ")" * +%<!jdt-vs> "(" swap$ * ")" * +%</ay> +} +%</jdt-p|jdt-pc|jdt-v|jdt-vs> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.btitle'} +% \begin{macrocode} +FUNCTION {format.btitle} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { +%<!btit-rm> emphasize +%<lang> select.language + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`either.or.check'} +% \begin{macrocode} +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.bvolume'} +% \begin{macrocode} +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bbl.volume volume tie.or.space.prefix + "volume" bibinfo.check * * + series "series" bibinfo.check + duplicate$ empty$ 'pop$ +%<*!ser-vol> + { swap$ bbl.of space.word * swap$ + emphasize * } +%</!ser-vol> +%<ser-vol> { emphasize ", " * swap$ * } + if$ + "volume and number" number either.or.check + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.number.series'} +% \begin{macrocode} +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } +%<*num-xser> + { series empty$ + { number "number" bibinfo.check } + { output.state mid.sentence = + { bbl.number } + { bbl.number capitalize } + if$ + number tie.or.space.prefix "number" bibinfo.check * * + bbl.in space.word * + series "series" bibinfo.check * + } + if$ + } +%</num-xser> +%<*!num-xser> + { output.state mid.sentence = + { bbl.number } + { bbl.number capitalize } + if$ + number tie.or.space.prefix "number" bibinfo.check * * + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { bbl.in space.word * + series "series" bibinfo.check * + } + if$ + } +%</!num-xser> + if$ + } + { "" } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`is.num'} +% This function takes the single-character string on the stack and returns +% 1 if it is a digit, else 0. +% \begin{macrocode} +%<*!xedn> +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`extract.num'} +% This function tests the string on the stack to see if it begins with a +% number. If so, that number is left on the stack; if the string contains +% no numbers at the start, it is left unchanged. The idea is to convert +% \textsl{1st} to \textsl{1} and leave \textsl{first} as is. +% This is used by \code{convert.edition}. +% \begin{macrocode} +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$ +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`convert.edition'} +% The function \texttt{convert.edition} takes the text in the field +% \texttt{edition} and changes it to the language-specific equivalent. As +% originally planned for \btx, this field should contain the words +% \textsl{First}, \textsl{Second}, etc. Being so explicit, +% it is not so easy to translate, nor to +% convert to \textsl{1st}, \textsl{2nd}, etc., if one wanted. +% This function carries out the translation, by changing +% \textsl{first} or \textsl{1} to \texttt{bbl.first}, and so +% on. The field is reduced to lower case to make it case insensitive. If no +% translation is found, then the original text in \texttt{edition} is used +% instead, as it stands. However, if the original is a number greater than +% the maximum for which text is provided, then \texttt{bbl.th} is added to +% it. +% \begin{macrocode} +FUNCTION {convert.edition} +{ extract.num "l" change.case$ 's := + s "first" = s "1" = or + { bbl.first 't := } + { s "second" = s "2" = or + { bbl.second 't := } + { s "third" = s "3" = or + { bbl.third 't := } + { s "fourth" = s "4" = or + { bbl.fourth 't := } + { s "fifth" = s "5" = or + { bbl.fifth 't := } + { s #1 #1 substring$ is.num +%<!english&exlang> { s bbl.th * 't := } +%<english|!exlang> { s eng.ord 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} +%</!xedn> + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.edition'} +% This function formats the text for the edition specification, such as +% ``Second edition''. It combines the edition number with the word +% \textsl{edition}. +% \begin{macrocode} +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { +%<!xedn> convert.edition + output.state mid.sentence = + { "l" } + { "t" } + if$ change.case$ + "edition" bibinfo.check + " " * bbl.edition * + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +INTEGERS { multiresult } +% \end{macrocode} +% +% \begin{macro}{`multi.page.check'} +% \begin{macrocode} +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 +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.pages'} +% \begin{macrocode} +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { duplicate$ multi.page.check + { +%<!bkpg-x&!ppx> bbl.pages swap$ + n.dashify + } + { +%<!bkpg-x&!ppx> bbl.page swap$ + } + if$ +%<!bkpg-x&!ppx> tie.or.space.prefix + "pages" bibinfo.check +%<!bkpg-x&!ppx> * * +%<bkpg-par> "(" swap$ * ")" * + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`first.page'} +% \begin{macrocode} +%<*jpg-1> +FUNCTION {first.page} +{ 't := + "" + { t empty$ not t #1 #1 substring$ "-" = not and } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + while$ +} + +%</jpg-1> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.journal.pages'} +% Note: this function gets called with something on the stack. +% It may be the volume and number. +% \begin{macrocode} +FUNCTION {format.journal.pages} +{ pages duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ + { pop$ pop$ format.pages } + { +%<volp-sp> ": " * +%<*!volp-sp> +%<volp-blk> " " * +%<*!volp-blk> +%<volp-com> ", " * +%<*!volp-com> +%<volp-semi> "; " * +%<!volp-semi> ":" * +%</!volp-com> +%</!volp-blk> +%</!volp-sp> +%<!jdt-v&!jdt-vs&jdt-p> format.year * " " * +%<!jdt-v&!jdt-vs&!jdt-p&jdt-pc> format.year * ", " * + swap$ +%<jpg-1> first.page +%<!jpg-1> n.dashify +%<*jwdpg> + pages multi.page.check + 'bbl.pages + 'bbl.page + if$ + swap$ tie.or.space.prefix +%</jwdpg> + "pages" bibinfo.check +%<jwdpg> * * + * + } + if$ + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.journal.eid'} +% +% This function is called with something on the stack (journal vol, number) +% and appends \texttt{eid} and \texttt{numpages} if those field are non-empty. +% Very similar to \texttt{format.journal.pages}. +% +% For the AGU style of including the DOI as part of the EID, the DOI number +% is appended too. +% \begin{macrocode} +FUNCTION {format.journal.eid} +{ eid "eid" bibinfo.check + duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ 'skip$ + { +%<volp-sp> ": " * +%<*!volp-sp> +%<volp-blk> " " * +%<*!volp-blk> +%<volp-com> ", " * +%<*!volp-com> +%<volp-semi> "; " * +%<!volp-semi> ":" * +%</!volp-com> +%</!volp-blk> +%</!volp-sp> + } + if$ + swap$ * +%<*revdata> + numpages empty$ 'skip$ + { bbl.eidpp numpages tie.or.space.prefix + "numpages" bibinfo.check * * + " (" swap$ * ")" * * + } + if$ +%</revdata> + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.vol.num.pages'} +% Version 3.84, I have rationalized several options that placed the date in the +% journal specifications. It was rather chaotic before, but now it should be +% more systematic. This means some options have been removed, something that I +% do not like to do. +% +% The option \texttt{pp-last} suppresses the pages in the formatting macros, and +% sees to it that the pages are added just before any notes in those entries +% that take pages. This applies to more than just \texttt{article}, but to +% \texttt{inbook}, \texttt{incollection} as well. +% +% \begin{macrocode} +FUNCTION {format.vol.num.pages} +{ volume field.or.null + duplicate$ empty$ 'skip$ + { +%<jwdvol> bbl.volume swap$ tie.or.space.prefix + "volume" bibinfo.check +%<jwdvol> * * + } + if$ +%<vol-bf&!vol-2bf> bolden +%<!vol-bf&!vol-2bf&vol-it> emphasize +%<jdt-v|jdt-vs> format.year * +%<*!vnum-x> + number "number" bibinfo.check duplicate$ empty$ 'skip$ + { + swap$ duplicate$ empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + swap$ +%<vnum-sp> "~(" swap$ * ")" * +%<!vnum-sp&vnum-cm> ", " swap$ * +%<!vnum-sp&!vnum-cm&vnum-nr> ", " bbl.nr * number tie.or.space.prefix pop$ * swap$ * +%<!vnum-sp&!vnum-cm&!vnum-nr&vnum-h> ", \#" swap$ * +%<!vnum-sp&!vnum-cm&!vnum-nr&!vnum-h&vnum-b> " " swap$ * +%<!vnum-sp&!vnum-cm&!vnum-nr&!vnum-h&!vnum-b> "(" swap$ * ")" * + } + if$ * +%<!vol-bf&vol-2bf> bolden +%</!vnum-x> +%<*!pp-last> + eid empty$ + { format.journal.pages } + { format.journal.eid } + if$ +%</!pp-last> +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.chapter.pages'} +% \begin{macrocode} +FUNCTION {format.chapter.pages} +{ chapter empty$ +%<!pp-last> 'format.pages +%<pp-last> { "" } + { type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * +%<*!pp-last> + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ +%</!pp-last> + } + if$ +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`bt.enquote'} +% This is to place the booktitle for proceedings and collections into quotes. +% If punctuation is to be included, then add a comma unless a stop already +% exists, or add a period under the only circumstances that +% |format.in.ed.booktitle| is followed by |new.sentence|. +% \begin{macrocode} +%<*bt-qq> +FUNCTION {bt.enquote} +{ duplicate$ empty$ 'skip$ + { "\enquote{" swap$ * +%<*!qx> + non.stop + { ",} " * } + { "}, " * } + if$ +%</!qx> +%<*qx> + "}, " * +%</qx> + } + if$ +} +%</bt-qq> +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{`format.booktitle'} +% The function \texttt{format.booktitle} pushes one object +% (the book title, suitably encapsulated) onto the stack. +% It is currently used in \texttt{format.incoll.inproc.crossref} +% and in \texttt{format.in.ed.booktitle}, and should be used whenever accessing +% the \texttt{booktitle} field for eventual output. +% +% If the book title is empty or missing, the function pushes an empty string. +% \begin{macrocode} +FUNCTION {format.booktitle} +{ + booktitle "booktitle" bibinfo.check +%<!bt-qq&!bt-rm> emphasize +%<bt-qq> bt.enquote +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.in.ed.booktitle'} +% Prior to version 3.81, the \textsl{Editor} or \textsl{Edited by} in +% parentheses was meant to be capitalized, but this did not work properly. +% Now the option \texttt{edcap} produces this, and default is not capitalized. +% +% Notes on \dtx{} options: +% \begin{itemize} +% \item +% The following combinations are available through the \texttt{makebst.tex} interface: +% \begin{quote} +% \verb+(+ \\ +% \verb+ <default>+ \\ +% \verb+ |edby ( |edbyx |edbyy|edbyw[edcap])+ \\ +% \verb+ |edby-par (|edcap|edbyx[edcap]|edbyy )+ \\ +% \verb+ |edby-parc(|edcap|edbyx )+ \\ +% \verb+)+ +% \end{quote} +% \item +% \texttt{edby}, \texttt{edby-par}, and \texttt{edby-parc} are mutually exclusive +% and, except for the default, exhaustive. +% \item +% \texttt{edbyx}, \texttt{edbyw}, and \texttt{edbyy} are mutually exclusive +% and, except for the default, exhaustive. +% \item +% \texttt{edcap} is independent of the above two groups of options. +% \item +% When parentheses need to be applied, we make sure that the respective +% \dtx{} guard expressions are mutually exclusive. +% It makes no sense for \texttt{edbyw} to be in effect if either of +% \texttt{edby-par} or \texttt{edby-parc} is in effect. +% \item +% \texttt{makebst.tex} only activates \texttt{edcap} in certain cases, +% but we do no checking here, applying it consistently to the +% ``editor'' text entity. +% \item +% The code between \texttt{<!edpar>} and \verb+<edpar\|edparc>+ +% \emph{must} match the corresponding code in \texttt{format.editors}. +% This means that in the default case, formatting is controlled by +% a \dtx{} mechanism entirely different from the other cases. +% \item \texttt{ser-ed} has been added to suit AGU. Result of series plus +% volume to go between booktitle and editors; must remove \texttt{format.bvolume} +% from \texttt{incollection} and \texttt{inproceedings}. +% \end{itemize} +% +% \begin{macrocode} +FUNCTION {format.in.ed.booktitle} +{ format.booktitle duplicate$ empty$ 'skip$ + { +%<showstack>% btitle +%<*ser-ed> + format.bvolume duplicate$ empty$ 'pop$ + { ", " swap$ * * } + if$ +%</ser-ed> + editor "editor" format.names.ed duplicate$ empty$ 'pop$ + { +%<*!(edby|edby-par|edby-parc)> +%<showstack>% btitle ednms +%<!edpar&!edparxc> "," * + " " * + get.bbl.editor +%<bkedcap> capitalize +%<edpar> "(" swap$ * "), " * +%<!edpar&(edparc|edparxc)> "(" swap$ * ") " * +%<!edpar&!(edparc|edparxc)> ", " * + * swap$ +%<showstack>% eds btitle +%</!(edby|edby-par|edby-parc)> +%<*edby|edby-par|edby-parc> +%<showstack>% btitle ednms +%<edbyx|edbyy|edbyw> get.bbl.editor +%<!(edbyx|edbyy|edbyw)> bbl.edby +%<edcap> capitalize +%<!(edby-par|edby-parc)&edbyw> "(" swap$ * ")" * +%<showstack>% btitle ednms ed +%<(edby-par|edby)&edbyy> swap$ "," * + " " * swap$ * +%<showstack>% btitle ednms-ed +%<(edby-par|edby-parc)&!edbyw> "(" swap$ * ")" * + swap$ +%<edby|edby-parc> "," * + " " * swap$ +%</edby|edby-par|edby-parc> +%<showstack>% btitle ednms-ed (or ednms-ed btitle) + * } + if$ +%<showstack>% btitle-ednms-ed (or ednms-ed-btitle) (or btitle) + word.in swap$ * + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`empty.misc.check'} +% \begin{macrocode} +%<*!ay> +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and +%<!seq-no|alph> key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} +%</!ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.thesis.type'} +% \begin{macrocode} +FUNCTION {format.thesis.type} +{ type duplicate$ empty$ + 'pop$ + { swap$ pop$ + "t" change.case$ "type" bibinfo.check + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.tr.number'} +% \begin{macrocode} +FUNCTION {format.tr.number} +{ number "number" bibinfo.check + type duplicate$ empty$ + { pop$ bbl.techrep } + 'skip$ + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ "t" change.case$ } + { tie.or.space.prefix * * } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.article.crossref'} +% The \texttt{journal} field was emphasized emplicitly, but it should be +% done by command. +% \begin{macrocode} +FUNCTION {format.article.crossref} +{ +%<*!ay> + key duplicate$ empty$ + { pop$ + journal duplicate$ empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } + { "journal" bibinfo.check emphasize word.in swap$ * } + if$ + } + { word.in swap$ * " " *} + if$ +%</!ay> +%<ay> word.in +%<!html> " \cite{" * crossref * "}" * +%<html> " <tt>" * crossref * "</tt>" * +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.crossref.editor'} +% \begin{macrocode} +%<*!ay> +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ +%<nmft&nmfted&nmand-rm> bib.name.font + "editor" bibinfo.check + editor num.names$ duplicate$ + #2 > + { pop$ +%<nmft&nmfted&!nmand-rm&(etal-it|etal-rm)> bib.name.font + "editor" bibinfo.check + " " * bbl.etal +%<etal-it> emphasize + * +%<nmft&nmfted&!nmand-rm&!(etal-it|etal-rm)> bib.name.font +%<nmft&nmfted&!nmand-rm&!(etal-it|etal-rm)> "others" 't := + } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { +%<nmft&nmfted&!nmand-rm&(etal-it|etal-rm)> bib.name.font + "editor" bibinfo.check + " " * bbl.etal +%<etal-it> emphasize + * +%<nmft&nmfted&!nmand-rm&!(etal-it|etal-rm)> bib.name.font +%<nmft&nmfted&!nmand-rm&!(etal-it|etal-rm)> "others" 't := + } + { +%<*!harnm> +%<!amper> bbl.and space.word +%<amper> " \& " +%</!harnm> +%<harnm> " \harvardand\ " + * editor #2 "{vv~}{ll}" format.name$ +%<nmft&nmfted&nmand-rm> bib.name.font + "editor" bibinfo.check + * + } + if$ + } + if$ + } + if$ +%<*nmft&nmfted&!nmand-rm> + t "others" = + 'skip$ + { bib.name.font "editor" bibinfo.check } + if$ +%</nmft&nmfted&!nmand-rm> +} +%</!ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.book.crossref'} +% The \texttt{series} field was emphasized emplicitly, but it should be +% done by command. +% \begin{macrocode} +FUNCTION {format.book.crossref} +{ volume duplicate$ empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + pop$ word.in + } + { bbl.volume +%<!(blk-com|blk-tita)> capitalize + swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * + } + if$ +%<*!ay> + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { series emphasize * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ +%</!ay> +%<!html> " \cite{" * crossref * "}" * +%<html> " <tt>" * crossref * "</tt>" * +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.incoll.inproc.crossref'} +% The \texttt{booktitle} field was emphasized emplicitly, but it should be +% done by command. +% \begin{macrocode} +FUNCTION {format.incoll.inproc.crossref} +{ +%<*!ay> + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { format.booktitle duplicate$ empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + } + { word.in swap$ * } + if$ + } + { word.in key * " " *} + if$ + } + { word.in format.crossref.editor * " " *} + if$ +%</!ay> +%<ay> word.in +%<!html> " \cite{" * crossref * "}" * +%<html> " <tt>" * crossref * "</tt>" * +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.org.or.pub'} +% Psychology journals often want \textit{address}: \textit{publisher}. +% +% \textsl{Nature} wants publisher and date in parentheses, and when both +% are there, they are merged into one set. +% +% Call function \texttt{add.blank} before parentheses so suppress preceding +% punctuation, which looks strange when publisher in parentheses. +% +% MPG Jahrbuch wants publisher and year, but without parentheses. Add +% \texttt{pub-nopar} to be used with \texttt{pub-date}. +% +% Have now (3.87.h) extended this function to include the organization, if +% present. This is for \texttt{inproceedings} and \texttt{proceedings} where +% the publisher is optional, and organization too. If the publisher is missing, +% but the organization present, it is formatted like the publisher. This +% complication comes from styles that want the publisher/organization to have +% the date included, all in parentheses. +% +% This function is called by \texttt{format.publisher.address} and +% \texttt{format.organization.address}, each putting the appropriate text +% into the stack first. +% +% \begin{macrocode} +FUNCTION {format.org.or.pub} +{ 't := + "" +%<*pub-date&!ay> + year empty$ + { "empty year in " cite$ * warning$ } + 'skip$ + if$ +%</pub-date&!ay> +%<*!(pub-date&ay)> + address empty$ t empty$ and +%<pub-date> year empty$ and + 'skip$ + { +%</!(pub-date&ay)> +%<pub-par|(pub-date&!pub-xpar)> add.blank "(" * +%<*add-pub> + address "address" bibinfo.check * + t empty$ + 'skip$ +%</add-pub> +%<*!add-pub> + t empty$ + { address "address" bibinfo.check * + } + { t * + address empty$ + 'skip$ + { ", " * address "address" bibinfo.check * } + if$ + } +%</!add-pub> +%<*add-pub> + { address empty$ + 'skip$ + { ": " * } + if$ + t * + } +%</add-pub> + if$ +%<*pub-date&!ay> + year empty$ + 'skip$ + { t empty$ address empty$ and + 'skip$ +%<!pub-xc> { ", " swap$ * * } +%<pub-xc> { " " swap$ * * } + if$ + year "year" bibinfo.check +%<dtbf> bolden + * + } + if$ +%</pub-date&!ay> +%<*pub-date&ay> + year duplicate$ empty$ +%<*!blkyear> + { "empty year in " cite$ * "; set to ????" * warning$ + pop$ "????" } +%</!blkyear> +%<*blkyear> + { "empty year in " cite$ * warning$ + pop$ "" } +%</blkyear> +%<!dtbf> { "year" bibinfo.check extra.label * } +%<dtbf> { "year" bibinfo.check bolden extra.label * } + if$ + t empty$ address empty$ and + { * } +%<!pub-xc> { ", " swap$ * * } +%<pub-xc> { " " swap$ * * } + if$ +%</pub-date&ay> +%<pub-par|(pub-date&!pub-xpar)> ")" * +%<*!(pub-date&ay)> + } + if$ +%</!(pub-date&ay)> +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.publisher.address'} +% \begin{macrocode} +FUNCTION {format.publisher.address} +{ publisher "publisher" bibinfo.warn format.org.or.pub +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`format.organization.address'} +% \begin{macrocode} +FUNCTION {format.organization.address} +{ organization "organization" bibinfo.check format.org.or.pub +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`name.or.dash'} +% This function stores what is on the stack, compares it with previous value, +% and replaces it with a long dash if they are equal. What is on the stack +% should be author or editor names for the current entry. +% \begin{macrocode} +%<*nmdash> +STRINGS {oldname} + +FUNCTION {name.or.dash} +{ 's := + oldname empty$ + { s 'oldname := s } + { s oldname = +%<*!au-col> +%<!nmd-2&!nmd-3> { "---" } +%<nmd-2&!nmd-3> { "---{}---" } +%<nmd-3> { "---{}---{}---" } +%</!au-col> +%<*au-col> +%<!nmd-2&!nmd-3> { "---" add.blank } +%<nmd-2&!nmd-3> { "---{}---" add.blank } +%<nmd-3> { "---{}---{}---" add.blank } +%</au-col> + { s 'oldname := s } + if$ + } + if$ +} + +%</nmdash> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`article'} +% \begin{macrocode} +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<*dt-beg&!jdt-p&!jdt-pc&!jdt-vs&!jdt-v> + format.date "year" output.check + date.block +%</dt-beg&!jdt-p&!jdt-pc&!jdt-vs&!jdt-v> +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block +%<*!jtit-x> + format.title "title" output.check +%<blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<*blk-tit|blk-tita> +%<!tit-col> new.sentence +%<tit-col> add.colon +%</blk-tit|blk-tita> +%</!jtit-x> + crossref missing$ + { + journal +%<jxper> remove.dots + "journal" bibinfo.check +%<!jttl-rm> emphasize +%<injnl> word.in swap$ * + "journal" output.check +%<jnm-x> add.blank +%<*!dt-beg&!dt-end&dt-jnl&!jdt-p&!jdt-pc&!jdt-vs&!jdt-v> + format.date "year" output.check + date.block +%</!dt-beg&!dt-end&dt-jnl&!jdt-p&!jdt-pc&!jdt-vs&!jdt-v> + format.vol.num.pages output +%<doi&agu-doi> format.doi output +%<*!dt-beg&!dt-end&!dt-jnl&!jdt-p&!jdt-pc&!jdt-vs&!jdt-v> + format.date "year" output.check +%</!dt-beg&!dt-end&!dt-jnl&!jdt-p&!jdt-pc&!jdt-vs&!jdt-v> + } + { format.article.crossref output.nonnull +%<!pp-last> format.pages output + } + if$ +%<*pp-last> + eid empty$ + { format.journal.pages } + { format.journal.eid } + if$ +%</pp-last> +%<issn> format.issn output +%<(doi|(url-doi&!url))&!agu-doi> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end&!jdt-p&!jdt-pc&!jdt-vs&!jdt-v> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end&!jdt-p&!jdt-pc&!jdt-vs&!jdt-v> +%<eprint> format.eprint output +%<*revdata> + format.url output +%</revdata> + fin.entry +%<harnm|url-nl> write.url +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`book'} +% \begin{macrocode} +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check +%<ay> editor format.key output +%<!edpar&(edparc|edparxc)&!au-col> add.blank +%<au-col> add.colon +%<nmdash> name.or.dash + } + { format.authors output.nonnull +%<au-col> add.colon +%<nmdash> name.or.dash + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ +%<dt-beg&!pub-date> format.date "year" output.check +%<dt-beg&!pub-date> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%<!numser> format.number.series output +%<pre-edn> format.edition output +%<!blk-com&!blk-tit&!blk-tita> new.sentence +%<numser> format.number.series output +%<pg-bk&pg-pre> format.book.pages output + format.publisher.address output + } + { +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon + format.book.crossref output.nonnull +%<!dt-beg&!dt-end&pub-date> format.date "year" output.check + } + if$ +%<!pre-edn> format.edition output +%<!dt-beg&!dt-end&!pub-date> format.date "year" output.check +%<isbn> format.isbn output +%<pg-bk&!pg-pre> format.book.pages output +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end&!pub-date> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end&!pub-date> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`booklet'} +% \begin{macrocode} +FUNCTION {booklet} +{ output.bibitem + format.authors output +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<ay&dt-beg> format.date "year" output.check +%<!ay&dt-beg> format.date output +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.title "title" output.check +%<blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon + howpublished "howpublished" bibinfo.check output + address "address" bibinfo.check output +%<ay&!dt-beg&!dt-end> format.date "year" output.check +%<!ay&!dt-beg&!dt-end> format.date output +%<isbn> format.isbn output +%<pg-bk> format.book.pages output +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*ay&!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</ay&!dt-beg&dt-end> +%<*!ay&!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date output +%</!ay&!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`inbook'} +% The medical journals, with option \texttt{dt-jnl}, have the date as part of +% the journal specification. For chapters in books, they want date and pages +% to appear at the end, with a space between them. (For journals, there is to be +% no space.) Suppress the chapter specification (for now). +% +% The \texttt{dt-jnl} option usually behaves as the default, except for some +% special entries, like this one. +% +% Restore the chapter specification (2004 Feb 9) after someone complained. +% There are still some bugs here. If some date punctuation is specified, say +% with \texttt{yrp-semi} for a semi-colon after the year, this appears always, +% even if there is no text following. But then this to be an unlikely wish anyway, +% since such punctuation options are best suited for \texttt{dt-beg}. +% \begin{macrocode} +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check +%<ay> editor format.key output +%<au-col> add.colon +%<nmdash> name.or.dash + } + { format.authors output.nonnull +%<au-col> add.colon +%<nmdash> name.or.dash + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ +%<dt-beg&!pub-date> format.date "year" output.check +%<dt-beg&!pub-date> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.btitle "title" output.check + crossref missing$ + { +%<pre-pub&numser> format.number.series output +%<pre-pub> format.publisher.address output + format.bvolume output +%<*dt-beg|dt-end|!dt-jnl|a|!a> + format.chapter.pages "chapter and pages" output.check +%</dt-beg|dt-end|!dt-jnl|a|!a> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%<!numser> format.number.series output +%<pre-edn> format.edition output +%<!blk-com&!blk-tit&!blk-tita> new.sentence +%<!pre-pub&numser> format.number.series output +%<!pre-pub> format.publisher.address output + } + { +%<*dt-beg|dt-end|!dt-jnl|a|!a> + format.chapter.pages "chapter and pages" output.check +%</dt-beg|dt-end|!dt-jnl|a|!a> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon + format.book.crossref output.nonnull +%<!dt-beg&!dt-end&!dt-jnl&pub-date> format.date "year" output.check + } + if$ +%<!pre-edn> format.edition output +%<!dt-beg&!dt-end&!dt-jnl&!pub-date> format.date "year" output.check +%<*isbn> + crossref missing$ + { format.isbn output } + 'skip$ + if$ +%</isbn> +%<*(!dt-beg&!dt-end&dt-jnl)&!pub-date> + format.date "year" output.check + date.block +%</(!dt-beg&!dt-end&dt-jnl)&!pub-date> +%<pp-last> format.pages "pages" output.check +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end&!pub-date> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end&!pub-date> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`incollection'} +% \begin{macrocode} +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<dt-beg&!pub-date> format.date "year" output.check +%<dt-beg&!pub-date> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block +%<*!jtit-x> + format.title "title" output.check +%<blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%</!jtit-x> + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check +%<bt-qq> end.quote.btitle +%<pre-pub&numser> format.number.series output +%<pre-pub> format.publisher.address output +%<!ser-ed> format.bvolume output +%<!numser> format.number.series output +%<pre-edn> format.edition output + format.chapter.pages output +%<!blk-com&!blk-tit&!blk-tita> new.sentence +%<!pre-pub&numser> format.number.series output +%<!pre-pub> format.publisher.address output +%<!pre-edn> format.edition output +%<!dt-beg&!dt-end&!dt-jnl&!pub-date> format.date "year" output.check +%<isbn> format.isbn output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ +%<*(!dt-beg&!dt-end&dt-jnl)&!pub-date> + format.date "year" output.check + date.block +%</(!dt-beg&!dt-end&dt-jnl)&!pub-date> +%<pp-last> format.pages "pages" output.check +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end&!pub-date> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end&!pub-date> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`inproceedings'} +% \begin{macrocode} +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<dt-beg&!pub-date> format.date "year" output.check +%<dt-beg&!pub-date> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block +%<*!jtit-x> + format.title "title" output.check +%<blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%</!jtit-x> + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check +%<bt-qq> end.quote.btitle +%<*!pre-pub> +%<!ser-ed> format.bvolume output +%<!numser> format.number.series output +%<(dt-beg|dt-end|!dt-jnl)&!pp-last> format.pages output +%</!pre-pub> +%<!blk-com&!blk-tit&!blk-tita> new.sentence +%<numser> format.number.series output + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ +%<!dt-beg&!dt-end&!dt-jnl&!pub-date> format.date "year" output.check +%<*pre-pub> + format.bvolume output +%<!numser> format.number.series output +%<(dt-beg|dt-end|!dt-jnl)&!pp-last> format.pages output +%</pre-pub> +%<isbn> format.isbn output +%<issn> format.issn output + } + { format.incoll.inproc.crossref output.nonnull +%<(dt-beg|dt-end|!dt-jnl)&!pp-last> format.pages output + } + if$ +%<*!dt-beg&!dt-end&dt-jnl&!pp-last> +%<!pub-date> format.date "year" output.check +%<!pub-date> date.block +%<jdt-v|jdt-vs|jdt-p|!jdt-pc> add.blank + format.pages "pages" output.check +%</!dt-beg&!dt-end&dt-jnl&!pp-last> +%<pp-last> format.pages "pages" output.check +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end&!pub-date> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end&!pub-date> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`conference'} +% \begin{macrocode} +FUNCTION {conference} { inproceedings } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`manual'} +% \begin{macrocode} +%<*ay> +FUNCTION {manual} +{ output.bibitem + format.authors output + author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<dt-beg> format.date "year" output.check +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.btitle "title" output.check +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%<!blk-com&!blk-tit&!blk-tita> organization address new.block.checkb + organization "organization" bibinfo.check output + address "address" bibinfo.check output + format.edition output +%<!dt-beg&!dt-end> format.date "year" output.check +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +%</ay> +%<*!ay> +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization "organization" bibinfo.check + duplicate$ empty$ 'pop$ + { output + address "address" bibinfo.check output + } + if$ + } + { format.authors output.nonnull } + if$ +%<au-col> add.colon +%<nmdash> name.or.dash +%<ay&dt-beg> format.date "year" output.check +%<!ay&dt-beg> format.date output +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.btitle "title" output.check +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon + author empty$ + { organization empty$ + { +%<!blk-com&!blk-tit&!blk-tita> address new.block.checka + address "address" bibinfo.check output + } + 'skip$ + if$ + } + { +%<!blk-com&!blk-tit&!blk-tita> organization address new.block.checkb + organization "organization" bibinfo.check output + address "address" bibinfo.check output + } + if$ + format.edition output +%<ay&!dt-beg&!dt-end> format.date "year" output.check +%<!ay&!dt-beg&!dt-end> format.date output +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*ay&!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</ay&!dt-beg&dt-end> +%<*!ay&!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date output +%</!ay&!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +%</!ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`mastersthesis'} +% To format a master's thesis. +% \begin{macrocode} +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<dt-beg> format.date "year" output.check +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block +%<*!thtit-x> +%<!thtit-a> format.btitle +%<thtit-a> format.title + "title" output.check +%<thtit-a&blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%</!thtit-x> + bbl.mthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output +%<!dt-beg&!dt-end> format.date "year" output.check +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`misc'} +% \begin{macrocode} +FUNCTION {misc} +{ output.bibitem + format.authors output +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<ay&dt-beg> format.date "year" output.check +%<!ay&dt-beg> format.date output +%<*ay> +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.title output +%<blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%</ay> +%<*!ay> +%<!blk-com&!blk-tit&!blk-tita> title howpublished new.block.checkb + format.title output +%<blk-com&tit-qq> end.quote.title +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%<!blk-com&!blk-tit&!blk-tita> howpublished new.block.checka +%</!ay> + howpublished "howpublished" bibinfo.check output +%<ay&!dt-beg&!dt-end> format.date "year" output.check +%<!ay&!dt-beg&!dt-end> format.date output +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*ay&!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</ay&!dt-beg&dt-end> +%<*!ay&!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date output +%</!ay&!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +%<!ay> empty.misc.check +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`phdthesis'} +% To format a doctoral thesis. +% \begin{macrocode} +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<dt-beg> format.date "year" output.check +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block +%<*!thtit-x> +%<!thtit-a> format.btitle +%<thtit-a> format.title + "title" output.check +%<thtit-a&blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%</!thtit-x> + bbl.phdthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output +%<!dt-beg&!dt-end> format.date "year" output.check +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`presentation'} +% \begin{macrocode} +%<*pres> +FUNCTION {presentation} +{ output.bibitem + format.authors output +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<!blk-com&!blk-tit&!blk-tita> new.block + format.title output +%<blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon + format.organization.address "organization and address" output.check + month "month" output.check + year "year" output.check +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output + new.sentence + type missing$ 'skip$ + {"(" type capitalize * ")" * output} + if$ +%<*url-blk&!harnm> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm> + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +%</pres> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`proceedings'} +% \begin{macrocode} +%<*ay> +FUNCTION {proceedings} +{ output.bibitem + format.editors output + editor format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<dt-beg> format.date "year" output.check +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.btitle "title" output.check + format.bvolume output +%<!numser> format.number.series output +%<!blk-com&!blk-tit&!blk-tita> new.sentence +%<numser> format.number.series output + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ +%<!dt-beg&!dt-end&!pub-date> format.date "year" output.check +%<isbn> format.isbn output +%<issn> format.issn output +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end&!pub-date> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end&!pub-date> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +%</ay> +% \end{macrocode} +% \begin{macrocode} +%<*!ay> +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization "organization" bibinfo.check output + } + { format.editors output.nonnull } + if$ +%<au-col> add.colon +%<nmdash> name.or.dash +%<dt-beg> format.date "year" output.check +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.btitle "title" output.check + format.bvolume output +%<!numser> format.number.series output + editor empty$ + { publisher empty$ +%<!numser> 'skip$ +%<numser> { format.number.series output } + { +%<!blk-com&!blk-tit&!blk-tita> new.sentence +%<numser> format.number.series output + format.publisher.address output + } + if$ + } + { publisher empty$ + { +%<!blk-com&!blk-tit&!blk-tita> new.sentence +%<numser> format.number.series output + format.organization.address output } + { +%<!blk-com&!blk-tit&!blk-tita> new.sentence +%<numser> format.number.series output + organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + } + if$ +%<!dt-beg&!dt-end&!pub-date> format.date "year" output.check +%<isbn> format.isbn output +%<issn> format.issn output +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +%</!ay> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`techreport'} +% \begin{macrocode} +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<dt-beg> format.date "year" output.check +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block +%<trtit-b> format.btitle +%<!trtit-b> format.title + "title" output.check +%<!trtit-b&blk-com&tit-qq> end.quote.title +%<!blk-com&!blk-tit&!blk-tita> new.block +%<blk-tit&!tit-col> new.sentence +%<blk-tit&tit-col> add.colon +%<!trnum-it> format.tr.number output.nonnull +%<trnum-it> format.tr.number emphasize output.nonnull + institution "institution" bibinfo.warn output + address "address" bibinfo.check output +%<!dt-beg&!dt-end> format.date "year" output.check +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note output +%<*!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date "year" output.check +%</!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`unpublished'} +% \begin{macrocode} +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check +%<ay> author format.key output +%<au-col> add.colon +%<nmdash> name.or.dash +%<ay&dt-beg> format.date "year" output.check +%<!ay&dt-beg> format.date output +%<dt-beg> date.block +%<!dt-beg&!blk-com&!blk-tit&!blk-tita> new.block + format.title "title" output.check +%<blk-com&tit-qq> end.quote.title +%<ay&!dt-beg&!dt-end> format.date "year" output.check +%<!ay&!dt-beg&!dt-end> format.date output +%<doi|(url-doi&!url)> format.doi output +%<*url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.url output +%</url-blk&!harnm&!revdata> +%<!blk-com&!blk-tit&!blk-tita> new.block +%<(blk-com|blk-tit|blk-tita)&blknt> new.sentence + format.note "note" output.check +%<*ay&!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date output +%</ay&!dt-beg&dt-end> +%<*!ay&!dt-beg&dt-end> +%<!blk-com&!blk-tit&!blk-tita> new.block + format.date output +%</!ay&!dt-beg&dt-end> +%<eprint> format.eprint output +%<revdata> format.url output + fin.entry +%<(harnm|url-nl)&!revdata> write.url +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`default.type'} +% \begin{macrocode} +FUNCTION {default.type} { misc } +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +READ +% \end{macrocode} +% +% \begin{macrocode} +%<*ay|alph|!seq-no> +% \end{macrocode} +% +% \begin{macro}{`sortify'} +% In \texttt{btxbst.doc}/\texttt{.mbs}, the \texttt{sortify} function is +% left out for unsorted alpha-style citations. This leads to an error, +% because it is still used. So leave it in here too. \emph{In fact, do away +% with unsorted alpha style, since it is as useless as unsorted author--year +% listings.} +% \begin{macrocode} +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +INTEGERS { len } +% \end{macrocode} +% +% \begin{macro}{`chop.word'} +% \begin{macrocode} +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%<*!ay&alph> +% \end{macrocode} +% +% \begin{macro}{`format.lab.names'} +% The function \texttt{format.lab.names} formats by author--year or the +% \texttt{alpha} style as in the original \texttt{alpha.bst}. +% Only major difference is that there should be no unsorted (\texttt{seq-no}) +% versions of this. Patashnik was clearly very unhappy about accommodating +% such an animal, and in fact, his unsorted alpha style crashes \btx. +% I also provide the \texttt{vonx} option here to ignore the \textsl{von} +% part of the name. +% +% \begin{macrocode} +INTEGERS { et.al.char.used } +% \end{macrocode} +% +% \begin{macrocode} +FUNCTION {initialize.et.al.char.used} +{ #0 'et.al.char.used := +} +% \end{macrocode} +% +% \begin{macrocode} +EXECUTE {initialize.et.al.char.used} +% \end{macrocode} +% +% \begin{macrocode} +FUNCTION {format.lab.names} +{ 's := +%<*alf-1> +%<!vonx> s #1 "{v{}}{l{}}" format.name$ +%<vonx> s #1 "{l{}}" format.name$ + duplicate$ text.length$ #2 < + { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } + 'skip$ + if$ +%</alf-1> +%<*!alf-1&alf-f> +%<!vonx> s #1 "{vv{}}{ll}" format.name$ +%<vonx> s #1 "{ll}" format.name$ +%</!alf-1&alf-f> +%<*!alf-1&!alf-f> + s num.names$ 'numnames := + numnames #1 > + { numnames #4 > + { #3 'namesleft := } + { numnames 'namesleft := } + if$ + #1 'nameptr := + "" + { namesleft #0 > } + { nameptr numnames = + { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { "{\etalchar{+}}" * + #1 'et.al.char.used := + } +%<!vonx> { s nameptr "{v{}}{l{}}" format.name$ * } +%<vonx> { s nameptr "{l{}}" format.name$ * } + if$ + } +%<!vonx> { s nameptr "{v{}}{l{}}" format.name$ * } +%<vonx> { s nameptr "{l{}}" format.name$ * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + numnames #4 > + { "{\etalchar{+}}" * + #1 'et.al.char.used := + } + 'skip$ + if$ + } +%<!vonx> { s #1 "{v{}}{l{}}" format.name$ +%<vonx> { s #1 "{l{}}" format.name$ + duplicate$ text.length$ #2 < + { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } + 'skip$ + if$ + } + if$ +%</!alf-1&!alf-f> +} +% \end{macrocode} +% +% \begin{macrocode} +%</!ay&alph> +% \end{macrocode} +% The function for the standard citation: one or two authors cited full, but for +% more than two, only the first with \emph{et~al.} given. +% \begin{macrocode} +%<*ay&!mcite> +FUNCTION {format.lab.names} +{ 's := + "" 't := +%<!jnrlab> s #1 "{vv~}{ll}" format.name$ +%<*jnrlab> +%<!nm-rv&!nm-rvv&!nm-rvx&!nm-rvcx> s #1 "{vv~}{ll}{, jj}" format.name$ +%<nm-rv|nm-rvv|nm-rvx|nm-rvcx> s #1 "{vv~}{ll}{ jj}" format.name$ +%</jnrlab> +%<lab&and-rm> cite.name.font + s num.names$ duplicate$ + #2 > + { pop$ +%<lab&!and-rm&(etal-it|etal-rm)> cite.name.font +%<*!etal-it> +%<lab&and-rm&!etal-rm> " " * bbl.etal cite.name.font * +%<!lab|!and-rm|etal-rm> " " * bbl.etal * +%</!etal-it> +%<etal-it> " " * bbl.etal emphasize * +%<lab&!and-rm&!(etal-it|etal-rm)> cite.name.font +%<lab&!and-rm> "others" 't := + } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { +% %<lab&!and-rm&(etal-it|etal-rm)> cite.name.font +%<*!etal-it> +%<lab&and-rm&!etal-rm> " " * bbl.etal cite.name.font * +%<!lab|!and-rm|etal-rm> " " * bbl.etal * +%</!etal-it> +%<etal-it> " " * bbl.etal emphasize * +%<lab&!and-rm&!(etal-it|etal-rm)> cite.name.font +%<lab&!and-rm> "others" 't := + } +%<*!harnm> +%<*!amper> + { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ +%<lab&and-rm> cite.name.font + * } +%</!amper> +%<*amper> + { " \& " * s #2 "{vv~}{ll}" format.name$ +%<lab&and-rm> cite.name.font + * } +%</amper> +%</!harnm> +%<*harnm> + { " \harvardand{} " * s #2 "{vv~}{ll}" format.name$ +%<lab&and-rm> cite.name.font + * } +%</harnm> + if$ + } + if$ + } + if$ +%<*lab&!and-rm> + t "others" = + 'skip$ + { cite.name.font } + if$ +%</lab&!and-rm> +} + +%</ay&!mcite> +% \end{macrocode} +% +% The code for formating author--year citations with more than one author +% before \emph{et al.} or selecting a number other than two for truncating, +% is much the same as the \texttt{format.full.names} function. +% \begin{macrocode} +%<*ay&mcite> +FUNCTION {format.lab.names} +{'s := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr +%<!jnrlab> "{vv~}{ll}" format.name$ +%<*jnrlab> +%<!nm-rv&!nm-rvv&!nm-rvx&!nm-rvcx> "{vv~}{ll}{, jj}" format.name$ +%<nm-rv|nm-rvv|nm-rvx|nm-rvcx> "{vv~}{ll}{ jj}" format.name$ +%</jnrlab> +%<lab&and-rm> cite.name.font + 't := + nameptr #1 > + { +%<mct-1> nameptr #2 = +%<mct-2> nameptr #3 = +%<mct-3> nameptr #4 = +%<mct-4> nameptr #5 = +%<mct-5> nameptr #6 = +%<mct-6> nameptr #7 = +%<mct-x2> numnames #2 > and +%<mct-x3> numnames #3 > and +%<mct-x4> numnames #4 > and +%<mct-x5> numnames #5 > and +%<mct-x6> numnames #6 > and + { "others" 't := + #1 'namesleft := } + 'skip$ + if$ + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { +%<lab&!and-rm&(etal-it|etal-rm)> cite.name.font +%<*!etal-it> +%<lab&and-rm&!etal-rm> " " * bbl.etal cite.name.font * +%<!lab|!and-rm|etal-rm> " " * bbl.etal * +%</!etal-it> +%<etal-it> " " * bbl.etal emphasize * +%<lab&!and-rm&!(etal-it|etal-rm)> cite.name.font + } + { +%<*!harnm> +%<*!and-xcom> + numnames #2 > + { "," * } + 'skip$ + if$ +%</!and-xcom> +%<!amper> bbl.and +%<amper> "\&" +%</!harnm> +%<harnm> "\harvardand{}" + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +%<*lab&!and-rm> + t "others" = + 'skip$ + { cite.name.font } + if$ +%</lab&!and-rm> +} + +%</ay&mcite> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`author.key.label'} +% \begin{macro}{`author.editor.key.label'} +% \begin{macro}{`author.key.organization.label'} +% \begin{macro}{`editor.key.organization.label'} +% \begin{macro}{`editor.key.label'} +% Have to be very careful with the options \texttt{ay}, \texttt{alph}, and +% \texttt{seq-no} here. The first two are actually mutually exclusive, and +% \texttt{ay} should dominate. The \texttt{seq-no} option only applies for +% numerical (\texttt{!ay}) but not alphabetic (\texttt{alph}) selections. +% This whole block of coding dealing with labels is only included for +% author--year or alphabetic or ordered numerical. +% That is, \texttt{ay} or \texttt{alph} or \texttt{!seq-no} is true. +% \begin{macrocode} +%<*ay|alph> +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } +%<ay> 'key +%<!ay> { key #3 text.prefix$ } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } +%<ay> 'key +%<!ay> { key #3 text.prefix$ } + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +%</ay|alph> +%<*!ay&alph> +FUNCTION {author.key.organization.label} +{ author empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.organization.label} +{ editor empty$ + { key empty$ + { organization empty$ + { cite$ #1 #3 substring$ } + { "The " #4 organization chop.word #3 text.prefix$ } + if$ + } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names } + if$ +} + +%</!ay&alph> +%<*ay> +FUNCTION {editor.key.label} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{`calc.short.authors'} +% \begin{macrocode} +FUNCTION {calc.short.authors} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'short.list := +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`calc.label'} +% \begin{macrocode} +FUNCTION {calc.label} +{ calc.short.authors + short.list +%<!(har|ast|cay|nmd|alk|cn)> "(" +%<har|ast|cay|nmd|alk|cn> ", " + * + year duplicate$ empty$ +%<keyxyr> short.list key field.or.null = or +%<(blkyear|keyxyr)> { pop$ "" } +%<!(blkyear|keyxyr)> { pop$ "????" } +%<!note-yr> { purify$ #-1 #4 substring$ } +%<note-yr> 'skip$ + if$ + * + 'label := +} + +%</ay> +%<*!ay&alph> +FUNCTION {calc.label} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.organization.label + { type$ "manual" = + 'author.key.organization.label + 'author.key.label + if$ + } + if$ + } + if$ + duplicate$ + year field.or.null purify$ #-1 #2 substring$ + * + 'label := + year field.or.null purify$ #-1 #4 substring$ + * + sortify 'sort.label := +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</!ay&alph> +% \end{macrocode} +% +% \begin{macrocode} +%<*ay> +% \end{macrocode} +% +% \begin{macrocode} +%<*har|cay|nmd|ast|cn> +% \end{macrocode} +% +% \begin{macro}{`calc.short.label'} +% \begin{macrocode} +FUNCTION {calc.short.label} +{ calc.short.authors short.list + 'label := +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</har|cay|nmd|ast|cn> +% \end{macrocode} +% +% \begin{macrocode} +%</ay> +% \end{macrocode} +% +% \begin{macro}{`sort.format.names'} +% \begin{macrocode} +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr +%<*xintls> +%<!vonx> "{vv{ } }{ll{ }}" +%<vonx> "{ll{ }}" +%</xintls> +%<*!xintls> +%<*!nm-init&!nm-rev&!nm-rev1&!nm-rv&!nm-rvx&!nm-rvcx&!nm-rvv&!nm-rvvc> +%<!vonx> "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" +%<vonx> "{ll{ }}{ ff{ }}{ jj{ }}" +%</!nm-init&!nm-rev&!nm-rev1&!nm-rv&!nm-rvx&!nm-rvcx&!nm-rvv&!nm-rvvc> +%<*nm-init|nm-rev|nm-rev1|nm-rv|nm-rvx|nm-rvcx|nm-rvv|nm-rvvc> +%<!vonx> "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" +%<vonx> "{ll{ }}{ f{ }}{ jj{ }}" +%</nm-init|nm-rev|nm-rev1|nm-rv|nm-rvx|nm-rvcx|nm-rvv|nm-rvvc> +%</!xintls> + format.name$ 't := + nameptr #1 > + { +%<*nmlm> +%<m1> nameptr #1 +%<m2> nameptr #2 +%<m3> nameptr #3 +%<m4> nameptr #4 +%<m5> nameptr #5 +%<m6> nameptr #6 +%<m7> nameptr #7 +%<m8> nameptr #8 +%<m9> nameptr #9 +%<m0> nameptr #0 +%<m10> #10 + +%<m20> #20 + +%<m30> #30 + +%<m40> #40 + +%<m50> #50 + +%<m60> #60 + +%<m70> #70 + +%<m80> #80 + +%<m90> #90 + + #1 + = +%<x1> numnames #1 +%<x2> numnames #2 +%<x3> numnames #3 +%<x4> numnames #4 +%<x5> numnames #5 +%<x6> numnames #6 +%<x7> numnames #7 +%<x8> numnames #8 +%<x9> numnames #9 +%<x0> numnames #0 +%<x10> #10 + +%<x20> #20 + +%<x30> #30 + +%<x40> #40 + +%<x50> #50 + +%<x60> #60 + +%<x70> #70 + +%<x80> #80 + +%<x90> #90 + + > and + { "others" 't := + #1 'namesleft := } + 'skip$ + if$ +%</nmlm> + " " * + namesleft #1 = t "others" = and + { "zzzzz" 't := } + 'skip$ + if$ +%<*seq-lab|seq-key|seq-labc> + numnames #2 > nameptr #2 = and + { "zz" * year field.or.null * " " * +%<seq-labc> #1 'namesleft := + } +%<seq-labc> { t sortify * } +%<!seq-labc> 'skip$ + if$ +%</seq-lab|seq-key|seq-labc> +%<!seq-labc> t sortify * + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`sort.format.title'} +% \begin{macrocode} +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`author.sort'} +% \begin{macrocode} +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`author.editor.sort'} +% \begin{macrocode} +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$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`negate.year'} +% This function negates the year by substituting each digit by its +% complement. That is, 0 $\rightarrow$ 9, 1 $\rightarrow$ 8, etc. This is used +% to provide ordering by descending year (latest year first). +% \begin{macrocode} +%<*seq-yrr&!seq-yr> +FUNCTION {negate.year} +{ year empty$ + { "99999" } + { year #1 #1 substring$ chr.to.int$ #105 swap$ - int.to.chr$ + year #2 #1 substring$ chr.to.int$ #105 swap$ - int.to.chr$ * + year #3 #1 substring$ chr.to.int$ #105 swap$ - int.to.chr$ * + year #4 #1 substring$ chr.to.int$ #105 swap$ - int.to.chr$ * + } + if$ +} +%</seq-yrr&!seq-yr> +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%<*ay> +% \end{macrocode} +% +% \begin{macro}{`editor.sort'} +% \begin{macrocode} +FUNCTION {editor.sort} +{ editor empty$ + { key empty$ + { "to sort, need editor or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%<*seq-no> +% \end{macrocode} +% +% \begin{macrocode} +INTEGERS { seq.num } +% \end{macrocode} +% +% \begin{macro}{`init.seq'} +% \begin{macrocode} +FUNCTION {init.seq} +{ #0 'seq.num :=} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +EXECUTE {init.seq} +% \end{macrocode} +% +% \begin{macro}{`int.to.fix'} +% \begin{macrocode} +FUNCTION {int.to.fix} +{ "000000000" swap$ int.to.str$ * + #-1 #10 substring$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</seq-no> +% \end{macrocode} +% +% \begin{macro}{`presort'} +% For unsorted author--year, make up the final sorting order in +% \texttt{sort.label} with the original sequence number, for unsorting later. +% \begin{macrocode} +FUNCTION {presort} +{ calc.label + label sortify + " " + * +%<*!seq-no> + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.sort + 'author.sort + if$ + } + if$ + #1 entry.max$ substring$ +%</!seq-no> +%<*seq-no> + seq.num #1 + 'seq.num := + seq.num int.to.fix +%</seq-no> + 'sort.label := + sort.label + * +%<seq-yr> " " * year field.or.null * +%<seq-yrr&!seq-yr> " " * negate.year field.or.null * +%<*!seq-key&!seq-labc&!seq-yr&!seq-yrr> + " " + * + title field.or.null + sort.format.title + * +%</!seq-key&!seq-labc&!seq-yr&!seq-yrr> +%<seq-key|seq-yr|seq-yrr> " " * cite$ * + #1 entry.max$ substring$ + 'sort.key$ := +% "For " cite$ * ", sort.key=" * sort.key$ * warning$ +} + +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</ay> +% \end{macrocode} +% +% \begin{macrocode} +%<*!ay> +% \end{macrocode} +% +% \begin{macro}{`author.organization.sort'} +% \begin{macrocode} +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$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`editor.organization.sort'} +% \begin{macrocode} +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`presort'} +% \begin{macrocode} +FUNCTION {presort} +%<*alph> +{ calc.label + sort.label + " " + * + type$ "book" = +%</alph> +%<!alph>{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ +%<alph> * + " " + * +%<seq-yrr> negate.year field.or.null sortify +%<!seq-yrr> year field.or.null sortify +%<!(seq-yr|seq-yrr)|alph> * + " " + * +%<(seq-yr|seq-yrr)&!alph> swap$ * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</!ay> +% \end{macrocode} +% +% \begin{macrocode} +ITERATE {presort} +% \end{macrocode} +% +% \begin{macrocode} +SORT +% \end{macrocode} +% +% \begin{macrocode} +%</ay|alph|!seq-no> +% \end{macrocode} +% +% With version~6.0 of \texttt{natbib}, the author-year styles can also be +% used for numerical citations; then the \texttt{thebibliography} environment +% must have an argument indicating the length of the longest label. +% Simply count the references and add this number as the argument. +% \begin{macrocode} +%<*ay> +% \end{macrocode} +% +% \begin{macrocode} +STRINGS { last.label next.extra } +% \end{macrocode} +% +% With computer-generated articles, it is possible to have more than 26 articles +% in one year. It has finally occurred that the extra labels go beyond `z'. +% The current code now allows for `aa', \dots `az', 'ba', \dots `zz'. This +% code was provided by Joseph Wright (2007 Oct 10). +% \begin{macrocode} +INTEGERS { last.extra.num last.extra.num.extended last.extra.num.blank number.label } +% \end{macrocode} +% +% \begin{macro}{`initialize.extra.label.stuff'} +% \begin{macrocode} +FUNCTION {initialize.extra.label.stuff} +{ #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'last.extra.num := + "a" chr.to.int$ #1 - 'last.extra.num.blank := + last.extra.num.blank 'last.extra.num.extended := + #0 'number.label := +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`forward.pass'} +% \begin{macrocode} +FUNCTION {forward.pass} +{ last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num "z" chr.to.int$ > + { "a" chr.to.int$ 'last.extra.num := + last.extra.num.extended #1 + 'last.extra.num.extended := + } + 'skip$ + if$ + last.extra.num.extended last.extra.num.blank > + { last.extra.num.extended int.to.chr$ + last.extra.num int.to.chr$ + * 'extra.label := } + { last.extra.num int.to.chr$ 'extra.label := } + if$ + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</ay> +% \end{macrocode} +% +% \begin{macrocode} +%<*!ay&alph> +% \end{macrocode} +% +% \begin{macrocode} +STRINGS { longest.label last.sort.label next.extra } +% \end{macrocode} +% +% \begin{macrocode} +INTEGERS { longest.label.width last.extra.num } +% \end{macrocode} +% +% \begin{macro}{`initialize.longest.label'} +% \begin{macrocode} +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #0 int.to.chr$ 'last.sort.label := + "" 'next.extra := + #0 'longest.label.width := + #0 'last.extra.num := +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{`forward.pass'} +% \begin{macrocode} +FUNCTION {forward.pass} +{ last.sort.label sort.label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + sort.label 'last.sort.label := + } + if$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</!ay&alph> +% \end{macrocode} +% +% \begin{macro}{`reverse.pass'} +% The extra label is added in braces so that natbib can treat it as one unit. +% This allows extra labels to be more than one letter long. For non-NFSS +% emphasizing, this is no problem, since labels go in |{\em a}|, but for +% non-emphasizing and for NFSS, it caused troubles without the braces. +% The trouble arises with multiple citations in one |\cite| in which +% authors and years are the same, and only the extra label is given for +% the next one. Note: |\emph{a}| is more than one letter long in this sense, +% so it is not just a problem for more than 26 papers with same authors and +% year. +% +% The command |\natexlab| now encloses the extra label for \texttt{natbib} +% styles. This command normally just prints its argument, but for numerical +% citation mode, it swallows its argument. This allows the extra labels to +% be suppressed for numerical citations where they are superfluous. +% The enclosing braces mentioned above must be included here to make the +% entire extra label text a single token for \texttt{natbib}. +% \begin{macrocode} +%<*ay> +% \end{macrocode} +% +% \begin{macrocode} +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label +%<xlab-it> emphasize +%<*!html> + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ +%</!html> + 'extra.label := +%<!(har|ast|cay|nmd|cn)> label extra.label * 'label := +} +% \end{macrocode} +% +% \begin{macrocode} +%</ay> +% \end{macrocode} +% +% \begin{macrocode} +%<*!ay&alph> +% \end{macrocode} +% +% \begin{macrocode} +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + label extra.label * 'label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ + extra.label 'next.extra := +} +% \end{macrocode} +% +% \begin{macrocode} +%</!ay&alph> +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%<ay>EXECUTE {initialize.extra.label.stuff} +%<!ay&alph>EXECUTE {initialize.longest.label} +% \end{macrocode} +% +% \begin{macrocode} +%<*ay|alph> +ITERATE {forward.pass} +% \end{macrocode} +% +% \begin{macrocode} +REVERSE {reverse.pass} +% \end{macrocode} +% +% \begin{macrocode} +%</ay|alph> +% \end{macrocode} +% +% \begin{macrocode} +%<*ay> +FUNCTION {bib.sort.order} +{ sort.label + " " + * +%<seq-yrr> negate.year field.or.null sortify +%<!seq-yrr> year field.or.null sortify +%<(seq-yr|seq-yrr)&!(seq-lab|seq-key|seq-labc)> swap$ + * +%<*!seq-key&!seq-labc&!seq-yr&!seq-yrr> + " " + * + title field.or.null + sort.format.title + * +%</!seq-key&!seq-labc&!seq-yr&!seq-yrr> +%<seq-key|seq-yr|seq-yrr> " " * cite$ * + #1 entry.max$ substring$ + 'sort.key$ := +% "For " cite$ * ", bib.sort.key=" * sort.key$ * warning$ +%<har|cay|nmd|cn|ast> calc.short.label +} +% \end{macrocode} +% +% \begin{macrocode} +ITERATE {bib.sort.order} +% \end{macrocode} +% +% \begin{macrocode} +SORT +% \end{macrocode} +% +% \begin{macrocode} +%</ay> +% \end{macrocode} +% +% \begin{macrocode} +%<*!ay&!alph> +% \end{macrocode} +% +% \begin{macrocode} +STRINGS { longest.label } +% \end{macrocode} +% +% \begin{macrocode} +INTEGERS { number.label longest.label.width } +% \end{macrocode} +% +% \begin{macrocode} +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} +% \end{macrocode} +% +% \begin{macrocode} +FUNCTION {longest.label.pass} +%<*!cite> +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := +%</!cite> +%<cite>{ cite$ 'label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} +% \end{macrocode} +% +% \begin{macrocode} +EXECUTE {initialize.longest.label} +% \end{macrocode} +% +% \begin{macrocode} +ITERATE {longest.label.pass} +% \end{macrocode} +% +% \begin{macrocode} +%</!ay&!alph> +% \end{macrocode} +% +% \begin{macro}{`begin.bib'} +% The function \texttt{begin.bib} writes the initial text to the \texttt{.bbl} +% file. The most important matter here is that the \texttt{thebibliography} +% environment is invoked. +% +% Note: the French quotation marks are called `guillimets'; Adobe erroneously +% named the symbols `guillimot', which is an arctic bird. The error has so +% propagated, that it can no longer be corrected. \LaTeX\ took it over. +% \begin{macrocode} +FUNCTION {begin.bib} +%<*!html> +%<*!ay&alph> +{ et.al.char.used + { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ } + 'skip$ + if$ + preamble$ empty$ +%</!ay&alph> +%<ay|!alph>{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ +%<ay> "\begin{thebibliography}{" number.label int.to.str$ * "}" * +%<!ay> "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ +%<*(!nmft&(nmft-it|nmft-sc|nmft-bf|nmft-def))|(!lab&(lab-it|lab-bf|lab-sc|lab-def))> + "\typeout{**********************************}" write$ newline$ + "\typeout{WARNING WARNING WARNING WARNING WARNING}" write$ newline$ + "\typeout{The bst file has been generated with inconsistent options}" + write$ newline$ + "\typeout{Read the warning message at the start of the bst file}" + write$ newline$ + "\typeout{**********************************}" write$ newline$ +%</(!nmft&(nmft-it|nmft-sc|nmft-bf|nmft-def))|(!lab&(lab-it|lab-bf|lab-sc|lab-def))> +%<*!plntx> +%<!tit-it&tit-qq&qt-s> "\newcommand{\enquote}[1]{`#1'}" +%<!tit-it&tit-qq&!qt-s&!qt-g> "\newcommand{\enquote}[1]{``#1''}" +%</!plntx> +%<*plntx> +%<!tit-it&tit-qq&qt-s> "\def\enquote#1{`#1'}" +%<!tit-it&tit-qq&!qt-s&!qt-g> "\def\enquote#1{``#1''}" +%</plntx> +%<*!tit-it&tit-qq&!qt-s&qt-g> +%<!plntx> "\let\enquote\frquote" +%<*plntx> + "\def\guillemotleft{%" + write$ newline$ + " \leavevmode\raise .27ex\hbox{$\scriptscriptstyle\ll$}}" + write$ newline$ + "\def\guillemotright{%" + write$ newline$ + " \leavevmode\raise .27ex\hbox{$\scriptscriptstyle\gg$}}" + write$ newline$ + "\def\enquote#1{\guillemotleft#1\guillemotright}" +%</plntx> +%</!tit-it&tit-qq&!qt-s&qt-g> +%<!tit-it&tit-qq> write$ newline$ +%<umlaut> "\let\qq=\" quote$ * write$ newline$ +%<em-ul> "\expandafter\ifx\csname uline\endcsname\relax\let\uline\underline\fi" +%<em-ul> write$ newline$ +%<*ay> +%<!plntx> "\providecommand{\natexlab}[1]{#1}" +%<plntx> "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi" + write$ newline$ +%<*har> + "{\catcode`\|=0\catcode`\#=12\catcode`\@=11\catcode`\\=12" write$ newline$ + "|immediate|write|@auxout{\expandafter\ifx\csname natexlab\endcsname\relax\gdef\natexlab#1{#1}\fi}}" + write$ newline$ +%</har> +%</ay> +%<*nmft&nmft-def> +%<!plntx> "\providecommand{\bibnamefont}[1]{#1}" +%<plntx> "\expandafter\ifx\csname bibnamefont\endcsname\relax" +%<plntx> write$ newline$ +%<plntx> " \def\bibnamefont#1{#1}\fi" + write$ newline$ +%</nmft&nmft-def> +%<*nmft&fnm-def> +%<!plntx> "\providecommand{\bibfnamefont}[1]{#1}" +%<plntx> "\expandafter\ifx\csname bibfnamefont\endcsname\relax" +%<plntx> write$ newline$ +%<plntx> " \def\bibfnamefont#1{#1}\fi" + write$ newline$ +%</nmft&fnm-def> +%<*lab&lab-def> +%<!plntx> "\providecommand{\citenamefont}[1]{#1}" +%<plntx> "\expandafter\ifx\csname citenamefont\endcsname\relax" +%<plntx> write$ newline$ +%<plntx> " \def\citenamefont#1{#1}\fi" + write$ newline$ +%</lab&lab-def> +%<*(url&!harnm)|eprint> +%<*!plntx> +%<nfss> "\providecommand{\url}[1]{\texttt{#1}}" +%<!nfss> "\providecommand{\url}[1]{{\tt #1}}" + write$ newline$ + "\providecommand{\urlprefix}{}" + write$ newline$ +%</!plntx> +%<*plntx> + "\expandafter\ifx\csname url\endcsname\relax" + write$ newline$ +%<nfss> " \def\url#1{\texttt{#1}}\fi" +%<!nfss> " \def\url#1{{\tt #1}}\fi" + write$ newline$ + "\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{}\fi" + write$ newline$ +%</plntx> +%</(url&!harnm)|eprint> +%<*doi> + "\expandafter\ifx\csname urlstyle\endcsname\relax" + write$ newline$ +%<*!plntx> + " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else" + write$ newline$ + " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi" + write$ newline$ +%</!plntx> +%<*plntx> + " \expandafter\ifx\csname doi\endcsname\relax" + write$ newline$ + " \def\doi#1{doi:\discretionary{}{}{}#1}\fi \else" + write$ newline$ + " \expandafter\ifx\csname doi\endcsname\relax" + write$ newline$ + " \def\doi{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi \fi" + write$ newline$ +%</plntx> +%</doi> +%<*url-doi&url> + "\providecommand{\doiprefix}{doi: }" + write$ newline$ + "\expandafter\ifx\csname href\endcsname\relax" + write$ newline$ + " \providecommand{\urldoi}[1]{#1}\else" + write$ newline$ + " \providecommand{\urldoi}[1]{\href{https://doi.org/#1}{#1}}\fi" + write$ newline$ +%</url-doi&url> +%<*lang> +%<!plntx> "\providecommand{\selectlanguage}[1]{\relax}" +%<*plntx> + "\expandafter\ifx\csname selectlanguage\endcsname\relax" + write$ newline$ + " \def\selectlanguage#1{}\fi" +%</plntx> + write$ newline$ +%</lang> +%<*!plntx> +%<*babel> + "\input{francaisbst.tex}" write$ newline$ + "\newcommand{\Capitalize}[1]{\uppercase{#1}}" write$ newline$ + "\newcommand{\capitalize}[1]{\expandafter\Capitalize#1}" write$ newline$ +%</babel> +%<*annote> + "\providecommand{\bibAnnoteFile}[1]{%" + write$ newline$ + " \IfFileExists{#1}{\begin{quotation}\noindent\textsc{Key:} #1\\" + write$ newline$ + " \textsc{Annotation:}\ \input{#1}\end{quotation}}{}}" + write$ newline$ + "\providecommand{\bibAnnote}[2]{%" + write$ newline$ + " \begin{quotation}\noindent\textsc{Key:} #1\\" + write$ newline$ + " \textsc{Annotation:}\ #2\end{quotation}}" + write$ newline$ +%</annote> +%</!plntx> +%<*bibinfo> +%<!plntx> "\providecommand{\bibinfo}[2]{#2}" +%<plntx> "\expandafter\ifx\csname bibinfo\endcsname\relax\def\bibinfo#1#2{#2}\fi" + write$ newline$ +%</bibinfo> +%<*eprint> +%<!plntx> "\providecommand{\eprint}[2][]{\url{#2}}" +%<plntx> "\expandafter\ifx\csname eprint\endcsname\relax\def\eprint#1{\url{#1}}\fi" + write$ newline$ +%</eprint> +} +%</!html> +%<*html> +{ +"<html><head><title>Bibliography Listing" write$ newline$ +"" write$ newline$ +"

Bibliography

" write$ newline$ +%"
" write$ newline$ +%"
    " write$ newline$ +} +% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +EXECUTE {begin.bib} +% \end{macrocode} +% +% \begin{macrocode} +EXECUTE {init.state.consts} +% \end{macrocode} +% +% \begin{macrocode} +ITERATE {call.type$} +% \end{macrocode} +% +% \begin{macro}{`end.bib'} +% \begin{macrocode} +FUNCTION {end.bib} +{ newline$ +% "\end{thebibliography}" write$ newline$ +% "
" write$ newline$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +EXECUTE {end.bib} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \section{The File \texttt{francaisbst.tex} for French} +% The following contains the definitions for the \texttt{babel} language +% selection as they apply to French. This file may be extracted with +% \dtx{} and the option \texttt{bblbst}. +% \changes{2.0}{2023-10-28}{La traduction française «cahier de +% recherche» est remplacée par «rapport technique».} +% \changes{2.0}{2023-10-28}{La traduction française «éditeur» +% (éd.) est remplacée par «directeur» («dir.»).} +% \changes{2.0}{2023-10-28}{La traduction française «édité par» est +% remplacée par «sous la direction de».} +% \begin{macrocode} +%<*bblbst> + % This is francaisbst.tex for French. +\def\bbland{et} \def\bbletal{et~collab.} +\def\bbleditors{directeurs} \def\bbleds{dir.} +\def\bbleditor{directeur} \def\bbled{dir.} +\def\bbledby{sous la direction de} +\def\bbledition{\'edition} \def\bbledn{\'ed.} +\def\bblvolume{volume} \def\bblvol{vol.} +\def\bblof{de} +\def\bblnumber{num\'ero} \def\bblno{{\no}} +\def\bblin{dans} +\def\bblpages{pages} \def\bblpp{p.} +\def\bblpage{page} \def\bblp{p.} +\def\bbleidpp{pages} +\def\bblchapter{chaptitre} \def\bblchap{chap.} +\def\bbltechreport{rapport technique} +\def\bbltechrep{rapport technique} +\def\bblmthesis{m\'emoire de ma\^itrise} +\def\bblphdthesis{th\`ese de doctorat} +\def\bblfirst{premi\`ere} \def\bblfirsto{1{\iere}} +\def\bblsecond{seconde} \def\bblsecondo{2{\ieme}} +\def\bblthird{troisi\`eme} \def\bblthirdo{3{\ieme}} +\def\bblfourth{quatri\`eme} \def\bblfourtho{4{\ieme}} +\def\bblfifth{cinqui\`eme} \def\bblfiftho{5{\ieme}} +\def\bblst{{\iere}} \def\bblnd{{\ieme}} \def\bblrd{{\ieme}} +\def\bblth{{\ieme}} +\def\bbljan{janvier} \def\bblfeb{f\'evrier} \def\bblmar{mars} +\def\bblapr{avril} \def\bblmay{mai} \def\bbljun{juin} +\def\bbljul{juillet} \def\bblaug{ao\^ut} \def\bblsep{septembre} +\def\bbloct{octobre} \def\bblnov{novembre} \def\bbldec{d\'ecembre} +% +% \end{macrocode} +% +% \Finale diff --git a/Master/texmf-dist/source/bibtex/francais-bst/francais.dbj b/Master/texmf-dist/source/bibtex/francais-bst/francais.dbj new file mode 100644 index 00000000000..8d5804bbab3 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/francais-bst/francais.dbj @@ -0,0 +1,580 @@ +%% Driver file to produce francais.bst from francais-bst.mbs +%% First generated with makebst, version 4.1 (2003/09/08), from +%% merlin.mbs on 2012/10/15 at 1:06. +%% Generated again with makebst, version 4.1 (2003/09/08), from +%% francais-bst.mbs on 2023/10/25 at 13:17, then hand edited by +%% Vincent Goulet. +%% +\input docstrip + +\preamble + +Copyright (C) 2012-2023 Vincent Goulet + +This file may be distributed and/or modified under the conditions +of the LaTeX Project Public License, either version 1.3c of this +license or (at your option) any later version. The latest version +of this license is in: + + https://www.latex-project.org/lppl.txt + +This work has the LPPL maintenance status `maintained'. + +The Current Maintainer of this work is Vincent Goulet +. + +This work consists of the master bibliographic style file +francais-bst.mbs; the driver files francais.dbj and francaissc.dbj; +the derived files francais.bst, francaissc.bst, francaisbst.tex. + +\endpreamble + +\postamble +End of customized bst file +\endpostamble + +\keepsilent + +\askforoverwritefalse +\def\MBopts{\from{francais-bst.mbs}{% +%EXTERNAL FILES: +%Name of language file: \cfile=. +%No included files. +%INTERNAL LANGUAGE SUPPORT (if no external language file) +% %: (def) English + babel,%: Babel +%-------------------- +%STYLE OF CITATIONS: +% %: (def) Numerical + ay,%: Author-year +% alph,%: Alpha style, Jon90 or JWB90 +% alph,alf-1,%: Alpha style, Jon90 +% alph,alf-f,%: Alpha style, Jones90 +% cite,%: Cite key +%-------------------- +%HTML OUTPUT (if non author-year citations) +% %: (def) Normal LaTeX +% html,%: Hypertext +% html,htlist,%: Hypertext list +% html,htdes,%: Hypertext with keys +%-------------------- +%AUTHOR--YEAR SUPPORT SYSTEM (if author-year citations) + nat,%: Natbib +% %: (def) Older Natbib +% alk,%: Apalike +% har,%: Harvard +% ast,%: Astronomy +% cay,%: Chicago +% nmd,%: Named +% cn,%: Author-date +%-------------------- +%HARVARD EXTENSIONS INCLUDED (if Harvard support selected) +% harnm,%: With Harvard extensions +% %: (def) Older Harvard +%-------------------- +%LANGUAGE FIELD +% %: (def) No language field + lang,%: Add language field +%-------------------- +%ANNOTATIONS: + %: (def) No annotations +% annote,%: Annotations +%-------------------- +%PRESENTATIONS: + %: (def) Do not add presentation type +% pres,%: Add presentation, speaker not highlighted +% pres,pres-bf,%: Presentation, speaker bold face +% pres,pres-it,%: Presentaion, speaker italic +% pres,pres-sc,%: Presentaion, speaker in small caps +%-------------------- +%ORDERING OF REFERENCES (if non-author/year and non-alph) +% %: (def) Alphabetical +% seq-no,%: Citation order +% seq-yr,%: Year ordered +% seq-yrr,%: Reverse year ordered +%-------------------- +%ORDERING OF REFERENCES (if author-year citations) + %: (def) Alphabetical +% seq-lab,%: By label +% seq-labc,%: By label and cite order +% seq-key,%: By label and cite key +% seq-yr,%: Year ordered +% seq-yrr,%: Reverse year ordered +% seq-no,%: Citation order +%-------------------- +%ORDER ON VON PART (if not citation order) +% %: (def) Sort on von part + vonx,%: Sort without von part +%-------------------- +%IGNORE FIRST NAMES (if author-year citations) + %: (def) Respect first names +% xintls,%: Sort on surname only +%-------------------- +%AUTHOR NAMES: +% ed-au,%: Full, surname last +% nm-revf,%: Full, surname first +% nm-init,ed-au,%: Initials + surname +% nm-rev,%: Surname + initials +% nm-rv,%: Surname + dotless initials +% nm-rvvc,%: Surname + comma + spaceless initials +% nm-rvx,%: Surname + pure initials +% nm-rvcx,%: Surname + comma + pure initials +% nm-rvv,%: Surname + spaceless initials + nm-rev1,%: Only first name reversed, initials +% nm-revv1,%: First name reversed, with full names +%-------------------- +%EDITOR NAMES IN COLLECTIONS (if author names reversed) + %: (def) Editor names NOT reversed +% ed-rev,%: Editor names reversed +%-------------------- +%POSITION OF JUNIOR (if author names reversed) + jnrlst,%: Junior comes last +% %: (def) Junior between +%-------------------- +%JUNIOR PART IN THE CITATION (if author-year citations) + %: (def) No `junior' part in the citations +% jnrlab,%: `Junior' in citations +%-------------------- +%PUNCTUATION BETWEEN AUTHOR NAMES: + %: (def) Author names separated by commas +% aunm-semi,%: Names separated by semi-colon +% aunm-sl,%: Names separated by slash +%-------------------- +%ADJACENT REFERENCES WITH REPEATED NAMES: + %: (def) Author/editor names always present +% nmdash,%: Repeated author/editor names replaced by dash +% nmdash,nmd-2,%: Repeated author/editor names replaced by 2 dashes +% nmdash,nmd-3,%: Repeated author/editor names replaced by 3 dashes +%-------------------- +%NUMBER OF AUTHORS IN BIBLIOGRAPHY: + %: (def) All authors +% nmlm,%: Limited authors +%-------------------- +%AUTHORS IN CITATIONS: + %: (def) One author et al +% mcite,%: Some other truncation scheme +%-------------------- +%MAX AUTHORS BEFORE ET AL: (if regular cite not selected) +% mct-1,%: One et al +% mct-2,%: One, Two et al +% mct-3,%: One, Two, Three et al +% mct-4,%: One, Two, Three, Four et al +% mct-5,%: One, Two, Three, Four, Five et al +% mct-6,%: One, Two, Three, Four, Five, Six et al +%-------------------- +%MAX AUTHORS WITHOUT ET AL: (if regular cite not selected) +% mct-x2,%: Two authors without truncating +% mct-x3,%: Three authors +% mct-x4,%: Four authors +% mct-x5,%: Five authors +% mct-x6,%: Six authors +%-------------------- +%TYPEFACE FOR AUTHORS IN LIST OF REFERENCES: + %: (def) Normal font for author names +% nmft,nmft-sc,%: Small caps authors +% nmft,nmft-it,%: Italic authors +% nmft,nmft-bf,%: Bold authors +% nmft,nmft-def,%: User defined author font +%-------------------- +%FONT FOR FIRST NAMES (if non-default font for authors) +% %: (def) First names same font as surnames +% fnm-rm,%: First names in normal font +% fnm-def,%: First names in user defined font +%-------------------- +%EDITOR NAMES IN INCOLLECTION ETC: +% %: (def) Editors incollection normal font +% nmfted,%: Editors incollection like authors +%-------------------- +%FONT FOR `AND' IN LIST: +% %: (def) `And' in author font +% nmand-rm,%: `And' in normal font +%-------------------- +%FONT OF CITATION LABELS IN TEXT (if author-year citations) + %: (def) Cited authors plain +% lab,lab-it,%: Cited authors italic +% lab,lab-sc,%: Cited authors small caps +% lab,lab-bf,%: Cited authors bold +% lab,lab-def,%: User defined citation font +%-------------------- +%FONT FOR `AND' IN CITATIONS (if non-default font for citation lables) +% %: (def) Cited `and' in author font +% and-rm,%: Cited `and' in normal font +%-------------------- +%FONT OF EXTRA LABEL (The extra letter on the year) + %: (def) Extra label plain +% xlab-it,%: Extra label italic +%-------------------- +%LABEL WHEN AUTHORS MISSING (if author-year citations) + keyxyr,%: Year blank when KEY replaces missing author +% %: (def) Year included when KEY replaces missing author +%-------------------- +%MISSING DATE (if author-year citations) +% %: (def) Missing date set to ???? + blkyear,%: Missing date left blank +%-------------------- +%DATE POSITION: +% %: (def) Date at end + dt-beg,%: Date after authors +% dt-jnl,%: Date part of journal spec. +% dt-end,%: Date at very end +%-------------------- +%DATE FORMAT (if non author-year citations) +% %: (def) Plain month and year +% yr-par,%: Date in parentheses +% yr-brk,%: Date in brackets +% yr-col,%: Date preceded by colon +% yr-per,%: Date preceded by period +% yr-com,%: Date preceded by comma +% yr-blk,%: Date preceded by space +%-------------------- +%SUPPRESS MONTH: +% %: (def) Date is month and year +% xmth,%: Date is year only +%-------------------- +%REVERSED DATE (if including month) +% %: (def) Date as month year +% dtrev,%: Date as year month +%-------------------- +%DATE FORMAT (if author-year citations) +% %: (def) Year plain +% yr-par,%: Year in parentheses +% yr-brk,%: Year in brackets +% yr-col,%: Year preceded by colon + yr-per,%: Year preceded by period +% yr-com,%: Date preceded by comma +% yr-blk,%: Year preceded by space +%-------------------- +%INCLUDE MONTHS: + %: (def) Date is year only +% aymth,%: Include month in date +%-------------------- +%REVERSED DATE (if including month) +% %: (def) Date as month year +% dtrev,%: Date as year month +%-------------------- +%DATE PUNCTUATION (if date not at end) + %: (def) Date with standard block punctuation +% yrp-col,%: Colon after date +% yrp-semi,%: Semi-colon after date +% yrp-per,%: Period after date +% yrp-x,%: No punct. after date +%-------------------- +%BLANK AFTER DATE: + %: (def) Space after date +% yrpp-xsp,%: No space after date +%-------------------- +%DATE FONT: + %: (def) Date in normal font +% dtbf,%: Date in bold face +%-------------------- +%TRUNCATE YEAR (if author-year citations) + note-yr,%: Year text full +% %: (def) Year truncated +%-------------------- +%TITLE OF ARTICLE: +% %: (def) Title plain +% tit-it,%: Title italic +% tit-qq,qt-s,%: Title and punctuation in single quotes +% tit-qq,%: Title and punctuation in double quotes +% tit-qq,qt-g,%: Title and punctuation in guillemets +% tit-qq,qt-s,qx,%: Title in single quotes +% tit-qq,qx,%: Title in double quotes + tit-qq,qt-g,qx,%: Title in guillemets +%-------------------- +%COLLECTION/PROCEEDINGS TITLES (if quoted title) +% bt-qq,%: Quote collection and proceedings titles + %: (def) Collection and proceedings titles not in quotes +%-------------------- +%CAPITALIZATION OF ARTICLE TITLE: + %: (def) Sentence style +% atit-u,%: Title style +%-------------------- +%ARTICLE TITLE PRESENT: + %: (def) Article title present +% jtit-x,%: No article title +%-------------------- +%JOURNAL NAMES: + %: (def) Periods in journal names +% jxper,%: Dotless journal names +%-------------------- +%JOURNAL NAME FONT: + %: (def) Journal name italics +% jttl-rm,%: Journal name normal +%-------------------- +%THESIS TITLE: + %: (def) Thesis titles like books +% thtit-a,%: Thesis title like article +% thtit-x,%: No thesis title +%-------------------- +%TECHNICAL REPORT TITLE: +% %: (def) Tech. report title like articles + trtit-b,%: Tech. report title like books +%-------------------- +%TECHNICAL REPORT NUMBER: + %: (def) Tech. report and number plain +% trnum-it,%: Tech. report and number italic +%-------------------- +%JOURNAL VOLUME: + %: (def) Volume plain +% vol-it,%: Volume italic +% vol-bf,%: Volume bold +% vol-2bf,%: Volume and number bold +%-------------------- +%JOURNAL VOL AND NUMBER: +% %: (def) Journal vol(num) +% vnum-sp,%: Journal vol (num) +% vnum-cm,%: Journal vol, num + vnum-nr,%: Journal vol, no. num +% vnum-h,%: Journal vol, \# number +% vnum-b,%: Journal vol number +% vnum-x,%: Journal vol, without number +%-------------------- +%VOLUME PUNCTUATION: +% %: (def) Volume with colon +% volp-sp,%: Volume with colon and space +% volp-semi,%: Volume with semi-colon + volp-com,%: Volume with comma +% volp-blk,%: Volume with blank +%-------------------- +%YEAR IN JOURNAL SPECIFICATION: + %: (def) Journal year like others +% jdt-v,%: Journal vol(year) +% jdt-vs,%: Journal vol (year) +% jdt-p,%: Year with pages +% jdt-pc,%: Year, comma, pages +%-------------------- +%PAGE NUMBERS: + %: (def) Start and stop page numbers +% jpg-1,%: Only start page number +%-------------------- +%LARGE PAGE NUMBERS: +% %: (def) No separators for large page numbers +% pgsep-c,%: Comma inserted over 9999 + pgsep-s,%: Thin space inserted over 9999 +% pgsep-p,%: Period inserted over 9999 +%-------------------- +%WORD `PAGE' IN ARTICLES: +% %: (def) Article pages numbers only + jwdpg,%: Include `page' in articles +%-------------------- +%POSITION OF PAGES: + %: (def) Pages given mid text +% pp-last,%: Pages at end +%-------------------- +%WORD `VOLUME' IN ARTICLES: +% %: (def) Article volume as number only + jwdvol,%: Include `volume' in articles +%-------------------- +%NUMBER AND SERIES FOR COLLECTIONS: + num-xser,%: Allows number without series +% %: (def) Standard BibTeX +%-------------------- +%POSITION OF NUMBER AND SERIES: +% %: (def) After chapter and pages + numser,%: Just before publisher +%-------------------- +%VOLUME AND SERIES FOR BOOKS/COLLECTIONS: +% %: (def) Vol. 23 of Series + ser-vol,%: Series, vol. 23 +%-------------------- +%POSITION OF VOLUME AND SERIES FOR INCOLLECTIONS: +% %: (def) Series and volume after the editors + ser-ed,%: Series and volume after booktitle +%-------------------- +%JOURNAL NAME PUNCTUATION: + %: (def) Comma after journal +% jnm-x,%: Space after journal +%-------------------- +%BOOK TITLE: + %: (def) Book title italic +% btit-rm,bt-rm,%: Book title plain +%-------------------- +%PAGES IN BOOKS: + %: (def) Pages in book plain +% bkpg-par,%: Pages in book in parentheses +% bkpg-x,%: Pages in book bare +%-------------------- +%TOTAL PAGES OF A BOOK: +% %: (def) Total book pages not printed + pg-bk,%: For book: 345 pages +% pg-bk,pg-pre,%: Total book pages before publisher +%-------------------- +%PUBLISHER ADDRESS: + %: (def) Publisher, address +% add-pub,%: Address: Publisher +%-------------------- +%PUBLISHER IN PARENTHESES: + %: (def) Publisher as normal block +% pub-par,%: Publisher in parentheses +% pub-date,%: Publisher and date in parentheses +% pub-date,pub-xc,%: Publisher and date in parentheses, no comma +% pub-date,pub-xpar,%: Publisher and date without parentheses +% pub-date,pub-xpar,pub-xc,%: Publisher and date, no parentheses, no comma +%-------------------- +%PUBLISHER POSITION: +% %: (def) Publisher after chapter, pages + pre-pub,%: Publisher before chapter, pages + pre-edn,%: Publisher after edition +%-------------------- +%ISBN NUMBER: + isbn,%: Include ISBN +% %: (def) No ISBN +%-------------------- +%ISSN NUMBER: +% issn,%: Include ISSN + %: (def) No ISSN +%-------------------- +%DOI NUMBER: +% doi,%: Include DOI + url-doi,%: Format DOI as URL //doi.org/doi +% agu-doi,doi,%: Insert DOI AGU style +% %: (def) No DOI +%-------------------- +%`EDITOR' AFTER NAMES (EDITED BOOKS WITHOUT AUTHORS): +% %: (def) Word `editor' after name +% edpar,%: `Name (editor),' +% edpar,bkedcap,%: `Name (Editor),' +% edparc,%: `Name, (editor)' +% edparc,bkedcap,%: `Name, (Editor)' + edparxc,%: `Name (editor)' +% edparxc,bkedcap,%: `Name (Editor)' +%-------------------- +%EDITOR IN COLLECTIONS: +% %: (def) Same as for edited book + edby,%: In booktitle, edited by .. +% edby-par,%: In booktitle (edited by ..) +% edby-parc,%: In booktitle, (edited by ..) +% edby,edbyx,%: In booktitle, editor .. +% edby,edbyw,%: In booktitle, (editor) .. +% edby-par,edbyx,%: In booktitle (editor..) +% edby-parc,edbyx,%: In booktitle, (editor..) +% edby,edbyy,%: In booktitle, .., editor +% edby-par,edbyy,%: In booktitle (.., editor) +%-------------------- +%CAPITALIZE `EDITOR' OR `EDITED BY' (if editor capitalizable) +% %: (def) `(editor,..)' or `(edited by..)' +% edcap,%: `(Editor,..)' or `(Edited by..)' +%-------------------- +%PUNCTUATION BETWEEN SECTIONS (BLOCKS): +% %: (def) \newblock after blocks + blk-com,%: Comma between blocks +% blk-com,com-semi,%: Semi-colon between blocks +% blk-com,com-blank,%: Blanks between blocks +% blk-tit,%: Period after titles of articles, books, etc +% blk-tit,tit-col,%: Colon after titles of articles, books, etc +% blk-tita,%: Period after titles of articles +% blk-tita,tit-col,%: Colon after titles of articles +%-------------------- +%PUNCTUATION BEFORE NOTES (if not using \newblock) +% %: (def) Notes have regular punctuation + blknt,%: Notes preceded by period +%-------------------- +%PUNCTUATION AFTER AUTHORS: + %: (def) Author block normal +% au-col,%: Author block with colon +%-------------------- +%PUNCTUATION AFTER `IN': + %: (def) Space after `in' +% in-col,%: Colon after `in' +% in-it,%: Italic `in' +% in-col,in-it,%: Italic `in' and colon +% in-x,%: No word `in' +%-------------------- +%`IN' WITH JOURNAL NAMES (if using 'in' with collections) + %: (def) No `in' before journal name +% injnl,%: Add `in' before journal name +%-------------------- +%FINAL PUNCTUATION: + %: (def) Period at very end +% fin-bare,%: No period at end +%-------------------- +%ABBREVIATE WORD `PAGES' (if not using external language file) +% %: (def) `Page(s)' + pp,%: `Page' abbreviated +% ppx,%: `Page' omitted +%-------------------- +%ABBREVIATE WORD `EDITORS': +% %: (def) `Editor(s)' + ed,%: `Editor' abbreviated +%-------------------- +%OTHER ABBREVIATIONS: +% %: (def) No abbreviations + abr,%: Abbreviations +%-------------------- +%ABBREVIATION FOR `EDITION' (if abbreviating words) + %: (def) `Edition' abbreviated as `edn' +% ednx,%: `Edition' abbreviated as `ed' +%-------------------- +%MONTHS WITH DOTS: + %: (def) Months with dots +% mth-bare,%: Months without dots +%-------------------- +%EDITION NUMBERS: +% xedn,%: Editions as in database +% %: (def) Write out editions + ord,%: Numerical editions +%-------------------- +%Reading external language file \cfile= +%STORED JOURNAL NAMES: + %: (def) Full journal names +% jabr,%: Abbreviated journal names +% jabr,jaa,%: Abbreviated with astronomy shorthands +%-------------------- +%AMPERSAND: + %: (def) Use word `and' +% amper,%: Use ampersand +% varand,%: Use \BIBand +%-------------------- +%COMMA BEFORE `AND': +% %: (def) Comma before `and' + and-xcom,%: No comma before `and' +% and-com,%: Comma even with 2 authors +%-------------------- +%COMMA BEFORE `AND' EVEN FOR COLLECTION EDITORS (if using comma before `and' with authors) +% and-com-ed,%: Comma with 2 editors +% %: (def) Two editors without comma +%-------------------- +%NO `AND' IN REFERENCE LIST: + %: (def) With `and' +% xand,%: No `and' +%-------------------- +%COMMA BEFORE `ET AL': +% %: (def) Comma before `et al' + etal-xc,%: No comma before `et al' +%-------------------- +%FONT OF `ET AL': + %: (def) Plain et al +% etal-it,%: Italic et al +% etal-rm,%: Roman et al +%-------------------- +%ADDITIONAL REVTeX DATA FIELDS: + %: (def) No additional fields +% revdata,eprint,url,url-blk,%: Include REVTeX data fields +%-------------------- +%E-PRINT DATA FIELD: (without REVTeX fields) + %: (def) Do not include eprint field +% eprint,%: Include eprint and archive fields +%-------------------- +%URL ADDRESS: (without REVTeX fields) +% %: (def) No URL + url,url-blk,%: Include URL +% url,url-nt,%: URL as note +% url,url-nl,%: URL on new line +%-------------------- +%REFERENCE COMPONENT TAGS: + %: (def) No reference component tags +% bibinfo,%: Reference component tags +%-------------------- +%EMPHASIS: (affects all so-called italics) + %: (def) Use emphasis +% em-it,%: Use true italics +% em-x,%: No italics +% em-ul,%: Underlining +%-------------------- +%COMPATIBILITY WITH PLAIN TEX: + nfss,%: Use LaTeX commands +% plntx,%: Use only Plain TeX +%-------------------- + }} +\generate{\file{francais.bst}{\MBopts}} +\endbatchfile diff --git a/Master/texmf-dist/source/bibtex/francais-bst/francaisbst.dbj b/Master/texmf-dist/source/bibtex/francais-bst/francaisbst.dbj new file mode 100644 index 00000000000..c177a3dde40 --- /dev/null +++ b/Master/texmf-dist/source/bibtex/francais-bst/francaisbst.dbj @@ -0,0 +1,31 @@ +%% Driver file to produce francaisbst.tex from francais-bst.mbs +%% +\input docstrip +\keepsilent +\askforoverwritefalse + +\preamble + +Copyright (C) 2012-2023 Vincent Goulet + +This file may be distributed and/or modified under the conditions +of the LaTeX Project Public License, either version 1.3c of this +license or (at your option) any later version. The latest version +of this license is in: + + https://www.latex-project.org/lppl.txt + +This work has the LPPL maintenance status `maintained'. + +The Current Maintainer of this work is Vincent Goulet +. + +This work consists of the master bibliographic style file +francais-bst.mbs; the driver files francais.dbj and francaissc.dbj; +the derived files francais.bst, francaissc.bst, francaisbst.tex. + +\endpreamble + +\generate{\file{francaisbst.tex}{\from{francais-bst.mbs}{bblbst}}} + +\endbatchfile \ No newline at end of file diff --git a/Master/texmf-dist/source/bibtex/francais-bst/francaissc.dbj b/Master/texmf-dist/source/bibtex/francais-bst/francaissc.dbj new file mode 100644 index 00000000000..257e4f99e1e --- /dev/null +++ b/Master/texmf-dist/source/bibtex/francais-bst/francaissc.dbj @@ -0,0 +1,580 @@ +%% Driver file to produce francaissc.bst from francais-bst.mbs +%% First generated with makebst, version 4.1 (2003/09/08), from +%% merlin.mbs on 2012/10/15 at 1:06. +%% Generated again with makebst, version 4.1 (2003/09/08), from +%% francais-bst.mbs on 2023/10/25 at 14:11, then hand edited by +%% Vincent Goulet. +%% +\input docstrip + +\preamble + +Copyright (C) 2012-2023 Vincent Goulet + +This file may be distributed and/or modified under the conditions +of the LaTeX Project Public License, either version 1.3c of this +license or (at your option) any later version. The latest version +of this license is in: + + https://www.latex-project.org/lppl.txt + +This work has the LPPL maintenance status `maintained'. + +The Current Maintainer of this work is Vincent Goulet +. + +This work consists of the master bibliographic style file +francais-bst.mbs; the driver files francais.dbj and francaissc.dbj; +the derived files francais.bst, francaissc.bst, francaisbst.tex. + +\endpreamble + +\postamble +End of customized bst file +\endpostamble + +\keepsilent + +\askforoverwritefalse +\def\MBopts{\from{francais-bst.mbs}{% +%EXTERNAL FILES: +%Name of language file: \cfile=. +%No included files. +%INTERNAL LANGUAGE SUPPORT (if no external language file) +% %: (def) English + babel,%: Babel +%-------------------- +%STYLE OF CITATIONS: +% %: (def) Numerical + ay,%: Author-year +% alph,%: Alpha style, Jon90 or JWB90 +% alph,alf-1,%: Alpha style, Jon90 +% alph,alf-f,%: Alpha style, Jones90 +% cite,%: Cite key +%-------------------- +%HTML OUTPUT (if non author-year citations) +% %: (def) Normal LaTeX +% html,%: Hypertext +% html,htlist,%: Hypertext list +% html,htdes,%: Hypertext with keys +%-------------------- +%AUTHOR--YEAR SUPPORT SYSTEM (if author-year citations) + nat,%: Natbib +% %: (def) Older Natbib +% alk,%: Apalike +% har,%: Harvard +% ast,%: Astronomy +% cay,%: Chicago +% nmd,%: Named +% cn,%: Author-date +%-------------------- +%HARVARD EXTENSIONS INCLUDED (if Harvard support selected) +% harnm,%: With Harvard extensions +% %: (def) Older Harvard +%-------------------- +%LANGUAGE FIELD +% %: (def) No language field + lang,%: Add language field +%-------------------- +%ANNOTATIONS: + %: (def) No annotations +% annote,%: Annotations +%-------------------- +%PRESENTATIONS: + %: (def) Do not add presentation type +% pres,%: Add presentation, speaker not highlighted +% pres,pres-bf,%: Presentation, speaker bold face +% pres,pres-it,%: Presentaion, speaker italic +% pres,pres-sc,%: Presentaion, speaker in small caps +%-------------------- +%ORDERING OF REFERENCES (if non-author/year and non-alph) +% %: (def) Alphabetical +% seq-no,%: Citation order +% seq-yr,%: Year ordered +% seq-yrr,%: Reverse year ordered +%-------------------- +%ORDERING OF REFERENCES (if author-year citations) + %: (def) Alphabetical +% seq-lab,%: By label +% seq-labc,%: By label and cite order +% seq-key,%: By label and cite key +% seq-yr,%: Year ordered +% seq-yrr,%: Reverse year ordered +% seq-no,%: Citation order +%-------------------- +%ORDER ON VON PART (if not citation order) +% %: (def) Sort on von part + vonx,%: Sort without von part +%-------------------- +%IGNORE FIRST NAMES (if author-year citations) + %: (def) Respect first names +% xintls,%: Sort on surname only +%-------------------- +%AUTHOR NAMES: +% ed-au,%: Full, surname last +% nm-revf,%: Full, surname first +% nm-init,ed-au,%: Initials + surname +% nm-rev,%: Surname + initials +% nm-rv,%: Surname + dotless initials +% nm-rvvc,%: Surname + comma + spaceless initials +% nm-rvx,%: Surname + pure initials +% nm-rvcx,%: Surname + comma + pure initials +% nm-rvv,%: Surname + spaceless initials + nm-rev1,%: Only first name reversed, initials +% nm-revv1,%: First name reversed, with full names +%-------------------- +%EDITOR NAMES IN COLLECTIONS (if author names reversed) + %: (def) Editor names NOT reversed +% ed-rev,%: Editor names reversed +%-------------------- +%POSITION OF JUNIOR (if author names reversed) + jnrlst,%: Junior comes last +% %: (def) Junior between +%-------------------- +%JUNIOR PART IN THE CITATION (if author-year citations) + %: (def) No `junior' part in the citations +% jnrlab,%: `Junior' in citations +%-------------------- +%PUNCTUATION BETWEEN AUTHOR NAMES: + %: (def) Author names separated by commas +% aunm-semi,%: Names separated by semi-colon +% aunm-sl,%: Names separated by slash +%-------------------- +%ADJACENT REFERENCES WITH REPEATED NAMES: + %: (def) Author/editor names always present +% nmdash,%: Repeated author/editor names replaced by dash +% nmdash,nmd-2,%: Repeated author/editor names replaced by 2 dashes +% nmdash,nmd-3,%: Repeated author/editor names replaced by 3 dashes +%-------------------- +%NUMBER OF AUTHORS IN BIBLIOGRAPHY: + %: (def) All authors +% nmlm,%: Limited authors +%-------------------- +%AUTHORS IN CITATIONS: + %: (def) One author et al +% mcite,%: Some other truncation scheme +%-------------------- +%MAX AUTHORS BEFORE ET AL: (if regular cite not selected) +% mct-1,%: One et al +% mct-2,%: One, Two et al +% mct-3,%: One, Two, Three et al +% mct-4,%: One, Two, Three, Four et al +% mct-5,%: One, Two, Three, Four, Five et al +% mct-6,%: One, Two, Three, Four, Five, Six et al +%-------------------- +%MAX AUTHORS WITHOUT ET AL: (if regular cite not selected) +% mct-x2,%: Two authors without truncating +% mct-x3,%: Three authors +% mct-x4,%: Four authors +% mct-x5,%: Five authors +% mct-x6,%: Six authors +%-------------------- +%TYPEFACE FOR AUTHORS IN LIST OF REFERENCES: +% %: (def) Normal font for author names + nmft,nmft-sc,%: Small caps authors +% nmft,nmft-it,%: Italic authors +% nmft,nmft-bf,%: Bold authors +% nmft,nmft-def,%: User defined author font +%-------------------- +%FONT FOR FIRST NAMES (if non-default font for authors) + %: (def) First names same font as surnames +% fnm-rm,%: First names in normal font +% fnm-def,%: First names in user defined font +%-------------------- +%EDITOR NAMES IN INCOLLECTION ETC: + %: (def) Editors incollection normal font +% nmfted,%: Editors incollection like authors +%-------------------- +%FONT FOR `AND' IN LIST: +% %: (def) `And' in author font + nmand-rm,%: `And' in normal font +%-------------------- +%FONT OF CITATION LABELS IN TEXT (if author-year citations) +% %: (def) Cited authors plain +% lab,lab-it,%: Cited authors italic + lab,lab-sc,%: Cited authors small caps +% lab,lab-bf,%: Cited authors bold +% lab,lab-def,%: User defined citation font +%-------------------- +%FONT FOR `AND' IN CITATIONS (if non-default font for citation lables) +% %: (def) Cited `and' in author font + and-rm,%: Cited `and' in normal font +%-------------------- +%FONT OF EXTRA LABEL (The extra letter on the year) + %: (def) Extra label plain +% xlab-it,%: Extra label italic +%-------------------- +%LABEL WHEN AUTHORS MISSING (if author-year citations) + keyxyr,%: Year blank when KEY replaces missing author +% %: (def) Year included when KEY replaces missing author +%-------------------- +%MISSING DATE (if author-year citations) +% %: (def) Missing date set to ???? + blkyear,%: Missing date left blank +%-------------------- +%DATE POSITION: +% %: (def) Date at end + dt-beg,%: Date after authors +% dt-jnl,%: Date part of journal spec. +% dt-end,%: Date at very end +%-------------------- +%DATE FORMAT (if non author-year citations) +% %: (def) Plain month and year +% yr-par,%: Date in parentheses +% yr-brk,%: Date in brackets +% yr-col,%: Date preceded by colon +% yr-per,%: Date preceded by period +% yr-com,%: Date preceded by comma +% yr-blk,%: Date preceded by space +%-------------------- +%SUPPRESS MONTH: +% %: (def) Date is month and year +% xmth,%: Date is year only +%-------------------- +%REVERSED DATE (if including month) +% %: (def) Date as month year +% dtrev,%: Date as year month +%-------------------- +%DATE FORMAT (if author-year citations) +% %: (def) Year plain +% yr-par,%: Year in parentheses +% yr-brk,%: Year in brackets +% yr-col,%: Year preceded by colon + yr-per,%: Year preceded by period +% yr-com,%: Date preceded by comma +% yr-blk,%: Year preceded by space +%-------------------- +%INCLUDE MONTHS: + %: (def) Date is year only +% aymth,%: Include month in date +%-------------------- +%REVERSED DATE (if including month) +% %: (def) Date as month year +% dtrev,%: Date as year month +%-------------------- +%DATE PUNCTUATION (if date not at end) + %: (def) Date with standard block punctuation +% yrp-col,%: Colon after date +% yrp-semi,%: Semi-colon after date +% yrp-per,%: Period after date +% yrp-x,%: No punct. after date +%-------------------- +%BLANK AFTER DATE: + %: (def) Space after date +% yrpp-xsp,%: No space after date +%-------------------- +%DATE FONT: + %: (def) Date in normal font +% dtbf,%: Date in bold face +%-------------------- +%TRUNCATE YEAR (if author-year citations) + note-yr,%: Year text full +% %: (def) Year truncated +%-------------------- +%TITLE OF ARTICLE: +% %: (def) Title plain +% tit-it,%: Title italic +% tit-qq,qt-s,%: Title and punctuation in single quotes +% tit-qq,%: Title and punctuation in double quotes +% tit-qq,qt-g,%: Title and punctuation in guillemets +% tit-qq,qt-s,qx,%: Title in single quotes +% tit-qq,qx,%: Title in double quotes + tit-qq,qt-g,qx,%: Title in guillemets +%-------------------- +%COLLECTION/PROCEEDINGS TITLES (if quoted title) +% bt-qq,%: Quote collection and proceedings titles + %: (def) Collection and proceedings titles not in quotes +%-------------------- +%CAPITALIZATION OF ARTICLE TITLE: + %: (def) Sentence style +% atit-u,%: Title style +%-------------------- +%ARTICLE TITLE PRESENT: + %: (def) Article title present +% jtit-x,%: No article title +%-------------------- +%JOURNAL NAMES: + %: (def) Periods in journal names +% jxper,%: Dotless journal names +%-------------------- +%JOURNAL NAME FONT: + %: (def) Journal name italics +% jttl-rm,%: Journal name normal +%-------------------- +%THESIS TITLE: + %: (def) Thesis titles like books +% thtit-a,%: Thesis title like article +% thtit-x,%: No thesis title +%-------------------- +%TECHNICAL REPORT TITLE: +% %: (def) Tech. report title like articles + trtit-b,%: Tech. report title like books +%-------------------- +%TECHNICAL REPORT NUMBER: + %: (def) Tech. report and number plain +% trnum-it,%: Tech. report and number italic +%-------------------- +%JOURNAL VOLUME: + %: (def) Volume plain +% vol-it,%: Volume italic +% vol-bf,%: Volume bold +% vol-2bf,%: Volume and number bold +%-------------------- +%JOURNAL VOL AND NUMBER: +% %: (def) Journal vol(num) +% vnum-sp,%: Journal vol (num) +% vnum-cm,%: Journal vol, num + vnum-nr,%: Journal vol, no. num +% vnum-h,%: Journal vol, \# number +% vnum-b,%: Journal vol number +% vnum-x,%: Journal vol, without number +%-------------------- +%VOLUME PUNCTUATION: +% %: (def) Volume with colon +% volp-sp,%: Volume with colon and space +% volp-semi,%: Volume with semi-colon + volp-com,%: Volume with comma +% volp-blk,%: Volume with blank +%-------------------- +%YEAR IN JOURNAL SPECIFICATION: + %: (def) Journal year like others +% jdt-v,%: Journal vol(year) +% jdt-vs,%: Journal vol (year) +% jdt-p,%: Year with pages +% jdt-pc,%: Year, comma, pages +%-------------------- +%PAGE NUMBERS: + %: (def) Start and stop page numbers +% jpg-1,%: Only start page number +%-------------------- +%LARGE PAGE NUMBERS: +% %: (def) No separators for large page numbers +% pgsep-c,%: Comma inserted over 9999 + pgsep-s,%: Thin space inserted over 9999 +% pgsep-p,%: Period inserted over 9999 +%-------------------- +%WORD `PAGE' IN ARTICLES: +% %: (def) Article pages numbers only + jwdpg,%: Include `page' in articles +%-------------------- +%POSITION OF PAGES: + %: (def) Pages given mid text +% pp-last,%: Pages at end +%-------------------- +%WORD `VOLUME' IN ARTICLES: +% %: (def) Article volume as number only + jwdvol,%: Include `volume' in articles +%-------------------- +%NUMBER AND SERIES FOR COLLECTIONS: + num-xser,%: Allows number without series +% %: (def) Standard BibTeX +%-------------------- +%POSITION OF NUMBER AND SERIES: +% %: (def) After chapter and pages + numser,%: Just before publisher +%-------------------- +%VOLUME AND SERIES FOR BOOKS/COLLECTIONS: +% %: (def) Vol. 23 of Series + ser-vol,%: Series, vol. 23 +%-------------------- +%POSITION OF VOLUME AND SERIES FOR INCOLLECTIONS: +% %: (def) Series and volume after the editors + ser-ed,%: Series and volume after booktitle +%-------------------- +%JOURNAL NAME PUNCTUATION: + %: (def) Comma after journal +% jnm-x,%: Space after journal +%-------------------- +%BOOK TITLE: + %: (def) Book title italic +% btit-rm,bt-rm,%: Book title plain +%-------------------- +%PAGES IN BOOKS: + %: (def) Pages in book plain +% bkpg-par,%: Pages in book in parentheses +% bkpg-x,%: Pages in book bare +%-------------------- +%TOTAL PAGES OF A BOOK: +% %: (def) Total book pages not printed + pg-bk,%: For book: 345 pages +% pg-bk,pg-pre,%: Total book pages before publisher +%-------------------- +%PUBLISHER ADDRESS: + %: (def) Publisher, address +% add-pub,%: Address: Publisher +%-------------------- +%PUBLISHER IN PARENTHESES: + %: (def) Publisher as normal block +% pub-par,%: Publisher in parentheses +% pub-date,%: Publisher and date in parentheses +% pub-date,pub-xc,%: Publisher and date in parentheses, no comma +% pub-date,pub-xpar,%: Publisher and date without parentheses +% pub-date,pub-xpar,pub-xc,%: Publisher and date, no parentheses, no comma +%-------------------- +%PUBLISHER POSITION: +% %: (def) Publisher after chapter, pages + pre-pub,%: Publisher before chapter, pages + pre-edn,%: Publisher after edition +%-------------------- +%ISBN NUMBER: + isbn,%: Include ISBN +% %: (def) No ISBN +%-------------------- +%ISSN NUMBER: +% issn,%: Include ISSN + %: (def) No ISSN +%-------------------- +%DOI NUMBER: +% doi,%: Include DOI + url-doi,%: Format DOI as URL //doi.org/doi +% agu-doi,doi,%: Insert DOI AGU style +% %: (def) No DOI +%-------------------- +%`EDITOR' AFTER NAMES (EDITED BOOKS WITHOUT AUTHORS): +% %: (def) Word `editor' after name +% edpar,%: `Name (editor),' +% edpar,bkedcap,%: `Name (Editor),' +% edparc,%: `Name, (editor)' +% edparc,bkedcap,%: `Name, (Editor)' + edparxc,%: `Name (editor)' +% edparxc,bkedcap,%: `Name (Editor)' +%-------------------- +%EDITOR IN COLLECTIONS: +% %: (def) Same as for edited book + edby,%: In booktitle, edited by .. +% edby-par,%: In booktitle (edited by ..) +% edby-parc,%: In booktitle, (edited by ..) +% edby,edbyx,%: In booktitle, editor .. +% edby,edbyw,%: In booktitle, (editor) .. +% edby-par,edbyx,%: In booktitle (editor..) +% edby-parc,edbyx,%: In booktitle, (editor..) +% edby,edbyy,%: In booktitle, .., editor +% edby-par,edbyy,%: In booktitle (.., editor) +%-------------------- +%CAPITALIZE `EDITOR' OR `EDITED BY' (if editor capitalizable) +% %: (def) `(editor,..)' or `(edited by..)' +% edcap,%: `(Editor,..)' or `(Edited by..)' +%-------------------- +%PUNCTUATION BETWEEN SECTIONS (BLOCKS): +% %: (def) \newblock after blocks + blk-com,%: Comma between blocks +% blk-com,com-semi,%: Semi-colon between blocks +% blk-com,com-blank,%: Blanks between blocks +% blk-tit,%: Period after titles of articles, books, etc +% blk-tit,tit-col,%: Colon after titles of articles, books, etc +% blk-tita,%: Period after titles of articles +% blk-tita,tit-col,%: Colon after titles of articles +%-------------------- +%PUNCTUATION BEFORE NOTES (if not using \newblock) +% %: (def) Notes have regular punctuation + blknt,%: Notes preceded by period +%-------------------- +%PUNCTUATION AFTER AUTHORS: + %: (def) Author block normal +% au-col,%: Author block with colon +%-------------------- +%PUNCTUATION AFTER `IN': + %: (def) Space after `in' +% in-col,%: Colon after `in' +% in-it,%: Italic `in' +% in-col,in-it,%: Italic `in' and colon +% in-x,%: No word `in' +%-------------------- +%`IN' WITH JOURNAL NAMES (if using 'in' with collections) + %: (def) No `in' before journal name +% injnl,%: Add `in' before journal name +%-------------------- +%FINAL PUNCTUATION: + %: (def) Period at very end +% fin-bare,%: No period at end +%-------------------- +%ABBREVIATE WORD `PAGES' (if not using external language file) +% %: (def) `Page(s)' + pp,%: `Page' abbreviated +% ppx,%: `Page' omitted +%-------------------- +%ABBREVIATE WORD `EDITORS': +% %: (def) `Editor(s)' + ed,%: `Editor' abbreviated +%-------------------- +%OTHER ABBREVIATIONS: +% %: (def) No abbreviations + abr,%: Abbreviations +%-------------------- +%ABBREVIATION FOR `EDITION' (if abbreviating words) + %: (def) `Edition' abbreviated as `edn' +% ednx,%: `Edition' abbreviated as `ed' +%-------------------- +%MONTHS WITH DOTS: + %: (def) Months with dots +% mth-bare,%: Months without dots +%-------------------- +%EDITION NUMBERS: +% xedn,%: Editions as in database +% %: (def) Write out editions + ord,%: Numerical editions +%-------------------- +%Reading external language file \cfile= +%STORED JOURNAL NAMES: + %: (def) Full journal names +% jabr,%: Abbreviated journal names +% jabr,jaa,%: Abbreviated with astronomy shorthands +%-------------------- +%AMPERSAND: + %: (def) Use word `and' +% amper,%: Use ampersand +% varand,%: Use \BIBand +%-------------------- +%COMMA BEFORE `AND': +% %: (def) Comma before `and' + and-xcom,%: No comma before `and' +% and-com,%: Comma even with 2 authors +%-------------------- +%COMMA BEFORE `AND' EVEN FOR COLLECTION EDITORS (if using comma before `and' with authors) +% and-com-ed,%: Comma with 2 editors +% %: (def) Two editors without comma +%-------------------- +%NO `AND' IN REFERENCE LIST: + %: (def) With `and' +% xand,%: No `and' +%-------------------- +%COMMA BEFORE `ET AL': +% %: (def) Comma before `et al' + etal-xc,%: No comma before `et al' +%-------------------- +%FONT OF `ET AL': + %: (def) Plain et al +% etal-it,%: Italic et al +% etal-rm,%: Roman et al +%-------------------- +%ADDITIONAL REVTeX DATA FIELDS: + %: (def) No additional fields +% revdata,eprint,url,url-blk,%: Include REVTeX data fields +%-------------------- +%E-PRINT DATA FIELD: (without REVTeX fields) + %: (def) Do not include eprint field +% eprint,%: Include eprint and archive fields +%-------------------- +%URL ADDRESS: (without REVTeX fields) +% %: (def) No URL + url,url-blk,%: Include URL +% url,url-nt,%: URL as note +% url,url-nl,%: URL on new line +%-------------------- +%REFERENCE COMPONENT TAGS: + %: (def) No reference component tags +% bibinfo,%: Reference component tags +%-------------------- +%EMPHASIS: (affects all so-called italics) + %: (def) Use emphasis +% em-it,%: Use true italics +% em-x,%: No italics +% em-ul,%: Underlining +%-------------------- +%COMPATIBILITY WITH PLAIN TEX: + nfss,%: Use LaTeX commands +% plntx,%: Use only Plain TeX +%-------------------- + }} +\generate{\file{francaissc.bst}{\MBopts}} +\endbatchfile diff --git a/Master/texmf-dist/tex/latex/francais-bst/francaisbst.tex b/Master/texmf-dist/tex/latex/francais-bst/francaisbst.tex index f60e5a1e890..7277af897b0 100644 --- a/Master/texmf-dist/tex/latex/francais-bst/francaisbst.tex +++ b/Master/texmf-dist/tex/latex/francais-bst/francaisbst.tex @@ -1,36 +1,48 @@ -%% Copyright (C) 2012 Vincent Goulet %% +%% This is file `francaisbst.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% francais-bst.mbs (with options: `bblbst') +%% +%% Copyright (C) 2012-2023 Vincent Goulet +%% %% This file may be distributed and/or modified under the conditions %% of the LaTeX Project Public License, either version 1.3c of this %% license or (at your option) any later version. The latest version %% of this license is in: -%% -%% http://www.latex-project.org/lppl.txt -%% -%% and version 1.3c or later is part of all distributions of LaTeX -%% version 2006/05/20 or later. -%% +%% +%% https://www.latex-project.org/lppl.txt +%% %% This work has the LPPL maintenance status `maintained'. -%% +%% %% The Current Maintainer of this work is Vincent Goulet %% . -%% -%% This is francaisbst.tex for French. -\def\bbland{et} \def\bbletal{et~collab.} -\def\bbleditors{r\'edacteurs} \def\bbleds{\'ed.} -\def\bbleditor{r\'edacteur} \def\bbled{\'ed.} -\def\bbledby{\'edit\'e par} -\def\bbledition{\'edition} \def\bbledn{\'ed.} -\def\bblvolume{volume} \def\bblvol{vol.} +%% +%% This work consists of the master bibliographic style file +%% francais-bst.mbs; the driver files francais.dbj and francaissc.dbj; +%% the derived files francais.bst, francaissc.bst, francaisbst.tex. +%% + % ------------------------------------------------------------------- + % Name and version information of the main mbs file: + % \ProvidesFile{francais-bst.mbs}[2023/10/28 v2.0 (VG, PWD, AO, DPC)] + % This is francaisbst.tex for French. +\def\bbland{et} \def\bbletal{et~collab.} +\def\bbleditors{directeurs} \def\bbleds{dir.} +\def\bbleditor{directeur} \def\bbled{dir.} +\def\bbledby{sous la direction de} +\def\bbledition{\'edition} \def\bbledn{\'ed.} +\def\bblvolume{volume} \def\bblvol{vol.} \def\bblof{de} -\def\bblnumber{num\'ero} \def\bblno{\no{}} +\def\bblnumber{num\'ero} \def\bblno{{\no}} \def\bblin{dans} -\def\bblpages{pages} \def\bblpp{p.} -\def\bblpage{page} \def\bblp{p.} +\def\bblpages{pages} \def\bblpp{p.} +\def\bblpage{page} \def\bblp{p.} \def\bbleidpp{pages} -\def\bblchapter{chapitre} \def\bblchap{chap.} -\def\bbltechreport{cahier de recherche} -\def\bbltechrep{cahier de recherche} +\def\bblchapter{chaptitre} \def\bblchap{chap.} +\def\bbltechreport{rapport technique} +\def\bbltechrep{rapport technique} \def\bblmthesis{m\'emoire de ma\^itrise} \def\bblphdthesis{th\`ese de doctorat} \def\bblfirst{premi\`ere} \def\bblfirsto{1{\iere}} -- cgit v1.2.3