summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-11-30 21:04:50 +0000
committerKarl Berry <karl@freefriends.org>2023-11-30 21:04:50 +0000
commitbf1c88cd59a3d259436bfb09a0b56610a7da0231 (patch)
tree9b805487c1f9387099ebe1d38c81f2f25fbc7ac2 /Master
parentc278fd5fefab78b976893cb286cd091ac49df173 (diff)
cjs-rcs-article (30nov23)
git-svn-id: svn://tug.org/texlive/trunk@69006 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/bibtex/bst/cjs-rcs-article/cjs-rcs-en.bst1702
-rw-r--r--Master/texmf-dist/bibtex/bst/cjs-rcs-article/cjs-rcs-fr.bst1702
-rw-r--r--Master/texmf-dist/doc/latex/cjs-rcs-article/README.md220
-rw-r--r--Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-article-fr.pdfbin0 -> 112323 bytes
-rw-r--r--Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-article-fr.tex5
-rw-r--r--Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-article.pdfbin0 -> 176709 bytes
-rw-r--r--Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-bst-en.dbj611
-rw-r--r--Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-bst-fr.dbj603
-rw-r--r--Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-class.dbj39
-rw-r--r--Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-english.mbs420
-rw-r--r--Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-french.mbs370
-rw-r--r--Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-merlin.mbs8009
-rw-r--r--Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-merlin.pdfbin0 -> 38737 bytes
-rw-r--r--Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-template.tex170
-rw-r--r--Master/texmf-dist/doc/latex/cjs-rcs-article/rcs-gabarit.tex178
-rw-r--r--Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-article.dtx5080
-rw-r--r--Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-article.ins34
-rw-r--r--Master/texmf-dist/tex/latex/cjs-rcs-article/cjs-rcs-article.cls755
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/cjs-rcs-article.tlpsrc0
-rw-r--r--Master/tlpkg/tlpsrc/collection-publishers.tlpsrc1
21 files changed, 19900 insertions, 1 deletions
diff --git a/Master/texmf-dist/bibtex/bst/cjs-rcs-article/cjs-rcs-en.bst b/Master/texmf-dist/bibtex/bst/cjs-rcs-article/cjs-rcs-en.bst
new file mode 100644
index 00000000000..934aba12f93
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/cjs-rcs-article/cjs-rcs-en.bst
@@ -0,0 +1,1702 @@
+%%
+%% This is file `cjs-rcs-en.bst',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cjs-rcs-merlin.mbs (with options: `head,exlang,ay,nat,lang,nm-rev,jnrlst,keyxyr,blkyear,dt-beg,yr-par,yrp-per,note-yr,trtit-b,num-xser,numser,ser-ed,pre-edn,isbn,url-doi,english,abr,ednx,ord,etal-xc,url,url-blk,nfss,,{}')
+%% cjs-rcs-english.mbs (with options: `exlang,ay,nat,lang,nm-rev,jnrlst,keyxyr,blkyear,dt-beg,yr-par,yrp-per,note-yr,trtit-b,num-xser,numser,ser-ed,pre-edn,isbn,url-doi,english,abr,ednx,ord,etal-xc,url,url-blk,nfss,,{}')
+%% cjs-rcs-merlin.mbs (with options: `tail,exlang,ay,nat,lang,nm-rev,jnrlst,keyxyr,blkyear,dt-beg,yr-par,yrp-per,note-yr,trtit-b,num-xser,numser,ser-ed,pre-edn,isbn,url-doi,english,abr,ednx,ord,etal-xc,url,url-blk,nfss,,{}')
+%%
+%% Copyright (C) 2023 Statistical Society of Canada | Société
+%% canadienne de statistique
+%%
+%% 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
+%% <vincent.goulet@act.ulaval.ca>.
+%%
+%% This work consists of the master bibliographic style file
+%% cjs-rcs-merlin.mbs, the language definition file cjs-rcs-english.mbs,
+%% the driver file cjs-rcs-en.dbj, and the derived file cjs-rcs-en.bst.
+%%
+ % -------------------------------------------------------------------
+ % Name and version information of the main mbs file:
+ % \ProvidesFile{cjs-rcs-merlin.mbs}[2023/11/29 v1.0 (VG, PWD, AO, DPC)]
+ % For use with BibTeX version 0.99a or later
+ % -------------------------------------------------------------------
+ % This bibliography style file is intended for texts in
+ % ENGLISH
+ % 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
+ % The form of the \bibitem entries is
+ % \bibitem[Jones et al.(1990)]{key}...
+ % \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!
+ % 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)
+ % \citet*{key} ==>> Jones, Baker, and Smith (1990)
+ % \citep{key} ==>> (Jones et al., 1990)
+ % \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.
+ % \citeauthor*{key} ==>> Jones, Baker, and Smith
+ % \citeyear{key} ==>> 1990
+ % -------------------------------------------------------------------
+
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ doi
+ edition
+ editor
+ eid
+ howpublished
+ institution
+ isbn
+ journal
+ key
+ language
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ url
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.label short.list }
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+STRINGS { s t}
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+FUNCTION {add.blank}
+{ " " * before.all 'output.state :=
+}
+
+FUNCTION {date.block}
+{
+ new.block
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+FUNCTION {tie.or.space.prefix}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$
+}
+
+FUNCTION {capitalize}
+{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {space.word}
+{ " " swap$ * " " * }
+ % Here are the language-specific definitions for explicit words.
+ % Each function has a name bbl.xxx where xxx is the English word.
+ %-------------------------------------------------------------------
+ % Begin module:
+ % \ProvidesFile{cjs-rcs-english.mbs}[2023/11/29 v1.0 (VG, PWD)]
+
+ % The language selected here is ENGLISH
+FUNCTION {bbl.and}
+{ "and"}
+
+FUNCTION {bbl.etal}
+{ "et~al." }
+
+FUNCTION {bbl.editors}
+{ "editors" }
+
+FUNCTION {bbl.editor}
+{ "editor" }
+
+FUNCTION {bbl.edby}
+{ "edited by" }
+
+FUNCTION {bbl.edition}
+{ "ed." }
+
+FUNCTION {bbl.volume}
+{ "vol." }
+
+FUNCTION {bbl.of}
+{ "of" }
+
+FUNCTION {bbl.number}
+{ "no." }
+
+FUNCTION {bbl.nr}
+{ "no." }
+
+FUNCTION {bbl.in}
+{ "in" }
+
+FUNCTION {bbl.pages}
+{ "pages" }
+
+FUNCTION {bbl.page}
+{ "page" }
+
+FUNCTION {bbl.chapter}
+{ "chap." }
+
+FUNCTION {bbl.techrep}
+{ "Tech. Rep." }
+
+FUNCTION {bbl.mthesis}
+{ "Master's thesis" }
+
+FUNCTION {bbl.phdthesis}
+{ "Ph.D. thesis" }
+
+FUNCTION {bbl.first}
+{ "1st" }
+
+FUNCTION {bbl.second}
+{ "2nd" }
+
+FUNCTION {bbl.third}
+{ "3rd" }
+
+FUNCTION {bbl.fourth}
+{ "4th" }
+
+FUNCTION {bbl.fifth}
+{ "5th" }
+
+FUNCTION {bbl.st}
+{ "st" }
+
+FUNCTION {bbl.nd}
+{ "nd" }
+
+FUNCTION {bbl.rd}
+{ "rd" }
+
+FUNCTION {bbl.th}
+{ "th" }
+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$
+}
+
+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."}
+
+ % End module: cjs-rcs-english.mbs
+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"}
+FUNCTION {bibinfo.check}
+{ swap$
+ duplicate$ missing$
+ {
+ pop$ pop$
+ ""
+ }
+ { duplicate$ empty$
+ {
+ swap$ pop$
+ }
+ { swap$
+ pop$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {bibinfo.warn}
+{ swap$
+ duplicate$ missing$
+ {
+ swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
+ ""
+ }
+ { duplicate$ empty$
+ {
+ swap$ "empty " swap$ * " in " * cite$ * warning$
+ }
+ { swap$
+ pop$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.url}
+{
+ doi empty$
+ {
+ url
+ duplicate$ empty$
+ { pop$ "" }
+ { "\urlprefix\url{" swap$ * "}" * }
+ if$
+ }
+ {
+ doi
+ "\doiprefix\urldoi{" swap$ * "}" *
+ }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+
+STRINGS { bibinfo}
+
+FUNCTION {format.names}
+{ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}{, f.}{, jj}"
+ format.name$
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ numnames #2 >
+ t "others" = not and
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ {
+ " " * bbl.etal *
+ }
+ {
+ bbl.and
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ } if$
+}
+FUNCTION {format.names.ed}
+{
+ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{f.~}{vv~}{ll}{, jj}"
+ format.name$
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ numnames #2 >
+ t "others" = not and
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ {
+
+ " " * bbl.etal *
+ }
+ {
+ bbl.and
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ } if$
+}
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.authors}
+{ author "author" format.names
+}
+FUNCTION {get.bbl.editor}
+{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
+
+FUNCTION {format.editors}
+{ editor "editor" format.names duplicate$ empty$ 'skip$
+ {
+ "," *
+ " " *
+ get.bbl.editor
+ *
+ }
+ if$
+}
+FUNCTION {format.isbn}
+{ isbn "isbn" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ new.block
+ "ISBN " swap$ *
+ }
+ if$
+}
+
+FUNCTION {select.language}
+{ duplicate$ empty$
+ 'pop$
+ { language empty$
+ 'skip$
+ { "{\selectlanguage{" language * "}" * swap$ * "}" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.note}
+{
+ 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$
+}
+
+FUNCTION {format.title}
+{ title
+ duplicate$ empty$ 'skip$
+ { "t" change.case$ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ select.language
+ }
+ if$
+}
+FUNCTION {format.full.names}
+{'s :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$
+ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ {
+ " " * bbl.etal *
+ }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ bbl.and
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+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$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem[{" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "}]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {n.dashify}
+{
+ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {word.in}
+{ bbl.in capitalize
+ " " * }
+
+FUNCTION {format.date}
+{ year "year" bibinfo.check duplicate$ empty$
+ {
+ }
+ 'skip$
+ if$
+ extra.label *
+ before.all 'output.state :=
+ " (" swap$ * ")" *
+}
+FUNCTION {format.btitle}
+{ title "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ emphasize
+ select.language
+ }
+ if$
+}
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { bbl.volume volume tie.or.space.prefix
+ "volume" bibinfo.check * *
+ series "series" bibinfo.check
+ duplicate$ empty$ 'pop$
+ { swap$ bbl.of space.word * swap$
+ emphasize * }
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { 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$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { s swap$ * 's := }
+ { pop$ "" 't := }
+ if$
+ }
+ while$
+ s empty$
+ 'skip$
+ { pop$ s }
+ if$
+}
+
+FUNCTION {convert.edition}
+{ 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
+ { s eng.ord 't := }
+ { edition 't := }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ t
+}
+
+FUNCTION {format.edition}
+{ edition duplicate$ empty$ 'skip$
+ {
+ convert.edition
+ output.state mid.sentence =
+ { "l" }
+ { "t" }
+ if$ change.case$
+ "edition" bibinfo.check
+ " " * bbl.edition *
+ }
+ if$
+}
+INTEGERS { multiresult }
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+FUNCTION {format.pages}
+{ pages duplicate$ empty$ 'skip$
+ { duplicate$ multi.page.check
+ {
+ bbl.pages swap$
+ n.dashify
+ }
+ {
+ bbl.page swap$
+ }
+ if$
+ tie.or.space.prefix
+ "pages" bibinfo.check
+ * *
+ }
+ if$
+}
+FUNCTION {format.journal.pages}
+{ pages duplicate$ empty$ 'pop$
+ { swap$ duplicate$ empty$
+ { pop$ pop$ format.pages }
+ {
+ ":" *
+ swap$
+ n.dashify
+ "pages" bibinfo.check
+ *
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.journal.eid}
+{ eid "eid" bibinfo.check
+ duplicate$ empty$ 'pop$
+ { swap$ duplicate$ empty$ 'skip$
+ {
+ ":" *
+ }
+ if$
+ swap$ *
+ }
+ if$
+}
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ duplicate$ empty$ 'skip$
+ {
+ "volume" bibinfo.check
+ }
+ if$
+ number "number" bibinfo.check duplicate$ empty$ 'skip$
+ {
+ swap$ duplicate$ empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ swap$
+ "(" 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$
+ "type" bibinfo.check
+ }
+ if$
+ chapter tie.or.space.prefix
+ "chapter" bibinfo.check
+ * *
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.booktitle}
+{
+ booktitle "booktitle" bibinfo.check
+ emphasize
+}
+FUNCTION {format.in.ed.booktitle}
+{ format.booktitle duplicate$ empty$ 'skip$
+ {
+ format.bvolume duplicate$ empty$ 'pop$
+ { ", " swap$ * * }
+ if$
+ editor "editor" format.names.ed duplicate$ empty$ 'pop$
+ {
+ "," *
+ " " *
+ get.bbl.editor
+ ", " *
+ * swap$
+ * }
+ if$
+ word.in swap$ *
+ }
+ if$
+}
+FUNCTION {format.thesis.type}
+{ type duplicate$ empty$
+ 'pop$
+ { swap$ pop$
+ "t" change.case$ "type" bibinfo.check
+ }
+ if$
+}
+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$
+}
+FUNCTION {format.article.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.book.crossref}
+{ volume duplicate$ empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ pop$ word.in
+ }
+ { bbl.volume
+ capitalize
+ swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
+ }
+ if$
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.incoll.inproc.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.org.or.pub}
+{ 't :=
+ ""
+ address empty$ t empty$ and
+ 'skip$
+ {
+ t empty$
+ { address "address" bibinfo.check *
+ }
+ { t *
+ address empty$
+ 'skip$
+ { ", " * address "address" bibinfo.check * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.publisher.address}
+{ publisher "publisher" bibinfo.warn format.org.or.pub
+}
+
+FUNCTION {format.organization.address}
+{ organization "organization" bibinfo.check format.org.or.pub
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ {
+ journal
+ "journal" bibinfo.check
+ emphasize
+ "journal" output.check
+ format.vol.num.pages output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.edition output
+ new.sentence
+ format.number.series output
+ format.publisher.address output
+ }
+ {
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.isbn output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ new.block
+ howpublished "howpublished" bibinfo.check output
+ address "address" bibinfo.check output
+ format.isbn output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ crossref missing$
+ {
+ format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.edition output
+ new.sentence
+ format.number.series output
+ format.publisher.address output
+ }
+ {
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ crossref missing$
+ { format.isbn output }
+ 'skip$
+ if$
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.edition output
+ format.chapter.pages output
+ new.sentence
+ format.number.series output
+ format.publisher.address output
+ format.isbn output
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.pages output
+ new.sentence
+ format.number.series output
+ publisher empty$
+ { format.organization.address output }
+ { organization "organization" bibinfo.check output
+ format.publisher.address output
+ }
+ if$
+ format.isbn output
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {conference} { inproceedings }
+FUNCTION {manual}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ organization "organization" bibinfo.check output
+ address "address" bibinfo.check output
+ format.edition output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle
+ "title" output.check
+ new.block
+ bbl.mthesis format.thesis.type output.nonnull
+ school "school" bibinfo.warn output
+ address "address" bibinfo.check output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title output
+ new.block
+ howpublished "howpublished" bibinfo.check output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle
+ "title" output.check
+ new.block
+ bbl.phdthesis format.thesis.type output.nonnull
+ school "school" bibinfo.warn output
+ address "address" bibinfo.check output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.editors output
+ editor format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ format.bvolume output
+ new.sentence
+ format.number.series output
+ publisher empty$
+ { format.organization.address output }
+ { organization "organization" bibinfo.check output
+ format.publisher.address output
+ }
+ if$
+ format.isbn output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle
+ "title" output.check
+ new.block
+ format.tr.number output.nonnull
+ institution "institution" bibinfo.warn output
+ address "address" bibinfo.check output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ new.block
+ format.url output
+ new.block
+ format.note "note" output.check
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+READ
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+INTEGERS { len }
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+FUNCTION {format.lab.names}
+{ 's :=
+ "" 't :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$
+ " " * bbl.etal *
+ }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ {
+ " " * bbl.etal *
+ }
+ { bbl.and space.word * s #2 "{vv~}{ll}" format.name$
+ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.label}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+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 :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ "("
+ *
+ year duplicate$ empty$
+ short.list key field.or.null = or
+ { pop$ "" }
+ 'skip$
+ if$
+ *
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"
+ format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "zzzzz" 't := }
+ 'skip$
+ if$
+ t sortify *
+ }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+FUNCTION {editor.sort}
+{ editor empty$
+ { key empty$
+ { "to sort, need editor or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.sort
+ 'author.sort
+ if$
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.label :=
+ sort.label
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+SORT
+STRINGS { last.label next.extra }
+INTEGERS { last.extra.num last.extra.num.extended last.extra.num.blank number.label }
+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 :=
+}
+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 :=
+}
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+}
+EXECUTE {initialize.extra.label.stuff}
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
+FUNCTION {bib.sort.order}
+{ sort.label
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+ITERATE {bib.sort.order}
+SORT
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+ "\providecommand{\url}[1]{\texttt{#1}}"
+ write$ newline$
+ "\providecommand{\urlprefix}{}"
+ write$ newline$
+ "\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$
+ "\providecommand{\selectlanguage}[1]{\relax}"
+ write$ newline$
+}
+EXECUTE {begin.bib}
+EXECUTE {init.state.consts}
+ITERATE {call.type$}
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+EXECUTE {end.bib}
+%% End of customized bst file
+%%
+%% End of file `cjs-rcs-en.bst'.
diff --git a/Master/texmf-dist/bibtex/bst/cjs-rcs-article/cjs-rcs-fr.bst b/Master/texmf-dist/bibtex/bst/cjs-rcs-article/cjs-rcs-fr.bst
new file mode 100644
index 00000000000..1f826d9b59a
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/cjs-rcs-article/cjs-rcs-fr.bst
@@ -0,0 +1,1702 @@
+%%
+%% This is file `cjs-rcs-fr.bst',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cjs-rcs-merlin.mbs (with options: `head,exlang,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,french,pp,ed,abr,ord,and-xcom,etal-xc,url,url-blk,nfss,,{}')
+%% cjs-rcs-french.mbs (with options: `exlang,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,french,pp,ed,abr,ord,and-xcom,etal-xc,url,url-blk,nfss,,{}')
+%% cjs-rcs-merlin.mbs (with options: `tail,exlang,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,french,pp,ed,abr,ord,and-xcom,etal-xc,url,url-blk,nfss,,{}')
+%%
+%% Copyright (C) 2023 Statistical Society of Canada | Société
+%% canadienne de statistique
+%%
+%% 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
+%% <vincent.goulet@act.ulaval.ca>.
+%%
+%% This work consists of the master bibliographic style file
+%% cjs-rcs-merlin.mbs, the language definition file cjs-rcs-french.mbs,
+%% the driver file cjs-rcs-fr.dbj, and the derived file cjs-rcs-fr.bst.
+%%
+ % -------------------------------------------------------------------
+ % Name and version information of the main mbs file:
+ % \ProvidesFile{cjs-rcs-merlin.mbs}[2023/11/29 v1.0 (VG, PWD, AO, DPC)]
+ % For use with BibTeX version 0.99a or later
+ % -------------------------------------------------------------------
+ % This bibliography style file is intended for texts in
+ % FRENCH
+ % 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
+ % The form of the \bibitem entries is
+ % \bibitem[Jones et al.(1990)]{key}...
+ % \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!
+ % 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)
+ % \citet*{key} ==>> Jones, Baker, and Smith (1990)
+ % \citep{key} ==>> (Jones et al., 1990)
+ % \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.
+ % \citeauthor*{key} ==>> Jones, Baker, and Smith
+ % \citeyear{key} ==>> 1990
+ % -------------------------------------------------------------------
+
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ doi
+ edition
+ editor
+ eid
+ howpublished
+ institution
+ isbn
+ journal
+ key
+ language
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ url
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.label short.list }
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+STRINGS { s t}
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+FUNCTION {add.blank}
+{ " " * before.all 'output.state :=
+}
+
+FUNCTION {date.block}
+{
+ skip$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+FUNCTION {non.stop}
+{ duplicate$
+ "}" * add.period$
+ #-1 #1 substring$ "." =
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+FUNCTION {tie.or.space.prefix}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$
+}
+
+FUNCTION {capitalize}
+{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {space.word}
+{ " " swap$ * " " * }
+ % Here are the language-specific definitions for explicit words.
+ % Each function has a name bbl.xxx where xxx is the English word.
+ %-------------------------------------------------------------------
+ % Begin module:
+ % \ProvidesFile{cjs-rcs-french.mbs}[2023/11/29 v1.0 (VG, PWD)]
+
+ % The language selected here is FRENCH
+FUNCTION {bbl.and}
+{ "et"}
+
+FUNCTION {bbl.etal}
+{ "et~collab." }
+
+FUNCTION {bbl.editors}
+{ "dir." }
+
+FUNCTION {bbl.editor}
+{ "dir." }
+
+FUNCTION {bbl.edby}
+{ "sous la direction de" }
+
+FUNCTION {bbl.edition}
+{ "\'ed." }
+
+FUNCTION {bbl.volume}
+{ "vol." }
+
+FUNCTION {bbl.of}
+{ "de" }
+
+FUNCTION {bbl.number}
+{ "{\no}" }
+
+FUNCTION {bbl.nr}
+{ "{\no}" }
+
+FUNCTION {bbl.in}
+{ "dans" }
+
+FUNCTION {bbl.pages}
+{ "p." }
+
+FUNCTION {bbl.page}
+{ "p." }
+
+FUNCTION {bbl.chapter}
+{ "chap." }
+
+FUNCTION {bbl.techrep}
+{ "rapport technique" }
+
+FUNCTION {bbl.mthesis}
+{ "m\'emoire de ma\^itrise" }
+
+FUNCTION {bbl.phdthesis}
+{ "th\`ese de doctorat" }
+
+FUNCTION {bbl.first}
+{ "1{\iere}" }
+
+FUNCTION {bbl.second}
+{ "2{\ieme}" }
+
+FUNCTION {bbl.third}
+{ "3{\ieme}" }
+
+FUNCTION {bbl.fourth}
+{ "4{\ieme}" }
+
+FUNCTION {bbl.fifth}
+{ "5{\ieme}" }
+
+FUNCTION {bbl.th}
+{ "{\ieme}" }
+
+MACRO {jan} {"jan."}
+
+MACRO {feb} {"f\'ev."}
+
+MACRO {mar} {"mars"}
+
+MACRO {apr} {"avr."}
+
+MACRO {may} {"mai"}
+
+MACRO {jun} {"juin"}
+
+MACRO {jul} {"juil."}
+
+MACRO {aug} {"ao\^ut"}
+
+MACRO {sep} {"sept."}
+
+MACRO {oct} {"oct."}
+
+MACRO {nov} {"nov."}
+
+MACRO {dec} {"d\'ec."}
+
+ % End module: cjs-rcs-french.mbs
+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"}
+FUNCTION {bibinfo.check}
+{ swap$
+ duplicate$ missing$
+ {
+ pop$ pop$
+ ""
+ }
+ { duplicate$ empty$
+ {
+ swap$ pop$
+ }
+ { swap$
+ pop$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {bibinfo.warn}
+{ swap$
+ duplicate$ missing$
+ {
+ swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
+ ""
+ }
+ { duplicate$ empty$
+ {
+ swap$ "empty " swap$ * " in " * cite$ * warning$
+ }
+ { swap$
+ pop$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.url}
+{
+ doi empty$
+ {
+ url
+ duplicate$ empty$
+ { pop$ "" }
+ { "\urlprefix\url{" swap$ * "}" * }
+ if$
+ }
+ {
+ doi
+ "\doiprefix\urldoi{" swap$ * "}" *
+ }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+
+STRINGS { bibinfo}
+
+FUNCTION {format.names}
+{ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ duplicate$ #1 >
+ { "{f.~}{vv~}{ll}{, jj}" }
+ { "{vv~}{ll}{, f.}{, jj}" }
+ if$
+ format.name$
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ {
+ " " * bbl.etal *
+ }
+ {
+ bbl.and
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ } if$
+}
+FUNCTION {format.names.ed}
+{
+ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{f.~}{vv~}{ll}{, jj}"
+ format.name$
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ {
+
+ " " * bbl.etal *
+ }
+ {
+ bbl.and
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ } if$
+}
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.authors}
+{ author "author" format.names
+}
+FUNCTION {get.bbl.editor}
+{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
+
+FUNCTION {format.editors}
+{ editor "editor" format.names duplicate$ empty$ 'skip$
+ {
+ " " *
+ get.bbl.editor
+ "(" swap$ * ")" *
+ *
+ }
+ if$
+}
+FUNCTION {format.book.pages}
+{ pages "pages" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { " " * bbl.pages * }
+ if$
+}
+FUNCTION {format.isbn}
+{ isbn "isbn" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ "ISBN " swap$ *
+ }
+ if$
+}
+
+FUNCTION {select.language}
+{ duplicate$ empty$
+ 'pop$
+ { language empty$
+ 'skip$
+ { "{\selectlanguage{" language * "}" * swap$ * "}" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.note}
+{
+ 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$
+}
+
+FUNCTION {format.title}
+{ title
+ duplicate$ empty$ 'skip$
+ { "t" change.case$ }
+ if$
+ "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ "\enquote{" swap$ *
+ "}, " *
+ select.language
+ }
+ if$
+}
+FUNCTION {end.quote.title}
+{ title empty$
+ 'skip$
+ { before.all 'output.state := }
+ if$
+}
+FUNCTION {format.full.names}
+{'s :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$
+ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ {
+ " " * bbl.etal *
+ }
+ {
+ bbl.and
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+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$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem[{" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "}]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+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
+}
+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$
+ "\," swap$ * *
+ }
+ 'skip$
+ if$
+ }
+ while$
+}
+FUNCTION {n.dashify}
+{
+ 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$
+}
+
+FUNCTION {word.in}
+{ bbl.in
+ " " * }
+
+FUNCTION {format.date}
+{ year "year" bibinfo.check duplicate$ empty$
+ {
+ }
+ 'skip$
+ if$
+ extra.label *
+ before.all 'output.state :=
+ after.sentence 'output.state :=
+}
+FUNCTION {format.btitle}
+{ title "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ emphasize
+ select.language
+ }
+ if$
+}
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { bbl.volume volume tie.or.space.prefix
+ "volume" bibinfo.check * *
+ series "series" bibinfo.check
+ duplicate$ empty$ 'pop$
+ { emphasize ", " * swap$ * }
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { 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$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { s swap$ * 's := }
+ { pop$ "" 't := }
+ if$
+ }
+ while$
+ s empty$
+ 'skip$
+ { pop$ s }
+ if$
+}
+
+FUNCTION {convert.edition}
+{ 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
+ { s bbl.th * 't := }
+ { edition 't := }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ t
+}
+
+FUNCTION {format.edition}
+{ edition duplicate$ empty$ 'skip$
+ {
+ convert.edition
+ output.state mid.sentence =
+ { "l" }
+ { "t" }
+ if$ change.case$
+ "edition" bibinfo.check
+ " " * bbl.edition *
+ }
+ if$
+}
+INTEGERS { multiresult }
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+FUNCTION {format.pages}
+{ pages duplicate$ empty$ 'skip$
+ { duplicate$ multi.page.check
+ {
+ bbl.pages swap$
+ n.dashify
+ }
+ {
+ bbl.page swap$
+ }
+ if$
+ tie.or.space.prefix
+ "pages" bibinfo.check
+ * *
+ }
+ if$
+}
+FUNCTION {format.journal.pages}
+{ pages duplicate$ empty$ 'pop$
+ { swap$ duplicate$ empty$
+ { pop$ pop$ format.pages }
+ {
+ ", " *
+ swap$
+ n.dashify
+ pages multi.page.check
+ 'bbl.pages
+ 'bbl.page
+ if$
+ swap$ tie.or.space.prefix
+ "pages" bibinfo.check
+ * *
+ *
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.journal.eid}
+{ eid "eid" bibinfo.check
+ duplicate$ empty$ 'pop$
+ { swap$ duplicate$ empty$ 'skip$
+ {
+ ", " *
+ }
+ if$
+ swap$ *
+ }
+ if$
+}
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ duplicate$ empty$ 'skip$
+ {
+ bbl.volume swap$ tie.or.space.prefix
+ "volume" bibinfo.check
+ * *
+ }
+ if$
+ number "number" bibinfo.check duplicate$ empty$ 'skip$
+ {
+ swap$ duplicate$ empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ swap$
+ ", " 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$
+ "type" bibinfo.check
+ }
+ if$
+ chapter tie.or.space.prefix
+ "chapter" bibinfo.check
+ * *
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.booktitle}
+{
+ booktitle "booktitle" bibinfo.check
+ emphasize
+}
+FUNCTION {format.in.ed.booktitle}
+{ format.booktitle duplicate$ empty$ 'skip$
+ {
+ format.bvolume duplicate$ empty$ 'pop$
+ { ", " swap$ * * }
+ if$
+ editor "editor" format.names.ed duplicate$ empty$ 'pop$
+ {
+ bbl.edby
+ " " * swap$ *
+ swap$
+ "," *
+ " " * swap$
+ * }
+ if$
+ word.in swap$ *
+ }
+ if$
+}
+FUNCTION {format.thesis.type}
+{ type duplicate$ empty$
+ 'pop$
+ { swap$ pop$
+ "t" change.case$ "type" bibinfo.check
+ }
+ if$
+}
+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$
+}
+FUNCTION {format.article.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.book.crossref}
+{ volume duplicate$ empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ pop$ word.in
+ }
+ { bbl.volume
+ swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
+ }
+ if$
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.incoll.inproc.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.org.or.pub}
+{ 't :=
+ ""
+ address empty$ t empty$ and
+ 'skip$
+ {
+ t empty$
+ { address "address" bibinfo.check *
+ }
+ { t *
+ address empty$
+ 'skip$
+ { ", " * address "address" bibinfo.check * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.publisher.address}
+{ publisher "publisher" bibinfo.warn format.org.or.pub
+}
+
+FUNCTION {format.organization.address}
+{ organization "organization" bibinfo.check format.org.or.pub
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ {
+ journal
+ "journal" bibinfo.check
+ emphasize
+ "journal" output.check
+ format.vol.num.pages output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.url output
+ new.sentence
+ format.note output
+ fin.entry
+}
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ add.blank
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.edition output
+ format.number.series output
+ format.publisher.address output
+ }
+ {
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.isbn output
+ format.book.pages output
+ format.url output
+ new.sentence
+ format.note output
+ fin.entry
+}
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ end.quote.title
+ howpublished "howpublished" bibinfo.check output
+ address "address" bibinfo.check output
+ format.isbn output
+ format.book.pages output
+ format.url output
+ new.sentence
+ format.note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ format.date "year" output.check
+ date.block
+ 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.chapter.pages "chapter and pages" output.check
+ format.book.crossref output.nonnull
+ }
+ if$
+ crossref missing$
+ { format.isbn output }
+ 'skip$
+ if$
+ format.url output
+ new.sentence
+ format.note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ 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.url output
+ new.sentence
+ format.note output
+ fin.entry
+}
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.number.series output
+ publisher empty$
+ { format.organization.address output }
+ { organization "organization" bibinfo.check output
+ format.publisher.address output
+ }
+ if$
+ format.bvolume output
+ format.pages output
+ format.isbn output
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.url output
+ new.sentence
+ format.note output
+ fin.entry
+}
+FUNCTION {conference} { inproceedings }
+FUNCTION {manual}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ organization "organization" bibinfo.check output
+ address "address" bibinfo.check output
+ format.edition output
+ format.url output
+ new.sentence
+ format.note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle
+ "title" output.check
+ bbl.mthesis format.thesis.type output.nonnull
+ school "school" bibinfo.warn output
+ address "address" bibinfo.check output
+ format.url output
+ new.sentence
+ format.note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title output
+ end.quote.title
+ howpublished "howpublished" bibinfo.check output
+ format.url output
+ new.sentence
+ format.note output
+ fin.entry
+}
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle
+ "title" output.check
+ bbl.phdthesis format.thesis.type output.nonnull
+ school "school" bibinfo.warn output
+ address "address" bibinfo.check output
+ format.url output
+ new.sentence
+ format.note output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.editors output
+ editor format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+ publisher empty$
+ { format.organization.address output }
+ { organization "organization" bibinfo.check output
+ format.publisher.address output
+ }
+ if$
+ format.isbn output
+ format.url output
+ new.sentence
+ format.note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle
+ "title" output.check
+ format.tr.number output.nonnull
+ institution "institution" bibinfo.warn output
+ address "address" bibinfo.check output
+ format.url output
+ new.sentence
+ format.note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ end.quote.title
+ format.url output
+ new.sentence
+ format.note "note" output.check
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+READ
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+INTEGERS { len }
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+FUNCTION {format.lab.names}
+{ 's :=
+ "" 't :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$
+ " " * bbl.etal *
+ }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ {
+ " " * bbl.etal *
+ }
+ { bbl.and space.word * s #2 "{vv~}{ll}" format.name$
+ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.label}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+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 :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ "("
+ *
+ year duplicate$ empty$
+ short.list key field.or.null = or
+ { pop$ "" }
+ 'skip$
+ if$
+ *
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ll{ }}{ f{ }}{ jj{ }}"
+ format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "zzzzz" 't := }
+ 'skip$
+ if$
+ t sortify *
+ }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+FUNCTION {editor.sort}
+{ editor empty$
+ { key empty$
+ { "to sort, need editor or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.sort
+ 'author.sort
+ if$
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.label :=
+ sort.label
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+SORT
+STRINGS { last.label next.extra }
+INTEGERS { last.extra.num last.extra.num.extended last.extra.num.blank number.label }
+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 :=
+}
+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 :=
+}
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+}
+EXECUTE {initialize.extra.label.stuff}
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
+FUNCTION {bib.sort.order}
+{ sort.label
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+ITERATE {bib.sort.order}
+SORT
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\let\enquote\frquote"
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+ "\providecommand{\url}[1]{\texttt{#1}}"
+ write$ newline$
+ "\providecommand{\urlprefix}{}"
+ write$ newline$
+ "\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$
+ "\providecommand{\selectlanguage}[1]{\relax}"
+ write$ newline$
+}
+EXECUTE {begin.bib}
+EXECUTE {init.state.consts}
+ITERATE {call.type$}
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+EXECUTE {end.bib}
+%% End of customized bst file
+%%
+%% End of file `cjs-rcs-fr.bst'.
diff --git a/Master/texmf-dist/doc/latex/cjs-rcs-article/README.md b/Master/texmf-dist/doc/latex/cjs-rcs-article/README.md
new file mode 100644
index 00000000000..69c983dbb73
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cjs-rcs-article/README.md
@@ -0,0 +1,220 @@
+# Article class for The Canadian Journal of Statistics
+
+The package **cjs-rcs-article** provides the document class and
+bibliographic styles to typeset articles for [The Canadian Journal of
+Statistics](https://ssc.ca/en/publications/canadian-journal-statistics).
+
+The class relies on modern and advanced tools, such as
+the class [memoir](https://ctan.org/pkg/memoir),
+the fonts [STIX Two](https://ctan.org/pkg/stix2-otf)
+and [Fira](https://ctan.org/pkg/fira),
+and the package [babel](https://ctan.org/pkg/babel).
+To take full advantage of its characteristics, we recommend that you
+compile with XeLaTeX. The class remains nonetheless largely
+compatible with the traditional engine pdfLaTeX.
+
+## Licence
+
+LaTeX Project Public License, version 1.3c or (at your option) any
+later version.
+
+## Version
+
+1.0 (2023-11-29)
+
+## Author
+
+Vincent Goulet <vincent.goulet@act.ulaval.ca> for the Statistical
+Society of Canada
+
+## Source code repository
+
+https://gitlab.com/cjs-rcs/cjs-rcs-article
+
+## Contents
+
+- `cjs-rcs-article.ins`: installation script for the class and
+ bibliographic styles; see below;
+- `cjs-rcs-article.dtx`: source code of the class, with documentation;
+- `cjs-rcs-merlin.mbs`: master bibliographic style;
+- `cjs-rcs-english.mbs`: langage definition file for English;
+- `cjs-rcs-french.mbs`: langage definition file for French;
+- `cjs-rcs-class.dbj`: driver file for the document class;
+- `cjs-rcs-bst-en.dbj`: driver file for the English bibliographic
+ style;
+- `cjs-rcs-bst-fr.dbj`: driver file for the French bibliographic
+ style;
+- `cjs-rcs-article.pdf`: English documentation of the class (including
+ the implementation details and version history);
+- `cjs-rcs-article-fr.pdf`: French documentation of the class (without
+ the implementation details and version history);
+- `cjs-rcs-merlin.pdf`: documentation of the master bibliographic
+ style;
+- `README.md`: this file.
+
+## Installation
+
+The package **cjs-rcs-article** 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 class and its bibliographic styles by
+running the file `cjs-rcs-article.ins` through LaTeX:
+
+ latex cjs-rcs-article.ins
+
+The compilation will create the file of the class itself
+(`cjs-rcs-article.cls`), templates for articles in English and in
+French (`cjs-template.tex`, `rcs-gabarit.tex`), and the bibliographic
+styles (`cjs-rcs-en.bst`, `cjs-rcs-fr.bst`).
+
+## Documentation
+
+The files `cjs-rcs-article.pdf` and `cjs-rcs-article-fr.pdf` contain
+the complete documentation of the class and the bibliographic styles.
+You may recreate these documents from the file `cjs-rcs-article.dtx`
+as follows:
+
+ xelatex cjs-rcs-article.dtx
+ makeindex -s gglo.ist -o cjs-rcs-article.gls cjs-rcs-article.glo
+ xelatex cjs-rcs-article.dtx
+ xelatex cjs-rcs-article.dtx
+ xelatex cjs-rcs-article-fr.tex
+ xelatex cjs-rcs-article-fr.tex
+ xelatex cjs-rcs-article-fr.tex
+
+The file `cjs-rcs-merlin.pdf` contains documentation for the creation
+and generation of the bibliographic styles. It should be of
+interest to experts and developers only. To recreate the document,
+compile `cjs-rcs-merlin.mbs` as follows:
+
+ xelatex cjs-rcs-merlin.mbs
+ makeindex -s gglo.ist -o cjs-rcs-merlin.gls cjs-rcs-merlin.glo
+ xelatex cjs-rcs-merlin.mbs
+ xelatex cjs-rcs-merlin.mbs
+
+## Version history
+
+The version history of the class appears in `cjs-article.pdf`. The
+version history of the bibliographic styles appears in
+`cjs-rcs-merlin.pdf`.
+
+## Comments or suggestions
+
+The Gitlab [project repository](https://gitlab.com/cjs-rcs/cjs-rcs-article)
+is the best place to report bugs or to propose improvements to the
+project.
+
+======================================================================
+
+# Classe pour les articles de La revue canadienne de statistique
+
+Le paquetage **cjs-rcs-article** fournit la classe et les styles de
+bibliographie pour la composition d'articles scientifiques destinés à
+[La revue canadienne de statistique](https://ssc.ca/fr/publications/revue-canadienne-statistique).
+
+La classe repose sur des outils modernes et évolués, tels que
+la classe [memoir](https://ctan.org/pkg/memoir),
+les polices [STIX Two](https://ctan.org/pkg/stix2-otf)
+et [Fira](https://ctan.org/pkg/fira),
+ainsi que le paquetage [babel](https://ctan.org/pkg/babel).
+Pour tirer pleinement profit des caractéristiques de la classe, nous
+recommandons de compiler avec XeLaTeX. La classe demeure néanmoins en
+grande partie compatible avec le moteur pdfLaTeX.
+
+## Licence
+
+LaTeX Project Public License, version 1.3c ou (à votre choix) toute
+version ultérieure.
+
+## Version
+
+1.0 (2023-11-29)
+
+## Auteur
+
+Vincent Goulet <vincent.goulet@act.ulaval.ca> pour la Société
+canadienne de statistique
+
+## Dépôt du code source
+
+https://gitlab.com/cjs-rcs/cjs-rcs-article
+
+## Contenu du paquetage
+
+- `cjs-rcs-article.ins`: procédure d'installation de la classe et des
+ styles de bibliographie; voir ci-dessous;
+- `cjs-rcs-article.dtx`: fichier source documenté de la classe;
+- `cjs-rcs-merlin.mbs`: fichier maitre de styles bibliographiques;
+- `cjs-rcs-english.mbs`: fichier de localisation pour l'anglais;
+- `cjs-rcs-french.mbs`: fichier de localisation pour le français;
+- `cjs-rcs-class.dbj`: script de génération de la classe;
+- `cjs-rcs-bst-en.dbj`: script de génération du style de bibliographie
+ anglais;
+- `cjs-rcs-bst-fr.dbj`: script de génération du style de bibliographie
+ français;
+- `cjs-rcs-article.pdf`: documentation anglaise de la classe (incluant
+ la mise en œuvre et l'historique des versions);
+- `cjs-rcs-article-fr.pdf`: documentation française de la classe (sans
+ la mise en œuvre et l'historique des versions);
+- `cjs-rcs-merlin.pdf`: documentation sur la création des styles de
+ bibliographie;
+- `README.md`: le présent fichier.
+
+## Installation
+
+Le paquetage **cjs-rcs-article** 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 la classe et ses styles de
+bibliographie en compilant le fichier `cjs-rcs-article.ins` avec
+LaTeX:
+
+ latex cjs-rcs-article.ins
+
+La compilation créera le fichier de la classe elle-même
+(`cjs-rcs-article.cls`), les gabarits pour des articles en anglais et
+en français (`cjs-template.tex`, `rcs-gabarit.tex`), ainsi que les
+styles de bibliographie (`cjs-rcs-en.bst`, `cjs-rcs-fr.bst`).
+
+## Documentation
+
+Les fichiers `cjs-rcs-article.pdf` et `cjs-rcs-article-fr.pdf`
+contiennent la documentation complète de la classe et des styles de
+bibliographie. Utilisez les commandes suivantes pour recréer les
+documents à partir du fichier `cjs-rcs-article.dtx`:
+
+ xelatex cjs-rcs-article.dtx
+ makeindex -s gglo.ist -o cjs-rcs-article.gls cjs-rcs-article.glo
+ xelatex cjs-rcs-article.dtx
+ xelatex cjs-rcs-article.dtx
+ xelatex cjs-rcs-article-fr.tex
+ xelatex cjs-rcs-article-fr.tex
+ xelatex cjs-rcs-article-fr.tex
+
+Le fichier `cjs-rcs-merlin.pdf` contient quant à lui la documentation
+(en anglais) sur la création des styles de bibliographie. Celle-ci
+est susceptible de n'intéresser que les experts et les développeurs.
+Pour recréer le document, compilez `cjs-rcs-merlin.mbs` ainsi:
+
+ xelatex cjs-rcs-merlin.mbs
+ makeindex -s gglo.ist -o cjs-rcs-merlin.gls cjs-rcs-merlin.glo
+ xelatex cjs-rcs-merlin.mbs
+ xelatex cjs-rcs-merlin.mbs
+
+## Historique des versions
+
+L'historique des versions de la classe se trouve dans le fichier
+`cjs-rcs-article.pdf`. L'historique des version des styles de
+bibliographie se trouve dans le fichier `cjs-rcs-merlin.pdf`.
+
+## Commentaires et suggestions
+
+Le [dépôt du projet](https://gitlab.com/cjs-rcs/cjs-rcs-article) 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/latex/cjs-rcs-article/cjs-rcs-article-fr.pdf b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-article-fr.pdf
new file mode 100644
index 00000000000..5ec31c2669c
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-article-fr.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-article-fr.tex b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-article-fr.tex
new file mode 100644
index 00000000000..b7f01a64fda
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-article-fr.tex
@@ -0,0 +1,5 @@
+%% Wrapper to set language to French
+%% (https://tex.stackexchange.com/a/28646).
+\expandafter\newif\csname ifenglish\endcsname
+\englishfalse
+\input{cjs-rcs-article.dtx}
diff --git a/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-article.pdf b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-article.pdf
new file mode 100644
index 00000000000..dc76f9053ec
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-article.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-bst-en.dbj b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-bst-en.dbj
new file mode 100644
index 00000000000..38907626da6
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-bst-en.dbj
@@ -0,0 +1,611 @@
+%% Driver file to produce cjs-rcs-en.bst from cjs-rcs-merlin.mbs
+%% Originally generated with makebst, version 4.1 (2003/09/08),
+%% on 2023/10/05 at 15:25, then hand edited by Vincent Goulet.
+%%
+\input docstrip
+
+\preamble
+
+Copyright (C) 2023 Statistical Society of Canada | Société
+canadienne de statistique
+
+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
+<vincent.goulet@act.ulaval.ca>.
+
+This work consists of the master bibliographic style file
+cjs-rcs-merlin.mbs, the language definition file cjs-rcs-english.mbs,
+the driver file cjs-rcs-en.dbj, and the derived file cjs-rcs-en.bst.
+
+\endpreamble
+
+\postamble
+End of customized bst file
+\endpostamble
+
+\keepsilent
+
+\askforoverwritefalse
+\def\MBopts{\from{cjs-rcs-merlin.mbs}{%
+%EXTERNAL FILES:
+%Name of language file: \cfile=cjs-rcs-english.mbs.
+%No included files.
+ head,\MBopta}
+\from{cjs-rcs-english.mbs}{\MBopta}
+\from{cjs-rcs-merlin.mbs}{tail,\MBopta}}
+\def\MBopta{%
+%INTERNAL LANGUAGE SUPPORT (if no external language file)
+% %: (def) English
+% babel,%: Babel
+%--------------------
+ exlang,%: External language file
+%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 //dx.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=cjs-rcs-english.mbs
+ english,%: English language
+%ABBREVIATE WORD `PAGES'
+ %: (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
+%--------------------
+%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{cjs-rcs-en.bst}{\MBopts}}
+\endbatchfile
diff --git a/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-bst-fr.dbj b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-bst-fr.dbj
new file mode 100644
index 00000000000..3ae793cf2bf
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-bst-fr.dbj
@@ -0,0 +1,603 @@
+%% Driver file to produce cjs-rcs-fr.bst from cjs-rcs-merlin.mbs
+%% Originally generated with makebst, version 4.1 (2003/09/08),
+%% on 2023/10/11 at 12:01, then hand edited by Vincent Goulet.
+%%
+\input docstrip
+
+\preamble
+
+Copyright (C) 2023 Statistical Society of Canada | Société
+canadienne de statistique
+
+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
+<vincent.goulet@act.ulaval.ca>.
+
+This work consists of the master bibliographic style file
+cjs-rcs-merlin.mbs, the language definition file cjs-rcs-french.mbs,
+the driver file cjs-rcs-fr.dbj, and the derived file cjs-rcs-fr.bst.
+
+\endpreamble
+
+\postamble
+End of customized bst file
+\endpostamble
+
+\keepsilent
+
+\askforoverwritefalse
+\def\MBopts{\from{cjs-rcs-merlin.mbs}{%
+%EXTERNAL FILES:
+%Name of language file: \cfile=cjs-rcs-french.mbs.
+%No included files.
+ head,\MBopta}
+\from{cjs-rcs-french.mbs}{\MBopta}
+\from{cjs-rcs-merlin.mbs}{tail,\MBopta}}
+\def\MBopta{%
+%INTERNAL LANGUAGE SUPPORT (if no external language file)
+% %: (def) English
+% babel,%: Babel
+%--------------------
+ exlang,%: External language file
+%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=cjs-rcs-french.mbs
+ french,%: French language
+%ABBREVIATE WORD `PAGES':
+% %: (def) `Page(s)'
+ pp,%: `Page' abbreviated
+% ppx,%: `Page' omitted
+%--------------------
+%ABBREVIATE WORD `EDITEUR:
+% %: (def) `\'Editeur(s)'
+ ed,%: `\'Editeur' abbreviated
+%--------------------
+%OTHER ABBREVIATIONS:
+% %: (def) No abbreviations
+ abr,%: Abbreviations
+%--------------------
+%EDITION NUMBERS:
+% xedn,%: Editions as in database
+% %: (def) Write out editions
+ ord,%: Numerical editions
+%--------------------
+%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{cjs-rcs-fr.bst}{\MBopts}}
+\endbatchfile
diff --git a/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-class.dbj b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-class.dbj
new file mode 100644
index 00000000000..c987b1e6a7d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-class.dbj
@@ -0,0 +1,39 @@
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\nopostamble
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2023 Statistical Society of Canada | Société
+canadienne de statistique
+
+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
+
+and version 1.3c or later is part of all distributions of LaTeX
+version 2006/05/20 or later.
+
+This work has the LPPL maintenance status `maintained'.
+
+The Current Maintainer of this work is Vincent Goulet
+<vincent.goulet@act.ulaval.ca>.
+
+This work consists of the file cjs-rcs-article.dtx and the derived
+files cjs-rcs-article.cls, cjs-rcs-article-fr.tex, cjs-template.tex
+and rcs-gabarit.tex.
+
+\endpreamble
+
+\generate{
+ \file{cjs-rcs-article.cls}{\from{cjs-rcs-article.dtx}{class}}
+ \file{cjs-rcs-article-fr.tex}{\nopreamble\from{cjs-rcs-article.dtx}{fr-doc}}
+ \file{cjs-template.tex}{\nopreamble\from{cjs-rcs-article.dtx}{template,en}}
+ \file{rcs-gabarit.tex}{\nopreamble\from{cjs-rcs-article.dtx}{template,fr}}
+}
+\endbatchfile
diff --git a/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-english.mbs b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-english.mbs
new file mode 100644
index 00000000000..e786d500bde
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-english.mbs
@@ -0,0 +1,420 @@
+% \iffalse meta-comment -*- mode: doctex -*-
+%
+% English language definition file of the master bibliography style
+% for The Canadian Journal of Statistics | La revue canadienne de
+% statistique
+%
+% Copyright (C) 2023 Statistical Society of Canada | Société
+% canadienne de statistique
+%
+% 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
+% <vincent.goulet@act.ulaval.ca>.
+%
+% This work derives from english.mbs, part of the custom-bib
+% collection, a contribution to the LaTeX2e system.
+% Copyright 1994-2002 Patrick W Daly
+% Max-Planck-Institut f\"ur Sonnensystemforschung
+% Max-Planck-Str. 2
+% D-37191 Katlenburg-Lindau
+% Germany
+% E-mail: daly@mps.mpg.de
+%
+ %-------------------------------------------------------------------
+ % Begin module:
+%\fi
+ % \ProvidesFile{cjs-rcs-english.mbs}[2023/11/29 v1.0 (VG, PWD)]
+%\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
+%</a&!a>
+%<*driver>
+\NeedsTeXFormat{LaTeX2e}%
+\documentclass[nocjs,x11names,french,english]{cjs-rcs-article}
+
+ %% Loading doc.sty creates some conflicts with the class and memoir. We
+ %% need to:
+ %%
+ %% - keep a copy of the class' \maketitle command;
+ %% - undefine the 'glossary' environment created by memoir;
+ %% - restore the standard LaTeX commands for the glossary that
+ %% doc.sty relies upon.
+ \let\makeCJStitle\maketitle % keep class definition
+ \let\theglossary\relax % avoid conflict with doc.sty
+ \let\endtheglossary\relax % avoid conflict with doc.sty
+ \makeatletter
+ \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}} % simplified
+ \DisableCrossrefs
+ \CodelineNumbered
+ \RecordChanges
+ \OnlyDescription
+ \DontCheckModules
+
+ \AtEndPreamble{%
+ \hypersetup{%
+ pdfauthor = {Statistical Society of Canada},
+ pdftitle = {French language definition file cjs-rcs-french.mbs}}}
+
+ %% Configuration of the glossary
+ \addto\extrasenglish{%
+ \def\glossaryname{Version history}}
+ \GlossaryPrologue{\section*{\glossaryname}%
+ \addcontentsline{toc}{section}{\glossaryname}}
+ \setlength{\GlossaryMin}{5cm}
+
+ %% Additional semantic typesetting
+ \newcommand*\class[1]{\textsf{#1}}
+ \newcommand*\dtx{\textsf{docstrip}}
+
+ %% Name of the journal
+ \makeatletter
+ \newcommand*\TheCJS{\@ifstar{\emph{The Journal}}{\emph{\CJS@journalname@en}}}
+ \newcommand*\LaRevue{\@ifstar{\emph{La revue}}{\emph{\CJS@journalname@fr}}}
+ \newcommand*\CJSclass{\class{cjs-rcs-article}}
+ \newcommand*\CJSbsten{\texttt{cjs-rcs-en.bst}}
+ \newcommand*\CJSbstfr{\texttt{cjs-rcs-fr.bst}}
+ \makeatother
+
+ %% Redefine \year using information from \filedate instead of using
+ %% compilation time
+ \def\parsedate#1/#2/#3\relax{\def\year{#1}}
+
+ \MakeShortVerb{\|}
+
+\begin{document}
+ \DocInput{cjs-rcs-english.mbs}
+\end{document}
+%</driver>
+% end of meta-comment \fi
+% \GetFileInfo{cjs-rcs-english.mbs}
+% \expandafter\parsedate\filedate\relax
+%
+% \changes{0.9}{2023-10-14}{Initial version based on version 4.2 of
+% \texttt{english.mbs} from \textbf{custom-bib}.}
+% \changes{0.93}{2023-11-06}{Add a prefix v in the version number like
+% the main file.}
+% \changes{1.0}{2023-11-29}{First official release distributed through
+% CTAN.}
+%
+% \title[English language definition file \filename]{%
+% English language definition file \\
+% of the master bibliographic style file \\
+% for \TheCJS}
+% \author{Statistical Society of Canada}
+% \affil{Developed by Vincent Goulet, Université Laval}
+%
+% \begin{englishabstract}
+% The list of references in {\TheCJS} is typeset using the
+% bibliographic styles {\CJSbsten} for articles in English and
+% {\CJSbstfr} for articles in French. These styles are created using
+% the program \texttt{makebst} from the master bibliographic file
+% \texttt{cjs-rcs-merlin.mbs}, and the language definition files
+% \texttt{cjs-rcs-english.mbs} and \texttt{cjs-rcs-french.mbs}.
+% \end{englishabstract}
+% \begin{frenchabstract}
+% La liste des références dans {\LaRevue} est composée avec les
+% style de bibliographie {\CJSbstfr} pour les articles en français
+% et {\CJSbsten} pour les articles en anglais. Ceux-ci sont générés
+% par le programme \texttt{makebst} à partir du fichier maitre
+% \texttt{cjs-rcs-merlin.mbs} et des fichiers de localisation
+% \texttt{cjs-rcs-english.mbs} et \texttt{cjs-rcs-french.mbs}.
+% \end{frenchabstract}
+%
+% ^^A abusing the 'classification' environment. The final period is
+% ^^A added by the environment.
+% \begin{classification}[Version]
+% \item[] This is the documentation for the file \code{\filename}
+% {\fileversion}, dated {\filedate}
+% \end{classification}
+%
+% \licence{{\year}, Statistical Society of Canada~{\textbar}~Société
+% canadienne de statistique}
+%
+% \makeCJStitle
+%
+% \section{Introduction}
+%
+% This file is to be used as a language definition file with the
+% master bibliographic file for {\TheCJS}. The language it defines is
+% English.
+%
+% This is not a self-sufficient \texttt{.mbs} file, but rather may
+% be used together with one that contains language support via
+% external definition files.
+%
+% See the documentation for \texttt{makebst} for formatting details.
+%
+% \section{The Menu Information}
+%
+% All the menu information is nested between \dtx{} guard options
+% |%<*options>| \dots\ |%</options>|, and the last command is
+% |\endoptions|. The rest of the file is nested between |%<*!options&!driver>|
+% \dots\ |%</!options&!driver>| in order to exclude it if \dtx{} is used to
+% extract only the menu information or the documentation driver.
+%
+% \begin{macrocode}
+%<*options>
+\mes{^^JOptions for ENGLISH}
+\wr{\spsp\spsp english,\pc: English language}
+
+\beginoptiongroup{ABBREVIATE WORD `PAGES'}{}
+\optdef{*}{}{`Page(s)'}{(no abbreviation)}
+\optdef{a}{pp}{`Page' abbreviated}{as p. or pp.}
+\optdef{x}{ppx}{`Page' omitted}{}
+\getans
+\endoptiongroup
+\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
+\endoptions
+%</options>
+% \end{macrocode}
+%
+% \StopEventually{\PrintChanges}
+%
+% \section{The Coding}
+% \begin{macrocode}
+%<*!options&!driver>
+
+ % The language selected here is ENGLISH
+FUNCTION {bbl.and}
+{ "and"}
+
+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" }
+% \end{macrocode}
+% 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.
+%
+% \begin{macrocode}
+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$
+}
+
+%</!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>
+%</!options&!driver>
+ % End module: cjs-rcs-english.mbs
+% \end{macrocode}
+% \Finale
diff --git a/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-french.mbs b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-french.mbs
new file mode 100644
index 00000000000..eb60ab8a202
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-french.mbs
@@ -0,0 +1,370 @@
+% \iffalse meta-comment -*- mode: doctex -*-
+%
+% French language definition file of the master bibliography style for
+% The Canadian Journal of Statistics | La revue canadienne de
+% statistique
+%
+% Copyright (C) 2023 Statistical Society of Canada | Société
+% canadienne de statistique
+%
+% 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
+% <vincent.goulet@act.ulaval.ca>.
+%
+% This work derives from french.mbs, part of the custom-bib
+% collection, a contribution to the LaTeX2e system.
+% Copyright 1994-2002 Patrick W Daly
+% Max-Planck-Institut f\"ur Sonnensystemforschung
+% Max-Planck-Str. 2
+% D-37191 Katlenburg-Lindau
+% Germany
+% E-mail: daly@mps.mpg.de
+%
+ %-------------------------------------------------------------------
+ % Begin module:
+%\fi
+ % \ProvidesFile{cjs-rcs-french.mbs}[2023/11/29 v1.0 (VG, PWD)]
+%\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
+%</a&!a>
+%<*driver>
+\NeedsTeXFormat{LaTeX2e}%
+\documentclass[nocjs,x11names,french,english]{cjs-rcs-article}
+
+ %% Loading doc.sty creates some conflicts with the class and memoir. We
+ %% need to:
+ %%
+ %% - keep a copy of the class' \maketitle command;
+ %% - undefine the 'glossary' environment created by memoir;
+ %% - restore the standard LaTeX commands for the glossary that
+ %% doc.sty relies upon.
+ \let\makeCJStitle\maketitle % keep class definition
+ \let\theglossary\relax % avoid conflict with doc.sty
+ \let\endtheglossary\relax % avoid conflict with doc.sty
+ \makeatletter
+ \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}} % simplified
+ \DisableCrossrefs
+ \CodelineNumbered
+ \RecordChanges
+ \OnlyDescription
+ \DontCheckModules
+
+ \AtEndPreamble{%
+ \hypersetup{%
+ pdfauthor = {Statistical Society of Canada},
+ pdftitle = {French language definition file cjs-rcs-french.mbs}}}
+
+ %% Configuration of the glossary
+ \addto\extrasenglish{%
+ \def\glossaryname{Version history}}
+ \GlossaryPrologue{\section*{\glossaryname}%
+ \addcontentsline{toc}{section}{\glossaryname}}
+ \setlength{\GlossaryMin}{5cm}
+
+ %% Additional semantic typesetting
+ \newcommand*\class[1]{\textsf{#1}}
+ \newcommand*\dtx{\textsf{docstrip}}
+
+ %% Name of the journal
+ \makeatletter
+ \newcommand*\TheCJS{\@ifstar{\emph{The Journal}}{\emph{\CJS@journalname@en}}}
+ \newcommand*\LaRevue{\@ifstar{\emph{La revue}}{\emph{\CJS@journalname@fr}}}
+ \newcommand*\CJSclass{\class{cjs-rcs-article}}
+ \newcommand*\CJSbsten{\texttt{cjs-rcs-en.bst}}
+ \newcommand*\CJSbstfr{\texttt{cjs-rcs-fr.bst}}
+ \makeatother
+
+ %% Redefine \year using information from \filedate instead of using
+ %% compilation time
+ \def\parsedate#1/#2/#3\relax{\def\year{#1}}
+
+ \MakeShortVerb{\|}
+
+\begin{document}
+ \DocInput{cjs-rcs-french.mbs}
+\end{document}
+%</driver>
+% end of meta-comment \fi
+% \GetFileInfo{cjs-rcs-french.mbs}
+% \expandafter\parsedate\filedate\relax
+%
+% \changes{0.9}{2023-10-14}{Initial version based on version 4.2 of
+% \texttt{french.mbs} from \textbf{custom-bib}.}
+% \changes{0.93}{2023-11-06}{Add a prefix v in the version number like
+% the main file.}
+% \changes{1.0}{2023-11-29}{First official release distributed through
+% CTAN.}
+%
+% \title[French language definition file \filename]{%
+% French language definition file \\
+% of the master bibliographic style file \\
+% for \TheCJS}
+% \author{Statistical Society of Canada}
+% \affil{Developed by Vincent Goulet, Université Laval}
+%
+% \begin{englishabstract}
+% The list of references in {\TheCJS} is typeset using the
+% bibliographic styles {\CJSbsten} for articles in English and
+% {\CJSbstfr} for articles in French. These styles are created using
+% the program \texttt{makebst} from the master bibliographic file
+% \texttt{cjs-rcs-merlin.mbs}, and the language definition files
+% \texttt{cjs-rcs-english.mbs} and \texttt{cjs-rcs-french.mbs}.
+% \end{englishabstract}
+% \begin{frenchabstract}
+% La liste des références dans {\LaRevue} est composée avec les
+% style de bibliographie {\CJSbstfr} pour les articles en français
+% et {\CJSbsten} pour les articles en anglais. Ceux-ci sont générés
+% par le programme \texttt{makebst} à partir du fichier maitre
+% \texttt{cjs-rcs-merlin.mbs} et des fichiers de localisation
+% \texttt{cjs-rcs-english.mbs} et \texttt{cjs-rcs-french.mbs}.
+% \end{frenchabstract}
+%
+% ^^A abusing the 'classification' environment. The final period is
+% ^^A added by the environment.
+% \begin{classification}[Version]
+% \item[] This is the documentation for the file \code{\filename}
+% {\fileversion}, dated {\filedate}
+% \end{classification}
+%
+% \licence{{\year}, Statistical Society of Canada~{\textbar}~Société
+% canadienne de statistique}
+%
+% \makeCJStitle
+%
+% \section{Introduction}
+%
+% This file is to be used as a language definition file with the
+% master bibliographic file for {\TheCJS}. The language it defines is
+% French.
+%
+% This is not a self-sufficient \texttt{.mbs} file, but rather may
+% be used together with one that contains language support via
+% external definition files.
+%
+% See the documentation for \texttt{makebst} for formatting details.
+%
+% \section{The Menu Information}
+%
+% All the menu information is nested between \dtx{} guard options
+% |%<*options>| \dots\ |%</options>|, and the last command is
+% |\endoptions|. The rest of the file is nested between |%<*!options&!driver>|
+% \dots\ |%</!options&!driver>| in order to exclude it if \dtx{} is used to
+% extract only the menu information or the documentation driver.
+%
+% \begin{macrocode}
+%<*options>
+\mes{^^JOptions for FRENCH}
+\wr{\spsp\spsp french,\pc: French language}
+
+\beginoptiongroup{ABBREVIATE WORD `PAGES':}{}
+\optdef{*}{}{`Page(s)'}{(no abbreviation)}
+\optdef{a}{pp}{`Page' abbreviated}{as p. or pp.}
+\optdef{x}{ppx}{`Page' omitted}{}
+\getans
+\endoptiongroup
+\beginoptiongroup{ABBREVIATE WORD `EDITEUR:}{}
+\optdef{*}{}{`\string\'Editeur(s)'}{(no abbreviation)}
+\optdef{a}{ed}{`\string\'Editeur' abbreviated}{as \string\'Ed.}
+\getans
+\endoptiongroup
+\beginoptiongroup{OTHER ABBREVIATIONS:}{}
+\optdef{*}{}{No abbreviations}{of Tome, \string\'edition, chapitre}
+\optdef{a}{abr}{Abbreviations}{of such words}
+\getans
+\endoptiongroup
+\beginoptiongroup{EDITION NUMBERS:}{}
+\optdef{*}{xedn}{Editions as in database}{saving much processing memory}
+\optdef{w}{}{Write out editions}{as premi\string\`ere, deuxi\string\`eme,...}
+\optdef{n}{ord}{Numerical editions}{as 1re, 2e, 3e, etc}
+\getans
+\endoptiongroup
+\endoptions
+%</options>
+% \end{macrocode}
+%
+% \StopEventually{\PrintChanges}
+%
+% \section{The Coding}
+% \begin{macrocode}
+%<*!options&!driver>
+
+ % The language selected here is FRENCH
+FUNCTION {bbl.and}
+{ "et"}
+
+FUNCTION {bbl.etal}
+{ "et~collab." }
+
+FUNCTION {bbl.editors}
+%<!ed>{ "directeurs" }
+%<ed>{ "dir." }
+
+FUNCTION {bbl.editor}
+%<!ed>{ "directeur" }
+%<ed>{ "dir." }
+
+FUNCTION {bbl.edby}
+{ "sous la direction de" }
+
+FUNCTION {bbl.edition}
+%<!abr>{ "\'edition" }
+%<abr>{ "\'ed." }
+
+FUNCTION {bbl.volume}
+%<!abr>{ "volume" }
+%<abr>{ "vol." }
+
+FUNCTION {bbl.of}
+{ "de" }
+
+FUNCTION {bbl.number}
+%<!abr>{ "num\'ero" }
+%<abr>{ "{\no}" }
+
+FUNCTION {bbl.nr}
+{ "{\no}" }
+
+FUNCTION {bbl.in}
+{ "dans" }
+
+FUNCTION {bbl.pages}
+%<!pp&!ppx>{ "pages" }
+%<pp>{ "p." }
+%<!pp&ppx>{ "" }
+
+FUNCTION {bbl.page}
+%<!pp&!ppx>{ "page" }
+%<pp>{ "p." }
+%<!pp&ppx>{ "" }
+
+%<*revdata>
+FUNCTION {bbl.eidpp}
+{ "pages" }
+
+%</revdata>
+FUNCTION {bbl.chapter}
+%<!abr>{ "chapitre" }
+%<abr>{ "chap." }
+
+FUNCTION {bbl.techrep}
+%<!abr>{ "rapport technique" }
+%<abr>{ "rapport technique" }
+
+FUNCTION {bbl.mthesis}
+{ "m\'emoire de ma\^itrise" }
+
+FUNCTION {bbl.phdthesis}
+{ "th\`ese de doctorat" }
+
+%<*!xedn>
+FUNCTION {bbl.first}
+%<!ord>{ "Premi\`ere" }
+%<ord>{ "1{\iere}" }
+
+FUNCTION {bbl.second}
+%<!ord>{ "Deuxi\`eme" }
+%<ord>{ "2{\ieme}" }
+
+FUNCTION {bbl.third}
+%<!ord>{ "Troisi\`eme" }
+%<ord>{ "3{\ieme}" }
+
+FUNCTION {bbl.fourth}
+%<!ord>{ "Quatri\`eme" }
+%<ord>{ "4{\ieme}" }
+
+FUNCTION {bbl.fifth}
+%<!ord>{ "Cinqui\`eme" }
+%<ord>{ "5{\ieme}" }
+
+FUNCTION {bbl.th}
+{ "{\ieme}" }
+
+%</!xedn>
+%<*!abr>
+MACRO {jan} {"janvier"}
+
+MACRO {feb} {"f\'evrier"}
+
+MACRO {mar} {"mars"}
+
+MACRO {apr} {"avril"}
+
+MACRO {may} {"mai"}
+
+MACRO {jun} {"juin"}
+
+MACRO {jul} {"juillet"}
+
+MACRO {aug} {"ao\^ut"}
+
+MACRO {sep} {"septembre"}
+
+MACRO {oct} {"octobre"}
+
+MACRO {nov} {"novembre"}
+
+MACRO {dec} {"d\'ecembre"}
+
+%</!abr>
+%<*abr>
+MACRO {jan} {"jan."}
+
+MACRO {feb} {"f\'ev."}
+
+MACRO {mar} {"mars"}
+
+MACRO {apr} {"avr."}
+
+MACRO {may} {"mai"}
+
+MACRO {jun} {"juin"}
+
+MACRO {jul} {"juil."}
+
+MACRO {aug} {"ao\^ut"}
+
+MACRO {sep} {"sept."}
+
+MACRO {oct} {"oct."}
+
+MACRO {nov} {"nov."}
+
+MACRO {dec} {"d\'ec."}
+
+%</abr>
+%</!options&!driver>
+ % End module: cjs-rcs-french.mbs
+% \end{macrocode}
+% \Finale
diff --git a/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-merlin.mbs b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-merlin.mbs
new file mode 100644
index 00000000000..10c84b1ff69
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-merlin.mbs
@@ -0,0 +1,8009 @@
+% \iffalse meta-comment -*- mode: doctex -*-
+%
+% Master bibliography style for The Canadian Journal of Statistics |
+% La revue canadienne de statistique
+%
+% Copyright (C) 2023 Statistical Society of Canada | Société
+% canadienne de statistique
+%
+% 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
+% <vincent.goulet@act.ulaval.ca>.
+%
+% 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{cjs-rcs-merlin.mbs}[2023/11/29 v1.0 (VG, PWD, AO, DPC)]
+%\iffalse
+%</!tail>
+%<*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
+%</a&!a>
+%<*driver>
+\NeedsTeXFormat{LaTeX2e}%
+\documentclass[nocjs,x11names,french,english]{cjs-rcs-article}
+ \usepackage{metalogo}
+ \setlrmarginsandblock{40mm}{30mm}{*} % increase left margin
+ \checkandfixthelayout
+
+ %% Loading doc.sty creates some conflicts with the class and memoir. We
+ %% need to:
+ %%
+ %% - keep a copy of the class' \maketitle command;
+ %% - undefine the 'glossary' environment created by memoir;
+ %% - restore the standard LaTeX commands for the glossary that
+ %% doc.sty relies upon.
+ \let\makeCJStitle\maketitle % keep class definition
+ \let\theglossary\relax % avoid conflict with doc.sty
+ \let\endtheglossary\relax % avoid conflict with doc.sty
+ \makeatletter
+ \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}} % simplified
+ \DisableCrossrefs
+ \CodelineNumbered
+ \RecordChanges
+ \OnlyDescription
+ \DontCheckModules
+
+ \AtEndPreamble{%
+ \hypersetup{%
+ pdfauthor = {Statistical Society of Canada},
+ pdftitle = {Master bibliographic style cjs-rcs-merlin.mbs}}}
+
+ %% Configuration of the glossary
+ \addto\extrasenglish{%
+ \def\glossaryname{Version history}}
+ \GlossaryPrologue{\section*{\glossaryname}%
+ \addcontentsline{toc}{section}{\glossaryname}}
+ \setlength{\GlossaryMin}{5cm}
+
+ %% Additional semantic typesetting
+ \newcommand*\class[1]{\textsf{#1}}
+ \newcommand*\btx{\textsc{Bib}\TeX}
+ \newcommand*\dtx{\textsf{docstrip}}
+
+ %% Name of the journal
+ \makeatletter
+ \newcommand*\TheCJS{\@ifstar{\emph{The Journal}}{\emph{\CJS@journalname@en}}}
+ \newcommand*\LaRevue{\@ifstar{\emph{La revue}}{\emph{\CJS@journalname@fr}}}
+ \newcommand*\CJSclass{\class{cjs-rcs-article}}
+ \newcommand*\CJSbsten{\texttt{cjs-rcs-en.bst}}
+ \newcommand*\CJSbstfr{\texttt{cjs-rcs-fr.bst}}
+ \makeatother
+
+ %% Redefine \year using information from \filedate instead of using
+ %% compilation time
+ \def\parsedate#1/#2/#3\relax{\def\year{#1}}
+
+ \MakeShortVerb{\|}
+
+\begin{document}
+ \DocInput{cjs-rcs-merlin.mbs}
+\end{document}
+%</driver>
+% end of meta-comment \fi
+% \GetFileInfo{cjs-rcs-merlin.mbs}
+% \expandafter\parsedate\filedate\relax
+%
+% \changes{0.9}{2023-10-14}{Initial version based on version 4.33 of
+% \texttt{merlin.mbs}.}
+% \changes{0.92}{2023-10-27}{Relegate the \texttt{makebst} menu
+% information to the complete documentation.}
+% \changes{0.93}{2023-11-06}{Add a prefix v in the version number like
+% the main file.}
+% \changes{1.0}{2023-11-29}{First official release distributed through
+% CTAN.}
+%
+% \title[Master bibliographic style file \filename]{%
+% Master bibliographic style file \\
+% of \TheCJS}
+% \author{Statistical Society of Canada}
+% \affil{Developed by Vincent Goulet, Université Laval}
+%
+% \begin{englishabstract}
+% The list of references in {\TheCJS} is typeset using the
+% bibliographic styles {\CJSbsten} for articles in English and
+% {\CJSbstfr} for articles in French. These styles are created using
+% the program \texttt{makebst} from the master bibliographic file
+% \texttt{cjs-rcs-merlin.mbs}, and the language definition files
+% \texttt{cjs-rcs-english.mbs} and \texttt{cjs-rcs-french.mbs}.
+% \end{englishabstract}
+% \begin{frenchabstract}
+% La liste des références dans {\LaRevue} est composée avec les
+% style de bibliographie {\CJSbstfr} pour les articles en français
+% et {\CJSbsten} pour les articles en anglais. Ceux-ci sont générés
+% par le programme \texttt{makebst} à partir du fichier maitre
+% \texttt{cjs-rcs-merlin.mbs} et des fichiers de localisation
+% \texttt{cjs-rcs-english.mbs} et \texttt{cjs-rcs-french.mbs}.
+% \end{frenchabstract}
+%
+% ^^A abusing the 'classification' environment. The final period is
+% ^^A added by the environment.
+% \begin{classification}[Version]
+% \item[] This is the documentation for the file \code{\filename}
+% {\fileversion}, dated {\filedate}
+% \end{classification}
+%
+% \licence{{\year}, Statistical Society of Canada~{\textbar}~Société
+% canadienne de statistique}
+%
+% \makeCJStitle
+%
+% \section{Introduction}
+%
+% The class {\CJSclass} typesets manuscripts immediately in accordance
+% with the presentation rules of {\TheCJS}. The class uses its own
+% bibliographic styles: {\CJSbsten} for articles in English, and
+% {\CJSbstfr} for articles in French. The style {\CJSbsten} could best
+% be described as ``not unlike \code{apalike}'', whereas {\CJSbstfr}
+% is closely derived from the style \code{francais} provided by the
+% package %
+% \href{https://ctan.org/pkg/francais-bst}{\pkg{francais-bst}}.
+%
+% The styles were originally generated using the program
+% \code{makebst} by Patrick W.~Daly. The master bibliographic style
+% and the language definition files are heavily based on their
+% counterparts of the package %
+% \href{https://ctan.org/pkg/custom-bib}{\pkg{custom-bib}}, %
+% namely \code{merlin.mbs}, \code{english.mbs}, and \code{french.mbs}.
+%
+% \section{Generation of the bibliographic styles}
+% \label{sec:generation}
+%
+% The English style {\CJSbsten} is produced from this master
+% bibliographic style file and the language definition file
+% \code{cjs-rcs-english.mbs} by running the driver
+% \code{cjs-rcs-bst-en.dbj} through {\LaTeX}:
+% \begin{quote}
+% \code{latex cjs-rcs-bst-en.dbj}
+% \end{quote}
+% The French style {\CJSbstfr} is produced similarly using the driver
+% \code{cjs-rcs-bst-fr.dbj}:
+% \begin{quote}
+% \code{latex cjs-rcs-bst-fr.dbj}
+% \end{quote}
+%
+% \section{Changes compared to \texorpdfstring{\code{merlin.mbs}}{merlin.mbs}}
+% \label{sec:changes}
+%
+% The master bibliographic style \code{\filename} introduces the following
+% changes compared to \code{merlin.mbs}.
+%
+% \begin{enumerate}
+% \item The function \code{format.url} is reworked to provide a
+% cleaner URL for digital object identifiers (DOIs). The
+% \code{merlin.mbs} definition would generate a DOI of the form
+% \begin{quote}
+% URL \texttt{http://dx.doi.org/\meta{doi}}
+% \end{quote}
+% The revised definition instead generates the simpler string
+% \begin{quote}
+% doi: \meta{doi}
+% \end{quote}
+% When the package \pkg{hyperref} is loaded, \meta{doi} is a
+% hyperlink to the now recommended URL
+% \code{https://doi.org/\meta{doi}}. This behaviour relies on a
+% command \cmd{\urldoi} provided in the \texttt{.bbl} file. If
+% needed, this command may be redefined by the user.
+% \item The command \cmd{\urlprefix} is empty. Again, this may be
+% redefined by the user.
+% \item The quotes «~» are typeset by the macro \cmd{\frquote} of
+% \pkg{babel-french} (version $\geq$ 3.1), rather than by the custom
+% commands \cmd{\guillemotleft} and \cmd{\guillemotright}.
+% \item The \code{makebst} menu information is only included in the
+% complete documentation. The latter is obtained by commenting out
+% the command \cmd{\OnlyDescription} in \code{\filename} and
+% compiling the file with {pdf\LaTeX} or {\XeLaTeX}.
+% \end{enumerate}
+%
+% \StopEventually{\PrintChanges}
+%
+% \begin{quote}
+% \itshape From this point on, the documentation is taken without
+% modification from \code{merlin.mbs} by Patrick W.~Daly, but for
+% minute details such as filenames.
+% \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\ |%</options>|, and the last command is
+% |\endoptions|. The rest of the file is nested between
+% \begin{quote}
+% |%<*!options&!driver&!bblbst>| \dots\ |</!options&!driver&!bblbst>|
+% \end{quote}
+% in order to exclude it if \dtx{} is used to
+% extract the menu information, the documentation driver, or the
+% \texttt{babelbst.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
+% |<!tail>| and the tail with |<!head>|. 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 |<!babel>|. 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{babelbst.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 babelbst.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}{(<<Title,>> ..)}
+\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}{(<<Title>>, ..)}
+\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 babelbst.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{babelbst.tex}. This could allow automatic
+% language selection.
+% \begin{macrocode}
+%<*babel>
+ % The BABEL language selection is made here; definitions in babelbst.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{babelbst.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</title></head>" write$ newline$
+"<body>" write$ newline$
+"<h2>Bibliography</h2>" write$ newline$
+%<htdes>"<dl>" write$ newline$
+%<!htdes&htlist>"<ol>" write$ newline$
+}
+%</html>
+% \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$
+%<!html> "\end{thebibliography}" write$ newline$
+%<html> "</dl></body></html>" write$ newline$
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+EXECUTE {end.bib}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</!head>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</!options&!driver&!bblbst>
+% \end{macrocode}
+%
+% \section{The File \texttt{babelbst.tex} for English}
+% The following contains the definitions for the \texttt{babel} language
+% selection as they apply to English. This file may be extracted with
+% \dtx{} and the option \texttt{bblbst}.
+% \begin{macrocode}
+%<*bblbst>
+ % This is babelbst.tex for English.
+ % It should serve as a model for other languages.
+ % Alternatively, store it under a different name (e.g. englbst.tex)
+ % and then \input it with a command in babelbst.tex.
+\def\bbland{and} \def\bbletal{et~al.}
+\def\bbleditors{editors} \def\bbleds{eds.}
+\def\bbleditor{editor} \def\bbled{ed.}
+\def\bbledby{edited by}
+\def\bbledition{edition} \def\bbledn{edn.}
+\def\bblvolume{volume} \def\bblvol{vol.}
+\def\bblof{of}
+\def\bblnumber{number} \def\bblno{no.}
+\def\bblin{in}
+\def\bblpages{pages} \def\bblpp{pp.}
+\def\bblpage{page} \def\bblp{p.}
+\def\bbleidpp{pages}
+\def\bblchapter{chapter} \def\bblchap{chap.}
+\def\bbltechreport{Technical Report}
+\def\bbltechrep{Tech. Rep.}
+\def\bblmthesis{Master's thesis}
+\def\bblphdthesis{Ph.D. thesis}
+\def\bblfirst{First} \def\bblfirsto{1st}
+\def\bblsecond{Second} \def\bblsecondo{2nd}
+\def\bblthird{Third} \def\bblthirdo{3rd}
+\def\bblfourth{Fourth} \def\bblfourtho{4th}
+\def\bblfifth{Fifth} \def\bblfiftho{5th}
+\def\bblst{st} \def\bblnd{nd} \def\bblrd{rd}
+\def\bblth{th}
+\def\bbljan{January} \def\bblfeb{February} \def\bblmar{March}
+\def\bblapr{April} \def\bblmay{May} \def\bbljun{June}
+\def\bbljul{July} \def\bblaug{August} \def\bblsep{September}
+\def\bbloct{October} \def\bblnov{November} \def\bbldec{December}
+%</bblbst>
+% \end{macrocode}
+%
+% \Finale
diff --git a/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-merlin.pdf b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-merlin.pdf
new file mode 100644
index 00000000000..af76f1c69e1
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-merlin.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-template.tex b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-template.tex
new file mode 100644
index 00000000000..61d410f7a13
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-template.tex
@@ -0,0 +1,170 @@
+%% ARTICLE TEMPLATE FOR THE CANADIAN JOURNAL OF STATISTICS
+%%
+%% Please refer to the documentation of the class cjs-rcs-article
+%% for a detailed description of the class.
+%%
+%% [Do not hesitate to delete the comments once read.]
+%%
+%% Class declaration for an article in English.
+\documentclass[french,english]{cjs-rcs-article}
+ %% Reserved commands for the journal editors. Leave untouched
+ %% and commented out.
+ % \jvol{00}
+ % \jissue{00}
+ % \jyear{YYYY}
+ % \firstpage{1}
+ % \received{YYYY-MM-DD}
+ % \accepted{YYYY-MM-DD}
+ % \licence{}
+
+ %% Load additional packages here. Avoid loading unnecessary
+ %% packages.
+ % \usepackage{}
+
+ %% Information for the title page and back matter. Replace the text
+ %% between < >. Delete the symbols < >.
+ %%
+ %% TITLE OF THE ARTICLE. The title should be concise and
+ %% descriptive. Insert line breaks manually in long titles using \\
+ %% (before determinants and prepositions). If the full title does
+ %% not fit in the article header, provide a shorter version in the
+ %% optional argument (between the brackets [ ]).
+ \title{<Title of the article>}
+ % \title[Short version of the title]{Example of a long title \\
+ % with manual line break}
+
+ %% AUTHORS AND AFFILIATIONS. The identification of the authors uses
+ %% a series of pairs of commands \author and \affil, one per author.
+ %% Enter the name entirely in lowercase (except for leading capitals
+ %% and initials). The surname must be given inside \surname. Use the
+ %% optional argument to specify the ORCID iD, email address, and
+ %% corresponding author status of the author.
+ \author[orcid=<id>, email=<email>, corresponding]
+ {<Forename> \surname{<Surname>}}
+ \affil{<Department, University, City, Country>}
+ % \author[orcid=<id>, email=<email>]
+ % {<Forename> \surname{<Surname>}}
+ % \affil{<Department, University, City, Country>}
+ % \author[orcid=<id>, email=<email>]
+ % {<Forename> \surname{<Surname>}}
+ % \affil{<Department, University, City, Country>}
+
+ %% (Optional - uncomment to use) If the list of authors does not fit
+ %% in the article header, use the command \runningauthor to provide
+ %% a shorter identification of the form "Surname et al.".
+ % \runningauthor{<Surname> et al.}
+
+ %% ABSTRACTS. You must provide an English and a French abstract.
+ %% The order is not important; they will be positioned on the title
+ %% page automatically.
+ \begin{englishabstract}
+ <Insert your English abstract here. The abstract should be concise
+ --- up to 10 lines long --- and descriptive. Avoid symbols as much
+ as possible. Formulas are strongly discouraged, and citations
+ should be avoided.>
+ \end{englishabstract}
+
+ \begin{frenchabstract}
+ <Insérer le texte du résumé en français ici. Le résumé doit être
+ concis --- une dizaine de lignes --- et descriptif. Éviter autant
+ que possible les symboles. Les équations mathématiques sont
+ fortement découragées et les citations sont à éviter.>
+ [We will supply a French abstract for those authors who
+ can't prepare it themselves.]
+ \end{frenchabstract}
+
+ %% KEY WORDS. Provide a list of key words in alphabetical order.
+ %% Capitalize only the first key word. Do not use any punctuation.
+ \begin{keywords}
+ \item <Key word 1>
+ \item <key word 2>
+ \item <key word 3>
+ \end{keywords}
+
+ %% MATHEMATICS SUBJECT CLASSIFICATION. Provide a subject
+ %% classification for the article, usually split into primary and
+ %% secondary keys. Separate keys by commas, but do not use any other
+ %% punctuation. The default classification is MSC 2020. You can
+ %% specify an alternate type through the optional argument <type>.
+ \begin{classification}
+ \item[Primary] <key 1>, <key 2>
+ \item[Secondary] <key 1>, <key 2>
+ \end{classification}
+ % \begin{classification}[<type>]
+ % \item[Primary] <key 1>, <key 2>
+ % \item[Secondary] <key 1>, <key 2>
+ % \end{classification}
+
+ %% SUPPLEMENTARY MATERIAL (optional - comment out if unused). List
+ %% supplementary material available online. This material must be
+ %% cited in the main article.
+ \begin{supplement}
+ <Free form text>
+ \end{supplement}
+
+ %% DATA SHARING (optional - comment out if unused). Describe how to
+ %% access data that you wish to share. Provide a permanent link such
+ %% as a Document Object Identifier (DOI) or an URL.
+ \begin{sharing}
+ <Free form text>
+ \end{sharing}
+
+ %% ACKNOWLEDGEMENTS (optional - comment out if unused). Place all
+ %% acknowledgements here. Avoid duplicating the contents of the
+ %% funding information, below. You may specify a different title
+ %% for this information through the optional argument.
+ \begin{acknowledgements}
+ <Free form text>
+ \end{acknowledgements}
+ % \begin{acknowledgements}[<Title>]
+ % <Free form text>
+ % \end{acknowledgements}
+
+ %% FUNDING INFORMATION (optional - comment out if unused). Provide
+ %% any funding information as free form text. Do not abbreviate the
+ %% name of grating agencies. You may specify a different title for
+ %% this information through the optional argument.
+ \begin{funding}
+ <Free form text>
+ \end{funding}
+ % \begin{funding}[<Title>]
+ % <Free form text>
+ % \end{funding}
+
+\begin{document}
+
+%% Title page
+\maketitle % typeset the title page
+
+%% Body of the article
+\section{Introduction}
+
+<Start the article by an introduction.>
+
+\section{<Section title>}
+
+<Use the LaTeX sectioning commands to divide the articles in sections,
+subsections, subsubsections, etc. Write the title in sentence style,
+that is, with only a leading capital.>
+
+\section{Conclusion}
+
+<Summarize the article in a conclusion.>
+
+%% Back matter
+\makebackmatter % typeset the back matter
+
+%% Appendices (optional - comment out if unused)
+\appendix % start of appendices
+\section{<Appendix title>}
+
+<Appendices are reserved for proofs and longer mathematical
+arguments. All appendices must be cited in the main article.>
+
+%% List of references. Cite using the commands of the natbib package.
+%% Insert the filenames of the bibliography files (.bib files) inside
+%% the command \bibliography, without the extension and separated by
+%% commas.
+\bibliography{}
+
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/cjs-rcs-article/rcs-gabarit.tex b/Master/texmf-dist/doc/latex/cjs-rcs-article/rcs-gabarit.tex
new file mode 100644
index 00000000000..78053a97542
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cjs-rcs-article/rcs-gabarit.tex
@@ -0,0 +1,178 @@
+%% GABARIT D'ARTICLE POUR LA REVUE CANADIENNE DE STATISTIQUE
+%%
+%% Consulter la documentation de la classe cjs-rcs-article pour une
+%% description détaillée de la classe.
+%%
+%% [Ne pas hésiter à supprimer les commentaires après les avoir lus.]
+%%
+%% Déclaration de la classe pour un article en français.
+\documentclass[english,french]{cjs-rcs-article}
+ %% Commandes réservées aux éditeurs de La revue. Laisser en
+ %% commentaires sans les supprimer.
+ % \jvol{00}
+ % \jissue{00}
+ % \jyear{YYYY}
+ % \firstpage{1}
+ % \received{YYYY-MM-DD}
+ % \accepted{YYYY-MM-DD}
+ % \licence{}
+
+ %% Charger ici les éventuels paquetages additionnels. Utiliser
+ %% uniquement des paquetages absolument requis pour le manuscript.
+ % \usepackage{}
+
+ %% Informations de la page de titre et des parties annexes.
+ %% Remplacer le texte entre < >. Supprimer les caractères < >.
+ %%
+ %% TITRE DE L'ARTICLE. Utiliser un titre concis et descriptif. Si le
+ %% titre est long, insérer les changements de ligne manuellement
+ %% avec \\ (avant les déterminants et prépositions). Si le titre
+ %% est trop long pour l'entête, fournir une version courte en
+ %% argument optionnel (entre les crochets [ ]).
+ \title{<Titre de l'article>}
+ % \title[Version courte du titre]{Ceci est un exemple de long titre \\
+ % avec saut de ligne manuel}
+
+ %% AUTEURS ET AFFILIATIONS. L'identification des auteurs se fait
+ %% par des paires de commandes \author et \affil, une par auteur.
+ %% Saisir le nom de l'auteur entièrement en minuscules (sauf pour
+ %% les premières lettres et les initiales). Placer le nom (de
+ %% famille) dans une commande \surname. L'argument optionnel permet
+ %% d'indiquer l'identifiant ORCID de l'auteur, son adresse courriel
+ %% et son statut d'auteur correspondant.
+ \author[orcid=<id>, email=<courriel>, corresponding]
+ {<Prénom> \surname{<Nom>}}
+ \affil{<Département, Université, Ville, Pays>}
+ % \author[orcid=<id>, email=<courriel>]
+ % {<Prénom> \surname{<Nom>}}
+ % \affil{<Département, Université, Ville, Pays>}
+ % \author[orcid=<id>, email=<courriel>]
+ % {<Prénom> \surname{<Nom>}}
+ % \affil{<Département, Université, Ville, Pays>}
+
+ %% (Optionnel - décommenter pour utiliser) Si la liste des auteurs
+ %% est trop longue pour l'entête de l'article, utiliser la commande
+ %% \runningauthor pour fournir une identification plus courte de la
+ %% forme «Nom et collab.»
+ % \runningauthor{<Nom> et collab.}
+
+ %% RÉSUMÉS. Vous devez fournir un résumé en français et un résumé en
+ %% anglais. L'ordre est sans importance; ils seront positionnés sur
+ %% la page de titre automatiquement.
+ \begin{englishabstract}
+ <Insert your English abstract here. The abstract should be concise
+ --- up to 10 lines long --- and descriptive. Avoid symbols as much
+ as possible. Formulas are strongly discouraged, and citations
+ should be avoided.>
+ [Un résumé en anglais sera fourni pour les auteurs qui ne peuvent
+ le préparer eux-mêmes.]
+ \end{englishabstract}
+
+ \begin{frenchabstract}
+ <Insérer le texte du résumé en français ici. Le résumé doit être
+ concis --- une dizaine de lignes --- et descriptif. Éviter autant
+ que possible les symboles. Les équations mathématiques sont
+ fortement découragées et les citations sont à éviter.>
+ \end{frenchabstract}
+
+ %% MOTS-CLÉS. Fournir une liste de mots-clés en ordre alphabétique.
+ %% Utiliser une majuscule initiale pour le premier mot-clé seulement.
+ %% Ne pas saisir de ponctuation.
+ \begin{keywords}
+ \item <Mot-clé 1>
+ \item <mot-clé 2>
+ \item <mot-clé 3>
+ \end{keywords}
+
+ %% CLASSIFICATION MATHÉMATIQUE. Fournir des rubriques de
+ %% classification mathématique de l'article, habituellement divisées
+ %% en niveaux primaire et secondaire. Séparer les rubriques par des
+ %% virgules, mais sans aucune autre ponctuation. La classification
+ %% par défaut est MSC 2020. Il est possible de fournir un autre type
+ %%de classification avec l'argument optionnel <type>.
+ \begin{classification}
+ \item[Primaire] <rubrique 1>, <rubrique 2>
+ \item[Secondaire] <rubrique 1>, <rubrique 2>
+ \end{classification}
+ % \begin{classification}[<type>]
+ % \item[Primaire] <rubrique 1>, <rubrique 2>
+ % \item[Secondaire] <rubrique 1>, <rubrique 2>
+ % \end{classification}
+
+ %% MATÉRIEL ADDITIONNEL (optionnel - commenter si inutilisé).
+ %% Fournir la liste du matériel additionnel disponible en ligne. Ce
+ %% matériel doit être cité dans l'article.
+ \begin{supplement}
+ <Texte libre>
+ \end{supplement}
+
+ %% PARTAGE DES DONNÉES (optionnel - commenter si inutilisé).
+ %% Expliquer comment accéder à des données de l'article mises à
+ %% disposition. Fournir un lien permanent, comme un identificateur
+ %% d'objets numériques (DOI) ou une adresse URL.
+ \begin{sharing}
+ <Texte libre>
+ \end{sharing}
+
+ %% REMERCIEMENTS (optionnel - commenter si inutilisé). Inscrire vos
+ %% remerciements ici. Attention de ne pas répéter la rubrique de
+ %% financement de la recherche, ci-dessous. L'argument optionnel
+ %% permet de remplacer le titre par défaut par un terme de votre
+ %% choix.
+ \begin{acknowledgements}
+ <Texte libre>
+ \end{acknowledgements}
+ % \begin{acknowledgements}[<Titre>]
+ % <Texte libre>
+ % \end{acknowledgements}
+
+ %% FINANCEMENT DE LA RECHERCHE (optionnel - commenter si inutilisé).
+ %% Inscrire les informations sur le financement de la recherche sous
+ %% forme de texte libre. Indiquer le nom des agences de financement
+ %% au long. L'argument optionnel permet de remplacer le titre par
+ %% défaut par un terme de votre choix.
+ \begin{funding}
+ <Texte libre>
+ \end{funding}
+ % \begin{funding}[<Titre>]
+ % <Texte libre>
+ % \end{funding}
+
+\begin{document}
+
+%% Page de titre
+\maketitle % composer la page de titre
+
+%% Corps de l'article
+\section{Introduction}
+
+<Débuter l'article par une introduction.>
+
+\section{<Titre de section>}
+
+<Utiliser les commandes LaTeX pour diviser en sections, sous-sections,
+sous-sous-sections, etc. Écrire les titres avec uniquement une
+majuscule initiale.>
+
+\section{Conclusion}
+
+<Résumer l'article dans une conclusion.>
+
+%% Parties annexes
+\makebackmatter % composer les parties annexes
+
+%% Annexes (optionnel - commenter si inutilisé)
+\appendix % début des annexes
+\section{<Titre de l'annexe>}
+
+<Les annexes sont dévolues aux démontrations de théorèmes ou autres
+longs développements mathématiques. Les annexes doivent être citées
+dans l'article.>
+
+%% Liste des références. Citer avec les commandes du paquetage natbib.
+%% Insérer les noms des bases de données bibliographiques (fichiers
+%% .bib) dans la commande \bibliography, sans extension et séparés
+%% par des virgules.
+\bibliography{}
+
+\end{document}
diff --git a/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-article.dtx b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-article.dtx
new file mode 100644
index 00000000000..9376ddbbf3e
--- /dev/null
+++ b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-article.dtx
@@ -0,0 +1,5080 @@
+% \iffalse meta-comment -*- mode: doctex -*-
+%
+% Article class for The Canadian Journal of Statistics | La revue
+% canadienne de statistique
+%
+% Copyright (C) Statistical Society of Canada | Société
+% canadienne de statistique
+%
+% The class file and templates derived from this file are licenced
+% under the LaTeX Project Public License, version 1.3c or (at your
+% option) any later version. The latest version of this license is in:
+%
+% https://www.latex-project.org/lppl.txt
+%
+% The documentation is also licensed under CC BY-SA 4.0 International.
+% To view a copy of this license, visit:
+%
+% https://creativecommons.org/licenses/by-sa/4.0/
+%
+% The Current Maintainer of this work is Vincent Goulet
+% <vincent.goulet@act.ulaval.ca>.
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{cjs-rcs-article.dtx}
+%</driver>
+%<class>\NeedsTeXFormat{LaTeX2e}[2009/09/24]
+%<class>\ProvidesClass{cjs-rcs-article}%
+%<*class>
+ [2023/11/29 v1.0 Article class for The Canadian Journal of
+ Statistics | La revue canadienne de statistique]
+%</class>
+%<*driver>
+\expandafter\ifx\csname ifenglish\endcsname\relax
+ \expandafter\newif\csname ifenglish\endcsname
+ \englishtrue
+\fi
+\ifenglish
+ \documentclass[nocjs,x11names,french,english]{cjs-rcs-article}
+\else
+ \documentclass[nocjs,x11names,english,french]{cjs-rcs-article}
+\fi
+ \setlrmarginsandblock{40mm}{30mm}{*} % increase left margin
+ \checkandfixthelayout
+
+ %% Loading doc.sty creates some conflicts with the class and memoir.
+ %% We need to:
+ %%
+ %% - keep a copy of the class' \maketitle command;
+ %% - undefine the 'glossary' environment created by memoir;
+ %% - restore the standard LaTeX commands for the index and glossary
+ %% that doc.sty relies upon.
+ \let\makeCJStitle\maketitle % keep class definition
+ \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}} % simplified
+ \usepackage{awesomebox}
+ \usepackage{metalogo}
+ \DisableCrossrefs
+ \CodelineNumbered
+ \RecordChanges
+ \DontCheckModules
+
+ \ifenglish
+ \AtEndPreamble{%
+ \hypersetup{%
+ pdfauthor = {Statistical Society of Canada},
+ pdftitle = {User guide for the class cjs-rcs-article}}}
+ \else
+ \AtEndPreamble{%
+ \hypersetup{%
+ pdfauthor = {Société statistique du Canada},
+ pdftitle = {Guide d'utilisation de la classe cjs-rcs-article}}}
+ \fi
+
+ %% Configuration of the glossary (English version only)
+ \addto\extrasenglish{%
+ \def\glossaryname{Version history}}
+ \ifenglish
+ \GlossaryPrologue{\section*{\glossaryname}%
+ \addcontentsline{toc}{section}{\glossaryname}}
+ \setlength{\GlossaryMin}{5cm}
+ \else
+ \OnlyDescription
+ \fi
+
+ %% New \DescribeMacro type environments for class options and lengths
+ \NewDocElement[envlike,notoplevel,printtype=\emph{option}]{Option}{option}
+ \NewDocElement[macrolike,notoplevel,printtype=$\ell$]{Length}{length}
+
+ %% Additional semantic typesetting
+ \newcommand*\class[1]{\textsf{#1}}
+
+ %% Name of the journal (in English and in French)
+ \makeatletter
+ \newcommand*\TheCJS{\@ifstar{\emph{The Journal}}{\emph{\CJS@journalname@en}}}
+ \newcommand*\LaRevue{\@ifstar{\emph{La revue}}{\emph{\CJS@journalname@fr}}}
+ \newcommand*\CJSclass{\class{cjs-rcs-article}}
+ \newcommand*\CJSpkg{\pkg{cjs-rcs-article}}
+ \newcommand*\CJSbsten{\code{cjs-rcs-en}}
+ \newcommand*\CJSbstfr{\code{cjs-rcs-fr}}
+ \makeatother
+
+ %% Redefine \year using information from \filedate instead of using
+ %% compilation time
+ \def\parsedate#1/#2/#3\relax{\def\year{#1}}
+
+ %% Definition of a shorthand to either hyphenate a word or insert a
+ %% regular dash. Use in the long names of Creative Commons licences.
+ %% (Shorthands support provided by babel.)
+ \useshorthands*{"}
+ \defineshorthand{"-}{\discretionary{-}{}{-}}
+
+\begin{document}
+\DocInput{cjs-rcs-article.dtx}
+\end{document}
+%</driver>
+% \fi
+% \GetFileInfo{cjs-rcs-article.dtx}
+% \expandafter\parsedate\filedate\relax
+%
+% \changes{0.1}{2023-06-20}{First test version for review by CJS editorial
+% team.}
+% \changes{0.1a}{2023-07-04}{Support for ORCID iD.}
+% \changes{0.1a}{2023-07-04}{Funding information moved to the end of
+% the paper with other back matter.}
+% \changes{0.1a}{2023-07-04}{Command \cs{surname} to enter the surname
+% of an author and automatically populate the running authors list.}
+% \changes{0.1a}{2023-07-04}{Support for \cs{firstpage} and automatic
+% display of the last page number in the journal information.}
+% \changes{0.1a}{2023-07-04}{Change the paper size from 7in x 10in to
+% letter paper.}
+% \changes{0.1b}{2023-07-06}{Support for hyperlinks.}
+% \changes{0.1b}{2023-07-06}{Option \texttt{final} for the editors.}
+% \changes{0.1b}{2023-07-06}{The ornament in the journal information
+% now uses the CJS colours.}
+% \changes{0.1b}{2023-07-06}{Documentation on the commands for editors
+% moved in appendix.}
+% \changes{0.1c}{2023-07-8}{Use a key-value interface in \cs{author} to
+% specify not only the ORCID iD, but also the email and
+% corresponding author status.}
+% \changes{0.1c}{2023-07-8}{Use Font Awesome for all symbols, instead
+% of ccicons for the Creative Commons symbols and a solution based on
+% TikZ to draw the ORCID icon. Therefore, ccicons and tikz are no
+% longer loaded by the class.}
+% \changes{0.1c}{2023-07-8}{The corresponding author mark * is
+% replaced by an envelope. The marker positioned next to the
+% corresponding author name is now a \texttt{mailto:} hyperlink.}
+% \changes{0.1d}{2023-07-13}{The role of the option
+% \texttt{supplement} is now to typeset a document similar to a
+% regular article, but with some unnecessary information hidden
+% (abstracts, key words, back matter, etc.).}
+% \changes{0.1d}{2023-07-13}{The user documentation is now available
+% in English.}
+% \changes{0.1e}{2023-07-19}{The command \cs{appendix} now indicates
+% the start of the appendices like the standard command. A starred
+% variant specially useful for CJS articles is introduced to also
+% insert the sectional division and title in the article.}
+% \changes{0.1e}{2023-07-19}{Introduce handling of licences depending
+% on the type of document.}
+% \changes{0.1e}{2023-07-19}{Introduce commands to typeset Creative
+% Commons licence icons.}
+% \changes{0.1e}{2023-07-19}{In addition to the LPPL for the code,
+% licence the documentation under CC BY-SA, if only to provide an
+% example of \cs{licence}.}
+% \changes{0.1f}{2023-07-20}{The article structure is modified to put
+% the appendix before the back matter and the references.}
+% \changes{0.1f}{2023-07-20}{The package natbib is now loaded with the
+% option \texttt{sectionbib}.}
+% \changes{0.1f}{2023-07-20}{The list of references is always an
+% unnumbered section, even without \cs{backmatter}.}
+% \changes{0.1f}{2023-07-20}{The author documentation now recommends
+% where to use \cs{licence}.}
+% \changes{0.1f}{2023-07-20}{The (author) documentation of
+% \cs{appendix} and \cs{appendix*} is moved to its own subsection to
+% the Usage section.}
+% \changes{0.1f}{2023-07-20}{The command to print the back matter
+% material is now \cs{backmatter*}. The standard \cs{backmatter} is
+% kept untouched.}
+% \changes{0.2}{2023-08-18}{The number of appendices is no longer
+% limited to one. The command \cs{appendix*} becomes obsolete and is
+% removed from the class.}
+% \changes{0.2}{2023-08-18}{Appendices now appear between the back
+% matter and the bibliography.}
+% \changes{0.2}{2023-08-18}{Change \cs{backmatter*} to
+% \cs{makebackmatter}, to align with \cs{maketitle} and since
+% \cs{appendix*} no longer exists.}
+% \changes{0.2}{2023-08-18}{Specify that CJS may provide an abstract
+% in the second language, for French as well as for English.}
+% \changes{0.2}{2023-08-18}{Many revisions to the documentation,
+% thanks mostly to Julie Falkner.}
+% \changes{0.3}{2023-08-21}{Condense the bibliography by cutting the
+% spacing between the entries in half.}
+% \changes{0.3}{2023-08-21}{Increase the visibility of the templates
+% in the documentation, notably with a new subsection at the beginning
+% of Section 4 (Usage).}
+% \changes{0.3}{2023-08-21}{Make Section 2 (Quick start) independent
+% from the rest of the text, such that readers may either read only
+% that section, or skip it entirely.}
+% \changes{0.4}{2023-08-30}{Replace old-style numbers by lining
+% numbers throughout.}
+% \changes{0.5}{2023-09-12}{Allow usage of \cs{licence} with option
+% final. Editors or the publisher may now use the command to specify
+% the official licence statement to display at the bottom of the title
+% page.}
+% \changes{0.5}{2023-09-12}{Clarify the documentation as to what is
+% displayed at the bottom of the first page and with which class
+% option.}
+% \changes{0.5}{2023-09-12}{Improve the measuring and positioning of
+% the space for licensing information at the bottom of the title
+% page.}
+% \changes{0.9}{2023-10-14}{Include bibliographic styles with the
+% class.}
+% \changes{0.92}{2023-10-27}{Proofread all the package documentation.}
+% \changes{0.92}{2023-10-27}{Relegate the \texttt{makebst} menu
+% information to the complete master bibliographic style
+% documentation.}
+% \changes{1.0}{2023-11-29}{First official release distributed through
+% CTAN.}
+% \changes{1.0}{2023-11-29}{Fix various typos and cosmetic issues in
+% the documentation.}
+%
+% \ifenglish%
+% \title[Guide to the class {\CJSclass}]{%
+% Guide to the class {\CJSclass} for authors \\
+% of \TheCJS}
+% \author{Statistical Society of Canada}
+% \affil{Class and documentation developed by Vincent Goulet, Université Laval}
+% \else%
+% \title[Guide d'utilisation de la classe {\CJSclass}]{%
+% Guide d'utilisation de la classe {\CJSclass} \\ pour les auteurs
+% de \itshape La revue canadienne \\ de statistique}
+% \author{Société canadienne de statistique}
+% \affil{Classe et documentation rédigées par Vincent Goulet, Université Laval}
+% \fi
+%
+% \begin{englishabstract}
+% Authors submitting an article to {\TheCJS} should use the document
+% class {\CJSclass} and its companion bibliographic styles to
+% typeset their manuscript with {\LaTeX}. This guide provides a
+% complete description of the characteristics and features of the
+% class{\ifenglish,\else.\fi} %
+% \ifenglish%
+% as well as the details of its implementation and the version
+% history. A French version of this guide is also available, but
+% without these last two elements of documentation. %
+% \else%
+% The English version of this guide also contains the details of its
+% implementation and the version history. %
+% \fi
+% \end{englishabstract}
+% \begin{frenchabstract}
+% Les auteurs qui soumettent un article dans {\LaRevue} doivent
+% utiliser la classe {\CJSclass} et les styles bibliographiques qui
+% l'accompagnent pour préparer leur manuscript avec
+% {\LaTeX}. Ce guide fournit une description complète des
+% caractéristiques et fonctionnalités de la
+% classe{\ifenglish,\else.\fi} %
+% \ifenglish%
+% ainsi que les détails de sa mise en {\oe}uvre et l'historique des
+% versions. Une version française de ce guide est également
+% disponible, mais celle-ci ne contient pas ces deux derniers
+% éléments de documentation. %
+% \else%
+% La version anglaise du document contient en plus les détails de sa
+% mise en {\oe}uvre et l'historique des versions. %
+% \fi
+% \end{frenchabstract}
+%
+% ^^A abusing the 'classification' environment. The final period is
+% ^^A added by the environment.
+% \begin{classification}[Version]
+% \ifenglish%
+% \item[] This is the documentation for the class
+% {\CJSclass}~{\fileversion}, dated {\filedate} %
+% \else%
+% \item[] Ce document décrit la classe
+% {\CJSclass}~{\fileversion}, datée du {\filedate} %
+% \fi
+% \end{classification}
+%
+% \licence{{\ccbysa*} {\year}, Statistical Society of
+% Canada~{\textbar}~Société canadienne de statistique}
+%
+% \makeCJStitle
+%
+% \section{Introduction}
+% \label{sec:introduction}
+%
+% \ifenglish%
+% The {\LaTeX} document class {\CJSclass} and its companion bibliographic
+% styles {\CJSbsten} and {\CJSbstfr} typeset manuscripts immediately
+% in accordance with the presentation rules of {\TheCJS}. In
+% particular, the dimensions of the typeblock, the page layout, the
+% fonts and the list of references are identical to the final version
+% of the article. But for a few modifications, the present guide uses
+% the page layout of the class. %
+% \else%
+% La classe {\CJSclass} et les styles de bibliographie {\CJSbsten} et
+% {\CJSbstfr} qui l'accompagnent permettent de composer des
+% manuscripts conformes aux règles de présentation matérielle de
+% {\LaRevue}. En particulier, la taille de la zone d'impression, la
+% mise en page, les polices de caractères et la liste des références
+% seront identiques à celles de la version finale de l'article. Le
+% présent document reprend d'ailleurrs, à quelques différences près,
+% la mise en page de la classe. %
+% \fi
+%
+% \ifenglish%
+% Typesetting a manuscript with the class {\CJSclass} requires a
+% recent and up-to-date {\TeX} distribution. We recommmend the
+% distributions %
+% \else%
+% La composition d'un manuscript avec la classe
+% {\CJSclass} requiert une distribution {\TeX} récente et
+% à jour. Nous recommandons les distributions %
+% \fi
+% \href{https://tug.org/texlive}{{\TeX}~Live} %
+% --- %
+% \ifenglish or its variant for macOS \else ou sa variante pour macOS \fi%
+% \href{https://tug.org/mactex}{Mac{\TeX}} %
+% --- %
+% \ifenglish and \else et \fi%
+% \href{https://miktex.org}{MiK{\TeX}}. %
+% \ifenglish%
+% You may also use an online {\LaTeX} editor such as %
+% \else%
+% Vous pouvez également avoir recours à une plateforme de rédaction en
+% ligne comme %
+% \fi%
+% \href{https://overleaf.com}{Overleaf}; %
+% \ifenglish%
+% their {\TeX} distributions usually satisfy the conditions
+% above. %
+% \else%
+% leurs distributions {\TeX} satisfont généralement les conditions
+% ci-dessus.
+% \fi
+%
+% \ifenglish%
+% The class {\CJSclass} is part of the standard {\TeX} distributions
+% via the package {\CJSpkg}. If your distribution is up-to-date, you
+% should be able to use the class without any special intervention. %
+% \else%
+% La classe {\CJSclass} fait partie des distributions {\TeX} standards
+% via le paquetage {\CJSpkg}. Dans la mesure où votre distribution est
+% à jour, vous devriez pouvoir l'utiliser sans autre intervention. %
+% \fi
+%
+% \ifenglish%
+% This guide is organized as follows. \autoref{sec:quick-start}
+% explains how to get started quickly with the class, and
+% \autoref{sec:installation} describes how to install the class if
+% it is not already available on your system. \autoref{sec:usage}
+% gives all the details of how to use the package for the various
+% components of your article. \autoref{sec:typesetting} provides
+% further typesetting instructions, discussing figures and tables,
+% hyperlinks and the article itself (it should not exceed 30~pages
+% when prepared using this class). Finally, \autoref{sec:supplement}
+% discusses the appropriate use of supplementary material. For
+% {\TeX} experts, we include two appendices. \autoref{sec:editors}
+% discusses features that are primarily intended for editors rather
+% than authors, and \autoref{sec:implementation} gives the details
+% of the implementation. %
+% \else
+% Ce guide est structuré comme suit. La \autoref{sec:quick-start} décrit
+% comment démarrer rapidement la préparation d'un article avec la
+% classe, alors que la \autoref{sec:installation} explique comment
+% l'installer si elle n'est pas déjà disponible sur votre système. La
+% \autoref{sec:usage} passe en revue toutes les fonctionnalités de la
+% classe pour les diverses composantes d'un article. La
+% \autoref{sec:typesetting} fournit des instructions de composition
+% additionnelles, notamment en ce qui a trait aux
+% figures et aux tableaux, aux hyperliens et à la structure de
+% l'article (qui ne doit pas dépasser 30~pages lorsque composé avec
+% cette classe). Finalement, la \autoref{sec:supplement} explique
+% comment préparer le matériel additionnel. L'\autoref{sec:editors}
+% s'adresse principalement aux éditeurs. Pour les experts {\TeX},
+% l'\autoref{sec:implementation} de la version anglaise de la
+% documentation contient les détails de mise en œuvre de la classe. %
+% \fi
+%
+%
+% \ifenglish%
+% \section{Quick start}
+% \else%
+% \section{Démarrage rapide}
+% \fi
+% \label{sec:quick-start}
+%
+% \ifenglish%
+% The class ships with templates for articles in English and in
+% French. In {\TeX}~Live, these are located with the
+% documentation of the class. To quickly start writing your article,
+% copy the appropriate template to your working directory and follow
+% the brief instructions therein. %
+% \else%
+% La classe est livrée avec des gabarits pour des articles en français
+% et en anglais. Dans la distribution {\TeX}~Live, ceux-ci sont
+% classés avec la documentation. Pour débuter rapidement la rédaction
+% de votre article, copiez le gabarit approprié dans votre dossier de
+% travail et suivez les directives succinctes qui s'y trouvent. %
+% \fi
+%
+% \ifenglish%
+% If your manuscript contains non-ASCII characters (such as accented
+% letters), you have to save your file using the %
+% \else%
+% Dès que le texte contient des caractères non-ASCII (comme des lettres
+% accentuées), vous devez enregistrer votre fichier dans le codage de
+% caractères %
+% \fi%
+% \href{https://fr.wikipedia.org/wiki/UTF-8}{UTF-8}\ifenglish{} character encoding\fi. %
+% \ifenglish%
+% To take full advantage of the class, you should compile your manuscript using
+% {\XeLaTeX}. %
+% \else%
+% Pour tirer pleinement profit des caractéristiques de la classe, compilez
+% votre manuscript avec {\XeLaTeX}. %
+% \fi
+%
+% \ifenglish%
+% The remainder of this guide provides detailed information on the
+% characteristics and features of the class. We recommend that you
+% read at least \autoref{sec:usage:mathematics} on mathematical
+% typesetting. %
+% \else%
+% Le reste de ce guide contient les informations détaillées sur les
+% caractéristiques et fonctionnalités de la classe. Nous
+% recommandons de lire au moins la \autoref{sec:usage:mathematics}
+% sur la composition des mathématiques.%
+% \fi
+%
+% \tipbox{%
+% \ifenglish%
+% If you are not able to get your hands on the templates,
+% because your distribution does not provide them or you are
+% writing using an online editor, please continue to %
+% \else%
+% Si vous n'avez pas accès aux gabarits parce qu'ils ne sont pas
+% inclus dans votre distribution ou parce que vous utilisez une
+% plateforme de rédaction en ligne, poursuivez votre lecture à la %
+% \fi%
+% \autoref{sec:installation}.}
+%
+%
+% \section{Installation}
+% \label{sec:installation}
+% \changes{0.91}{2023-10-16}{Revise the documentation, in particular
+% the installation instructions of Section 3 and in the file
+% \texttt{README.md}.}
+% \changes{0.91}{2023-10-16}{Change the name of the archive containing
+% a ``local'' installation of the class from
+% \texttt{-no-local-tex.zip} to \texttt{-project-install.zip}.}
+%
+% \ifenglish%
+% The class {\CJSclass} is distributed as the package %
+% \else%
+% La classe {\CJSclass} est distribuée dans le paquetage %
+% \fi%
+% \href{https://ctan.org/pkg/cjs-rcs-article}{\pkg{cjs-rcs-article}} %
+% \ifenglish%
+% through the Comprehensive {\TeX} Archive Network (CTAN). It is part
+% of the standard {\TeX} distributions such as {TeX}~Live, Mac{\TeX}
+% and MiK{\TeX}. We strongly recommend that you install or update the
+% package using the package manager of your {\TeX} distribution. For
+% example, with {\TeX}~Live, you may install or update from the
+% graphical package manager, or using either of these commands from
+% the command line: %
+% \else%
+% via le réseau de sites \emph{Comprehensive {\TeX} Archive Network}
+% (CTAN). Elle fait partie des distributions {\TeX} standards telles
+% que {TeX}~Live, Mac{\TeX} et MiK{\TeX}. Nous recommandons 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: %
+% \fi
+% \begin{quote}
+% \code{tlmgr install cjs-rcs-article}
+% \end{quote}
+% \ifenglish or\else ou\fi
+% \begin{quote}
+% \code{tlmgr update cjs-rcs-article}
+% \end{quote}
+%
+% \ifenglish%
+% If you are not in position to install packages or update the {\TeX}
+% distribution---notably when using an online editor---you may instead
+% opt for a simplified installation of the class, but that will be
+% limited in scope to your project. Download the archive %
+% \else%
+% 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 de la classe, mais dont la portée sera
+% limitée à votre projet. Pour ce faire, téléchargez l'archive %
+% \fi%
+% \code{cjs-rcs-article-project-install.zip} %
+% \ifenglish from the \else depuis le \fi%
+% \href{https://gitlab.com/cjs-rcs/cjs-rcs-article/-/releases}{%
+% \ifenglish project repository\else dépôt du projet\fi} %
+% \ifenglish%
+% and uncompress it in the directory of your project. You will then
+% have access to all the essential files of the class within this
+% project. %
+% \else%
+% et décompressez celle-ci dans le répertoire de votre projet. Vous
+% disposerez alors de tous les fichiers essentiels de la classe à
+% l'intérieur de ce projet. %
+% \fi
+%
+% \ifenglish%
+% Manual installation with full access to the source code is
+% possible for {\TeX} experts. Please follow the instructions provided
+% in the \code{README.md} file included in the package. %
+% \else%
+% Si votre expertise {\TeX} vous pousse à préférer une installation
+% manuelle avec accès à l'intégralité du code source de la classe,
+% consultez les instructions qui se trouvent dans le fichier
+% \code{README.md} du paquetage. %
+% \fi
+%
+%
+% \ifenglish%
+% \section{Usage} %
+% \else%
+% \section{Utilisation} %
+% \fi
+% \label{sec:usage}
+%
+% \ifenglish%
+% The class {\CJSclass} relies on modern and advanced tools, all of
+% which are available in recent {\TeX} distributions. In particular: %
+% \else%
+% La classe {\CJSclass} repose sur des outils modernes et évolués qui
+% font tous partie des distributions {\TeX} récentes. En
+% particulier: %
+% \fi
+% \begin{itemize}
+% \item \ifenglish the class\else la classe\fi{} %
+% \href{https://ctan.org/pkg/memoir}{\class{memoir}} %
+% \ifenglish%
+% on which {\CJSclass} is based (therefore, {\CJSclass} inherits all
+% the features of \class{memoir}); %
+% \else%
+% sur laquelle est basée {\CJSclass} (par conséquent, {\CJSclass}
+% hérite de l'intégralité des fonctionnalités de \class{memoir}); %
+% \fi
+% \item \ifenglish the fonts\else les polices\fi{} %
+% \href{https://ctan.org/pkg/stix2-otf}{STIX~Two} %
+% \ifenglish%
+% for text and mathematics; %
+% \else%
+% pour le texte et les mathématiques; %
+% \fi
+% \item \ifenglish the fonts\else les polices\fi{} %
+% \href{https://ctan.org/pkg/fira}{Fira} %
+% \ifenglish%
+% for decorative elements (notably \textsf{Fira Sans} for section
+% titles and \texttt{Fira Mono} for computer code); %
+% \else%
+% pour divers éléments décoratifs (notamment \textsf{Fira Sans} pour
+% les titres de sections et \texttt{Fira Mono} pour le code
+% informatique); %
+% \fi
+% \item \ifenglish the package\else le paquetage\fi{} %
+% \href{https://ctan.org/pkg/babel}{\pkg{babel}} %
+% \ifenglish%
+% to handle multiple languages in a single document. %
+% \else%
+% pour la prise en charge de multiples langues dans un même
+% document. %
+% \fi
+% \end{itemize}
+%
+% \ifenglish%
+% The class is largely compatible with the engine {pdf\LaTeX}.
+% However, to take full advantage of its characteristics\footnote{%
+% In particular when it comes to fonts. The engine {pdf\LaTeX} uses
+% the Type~1 versions of the fonts STIX~Two and Fira. Since the
+% PostScript Type~1 technology has been deprecated, the fonts are no
+% longer updated. The engine {\XeLaTeX} uses the more modern---and
+% complete---OpenType versions of the fonts.} %
+% we recommend that you compile your manuscript using the more
+% modern engine {\XeLaTeX}. %
+% \else%
+% La classe est en grande partie compatible avec le moteur
+% {pdf\LaTeX}. Cependant, pour tirer pleinement profit de ses
+% caractéristiques\footnote{%
+% Notamment au chapitre des polices de caractères. Le moteur
+% {pdf\LaTeX} utilise les versions Type~1 des polices STIX~Two et
+% Fira. Or, la technologie Type~1 PostScript étant aujourd'hui
+% obsolète, ces polices ne sont plus mises à jour. Le moteur
+% {\XeLaTeX} utilise les plus modernes --- et complètes --- versions
+% OpenType des polices.}, %
+% nous recommandons de compiler votre manuscript avec le plus moderne
+% moteur {\XeLaTeX}. %
+% \fi
+%
+% \ifenglish%
+% \subsection{Templates}
+% \else%
+% \subsection{Gabarits}
+% \fi
+% \label{sec:usage:templates}
+%
+% \ifenglish%
+% The class is distributed with templates for articles in English
+% and in French. If you are using the version of the class included
+% with your {\TeX} distribution, the templates may be located with the
+% documentation (this is the case in {\TeX}~Live). If you installed
+% the class manually by following the instructions in
+% \autoref{sec:installation}, the templates reside in your working
+% directory. %
+% \else
+% La classe est distribuée avec des gabarits pour des articles en français
+% et en anglais. Si vous utilisez la version de la classe fournie avec
+% votre distribution {\TeX}, les gabarits peuvent être classés avec
+% la documentation (c'est le cas dans {\TeX}~Live). Si vous avez
+% plutôt installé la classe manuellement en suivant les instructions
+% de la \autoref{sec:installation}, les gabarits se trouvent dans
+% votre dossier de travail. %
+% \fi
+%
+% \ifenglish%
+% We strongly encourage to start from a template to write your
+% article. It may also help to follow a template while reading this
+% section.
+% \else%
+% Nous recommandons fortement de rédiger votre article à partir d'un
+% gabarit. Il peut aussi s'avérer utile de suivre un gabarit en lisant
+% cette section.
+% \fi
+%
+% \ifenglish%
+% \subsection{Text encoding}
+% \else%
+% \subsection{Codage du code source}
+% \fi
+% \label{sec:usage:encoding}
+%
+% \ifenglish%
+% When the text contains accented letters or any other non-ASCII
+% symbol, you must save your manuscript using the %
+% \else%
+% Lorsqu'il contient du texte avec des accents ou tout autre symbole
+% non-ASCII, le code source de votre manuscript doit obligatoirement
+% être enregistré dans le codage de caractères %
+% \fi%
+% \href{https://fr.wikipedia.org/wiki/UTF-8}{UTF-8}\ifenglish{}
+% character encoding.\footnote{%
+% Since UTF-8 is usually not the default encoding on Windows,
+% be particularly careful if you are using this
+% operating system.}\else.\footnote{%
+% L'UTF-8 n'étant pas le codage par défaut sous Windows, portez une
+% attention toute particulière à ce point si vous utilisez ce système
+% d'exploitation.} %
+% \fi
+%
+% \ifenglish%
+% \subsection{Class declaration and options}
+% \else%
+% \subsection{Déclaration de la classe et options}
+% \fi
+% \label{sec:usage:options}
+%
+% \ifenglish%
+% The class is loaded with the command %
+% \else%
+% On charge la classe avec la commande %
+% \fi
+% \begin{quote}
+% \cmdprint{\documentclass}\oarg{options}\code{\{cjs-rcs-article\}}
+% \end{quote}
+% \ifenglish%
+% Some \meta{options} of the class are intended for the authors,
+% whereas others are instead intended for the editors of {\TheCJS*}.
+% Presentation of the editor \meta{options} is deferred to
+% \autoref{sec:editors}. Here, we concentrate on the author
+% \meta{options}, that is: the languages of the article,
+% \code{review}, \code{supplement}, and \code{nocjs}. %
+% \else%
+% La classe comporte des \meta{options} pour les auteurs et d'autres
+% qui s'adressent plus spécifiquement aux éditeurs de {\LaRevue*}. La
+% présentation des \meta{options} pour les éditeurs est repoussée à
+% l'\autoref{sec:editors}. Pour l'instant, nous nous concentrons sur
+% les \meta{options} pour les auteurs, soit: les langues de l'article,
+% \code{review}, \code{supplement} et \code{nocjs}. %
+% \fi%
+%
+% \begin{DescribeOption}{english}
+% \begin{DescribeOption}{french}
+% \ifenglish%
+% Two languages are required in the \meta{options} of the class:
+% \code{english} and \code{french}, because {\TheCJS} asks for
+% abstracts in these two languages. You need to declare these
+% options in a specific order, because the \emph{second} one becomes
+% the main language of the article. %
+% \else%
+% Deux langues sont obligatoires dans les \meta{options} de la
+% classe: \code{english} et \code{french} puisque {\LaRevue} exige
+% des résumés en anglais et en français. Vous devez les déclarer
+% dans un ordre précis, car la \emph{seconde} langue mentionnée
+% devient la langue principale de l'article. %
+% \fi
+% \end{DescribeOption}
+% \end{DescribeOption}
+%
+% \begin{DescribeOption}{review}
+% \ifenglish%
+% The option \code{review} produces a partially anonymized version of the
+% manuscript suitable for peer review. With this option, the names of
+% the authors and their affiliations are removed from the title
+% page; the acknowledgements, funding information and ORCID
+% iDs are removed from the back matter; the lines are numbered; and the
+% line spacing is increased. This option should be used when
+% submitting your the article for peer review to {\TheCJS*}. %
+% \else%
+% L'option \code{review} produit une version partiellement
+% anonymisée du manuscript en vue de l'évaluation par un comité de
+% lecture. Avec cette option, le nom des auteurs et leurs
+% affiliations sont supprimés de la page de titre; les
+% remerciements, les informations de financement de la recherche et
+% les identifiants ORCID sont supprimés des parties annexes; les
+% lignes sont numérotées; l'interligne est augmenté. L'option doit
+% être utilisée au moment de soumettre votre article à {\LaRevue*}
+% pour l'évaluation par les pairs. %
+% \fi
+% \end{DescribeOption}
+%
+% \warningbox{%
+% \ifenglish%
+% You must ensure that the manuscript you submit is fully anonymous.
+% Be sure to remove any other identifying information, such as the
+% authors' unpublished references. %
+% \else%
+% Vous devez vous assurer de soumettre un manuscript complètement
+% anonyme. Assurez-vous de supprimer ou de masquer toute information qui
+% permettrait de vous identifier, comme des références à des
+% publications préliminaires. %
+% \fi}
+%
+% \begin{DescribeOption}{supplement}
+% \ifenglish%
+% The class option \code{supplement} allows you to use the class
+% {\CJSclass} to prepare your supplementary material. See
+% \autoref{sec:supplement} for additional details. %
+% \else%
+% L'option \code{supplement} vous permet d'utiliser la classe
+% {\CJSclass} pour préparer le matériel additionnel de l'article.
+% Consultez la \autoref{sec:supplement} pour de plus amples
+% informations. %
+% \fi
+% \end{DescribeOption}
+%
+% \begin{DescribeOption}{nocjs}
+% \ifenglish%
+% If you wish to use the class {\CJSclass} to typeset documents
+% other than an article for {\TheCJS*}, use the option \code{nocjs}
+% to hide all journal-specific publication information.\footnote{%
+% This guide uses the option \code{nocjs}.} %
+% The option also allows you to specify a licence agreement in a
+% statement that will be displayed in the footer of the title page;
+% see \autoref{sec:usage:licensing} for additional details. %
+% \else%
+% Si vous souhaitez utiliser la classe {\CJSclass} pour tout autre
+% usage qu'un article de {\LaRevue*}, l'option \code{nocjs}
+% désactive l'affichage des informations de publication propres au
+% journal.\footnote{%
+% L'option \code{nocjs} est utilisée pour le présent guide.} %
+% L'option vous permet également de préciser un contrat de licence
+% via une déclaration qui sera affichée dans le pied de page de la
+% page de titre; consultez la \autoref{sec:usage:licensing} pour de
+% plus amples informations. %
+% \fi
+% \end{DescribeOption}
+%
+% \ifenglish%
+% \subsection{Titling information}
+% \else%
+% \subsection{Informations de la page de titre}
+% \fi
+% \label{sec:usage:titling}
+%
+% \ifenglish%
+% The class {\CJSclass} defines a number of commands and environments
+% to provide information for the title page. See \autoref{tab:titling}
+% for a summary; the detailed descriptions follow. %
+% \else%
+% La classe {\CJSclass} définit un ensemble de commandes et
+% d'environnements pour fournir les éléments de la page de titre. Le
+% \autoref{tab:titling} en présente un sommaire; les descriptions
+% détaillées suivent. %
+% \fi
+%
+% \begin{table}[t]
+% \centering
+% \ifenglish%
+% \caption{Summary of the commands and environments of the class
+% {\CJSclass} to provide title-page information. Names starting with
+% the symbol ``\code{\bs}'' are commands, and the others are
+% environments. Items marked with $^\star$ are required.}
+% \else%
+% \caption{Sommaire des commandes et environnements de la classe
+% {\CJSclass} servant à spécifier les informations de la
+% page de titre. Les noms qui débutent par le symbole «\code{\bs}»
+% sont des noms de commandes, les autres sont des noms
+% d'environnements. Les éléments marqués de $^\star$ sont
+% obligatoires.}
+% \fi
+% \label{tab:titling}
+% \renewcommand*\arraystretch{1.1}
+% \begin{tabular}{ll}
+% \toprule
+% \ifenglish Name\else Nom\fi & Usage \\
+% \midrule
+% \cmd{\title}$^\star$ &
+% \ifenglish
+% main title of the article (with an abbreviated version as an option) \\
+% \else
+% titre principal de l'article (avec une version abrégée en option) \\
+% \fi
+% \cmd{\author}$^\star$ &
+% \ifenglish
+% name of an author (and metadata as an option) \\
+% \else
+% nom d'un auteur (et métadonnées en option) \\
+% \fi
+% \cmd{\surname}$^\star$ &
+% \ifenglish
+% surname of an author (used inside \cmdprint{\author}) \\
+% \else
+% nom de famille d'un auteur (utilisée à l'intérieur de \cmdprint{\author}) \\
+% \fi
+% \cmd{\affil}$^\star$ &
+% \ifenglish
+% affiliation of an author \\
+% \else
+% affiliation d'un auteur \\
+% \fi
+% \cmd{\runningauthor} &
+% \ifenglish
+% author identification for the running heads \\
+% \else
+% identification courte des auteurs pour les entêtes \\
+% \fi
+% \code{englishabstract}$^\star$ &
+% \ifenglish
+% English abstract \\
+% \else
+% résumé en anglais \\
+% \fi
+% \code{frenchabstract}$^\star$ &
+% \ifenglish
+% French abstract \\
+% \else
+% résumé en français \\
+% \fi
+% \code{keywords} &
+% \ifenglish
+% list of key words \\
+% \else
+% liste des mots-clés \\
+% \fi
+% \code{classification}$^\star$ &
+% \ifenglish
+% mathematics subject classification MSC2020 \\
+% \else
+% classification mathématique par matières MSC2020 \\
+% \fi
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% \ifenglish%
+% \subsubsection{Main title}
+% \else%
+% \subsubsection{Titre de l'article}
+% \fi
+% \label{sec:usage:titling:title}
+%
+% \begin{DescribeMacro}{\title}
+% \ifenglish%
+% The command \cmd{\title} defines the title of the article. An
+% optional argument specifies an abbreviated version of the title
+% that will be used for the running head. Therefore, the syntax
+% of the command is: %
+% \else%
+% La commande \cmd{\title} sert à spécifier le titre de l'article.
+% Un argument optionnel permet de spécifier une version abrégée
+% du titre qui sera utilisée dans les entêtes. La syntaxe de la
+% commande est donc: %
+% \fi
+% \begin{quote}
+% \def\OPT{\ifenglish Short title\else Titre court\fi}
+% \def\ARG{\ifenglish Full title\else Titre complet\fi}
+% \cmdprint{\title}\oarg{\OPT}\marg{\ARG}
+% \end{quote}
+% \ifenglish%
+% Write the title in sentence style, that is, with only an initial
+% capital. In English, also capitalize the first word after a colon.
+% Break a long title needing more than one line using \code{\bs\bs}
+% or \cmdprint{\newline}. %
+% \else%
+% Entrez le titre en minuscules (sauf pour la majuscule initiale).
+% En anglais, utilisez toutefois une majuscule initiale après un
+% deux-points. Vous devez couper manuellement avec \code{\bs\bs} ou
+% \cmdprint{\newline} un titre qui nécessite plus d'une ligne.
+% \fi
+% \end{DescribeMacro}
+%
+% \ifenglish%
+% \subsubsection{Authors and affiliations}
+% \else%
+% \subsubsection{Auteurs et affiliations}
+% \fi
+% \label{sec:usage:titling:authors}
+%
+% \ifenglish%
+% You must provide the names of all the authors and their persistent
+% digital identifiers %
+% \else%
+% Vous devez fournir les noms de tous les auteurs et leurs
+% identifiants numériques persistants %
+% \fi%
+% \href{https://orcid.org}{ORCID iD}; %
+% \ifenglish%
+% the affiliation for each author; the email address of the
+% corresponding author; and the list of authors for the running head.
+% The class {\CJSclass} uses an information entry system inspired by
+% the package %
+% \else%
+% les affiliations de chacun; l'adresse courriel de l'auteur
+% correspondant; la liste des auteurs pour l'entête. La classe
+% {\CJSclass} utilise une méthode de saisie de l'information inspirée
+% du paquetage %
+% \fi%
+% \href{https://ctan.org/pkg/authblk}{\pkg{authblk}} %
+% \ifenglish%
+% consisting of a series of pairs of commands \cmd{\author} and
+% \cmd{\affil}, one per author. %
+% \else%
+% qui consiste en des paires de commandes \cmd{\author} et
+% \cmd{\affil}, une par auteur. %
+% \fi
+%
+% \begin{DescribeMacro}{\author}
+% \begin{DescribeMacro}{\surname}
+% \ifenglish%
+% The command \cmd{\author} is the main component. Its general
+% syntax is the following: %
+% \else%
+% La commande \cmd{\author} permet d'entrer plusieurs des
+% informations relatives à un auteur de l'article. Sa syntaxe
+% générale est la suivante: %
+% \fi
+% \begin{quote}
+% \def\FORENAME{\ifenglish Forename\else Prénom\fi}
+% \def\SURNAME{\ifenglish Surname\else Nom\fi}
+% \cmdprint{\author}\oarg{options}\code{\{}\meta{\FORENAME}\code{ }\cmdprint{\surname}\marg{\SURNAME}\code{\}}
+% \end{quote}
+% \ifenglish%
+% The \meta{Surname} must be entered using the command
+% \cmd{\surname}. Write the \meta{Forename} and \meta{Surname} in
+% lowercase (except for the initial capital and initials). If
+% needed, the \meta{Forename} may include one or more initials, each
+% followed by a period. %
+% \else%
+% Le \meta{Nom} doit obligatoirement être saisi dans la commande
+% \cmd{\surname}. Entrez le \meta{Prénom} et le \meta{Nom} en
+% minuscules (sauf pour les premières lettres et les initiales). Le
+% cas échéant, une ou plusieurs initiales, chacune suivie d'un
+% point, peuvent faire partie du \meta{Prénom}. %
+% \fi
+%
+% \ifenglish%
+% The \meta{options} are used to supply an author's metadata using a
+% \meta{key} = \meta{value} interface. \autoref{tab:author} shows
+% the currently available keys and the expected value for each. The
+% \meta{key}--\meta{value} pairs are separated by commas. %
+% \else%
+% Les \meta{options} permettent de fournir des métadonnées sur
+% l'auteur par le biais d'une interface \meta{clé} = \meta{valeur}.
+% Le \autoref{tab:author} présente les clés actuellement définies et
+% la valeur attendue pour chacune. Les paires
+% \meta{clé}--\meta{valeur} sont séparées les unes des autres par
+% une virgule. %
+% \fi
+%
+% \begin{table}
+% \centering
+% \ifenglish%
+% \caption{Keys and values defined for the options of the command
+% \cmdprint{\author}}
+% \else%
+% \caption{Clés et valeurs définies pour les options de la
+% commande \cmdprint{\author}}
+% \fi
+% \label{tab:author}
+% \begin{tabular}{lll}
+% \toprule
+% \ifenglish Key\else Clé\fi & \ifenglish Value\else Valeur\fi & Description \\
+% \midrule
+% \code{orcid} & \meta{id} &
+% \ifenglish%
+% ORCID iD of the author \\
+% \else%
+% ORCID iD de l'auteur \\
+% \fi%
+% \code{email} & \meta{\ifenglish email\else courriel\fi} &
+% \ifenglish%
+% email address of the author \\
+% \else%
+% adresse courriel de l'auteur \\
+% \fi%
+% \code{corresponding} & \code{true}/\code{false} &
+% \ifenglish%
+% corresponding author \\
+% \else%
+% auteur correspondant \\
+% \fi%
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% \ifenglish%
+% The ORCID iD of an author is a 16-digit alphanumeric code of the
+% form \code{0000-0000-0000-0000}. %
+% \else%
+% L'identifiant numérique ORCID (ou ORCID iD) de l'auteur est un
+% code alphanumérique à 16 composantes de la forme
+% \code{0000-0000-0000-0000}. %
+% \fi
+%
+% \ifenglish%
+% Currently, only the email address of the corresponding author
+% appears in the manuscript. Nevertheless, we recommend providing
+% this address for all authors. %
+% \else%
+% Actuellement, seule l'adresse courriel de l'auteur correspondant
+% apparait dans le manuscript. Nous recommandons néanmoins
+% d'indiquer cette adresse pour tous les auteurs. %
+% \fi
+%
+% \ifenglish%
+% The value of the key \code{corresponding} is implicitly
+% \code{true} when it appears in the options, and \code{false} when
+% not present. In other words, instead of specifying
+% \code{corresponding=true} and \code{corresponding=false} for every
+% author, you may simply indicate \code{corresponding} for the
+% corresponding author. This key has no effect if the \code{email}
+% key is missing for the author. %
+% \else%
+% La valeur de la clé \code{corresponding} est implicitement
+% \code{true} quand celle-ci apparait dans les options, et
+% \code{false} lorsqu'elle n'y apparait pas. Autrement dit, il n'est
+% pas nécessaire d'indiquer \code{corresponding=true} ou
+% \code{corresponding=false} pour chacun des auteurs, mais bien
+% seulement \code{corresponding} pour l'auteur correspondant. Cette
+% clé est sans effet si la clé \code{email} n'est pas aussi utilisée
+% pour l'auteur. %
+% \fi
+%
+% \ifenglish%
+% To summarize, the recommended forms for the author declarations
+% are as follows. %
+% \else%
+% Pour résumer, les formes recommandées pour les déclarations des
+% auteurs sont donc les suivantes. %
+% \fi
+% \begin{itemize}
+% \def\EMAIL{\ifenglish email\else courriel\fi}
+% \def\FORENAME{\ifenglish Forename\else Prénom\fi}
+% \def\SURNAME{\ifenglish Surname\else Nom\fi}
+% \item \ifenglish For the corresponding author\else Pour l'auteur correspondant\fi:
+% \begin{quote}
+% \cmdprint{\author}\code{[orcid=}\meta{id}\code{, email=}\meta{\EMAIL}\code{, corresponding]} \\
+% \verb+ +\code{\{}\meta{\FORENAME}\code{ }\cmdprint{\surname}\marg{\SURNAME}\code{\}}
+% \end{quote}
+% \item \ifenglish For all other authors\else Pour tous les autres auteurs\fi:
+% \begin{quote}
+% \cmdprint{\author}\code{[orcid=}\meta{id}\code{, email=}\meta{\EMAIL}\code{]} \\
+% \verb+ +\code{\{}\meta{\FORENAME}\code{ }\cmdprint{\surname}\marg{\SURNAME}\code{\}}
+% \end{quote}
+% \end{itemize}
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+%
+% \begin{DescribeMacro}{\affil}
+% \ifenglish%
+% The command \cmd{\affil} declares the affiliation of the author
+% mentioned in the immediately preceding \cmd{\author} command. The
+% general form of an affiliation is: %
+% \else%
+% La commande \cmd{\affil} permet d'entrer l'affiliation de l'auteur
+% mentionné dans la commande \cmd{\author} qui la précède. La forme
+% générale de l'affiliation est: %
+% \fi
+% \begin{quote}
+% \def\AFFIL{\ifenglish Department, University, City, Country\else%
+% Département, Université, Ville, Pays\fi}
+% \cmd{\affil}\marg{\AFFIL}
+% \end{quote}
+% \ifenglish%
+% Give the country name in the main language of the article. %
+% \else%
+% Indiquez le nom du pays dans la langue principale de l'article. %
+% \fi
+% \end{DescribeMacro}
+%
+% \begin{DescribeMacro}{\runningauthor}
+% \ifenglish%
+% The running head contains the surnames of the authors as
+% automatically collected by the command \cmd{\surname}. If the list
+% is too long, you may use the command \cmd{\runningauthor} to
+% provide a shorter version: the first author's surname followed by
+% \emph{et al.} (in English) or \emph{et collab.} (in French): %
+% \else%
+% L'identification des auteurs qui apparait dans les entêtes de
+% l'article est normalement construite automatiquement à partir des
+% informations colligées par la commande \cmd{\surname}. Si la liste
+% s'avère trop longue, vous pouvez utiliser la commande
+% \cmd{\runningauthors} pour fournir une version écourtée: le nom du
+% premier auteur suivi de la locution «et collab.» (en français) ou
+% «et al.» (en anglais): %
+% \fi
+% \begin{quote}
+% \def\SURNAME{\ifenglish Surname\else Nom\fi}
+% \def\ETAL{\ifenglish et al.\else et collab.\fi}
+% \def\ETCOLLAB{\ifenglish et collab.\else et al.\fi}
+% \cmdprint{\runningauthor}\code{\{}\meta{\SURNAME}\code{ \ETAL\}} \\
+% \cmdprint{\runningauthor}\code{\{}\meta{\SURNAME}\code{ \ETCOLLAB\}}
+% \end{quote}
+% \end{DescribeMacro}
+%
+% \ifenglish%
+% \subsubsection{Abstracts}
+% \else%
+% \subsubsection{Résumés}
+% \fi
+% \label{sec:usage:titling:abstract}
+%
+% \begin{DescribeEnv}{englishabstract}
+% \begin{DescribeEnv}{frenchabstract}
+% \ifenglish%
+% Articles in {\TheCJS} have both English and French abstracts.
+% ({\TheCJS*} will supply the latter if you cannot prepare it
+% yourself.) Use the environments \code{englishabstract} and
+% \code{frenchabstract} to enter the abstracts. Their position on
+% the title page is set automatically by the class. %
+% \else%
+% Les articles dans {\LaRevue} proposent des résumés en français et
+% en anglais. ({\LaRevue*} fournira ce dernier si vous n'êtes pas en
+% mesure de le rédiger vous-même.) Les environnements
+% \code{englishabstract} et \code{frenchabstract} permettent de
+% saisir ceux-ci. Leur positionnement dans la page de titre est
+% déterminé automatiquement par la classe. %
+% \fi
+% \end{DescribeEnv}
+% \end{DescribeEnv}
+%
+% \ifenglish%
+% The standard environment \code{abstract} has no effect in the
+% class {\CJSclass}. %
+% \else%
+% L'environnement \code{abstract} des classes standards est sans effet
+% dans la classe {\CJSclass}. %
+% \fi
+%
+% \ifenglish%
+% \subsubsection{Key words}
+% \else%
+% \subsubsection{Mots-clés}
+% \fi
+% \label{sec:usage:titling:keywords}
+%
+% \begin{DescribeEnv}{keywords}
+% \ifenglish%
+% The environment \code{keywords} is used to provide the list of key
+% words for the article. Its usage is similar to an \code{itemize}
+% or \code{enumerate} list: %
+% \else%
+% L'environnement \code{keywords} permet de saisir la liste des
+% mots-clés de l'article. Il s'utilise comme une liste
+% \code{itemize} ou \code{enumerate}: %
+% \fi
+% \begin{quote}
+% \def\KEYWORDC{\ifenglish Key word\else Mot-clé\fi}
+% \def\KEYWORD{\ifenglish key word\else mot-clé\fi}
+% \cmdprint{\begin}\code{\{keywords\}} \\
+% \cmdprint{\item} \emph{{\KEYWORDC} 1} \\
+% \cmdprint{\item} \emph{{\KEYWORD} 2} \\
+% \cmdprint{\item} \emph{{\KEYWORD} 3} \\
+% \code{...} \\
+% \cmdprint{\end}\code{\{keywords\}}
+% \end{quote}
+% \ifenglish%
+% As shown above, use an initial capital for the first key word
+% only. Punctuation will be added automatically. %
+% \else%
+% Tel qu'illustré ci-dessus, n'utilisez pas de majuscule initiale,
+% sauf pour le premier mot-clé. La ponctuation est ajoutée
+% automatiquement. %
+% \fi
+% \end{DescribeEnv}
+%
+% \ifenglish%
+% \subsubsection{Mathematics subject classification}
+% \else%
+% \subsubsection{Classification mathématique par matières}
+% \fi
+% \label{sec:usage:titling:classification}
+%
+% \begin{DescribeEnv}{classification}
+% \ifenglish%
+% The environment \code{classification} is used to enter the
+% mathematics subject classification of the article. Its interface
+% is the following: %
+% \else%
+% L'environnement \code{classification} sert à entrer la
+% classification mathématique par matières de l'article. Son
+% interface est la suivante: %
+% \fi
+% \begin{quote}
+% \def\LEVEL{\ifenglish level\else niveau\fi}
+% \def\CODE{\ifenglish code\else rubrique\fi}
+% \cmdprint{\begin}\code{\{classification\}}\oarg{type} \\
+% \cmdprint{\item}\oarg{\LEVEL} \emph{{\CODE} 1}, \emph{{\CODE} 2}, \dots \\
+% \cmdprint{\item}\oarg{\LEVEL} \emph{{\CODE} 1}, \emph{{\CODE} 2}, \dots \\
+% \code{...} \\
+% \cmdprint{\end}\code{\{classification\}}
+% \end{quote}
+% \ifenglish%
+% The classification system used is %
+% \else%
+% Le système de classification employé est %
+% \fi%
+% \href{https://msc2020.org}{MSC2020}. %
+% \ifenglish%
+% Should you need to use a different system for your manuscript that
+% would be published elsewhere than in {\TheCJS*}, you may provide
+% its name in the optional argument \meta{type}. The required
+% entries \meta{level} identify the classification levels, for
+% example \emph{Primary} and \emph{Secondary}. Insert commas between
+% the classification codes of a level, but no other punctuation. %
+% \else%
+% Si vous souhaitez utiliser un système différent pour votre
+% manuscrit qui sera publié ailleurs que dans {\LaRevue*},
+% vous pouvez inscrire son nom dans l'argument optionnel
+% \meta{type}. Les éléments obligatoires \meta{niveau} identifient
+% les niveaux de classification, par exemple «Primaire» et
+% «Secondaire». Insérez des virgules entre les rubriques d'un même
+% niveau, mais aucune autre ponctuation. %
+% \fi
+% \end{DescribeEnv}
+%
+% \ifenglish%
+% \subsubsection{Creation of the title page}
+% \else%
+% \subsubsection{Création de la page de titre}
+% \fi
+% \label{sec:usage:titling:maketitle}
+%
+% \begin{DescribeMacro}{\maketitle}
+% \ifenglish%
+% The aforementioned titling information may be provided in the
+% preamble or at the very beginning of the document body. The
+% standard command \cmd{\maketitle} typesets the title page at the
+% place where it appears. Therefore, you should issue this command
+% after \cmdprint{\begin}\code{\{document\}}, but before any
+% content. %
+% \else%
+% Les informations qui précèdent peuvent être fournies dans le
+% préambule ou au début du corps du document. La commande standard
+% \cmd{\maketitle} crée la page de titre à l'endroit où elle
+% apparait. Par conséquent, vous devez insérer cette commande après
+% \cmdprint{\begin}\code{\{document\}}, mais avant tout contenu. %
+% \fi
+% \end{DescribeMacro}
+%
+% \ifenglish%
+% The class reserves a space at the bottom of the title page for the
+% licence statement that will be added by the publisher (Wiley) after
+% acceptance of the paper. For the options \code{review},
+% \code{supplement} and \code{nocjs}, the space is replaced by a
+% footer with the page number. %
+% \else%
+% La classe réserve un espace au bas de la page de titre pour la
+% déclaration de licence qui sera ajoutée par la maison d'édition
+% (Wiley) lorsque votre article sera accepté pour publication. Pour
+% les options \code{review}, \code{supplement} et \code{nocjs},
+% l'espace est remplacé par un pied de page contenant le numéro de
+% page. %
+% \fi%
+%
+% \ifenglish%
+% \subsection{Back matter information}
+% \else%
+% \subsection{Informations des parties annexes}
+% \fi
+% \label{sec:usage:backmatter}
+%
+% \ifenglish%
+% Articles in {\TheCJS} end with elements forming the so-called back
+% matter: supplementary material available online, acknowledgements,
+% etc. The class {\CJSclass} provides specialized environments to
+% enter this information. See \autoref{tab:titling} for a summary; the
+% detailed descriptions follow. %
+% \else%
+% Un article de {\LaRevue} se termine par la présentation d'un
+% ensemble d'informations dans des parties annexes: matériel
+% additionnel disponible en ligne, remerciements, etc. La classe
+% {\CJSclass} définit des environnements pour entrer ce type
+% d'information de manière uniforme. Le \autoref{tab:backmatter} en
+% présente un sommaire; les descriptions détaillées suivent. \fi
+%
+% \begin{table}[t]
+% \centering
+% \ifenglish%
+% \caption{Summary of the environments of {\CJSclass} to provide the
+% back matter information} %
+% \else%
+% \caption{Sommaire des environnements de la classe {\CJSclass}
+% servant à spécifier les informations des parties annexes} %
+% \fi
+% \label{tab:backmatter}
+% \begin{tabular}{ll}
+% \toprule
+% \ifenglish Name\else Nom\fi & Usage \\
+% \midrule
+% \code{supplement} &
+% \ifenglish%
+% supplementary material \\
+% \else%
+% matériel additionnel \\
+% \fi%
+% \code{sharing} &
+% \ifenglish%
+% data sharing conditions \\
+% \else%
+% conditions de partage des données \\
+% \fi%
+% \code{acknowledgements} &
+% \ifenglish%
+% acknowledgements \\
+% \else%
+% remerciements \\
+% \fi%
+% \code{funding} &
+% \ifenglish%
+% funding information \\
+% \else%
+% informations sur le financement de la recherche \\
+% \fi%
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% \ifenglish%
+% The environments described in this section are optional. %
+% \else%
+% L'utilisation des environnements de cette section est facultative. %
+% \fi
+%
+% \tipbox{%
+% \ifenglish%
+% Although it is displayed at the end, we recommend that you enter
+% the back matter information with the title information, in the
+% preamble or at the beginning of the main body of the document. %
+% \else%
+% Bien qu'elles ne seront affichées qu'en fin d'article, nous
+% recommandons d'entrer les informations des parties annexes avec
+% celles de la page de titre, dans le préambule ou au début du corps
+% du document. %
+% \fi}
+%
+% \begin{DescribeEnv}{supplement}
+% \ifenglish%
+% Use the environment \code{supplement} to provide, as free form
+% text, information on any supplementary material: figures,
+% tables, computer code, long mathematical proofs, etc. This
+% material must be cited in the main article. %
+% \else%
+% L'environnement \code{supplement} permet d'inscrire, sous forme de
+% texte libre, les informations sur tout matériel additionnel:
+% figures, tableaux, code informatique, longues démonstrations, etc.
+% Ce matériel doit être cité dans l'article. %
+% \fi
+% \end{DescribeEnv}
+%
+% \begin{DescribeEnv}{sharing}
+% \ifenglish%
+% If you wish to share data or the code, use the environment
+% \code{sharing} to describe how to access this material, providing
+% a persistent identifier, such as a digital object identifier (DOI)
+% or a URL. %
+% \else%
+% Si vous mettez les données ou le code de votre article à
+% disposition, utilisez l'environnement \code{sharing} pour
+% expliquer comment accéder à ce matériel et pour indiquer un lien
+% permanent, comme un identificateur d'objets numériques (DOI) ou
+% une adresse URL. %
+% \fi
+% \end{DescribeEnv}
+%
+% \begin{DescribeEnv}{acknowledgements}
+% \begin{DescribeEnv}{acknowledgments}
+% \ifenglish%
+% Use the environment \code{acknowledgements} (or its alias
+% \code{acknowledgments}) to write your acknowledgements in free
+% form text. Avoid funding information here. %
+% \else%
+% L'environnement \code{acknowledgements} (ou
+% \code{acknowledgments}) permet d'inscrire vos remerciements sous
+% forme de texte libre. Évitez les informations de financement dans
+% cette rubrique. %
+% \fi%
+% \makeatletter\ifenglish%
+% The environment accepts an optional argument to replace its
+% default name (``\CJS@ackname@en'' in English;
+% ``\emph{\CJS@ackname@fr}'' in French) by a name of your
+% choosing. %
+% \else%
+% L'environnement accepte un argument optionnel qui permet de
+% remplacer l'identifiant par défaut («\CJS@ackname@fr» en français;
+% «\emph{\CJS@ackname@en}» en anglais) par un terme de votre
+% choix. %
+% \fi\makeatother
+% \end{DescribeEnv}
+% \end{DescribeEnv}
+%
+% \begin{DescribeEnv}{funding}
+% \ifenglish%
+% The environment \code{funding} lets you provide, in free form
+% text, all pertinent funding information. The names of granting
+% agencies should not be abbreviated. %
+% \else%
+% L'environnement \code{funding} permet d'inscrire, sous forme de
+% texte libre, les informations sur le financement de la recherche.
+% Indiquez le nom des agences de financement au long. %
+% \fi%
+% \makeatletter\ifenglish%
+% The environment accepts an optional argument to replace its
+% default name (``\CJS@fundingname@en'' in English;
+% ``\emph{\CJS@fundingname@fr}'' in French) by a name of your
+% choosing. %
+% \else%
+% L'environnement accepte un argument optionnel qui permet de
+% remplacer l'identifiant par défaut («\CJS@fundingname@fr» en
+% français; «\emph{\CJS@fundingname@en}» en anglais) par un terme de
+% votre choix. %
+% \fi\makeatother
+% \end{DescribeEnv}
+%
+% \begin{DescribeMacro}{\makebackmatter}
+% \ifenglish%
+% Similar to \cmd{\maketitle}, the command \cmd{\makebackmatter}
+% typesets all the back matter information at the place where it
+% appears. The information is listed in the following order, when
+% available: %
+% \else%
+% Comme \cmd{\maketitle}, la commande \cmd{\makebackmatter} affiche
+% les parties annexes à l'endroit où elle apparait. Les rubriques
+% sont présentées dans l'ordre suivant, le cas échéant: %
+% \fi%
+% \ifenglish supplementary material\else matériel additionnel\fi; %
+% \ifenglish data sharing\else partage des données\fi; %
+% \ifenglish acknowledgements\else remerciements\fi; %
+% \ifenglish funding information\else financement de la
+% recherche\fi; %
+% \ifenglish full ORCID iD of the authors\else versions longues des
+% identifiants ORCID des auteurs\fi.%
+% \ifenglish%
+% The latter is built automatically by the class from the
+% information provided in the commands \cmd{\author}. %
+% \else%
+% Cette dernière rubrique est construite automatiquement par la
+% classe à partir des informations fournies dans les commandes
+% \cmd{\author}. %
+% \fi
+% \end{DescribeMacro}
+%
+% \ifenglish%
+% \subsection{Licensing}
+% \else%
+% \subsection{Octroi de licence}
+% \fi
+% \label{sec:usage:licensing}
+%
+% \begin{DescribeMacro}{\licence}
+% \begin{DescribeMacro}{\license}
+% \ifenglish%
+% You may specify a licence for the manuscript with the command
+% \cmd{\licence} (or its alias \cmd{\license}). We recommend that
+% you include this command with the title and back matter
+% information. %
+% \else%
+% Vous avez la possibilité de préciser un contrat de licence avec la
+% commande \cmd{\licence} (ou \cmd{\license}). Nous vous
+% recommandons d'employer cette commande avec les déclarations des
+% informations de la page de titre et des parties annexes. %
+% \fi
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+%
+% \ifenglish%
+% For articles accepted for publication in {\TheCJS}, the licence
+% statement is added by the publisher. Therefore, any licensing
+% information provided with either the default, \code{review} or
+% \code{supplement} options is ignored by the class. %
+% \else%
+% Pour les articles acceptés pour publication dans {\LaRevue}, la
+% déclaration de licence est ajoutée par la maison d'édition. Par
+% conséquent, tout octroi de licence sera ignoré par la classe avec
+% les options par défaut, \code{review} et \code{supplement}. %
+% \fi%
+%
+% \ifenglish%
+% On the other hand, for the option \code{nocjs}, the licence
+% statement is displayed in the footer of the title page,
+% right-aligned on an odd page, left-aligned on an even page. Make
+% sure to keep the statement short, as the space is limited to a
+% single line. %
+% \else%
+% En revanche, pour l'option \code{nocjs}, la déclaration de licence
+% est affichée dans le pied de page de la page de titre, aligné à
+% droite pour les pages impaires, ou à gauche pour les pages paires.
+% L'espace étant limité à une seule ligne, veillez à utiliser une
+% déclaration courte. %
+% \fi
+%
+% \begin{DescribeMacro}{\ccby}
+% \begin{DescribeMacro}{\ccbysa}
+% \begin{DescribeMacro}{\ccbync}
+% \begin{DescribeMacro}{\ccbyncsa}
+% \begin{DescribeMacro}{\ccbynd}
+% \begin{DescribeMacro}{\ccbyncnd}
+% \ifenglish%
+% You may use the commands from \autoref{tab:licencing} to
+% identify %
+% \else%
+% Vous pouvez utiliser les commandes du \autoref{tab:licencing} pour
+% identifier un contrat %
+% \fi%
+% \href{https://creativecommons.org}{Creative Commons} %
+% \ifenglish%
+% licences in your licence statement. All commands have a starred
+% variant (name followed by ``\code{*}'') that follows the licence
+% icons by a matching copyright icon. See %
+% \else%
+% dans la déclaration de licence. Toutes les commandes comportent une
+% variante étoilée (nom suivi de «\code{*}») pour ajouter un symbole
+% de copyright coordonné aux autres symboles. Consultez %
+% \fi%
+% \href{https://creativecommons.org/about/cclicenses}{%
+% \emph{About CC Licenses}} %
+% \ifenglish%
+% for more information on Creative Commons licences and how to apply
+% them. %
+% \else%
+% (en anglais) pour en savoir plus sur les licences Creative Commons
+% et leur utilisation. %
+% \fi
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+%
+% \begin{table}
+% \centering
+% \ifenglish%
+% \caption{Commands to typeset the icons for the main Creative
+% Commons licences. All commands feature a starred variant that
+% add a matching copyright icon.} %
+% \else%
+% \caption{Commandes pour afficher les logos des principales
+% licences Creative Commons. Toutes les commandes comportent une
+% variante étoilée qui ajoute un symbole de copyright coordonné.} %
+% \fi
+% \label{tab:licencing}
+% \begin{tabular}{lll}
+% \toprule
+% \ifenglish Command\else Commande\fi &
+% \ifenglish Output \else Résultat\fi &
+% \ifenglish Starred variant \else Variante étoilée\fi \\
+% \midrule
+% \cmd{\ccby} & \ccby & \ccby* \\
+% \cmd{\ccbysa} & \ccbysa & \ccbysa* \\
+% \cmd{\ccbync} & \ccbync & \ccbync* \\
+% \cmd{\ccbyncsa} & \ccbyncsa & \ccbyncsa* \\
+% \cmd{\ccbynd} & \ccbynd & \ccbynd* \\
+% \cmd{\ccbyncnd} & \ccbyncnd & \ccbyncnd* \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% \ifenglish%
+% For example, the licence statement that appears on the title page of
+% this document was created with the following command:
+% \else%
+% À titre d'exemple, la déclaration de licence qui figure au pied de
+% la page de titre du présent document a été composée avec la commande
+% suivante: %
+% \fi
+% \begin{quote}
+% \cmd{\licence}\code{\{\{}\cmdprint{\ccbysa*}\code{\} {\year}, Statistical Society of Canada \{}\cmdprint{\textbar}\code{\}} \\
+% \verb+ +\code{Société canadienne de statistique\}}
+% \end{quote}
+%
+% \ifenglish%
+% \subsection{Mathematics}
+% \else%
+% \subsection{Mathématiques}
+% \fi
+% \label{sec:usage:mathematics}
+%
+% \ifenglish%
+% The class automatically loads the packages %
+% \else%
+% La classe charge d'office les paquetages %
+% \fi%
+% \href{https://ctan.org/pkg/amsmath}{\pkg{amsmath}}, %
+% \href{https://ctan.org/pkg/amsmath}{\pkg{amsthm}} %
+% \ifenglish%
+% and, when the document is compiled with {\XeLaTeX}, %
+% \else%
+% et, lorsque le document est compilé avec {\XeLaTeX},
+% \fi%
+% \href{https://ctan.org/pkg/unicode-math}{\pkg{unicode-math}}. %
+% \ifenglish%
+% The class also defines a number of commands and environments to
+% standardize the typesetting of mathematical content in {\TheCJS}.
+% \else%
+% Elle définit également des commandes et des environnements pour
+% assurer une mise en forme standardisée des mathématiques dans
+% {\LaRevue}.
+% \fi
+%
+% \ifenglish%
+% \autoref{tab:math} provides a summary of the additional commands
+% defined by the class. %
+% \else%
+% Le \autoref{tab:math} présente un sommaire des commandes
+% additionnelles définies par la classe. %
+% \fi
+%
+% \begin{table}
+% \ifenglish%
+% \caption{Additional commands for mathematical symbols and
+% operators defined by the class {\CJSclass}}
+% \else%
+% \caption{Commandes additionnelles pour les symboles et opérateurs
+% mathématiques définies par la classe {\CJSclass}}
+% \fi
+% \label{tab:math}
+% \centering
+% \begin{tabular}{llll}
+% \toprule
+% \ifenglish Command\else Commande\fi & Description &
+% \ifenglish Example\else Exemple\fi &
+% \ifenglish Output\else Résultat\fi \\
+% \midrule
+% \cmd{\Pr} &
+% \ifenglish probability \else probabilité \fi &
+% \cmdprint{\Pr}\code{[X = x]} & $\Pr[X = x]$ \\
+% \cmd{\E} &
+% \ifenglish expected value \else espérance \fi &
+% \cmdprint{\E}\code{[X]} & $\E[X]$ \\
+% \cmd{\Var} &
+% variance &
+% \cmdprint{\Var}\code{[X]} & $\Var[X]$ \\
+% \cmd{\Cov} &
+% covariance &
+% \cmdprint{\Cov}\code{(X, Y)} & $\Cov(X, Y)$ \\
+% \cmd{\corr} &
+% \ifenglish correlation \else corrélation \fi &
+% \cmdprint{\corr}\code{(X, Y)} & $\corr(X, Y)$ \\
+% \cmd{\prdist} &
+% \ifenglish probability distribution \else loi de probabilité \fi &
+% \cmdprint{\prdist}\code{\{N\}} & $\prdist{N}$ \\
+% \addlinespace
+% \cmd{\mat} &
+% \ifenglish matrix or vector \else matrice ou vecteur \fi &
+% \cmdprint{\mat}\code{\{A\}} & $\mat{A}$ \\
+% \cmd{\trsp} &
+% \ifenglish transposition \else transposée \fi &
+% \cmdprint{\mat}\code{\{A\}}\cmdprint{\trsp} & $\mat{A}\trsp$ \\
+% \cmd{\tr} &
+% trace &
+% \cmdprint{\tr}\code{(}\cmdprint{\mat}\code{\{A\})} & $\tr(\mat{A})$ \\
+% \cmd{\diag} &
+% \ifenglish diagonal \else diagonale \fi &
+% \cmdprint{\diag}\code{(}\cmdprint{\mat}\code{\{A\})} & $\diag(\mat{A})$ \\
+% \addlinespace
+% \cmd{\Nset} &
+% \ifenglish natural numbers \else nombres naturels \fi &
+% \cmdprint{\Nset} & $\Nset$ \\
+% \cmd{\Zset} &
+% \ifenglish integers \else nombres entiers \fi &
+% \cmdprint{\Zset} & $\Zset$ \\
+% \cmd{\Qset} &
+% \ifenglish rational numbers \else nombres rationnels \fi &
+% \cmdprint{\Qset} & $\Qset$ \\
+% \cmd{\Rset} &
+% \ifenglish real numbers \else nombres réels \fi &
+% \cmdprint{\Rset} & $\Rset$ \\
+% \cmd{\Cset} &
+% \ifenglish complex numbers \else nombres complexes \fi &
+% \cmdprint{\Cset} & $\Cset$ \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% \begin{DescribeMacro}{\Pr}
+% \begin{DescribeMacro}{\E}
+% \begin{DescribeMacro}{\Var}
+% \begin{DescribeMacro}{\Cov}
+% \begin{DescribeMacro}{\corr}
+% \ifenglish%
+% {\LaTeX} provides a large number of commands to typeset the most
+% common (and many not so common) mathematical operators; if needed
+% see the %
+% \else%
+% {\LaTeX} définit plusieurs commandes pour les opérateurs
+% mathématiques usuels; consultez au besoin le document %
+% \fi
+% \href{https://ctan.org/pkg/short-math-guide}{\emph{Short Math Guide for \LaTeX}}.%
+% \ifenglish%
+% In addition, use the commands \cmd{\Pr}\footnote{%
+% The class redefines the standard command \cmdprint{\Pr}.}, %
+% \cmd{\E}, \cmd{\Var}, \cmd{\Cov} and \cmd{\corr} to uniformly
+% typeset the operators for expected value, variance, covariance,
+% and correlation. These commands have no arguments, so it is
+% your responsibility to provide delimiters around the operands. %
+% \else%
+% Utilisez ensuite les commandes \cmd{\Pr}\footnote{%
+% La classe redéfinit la commande standard \cmdprint{\Pr}.}, %
+% \cmd{\E}, \cmd{\Var}, \cmd{\Cov} et \cmd{\corr} pour entrer de
+% manière uniforme les opérateurs de probabilité, d'espérance, de
+% variance, de covariance et de corrélation. Ces commandes ne
+% prennent aucun argument. Il vous revient donc d'employer les
+% délimiteurs appropriés autour des opérandes. %
+% \fi
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+%
+% \begin{DescribeMacro}{\prdist}
+% \ifenglish%
+% The command \cmd{\prdist} typesets the symbol for a probability
+% distribution. For example: %
+% \else%
+% La commande \cmd{\prdist} permet de composer le symbole d'une
+% distribution de probabilité. Par exemple: %
+% \fi
+% \begin{tabbing}
+% \hspace*{2.5em}\=\cmd{\prdist}\code{\{E\}(\cmd{\lambda})}%
+% \quad\=$\rightarrow$ \quad\=$\prdist{N}(0, 1)$ \quad\=\kill
+% \>\cmd{\prdist}\code{\{N\}(0, 1)}%
+% \>$\rightarrow$ %
+% \>$\prdist{N}(0, 1)$ %
+% \>(\ifenglish Normal\else normale\fi) \\
+% \>\cmd{\prdist}\code{\{P\}(\cmd{\lambda})} %
+% \>$\rightarrow$ %
+% \>$\prdist{P}(\lambda)$ %
+% \>(Poisson) \\
+% \>\cmd{\prdist}\code{\{E\}(\cmd{\lambda})} %
+% \>$\rightarrow$ %
+% \>$\prdist{E}(\lambda)$ %
+% \>(\ifenglish Exponential\else exponentielle\fi)
+% \end{tabbing}
+% \end{DescribeMacro}
+%
+% \begin{DescribeMacro}{\mat}
+% \begin{DescribeMacro}{\trsp}
+% \begin{DescribeMacro}{\tr}
+% \begin{DescribeMacro}{\diag}
+% \ifenglish%
+% The command \cmd{\mat} typesets a variable in roman bold, a style
+% often used for matrices and vectors (hence the name of the
+% command). To indicate matrix transposition, use only the command
+% \cmd{\trsp}. The commands \cmd{\tr} and \cmd{\diag} define two
+% other common linear algebra operators, the trace and the
+% diagonal. %
+% \else%
+% La commande \cmd{\mat} compose une variable en romain gras, ce qui
+% est souvent utilisé pour les matrices et les vecteurs (d'où le nom
+% de la commande). Pour indiquer la transposée d'une matrice,
+% utilisez uniquement la commande \cmd{\trsp}. Les commandes
+% \cmd{\tr} et \cmd{\diag} définissent deux autres opérateurs
+% courants en algèbre linéaire, la trace et la diagonale. %
+% \fi
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+%
+% \begin{DescribeMacro}{\Nset}
+% \begin{DescribeMacro}{\Zset}
+% \begin{DescribeMacro}{\Qset}
+% \begin{DescribeMacro}{\Rset}
+% \begin{DescribeMacro}{\Cset}
+% \ifenglish%
+% To ensure a uniform representation of number sets, use the class
+% commands %
+% \else%
+% Pour assurer représentation uniforme des ensembles de nombres,
+% utilisez les commandes de la classe %
+% \fi%
+% \cmd{\Nset}, %
+% \cmd{\Zset}, %
+% \cmd{\Qset}, %
+% \cmd{\Rset}, %
+% \ifenglish and \else et \fi %
+% \cmd{\Cset} %
+% \ifenglish%
+% to typeset the sets of natural numbers, integers, rational
+% numbers, real numbers and complex numbers, respectively. %
+% \else%
+% pour composer les symboles des ensembles des nombres naturels,
+% entiers, rationnels, réels et complexes, dans l'ordre. %
+% \fi
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+%
+% \ifenglish%
+% You may define new mathematical operators in the preamble of your
+% document. To do so, use the command \cmd{\DeclareMathOperator} of
+% \pkg{amsmath}; see Section~5 of the package documentation for more
+% details. %
+% \else%
+% Vous pouvez définir de nouveaux opérateurs dans le préambule de
+% votre document. Utilisez pour ce faire la commande
+% \cmd{\DeclareMathOperator} de \pkg{amsmath}; consultez la section~5
+% de la documentation du paquetage pour de plus amples informations. %
+% \fi
+%
+% \ifenglish%
+% \autoref{tab:theorem} lists the theorem-like environments defined by
+% the class. The environment \code{proof} defined by \code{amsthm} is
+% also available. All these environments accept an optional argument
+% to provide additional information in the heading, such as the name of
+% the theorem or its author. Here is a brief overview of the style of
+% the environments: %
+% \else%
+% Le \autoref{tab:theorem} établit la liste des environnements de type
+% théorème définis par la classe. À ceux-ci s'ajoute l'environnement
+% \code{proof} déjà défini par \pkg{amsthm}. Ces environnements
+% acceptent tous un argument optionnel pour de l'information à inclure
+% entre parenthèses dans l'intitulé, tel que le nom du théorème ou
+% celui de son auteur. Voici un bref aperçu du style de ces
+% environnements: %
+% \fi
+%
+% \begin{center}
+% \def\TEXT{\ifenglish Text\else Texte\fi}
+% \hfill
+% \begin{minipage}{0.45\linewidth}
+% \begin{theorem}
+% \label{thm} \TEXT.
+% \end{theorem}
+% \begin{lemma}[\ifenglish Famous lemma\else Lemme célèbre\fi]
+% \TEXT.
+% \end{lemma}
+% \begin{proposition}
+% \TEXT.
+% \end{proposition}
+% \begin{corollary}
+% \TEXT.
+% \end{corollary}
+% \end{minipage}
+% \hfill
+% \begin{minipage}{0.45\linewidth}
+% \begin{definition}
+% \TEXT.
+% \end{definition}
+% \begin{algorithm}
+% \TEXT.
+% \end{algorithm}
+% \begin{remark}
+% \TEXT.
+% \end{remark}
+% \begin{proof}
+% \TEXT.
+% \end{proof}
+% \end{minipage}
+% \hspace*{\fill}
+% \end{center}
+%
+% \begin{table}
+% \ifenglish%
+% \caption{Theorem-like environments defined by the class
+% {\CJSclass}. The last column refers to the styles defined by
+% \pkg{amsthm}.} %
+% \else%
+% \caption{Environnements de type théorème définis dans la classe
+% {\CJSclass}. La dernière colonne fait référence aux
+% styles de théorèmes définis par \pkg{amsthm}.} %
+% \fi
+% \label{tab:theorem}
+% \centering
+% \begin{tabular}{>{\ttfamily}lll>{\texttt}l}
+% \toprule
+% {\normalfont \ifenglish Environment\else Environnement\fi} &
+% \ifenglish English title\else Titre anglais\fi &
+% \ifenglish French title\else Titre français\fi & Style \\
+% \midrule
+% theorem & Theorem & Théorème & \code{plain} \\
+% lemma & Lemma & Lemme & \code{plain} \\
+% proposition & Proposition & Proposition & \code{plain} \\
+% corollary & Corollary & Corollaire & \code{plain} \\
+% definition & Definition & Définition & \code{definition} \\
+% algorithm & Algorithm & Algorithme & \code{definition} \\
+% remark & Remark & Remarque & \code{remark} \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% \ifenglish%
+% If you need to define additional theorem-like environments, use the
+% features of \pkg{amsthm}, in particular the commands
+% \cmd{\theoremstyle} and \cmd{\newtheorem}. %
+% \else%
+% Si vous devez définir un nouveau type de théorème, utilisez les
+% fonctionnalités de \pkg{amsthm}, notamment les commandes
+% \cmd{\theoremstyle} et \cmd{\newtheorem}. %
+% \fi
+%
+% \ifenglish%
+% Finally, please follow the advice below when typesetting
+% mathematics: %
+% \else%
+% Enfin, veillez à respecter les quelques autres recommandations
+% ci-dessous pour la mise en forme des équations mathématiques:
+% \fi
+% \begin{itemize}
+% \item %
+% \ifenglish%
+% Unless central or essential to the flow of the discussion,
+% mathematical arguments should be deferred to the appendix or to
+% the supplementary material (see
+% \autoref{sec:typesetting:structure}). %
+% \else%
+% À moins qu'ils ne s'avèrent essentiels à la discussion, placez les
+% développements mathématiques en annexe ou dans le matériel
+% additionnel (voir la \autoref{sec:typesetting:structure}). %
+% \fi
+% \item %
+% \ifenglish%
+% Try to avoid double subscripts, and never use triple subscripts. %
+% \else%
+% Évitez si possible les indices doubles et n'utilisez jamais
+% d'indices triples. %
+% \fi
+% \item %
+% \ifenglish%
+% Always use the command \cmdprint{\ell} to obtain the symbol
+% $\ell$. Avoid using the letter ``l'' as a symbol, as it may be
+% difficult to distinguish from the numeral $1$. %
+% \else%
+% Utilisez toujours \cmdprint{\ell} pour produire le symbole $\ell$.
+% Évitez d'utiliser la lettre «l» comme symbole, car elle peut
+% s'avérer difficile à distinguer du chiffre $1$. %
+% \fi
+% \item %
+% \ifenglish%
+% Avoid in-line fractions; if you need one, write it in the form
+% \code{a/b} rather than \cmdprint{\frac}\code{\{a\}\{b\}}. %
+% \else%
+% Évitez les fractions au fil du texte. Si vous ne pouvez faire
+% autrement, inscrivez-les sous la forme \code{a/b} plutôt que
+% \cmdprint{\frac}\code{\{a\}\{b\}}. %
+% \fi
+% \item %
+% \ifenglish%
+% Avoid using \cmdprint{\left} and \cmdprint{\right} to increase the
+% size of brackets in in-line expressions because this may also
+% increase the spacing between lines. %
+% \else%
+% Évitez d'augmenter la taille des délimiteurs avec \cmdprint{\left}
+% et \cmdprint{\right} dans les équations au fil du texte, car
+% cela risque d'augmenter aussi l'interligne. %
+% \fi
+% \item %
+% \ifenglish%
+% In enumerations, use the intelligent command \cmdprint{\dots} or
+% the semantic commands %
+% \else%
+% Dans les énumérations, utilisez la commande intelligente
+% \cmdprint{\dots} ou les commandes sémantiques %
+% \fi%
+% \cmdprint{\dotssc}, %
+% \cmdprint{\dotssb}, %
+% \cmdprint{\dotssm}, %
+% \cmdprint{\dotssi}, %
+% \cmdprint{\dotsso} %
+% \ifenglish%
+% from \pkg{amsmath} rather than \cmdprint{\ldots} and
+% \cmdprint{\cdots} (see Section~4.3 of the package documentation
+% for more information). %
+% \else%
+% de \pkg{amsmath} en lieu et place de \cmdprint{\ldots} et
+% \cmd{\cdots} (consultez la section~4.3 de la documentation du
+% paquetage pour de plus amples informations). %
+% \fi
+% \item %
+% \ifenglish%
+% Use ``$j \in \{1, \dots, n\}$'' to describe an index set rather
+% than ``$j = 1, \dots, n$''. Furthermore, enumerations should list
+% the first and last element only, that is, write
+% ``$j = 1, \dots, n$'' rather than ``$j = 1, 2, \dots, n$''. (All
+% the ellipses here are typeset with \cmd{\dots}.) %
+% \else%
+% Utilisez «$j \in \{1, \dots, n\}$» pour décrire les valeurs d'un
+% indice plutôt que «$j = 1, \dots, n$». De plus, indiquez
+% uniquement les premier et dernier termes dans les énumérations:
+% «$j = 1, \dots, n$» plutôt que «$j = 1, 2, \dots, n$». (Tous les
+% points de suspensions dans la présente puce ont été composés avec
+% la commande \cmd{\dots}.) %
+% \fi
+% \item %
+% \ifenglish%
+% Mathematical expressions and equations need punctuation like
+% regular text. %
+% \else%
+% Les expressions et équations mathématiques requièrent de la
+% ponctuation comme le texte normal. %
+% \fi
+% \item %
+% \ifenglish%
+% Avoid starting a sentence with a mathematical symbol. %
+% \else%
+% Ne débutez pas une phrase par un symbole mathématique. %
+% \fi
+% \item %
+% \ifenglish%
+% Number the equations consecutively and \emph{only} equations that
+% are referred to in the text. Use the command \cmd{\eqref} to cite
+% the number of an equation, preceded by the appropriate description
+% (``equation'', ``inequality'', ``relation'', etc.) and an
+% unbreakable space: %
+% \else%
+% Numérotez les équations de manière consécutive et
+% \emph{uniquement} celles auxquelles le texte fait référence.
+% Utilisez la commande \cmd{\eqref} pour citer le numéro d'une
+% équation. Précédez celui-ci par une description appropriée
+% («équation», «inégalité», «relation», etc.), ainsi que par une
+% espace insécable: %
+% \fi
+% \begin{quote}
+% \def\LABEL{\ifenglish label\else étiquette\fi}
+% \def\EQN{\ifenglish equation\else équation\fi}
+% \def\INEQ{\ifenglish inequalities\else inégalités\fi}
+% \code{\EQN~}\cmdprint{\eqref}\marg{\LABEL} \\
+% \code{\INEQ~}\cmdprint{\eqref}\marg{\LABEL}\code{{-}{-}}\cmdprint{\eqref}\marg{\LABEL}
+% \end{quote}
+% \end{itemize}
+%
+% \ifenglish%
+% \subsection{Computer code and software}
+% \else%
+% \subsection{Code informatique et logiciels}
+% \fi
+% \label{sec:usage:software}
+%
+% \ifenglish%
+% The class does not offer any special features to typeset listings of
+% computer code. If you need to display code, we recommend that you
+% take advantage of specialized packages such as %
+% \else%
+% La classe ne propose aucune fonctionnalité particulière pour la
+% présentation du code infor\-ma\-tique. Nous vous recommandons
+% d'avoir recours à des paquetages spécialisés comme %
+% \fi
+% \href{https://ctan.org/pkg/fancyvrb}{\pkg{fancyvrb}} %
+% \ifenglish or \else ou \fi%
+% \href{https://ctan.org/pkg/listings}{\pkg{listings}}. %
+% \ifenglish%
+% If you use \proglang{R} for your statistical analysis, we suggest
+% that you prepare the file using a literate programming system such
+% as %
+% \else%
+% Si vous utilisez \proglang{R} pour effectuer votre analyse
+% statistique, nous vous suggérons de rédiger l'article avec un
+% système de programmation lettrée comme %
+% \fi
+% \href{https://en.wikipedia.org/wiki/Sweave}{Sweave} %
+% \ifenglish or \else ou \fi%
+% \href{https://en.wikipedia.org/wiki/Knitr}{knitr}.
+%
+% \begin{DescribeMacro}{\proglang}
+% \ifenglish%
+% The command \cmd{\proglang} typesets the names of programming
+% languages and software. The class also provides shortcuts for the
+% most common cases; see \autoref{tab:proglang}. %
+% \else%
+% La commande \cmd{\proglang} sert à composer le nom des langages de
+% programmation et des logiciels. La classe compte aussi des
+% raccourcis pour les cas les plus usuels; la liste apparait au
+% \autoref{tab:proglang}. %
+% \fi
+% \end{DescribeMacro}
+%
+% \begin{table}
+% \ifenglish%
+% \caption{List of shortcuts for the names of programming languages
+% and software.}
+% \else%
+% \caption{Liste des raccourcis pour les noms de langages de
+% programmation et de logiciels}
+% \fi
+% \label{tab:proglang}
+% \centering
+% \begin{tabular}{ll}
+% \toprule
+% \ifenglish Software\else Logiciel\fi & \ifenglish Command\else Commande\fi \\
+% \midrule
+% \Rlang & \cmd{\Rlang} \\
+% \SASlang & \cmd{\SASlang} \\
+% \SPSSlang & \cmd{\SPSSlang} \\
+% \Statalang & \cmd{\Statalang} \\
+% \Pylang & \cmd{\Pylang} \\
+% \Julialang & \cmd{\Julialang} \\
+% \Clang & \cmd{\Clang} \\
+% \Cpplang & \cmd{\Cpplang} \\
+% \bottomrule
+% \end{tabular}
+% \end{table}
+%
+% \begin{DescribeMacro}{\pkg}
+% \ifenglish%
+% The command \cmd{\pkg} typesets the names of software packages,
+% extensions or modules. %
+% \else%
+% Utilisez la commande \cmd{\pkg} pour composer le nom des
+% paquetages, extensions ou modules logiciels. %
+% \fi
+% \end{DescribeMacro}
+%
+% \begin{DescribeMacro}{\code}
+% \ifenglish%
+% The command \cmd{\code} typesets code chunks within the
+% text. The command escapes the {\LaTeX} special characters
+% ``\code{_}'', ``\code{~}'' and ``\code{$}''. Therefore, you may
+% write, for example, \cmdprint{\code}\code{\{var_name\}} to get
+% \code{var_name}. %
+% \else%
+% La commande \cmd{\code} sert à composer des extraits de code
+% au fil du texte. Les caractères spéciaux «\code{_}», «\code{~}» et
+% «\code{$}» de {\LaTeX} y sont désactivés. Vous pouvez donc
+% directement entrer, par exemple,
+% \cmdprint{\code}\code{\{var_name\}} pour obtenir
+% \code{var_name}. %
+% \fi
+% \end{DescribeMacro}
+%
+% \ifenglish%
+% \subsection{Appendices}
+% \else%
+% \subsection{Annexes}
+% \fi
+% \label{sec:usage:appendices}
+%
+% \begin{DescribeMacro}{\appendix}
+% \ifenglish%
+% If needed, use the standard command \cmd{\appendix} to indicate
+% the start of the appendices. The command changes the numbering of
+% the following sections to an alphabetic form. %
+% \else%
+% Si votre article le nécessite, utilisez la commande standard
+% \cmd{\appendix} pour indiquer le début des annexes. La commande
+% change la numérotation des sections ultérieures pour un mode
+% alphabétique. %
+% \fi
+% \end{DescribeMacro}
+%
+% \ifenglish%
+% \subsection{Citations and list of references}
+% \else%
+% \subsection{Citations et liste des références}
+% \fi
+% \label{sec:usage:references}
+% \changes{0.9}{2023-10-14}{Document usage of the bibliographic
+% styles.}
+%
+% \ifenglish%
+% Use {\BibTeX} for citations and to generate the list of references.
+% The class relies on the package %
+% \else%
+% Utilisez {\BibTeX} pour les citations et la liste des références. La
+% classe confie la mise en forme des citations au paquetage %
+% \fi%
+% \href{https://ctan.org/pkg/natbib}{\pkg{natbib}}\ifenglish{ }\else. \fi %
+% \ifenglish%
+% to manage and typeset citations. Please ensure you take advantage of
+% the citation commands of \pkg{natbib}, in particular \cmd{\citet}
+% and \cmd{\citep}. %
+% \else%
+% Assurez-vous d'utiliser adéquatement les commandes de citation de
+% \pkg{natbib}, notamment \cmd{\citet} et \cmd{\citep}.%
+% \fi
+%
+% \ifenglish%
+% The class uses its own bibliography styles to typeset the list of
+% references: {\CJSbsten} for articles in English, and {\CJSbstfr} for
+% articles in French. These styles support all the standard {\BibTeX}
+% entry types %
+% \else%
+% La classe a recours à ses propres styles de bibliographie pour
+% composer la liste des références: {\CJSbstfr} pour les articles en
+% français et {\CJSbsten} pour les articles en anglais. Ces deux
+% styles prennent en charge tous les types de documents standards de
+% {\BibTeX} %
+% \fi%
+% (\code{article}, \code{book}, \code{proceedings}, etc.) %
+% \ifenglish%
+% and all the standard fields %
+% \else%
+% et tous les champs standards %
+% \fi%
+% (\code{author}, \code{title}, \code{journal}, etc.). %
+% \ifenglish%
+% Furthermore, the styles introduce support for the following
+% fields: %
+% \else%
+% De plus, ils ajoutent les champs suivants: %
+% \fi%
+% \begin{description}[font=\mdseries\ttfamily,style=nextline,leftmargin=3em]
+% \item[doi] %
+% \ifenglish%
+% The Digital Object Identifier (DOI) of a resource. Enter the value
+% only as \meta{prefix}\code{/}\meta{suffix} (for example:
+% \code{10.1000/182}). The styles automatically create a hyperlink
+% to the resource. %
+% \else%
+% L'identificateur d'objet numérique (DOI) d'une ressource. Entrez
+% uniquement la valeur sous la forme
+% \meta{préfixe}\code{/}\meta{suffixe} (par exemple:
+% \code{10.1000/182}). Les styles créent automatiquement un
+% hyperlien vers la ressource. %
+% \fi%
+% \item[isbn] %
+% \ifenglish%
+% The International Standard Book Number (ISBN) of a book. When
+% present, the ISBN is displayed in the list of references. %
+% \else%
+% 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. %
+% \fi%
+% \item[issn] %
+% \ifenglish%
+% The International Standard Serial Number (ISSN) of a serial
+% publication, such as a magazine. Although allowed in the
+% bibliographic database, the number is not displayed in the list of
+% references. %
+% \else%
+% 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.%
+% \fi%
+% \item[language] %
+% \ifenglish%
+% The language of the reference. Including this information in an
+% entry allows to hyphenate the words in the title according to the
+% rules of its language. %
+% \else%
+% La langue de la référence. 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. \fi%
+% \item[url] %
+% \ifenglish%
+% A URL for the reference. If both a URL and a DOI are present in
+% the database, the latter takes precedence. %
+% \else%
+% 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é. %
+% \fi%
+% \end{description}
+%
+% \begin{DescribeMacro}{\bibliography}
+% \ifenglish%
+% The command \cmd{\bibliography} inserts the list of references at
+% the point where it appears. Its arguments are the root names,
+% separated by commas, of the bibliographic databases. Use this
+% command to generate your reference list. %
+% \else%
+% La commande \cmd{\bibliography} insère la liste des références à
+% l'endroit où celle-ci apparait. Elle prend en argument les noms de
+% base des fichiers de données bibliographiques, séparés par des
+% virgules. Utilisez cette commande pour produire la liste des
+% références de votre article. %
+% \fi
+% \end{DescribeMacro}
+%
+% \ifenglish%
+% \subsection{Writing in French}
+% \else%
+% \subsection{Rédaction en français}
+% \fi
+% \label{sec:usage:french}
+%
+% \ifenglish%
+% The class is also carefully configured to prepare manuscripts in
+% French. If you are writing in this language, please read the
+% corresponding section in the French version of the documentation for
+% additional details. %
+% \else%
+% Il est fortement recommandé d'enregistrer le code source d'un
+% article en français dans le codage de caractères %
+% \href{https://fr.wikipedia.org/wiki/UTF-8}{UTF-8} %
+% et de le compiler avec {\XeLaTeX}. Vous pourrez ainsi entrer les
+% lettres accentuées directement au clavier («\code{é}») sans devoir
+% passer par les commandes {\TeX} («\code{{\bs}'e}»).
+%
+% Lorsque le français est la langue principale, le module %
+% \href{https://ctan.org/pkg/babel-french}{\pkg{babel-french}} %
+% modifie plusieurs règles de présentation générale d'un document
+% (listes, notes de bas de page, retrait des premiers paragraphes). La
+% mise en page d'un article en français différera donc de celle d'un
+% article en anglais.
+%
+% La classe {\CJSclass} comporte quelques éléments de
+% configuration spéciaux pour le français:
+% \begin{itemize}
+% \item Une espace fine est utilisée comme séparateur des milliers
+% dans les nombres saisis avec la commande \cmdprint{\nombre} du
+% paquetage %
+% \href{https://ctan.org/pkg/numprint}{\pkg{numprint}} %
+% (qui est par ailleurs chargé par la classe avec l'option
+% \code{autolanguage}).
+% \item Les guillemets français «~» peuvent être saisis directement
+% avec les touches corres\-pon\-dantes au clavier.
+% \item Les intitulés des tableaux et des figures sont, dans l'ordre,
+% «Tableau» et «Figure», composés sans petites capitales.
+% \end{itemize}
+% \fi
+%
+% \ifenglish%
+% \section{Further typesetting instructions}
+% \else%
+% \section{Directives de composition et de mise en page}
+% \fi
+% \label{sec:typesetting}
+%
+% \ifenglish%
+% It is your responsibility to submit a manuscript in accordance with
+% the presentation rules of {\TheCJS}. We suggest that you start from
+% one of the templates provided and keep the {\LaTeX} code as simple
+% as possible. In particular, avoid including packages or defining
+% commands that are not necessary. %
+% \else%
+% Vous avez la responsabilité de présenter un manuscript qui respecte
+% les règles de présentation matérielle de {\LaRevue}. Votre tâche
+% sera grandement facilitée si vous partez d'un des gabarits fournis
+% avec la classe et que vous gardez le code {\LaTeX} le plus simple
+% possible. En particulier, veillez à ne pas charger des paquetages ou
+% définir des commandes inutiles. %
+% \fi
+%
+% \ifenglish%
+% The class {\CJSclass} automatically loads the following packages
+% that may be useful: %
+% \else%
+% La classe {\CJSclass} charge d'emblée les paquetages suivants qui
+% peuvent vous être utiles: %
+% \fi
+% \pkg{amsmath}, %
+% \pkg{amsthm}, %
+% \pkg{babel}, %
+% \pkg{enumitem}, %
+% \pkg{fontawesome5}, %
+% \pkg{graphicx}, %
+% \pkg{natbib}, %
+% \pkg{numprint}, %
+% \pkg{relsize}, %
+% \pkg{url}\ifenglish, and \else\ et \fi %
+% \pkg{xcolor}. %
+% \ifenglish%
+% Furthermore, as mentioned before, the class is based on
+% \class{memoir}, which loads or emulates more than 30
+% popular packages\footnote{%
+% See Section~18.24 of the documentation of \class{memoir} for a
+% complete list, or the compilation log file of a document using
+% {\CJSclass}.}. %
+% All the features of \class{memoir} are available in {\CJSclass}. %
+% \else%
+% De plus, la classe est basée sur \class{memoir} qui, elle-même,
+% incorpore d'office une trentaine de paquetages\footnote{%
+% Consultez la section~18.24 de la documentation de \class{memoir}
+% pour la liste, ou encore le journal de la compilation (\emph{log})
+% d'un document utilisant la classe {\CJSclass}.}. %
+% L'intégralité des fonctionnalités de \class{memoir} se retrouve dans
+% {\CJSclass}.
+% \fi
+%
+% \ifenglish%
+% \subsection{Margins and page layout}
+% \else%
+% \subsection{Marges et mise en page}
+% \fi
+% \label{sec:typesetting:margins}
+%
+% \ifenglish%
+% Do not change the page layout, margins, fonts, or character
+% encoding. Note that the package \cmd{geometry} is incompatible with
+% this class and loading it in your preamble will give a compilation
+% error. %
+% \else%
+% Vous ne devez en aucun temps modifier la mise en page, les marges,
+% les polices de caractères ou le codage des caractères. D'ailleurs,
+% le paquetage \pkg{geometry} n'est pas compatible avec la classe et
+% son chargement dans le préambule du document cause une erreur lors
+% de la compilation. %
+% \fi
+%
+% \ifenglish%
+% \subsection{Hyperlinks}
+% \else%
+% \subsection{Hyperliens}
+% \fi
+% \label{sec:typesetting:hyperlinks}
+%
+% \ifenglish%
+% In addition to the packages mentioned above, the class loads
+% \pkg{hyperref} to insert internal and external hyperlinks into the
+% PDF. %
+% \else%
+% Outre les paquetages mentionnés ci-dessus, la classe charge
+% \pkg{hyperref} pour insérer des hyperliens internes et externes dans
+% le document PDF. \fi
+%
+% \begin{DescribeMacro}{\autoref}
+% \ifenglish%
+% To make the better use of the features of \pkg{hyperref}, you need
+% to label with \cmd{\label} any text element you wish to link to
+% (section, figure, table, etc.), and then to create a reference to
+% this element with the command \cmd{\autoref}. Contrary to the
+% standard command \cmd{\ref}, \cmd{\autoref} automatically provides
+% a description label for the reference, and this description
+% becomes part of the internal link: %
+% \else%
+% Pour tirer profit au maximum des fonctionnalités de
+% \pkg{hyperref}, vous devez d'abord étiqueter avec
+% \cmdprint{\label} tout élément auquel vous souhaitez faire
+% référence (section, figure, tableau, etc.), pour ensuite insérer
+% la référence dans le texte avec la commande \cmd{\autoref}.
+% Contrairement à la commande standard \cmd{\ref}, la commande
+% \cmd{\autoref} ajoute automatiquement une description de l'élément
+% qui fait partie intégrante de l'hyperlien: %
+% \fi
+% \begin{quote}
+% \def\TEXT{\ifenglish following \else selon le \fi}
+% \def\LABEL{\ifenglish label\else étiquette\fi}
+% \code{\TEXT}\cmdprint{\autoref}\marg{\LABEL}
+% \quad$\rightarrow$\quad
+% \TEXT \autoref{thm}
+% \end{quote}
+% \end{DescribeMacro}
+% \ifenglish%
+% The exception to this rule is equations. As previously
+% mentioned in \autoref{sec:usage:mathematics}, you must cite
+% equations using the command \cmd{\eqref} and write the appropriate
+% description yourself. %
+% \else%
+% L'exception à cette règle: les équations. Tel que mentionné à la
+% \autoref{sec:usage:mathematics}, vous devez faire référence à
+% celles-ci avec la commande \cmd{\eqref} et ajouter la description
+% vous-même. %
+% \fi
+%
+% \ifenglish%
+% The class defines the English and French description labels for all
+% sectioning levels, for figures and tables, and for all the
+% theorem-like environments introduced in
+% \autoref{sec:usage:mathematics}. If you need to define a
+% description label of a new environment \meta{env}, use the
+% following command in the preamble of your document:%
+% \else%
+% La classe définit les descriptions pour les différents niveaux de
+% sections, pour les figures et les tableaux, ainsi que pour tous les
+% environnements de type théorème mentionnés à la
+% \autoref{sec:usage:mathematics}. Si vous devez définir une
+% description pour un nouvel environnement \meta{env}, insérez la
+% commande suivante dans le préambule de votre document: %
+% \fi
+% \begin{quote}
+% \cmdprint{\addto}\cmdprint{\extras}\code{\languagename}\code{\{}\cmdprint{\def}\code{\bs}\meta{env}\code{autorefname}\marg{description}\code{\}}
+% \end{quote}
+% \ifenglish%
+% (If the main language of the article is French, replace
+% \cmdprint{\extras}\code{\languagename} by
+% \cmdprint{\extrasfrench}.)\footnote{%
+% For further details, see Section~6 of the documentation of
+% \pkg{hyperref}.} %
+% \else%
+% (Si la langue principale de l'article est l'anglais, remplacez
+% \cmdprint{\extras}\code{\languagename} par
+% \cmdprint{\extrasenglish}.)\footnote{%
+% Consultez au besoin la section~6 de la documentation de
+% \pkg{hyperref}.} %
+% \fi
+%
+% \begin{DescribeMacro}{\texorpdfstring}
+% \changes{0.93}{2023-11-07}{Fix the name of a command from
+% \cs{textorpdfstring} to the correct \cs{texorpdfstring} in the
+% documentation.}
+% \ifenglish%
+% The compilation of your manuscript may halt with the error message
+% \begin{quote}
+% \code{Improper alphabetic constant}
+% \end{quote}
+% The reason is most likely that you use a mathematical symbol in a
+% section title that \pkg{hyperref} is not able to properly
+% translate for the table of contents of the PDF. If you need
+% the symbol, try wrapping it in \cmd{\texorpdfstring}. This
+% command takes two arguments: the symbol that should appear in the
+% document, and the replacement text for the table of contents. For
+% example, you would replace %
+% \else%
+% Il se pourrait que la compilation de votre article échoue avec le
+% message d'erreur
+% \begin{quote}
+% \code{Improper alphabetic constant}
+% \end{quote}
+% La cause en est probablement un symbole mathématique placé dans un
+% titre de section que \pkg{hyperref} n'arrive pas à traduire pour
+% la table des matières du fichier PDF. Si vous ne pouvez vous
+% passer du symbole dans le titre, essayez d'utiliser la commande
+% \cmd{\texorpdfstring} dans celui-ci. Cette commande requiert deux
+% arguments: le texte qui doit apparaitre dans le document et celui
+% qui peut figurer dans la table des matières. Par exemple, vous
+% devriez remplacer %
+% \fi%
+% \def\TEXT{Contribution \ifenglish of \else de \fi}
+% \begin{quote}
+% \cmdprint{\subsection}\code{\{\TEXT $}\cmdprint{\beta}\code{$\}}
+% \end{quote}
+% \ifenglish by\else par\fi
+% \begin{quote}
+% \cmdprint{\subsection}\code{\{\TEXT}\cmdprint{\texorpdfstring}\code{\{$}\cmdprint{\beta}\code{$\}\{beta\}\}}
+% \end{quote}
+% \ifenglish%
+% or, even better if you can enter Unicode characters on the
+% keyboard, by %
+% \else%
+% ou même, si vous pouvez entrer des caractères Unicode au clavier,
+% par %
+% \fi
+% \begin{quote}
+% \cmdprint{\subsection}\code{\{\TEXT}\cmdprint{\texorpdfstring}\code{\{$}\cmdprint{\beta}\code{$\}\{β\}\}}
+% \end{quote}
+% \end{DescribeMacro}
+%
+% \warningbox{%
+% \ifenglish%
+% Do not insert hyperlinks to external resources. If you need to
+% specify a URL, use the command \cmd{\url}. %
+% \else%
+% N'insérez pas d'hyperliens vers des ressources externes dans votre
+% article. Si vous devez spécifier une adresse URL, utilisez la
+% commande \cmd{\url}. %
+% \fi}
+%
+% \ifenglish%
+% \subsection{Figures and tables}
+% \else%
+% \subsection{Figures et tableaux}
+% \fi
+% \label{sec:typesetting:figures}
+%
+% \ifenglish%
+% Place all figures and tables in the appropriate floating environment
+% \code{figure} or \code{table}. The caption, specified with
+% \cmd{\caption}, should appear \emph{under} the figures and
+% \emph{above} the tables. You must label all figures and tables with
+% \cmdprint{\label} and cite them in the text with \cmd{\autoref}. %
+% \else%
+% Placez les figures et les tableaux dans des environnements flottants
+% \code{figure} et \code{table}. La légende produite avec
+% \cmdprint{\caption} doit apparaitre \emph{sous} les figures et
+% \emph{au-dessus} des tableaux. Vous devez obligatoirement étiqueter
+% les figures et tableaux avec \cmdprint{\label} et les citer dans le
+% texte avec \cmd{\autoref}. %
+% \fi
+%
+% \ifenglish%
+% If a figure requires an external file, you must provide it with your
+% final version: see the %
+% \else%
+% Si une figure requiert un fichier externe, vous devrez le fournir
+% avec votre version finale; consultez les %
+% \fi
+% \href{https://authorservices.wiley.com/asset/photos/electronic_artwork_guidelines.pdf}{%
+% \ifenglish Wiley guidelines\else normes de Wiley\fi}. %
+%
+% \ifenglish%
+% Prepare tables using the following guidelines: %
+% \else%
+% Composez les tableaux en suivant les règles suivantes: %
+% \fi
+% \begin{itemize}
+% \item %
+% \ifenglish%
+% no vertical rules\footnote{%
+% Typographic term for lines or borders.}; %
+% \else%
+% aucun filet\footnote{%
+% Terme typographique pour les lignes ou bordures. Le terme
+% anglais équivalent est «\emph{rule}».} %
+% vertical; %
+% \fi
+% \item %
+% \ifenglish%
+% heavier horizontal rule (obtained with \cmdprint{\toprule}) at the
+% top of the table; %
+% \else%
+% filet horizontal gras (obtenu avec \cmdprint{\toprule}) au sommet
+% du tableau; %
+% \fi
+% \item %
+% \ifenglish%
+% lighter dividing rule (obtained with \cmdprint{\midrule}) between
+% the table header and body; %
+% \else%
+% filet horizontal mince (obtenu avec \cmdprint{\midrule}) entre
+% l'entête et le corps du tableau; %
+% \fi
+% \item%
+% \ifenglish%
+% heavier horizontal rule (obtained with \cmdprint{\bottomrule}) at the
+% bottom of the table. %
+% \else%
+% filet horizontal gras (obtenu avec \cmdprint{\bottomrule}) au
+% pied du tableau. %
+% \fi
+% \end{itemize}
+% \ifenglish%
+% The tables of this guide provide useful examples. %
+% \else%
+% Vous pouvez utiliser les tableaux du présent guide comme
+% référence. %
+% \fi
+%
+% \ifenglish%
+% The guidelines above are adapted from the documentation of the
+% package %
+% \else%
+% Les règles ci-dessus sont tirées de la documentation du paquetage %
+% \fi%
+% \href{https://ctan.org/pkg/booktabs}{\pkg{booktabs}}, %
+% \ifenglish%
+% and reading Sections 1--3 is highly recommended. The class
+% \class{memoir} (and therefore {\CJSclass}) emulate all the
+% features of \pkg{booktabs}. %
+% \else%
+% dont la lecture des sections 1--3 est fortementrecommandée. Les
+% fonctionnalités de \pkg{booktabs} sont intégrées à \class{memoir}
+% (et donc à {\CJSclass}). %
+% \fi
+%
+% \ifenglish%
+% \subsection{Article structure}
+% \else%
+% \subsection{Structure de l'article}
+% \fi
+% \label{sec:typesetting:structure}
+%
+% \ifenglish%
+% Your article should not exceed 30~pages. Divide the article into
+% sections using the {\LaTeX} commands %
+% \else%
+% Votre article ne devrait pas dépasser 30~pages. Vous pouvez diviser
+% l'article en sections avec les commandes {\LaTeX} %
+% \fi
+% \cmd{\section}, %
+% \cmd{\subsection}, %
+% \cmd{\subsubsection}, %
+% \cmd{\paragraph} %
+% \ifenglish and \else et \fi%
+% \cmd{\subparagraph}.\ifenglish\footnote{%
+% The class disables the sectioning command \cmdprint{\chapter} of
+% \class{memoir}.}\else\footnote{%
+% La classe désactive la commande \cmdprint{\chapter} de
+% \class{memoir}.}\fi{} %
+% \ifenglish%
+% Only the first three levels are numbered. Enter the titles in
+% sentence style, that is, with only an initial capital. %
+% \else%
+% Seuls les trois premiers niveaux sont numérotés. En français comme
+% en anglais, entrez les titres uniquement avec une majuscule
+% initiale. %
+% \fi
+%
+% \ifenglish%
+% The structure of your article should be the following: %
+% \else%
+% Votre article devrait être structuré comme suit: %
+% \fi
+% \begin{itemize}
+% \item %
+% \ifenglish%
+% The title page created with the command \cmd{\maketitle}. %
+% \else%
+% La page de titre produite avec la commande \cmd{\maketitle}. %
+% \fi
+% \item %
+% \ifenglish%
+% A numbered introduction. %
+% \else%
+% Une introduction numérotée. %
+% \fi
+% \item %
+% \ifenglish%
+% The body of the article divided into sections using the commands
+% above. %
+% \else%
+% Le corps de l'article découpé en sections avec les commandes
+% ci-dessus. %
+% \fi
+% \item %
+% \ifenglish%
+% A numbered conclusion. %
+% \else%
+% Une conclusion numérotée. %
+% \fi
+% \item %
+% \ifenglish%
+% The back matter created with the command \cmd{\makebackmatter}. %
+% \else%
+% Les parties annexes produites avec la commande
+% \cmd{\makebackmatter}. %
+% \fi
+% \item %
+% \ifenglish%
+% (Optional) Appendices --- sections numbered A, B, \dots\ after the
+% command \cmd{\appendix} --- for proofs and longer mathematical
+% arguments. Each appendix must be cited in the main article. %
+% \else%
+% (Optionnel) Les annexes --- des sections numérotées A, B, \dots\
+% suite à la commande \cmd{\appendix} ---- pour les démontrations de
+% théorèmes ou autres longs développements mathématiques. Chaque
+% annexe doit être citée dans l'article. %
+% \fi
+% \item %
+% \ifenglish%
+% The list of references created with the command
+% \cmd{\bibliography}. %
+% \else%
+% La liste des références produite avec \cmd{\bibliography}. %
+% \fi
+% \end{itemize}
+%
+% \ifenglish%
+% The templates provided with the class will guide you through this
+% structure. %
+% \else%
+% Les gabarits fournis avec la classe invitent à suivre cette
+% structure. %
+% \fi
+%
+%
+% \ifenglish%
+% \section{Supplementary material}
+% \else%
+% \section{Matériel additionnel}
+% \fi
+% \label{sec:supplement}
+%
+% \ifenglish%
+% The supplementary material is useful for additional results or
+% information, such as tables and figures, computer code, long
+% mathematical proofs, etc. This material must be cited in the
+% main article, and it is peer reviewed. %
+% \else%
+% Le matériel additionnel sert à diffuser des résultats ou des
+% renseignements supplémentaires, tels que des tableaux et des
+% figures, du code informatique, des longues démonstrations, etc. Le
+% matériel doit être cité dans l'article et il fait l'objet d'une
+% évaluation par le comité de lecture.%
+% \fi
+%
+% \begingroup
+% \makeatletter
+% \let\PREFIX\CJS@suppprefix
+% \makeatother
+% \ifenglish%
+% You can use {\CJSclass} to prepare the supplementary material by
+% specifying the class option \code{supplement}. The differences are
+% as follows:
+% \begin{itemize}
+% \item a statement identifying the document as supplementary material
+% is added before the title;
+% \item the abstracts, keywords and mathematics subject classification
+% are hidden;
+% \item the space for the licence statement is replaced by a footer
+% with the page number;
+% \item the back matter is also hidden;
+% \item the sections, equations, figures, etc., are numbered with a
+% prefix ``{\PREFIX}''.
+% \end{itemize}
+% The title and back matter material may still be present in
+% the source code. In other words, you may create the supplementary
+% material from the same template as your main article; just add
+% \code{supplement} to the class options. %
+% \else%
+% En ajoutant l'option \code{supplement} lors de la déclaration de la
+% classe, vous pouvez préparer le matériel additionnel avec
+% {\CJSclass}. Les changements suivants sont apportés à la mise en page:
+% \begin{itemize}
+% \item un surtitre identifie le document comme du matériel
+% additionel;
+% \item les résumés, la liste des mots-clés et la classification
+% mathématique par matières ne sont pas affichés sur la page de
+% titre;
+% \item l'espace réservé à la déclaration de licence sur la page de
+% titre est remplacé par un pied de page contenant le numéro de
+% page;
+% \item les parties annexes ne sont pas affichées;
+% \item les numéros de sections, d'équations, de figures, etc., sont
+% précédés de «{\PREFIX}».
+% \end{itemize}
+% Les informations de la page de titre et des parties annexes peuvent
+% toujours figurer dans le code source. Autrement dit, vous pouvez
+% créer le matérial additionnel directement à partir du même préambule
+% --- ou gabarit --- que votre article principal; il suffit d'ajouter
+% \code{supplement} aux options de la classe. %
+% \fi \endgroup
+%
+% \ifenglish%
+% The option \code{supplement} is compatible with the option
+% \code{review} to create an anonymized version of the supplementary
+% material suitable for peer review.%
+% \else%
+% Vous pouvez combiner l'option \code{supplement} avec l'option
+% \code{review} pour obtenir une version anonymisée du matériel
+% additionnel prête à être acheminée au comité de lecture.
+% \fi
+%
+% \vspace*{10pt}
+% \hfill
+% \ifenglish%
+% \emph{Have fun writing!}
+% \else%
+% \emph{Bonne rédaction!}
+% \fi%
+%
+% ^^A Start of the appendices
+% \appendix
+%
+% \ifenglish%
+% \section{Features for the editors}
+% \else%
+% \section{Fonctionnalités pour les éditeurs}
+% \fi
+% \label{sec:editors}
+%
+% \ifenglish%
+% The options and commands presented in this appendix should mostly be
+% of use to the editors of {\TheCJS} during the peer-reviewing phase,
+% and for the production of the final version before
+% publication. %
+% \else%
+% Les options et commandes présentées dans cette annexe ne servent
+% qu'aux éditeurs de {\LaRevue} durant la phase d'évaluation par le
+% comité de lecture et lors de la préparation finale de l'article
+% avant sa publication. %
+% \fi
+%
+% \begin{DescribeOption}{review}
+% \ifenglish%
+% The option \code{review}, already mentioned in
+% \autoref{sec:usage:options}, typesets the anonymized version of
+% the manuscript for peer review. Line spacing is also increased and
+% the lines are numbered. This option is compatible with
+% \code{supplement}. %
+% \else%
+% L'option \code{review}, déjà mentionnée à la
+% \autoref{sec:usage:options}, compose la version anonymisée de
+% l'article qui sera acheminée au comité de lecture pour évaluation.
+% L'interligne est également augmenté et les lignes sont numérotées.
+% Cette option est compatible avec \cmd{supplement}. %
+% \fi
+% \end{DescribeOption}
+%
+% \tipbox{%
+% \ifenglish%
+% If the document was successfully compiled with the option
+% \code{review} and the option is later removed, you will need to
+% either delete the \code{.aux} file before compiling again or
+% compile the document at least twice. %
+% \else%
+% Si le document a été compilé avec l'option \code{review} et que
+% celle-ci est par la suite retirée, il faut soit supprimer le fichier
+% \code{.aux} avant de compiler de nouveau le document, soit compiler
+% à deux reprises.%
+% \fi}
+%
+% \begin{DescribeOption}{final}
+% \ifenglish%
+% The option \code{final}---which overrides
+% \code{review}---activates checks that the publication information
+% and article history are correctly defined. Furthermore, if
+% licensing information is provided using the commands of
+% \autoref{sec:usage:licensing}, the licence statement is displayed
+% at the bottom of the first page. The option has no other effect on
+% the rendering of the article. %
+% \else%
+% L'option \code{final} --- qui a préséance sur \code{review} ---
+% active la vérification que les informations de publication et que
+% l'historique de révision sont fournis. De plus, si les
+% informations d'octroi de licence sont fournies à l'aide des
+% commandes de la \autoref{sec:usage:licensing}, la déclaration est
+% ajoutée au bas de la page de titre. L'option n'a aucun autre effet
+% sur la composition du document. %
+% \fi
+% \end{DescribeOption}
+%
+% \begin{DescribeMacro}{\jvol}
+% \begin{DescribeMacro}{\jissue}
+% \begin{DescribeMacro}{\jyear}
+% \begin{DescribeMacro}{\firstpage}
+% \ifenglish%
+% The commands \cmd{\jvol}, \cmd{\jissue} and \cmd{\jyear} provide
+% the publication information: volume, number and year of the issue
+% in which the article appears. The command \cmd{\firstpage}
+% specifies the number of the first page; the number of the last
+% page is determined automatically. This information appears on the
+% title page. %
+% \else%
+% Les commandes \cmd{\jvol}, \cmd{jissue} et \cmd{\jyear} servent à
+% indiquer les informations de publication: volume, numéro et année
+% de l'édition dans lequel l'article est publié. La commande
+% \cmd{\firstpage} permet de fixer le numéro de la première page de
+% l'article; le numéro de la dernière page est calculé
+% automatiquement. Ces informations apparaissent sur la page de
+% titre. %
+% \fi
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+%
+% \begin{DescribeMacro}{\received}
+% \begin{DescribeMacro}{\accepted}
+% \ifenglish%
+% The commands \cmd{\received} and \cmd{\accepted} specify the
+% revision history that is displayed at the very end of the article.
+% Their argument is a date in the %
+% \else%
+% Les commandes \cmd{\received} et \cmd{\accepted} servent à
+% indiquer l'historique de révision qui est affiché à la toute fin
+% de l'article. Leur argument est une date dans le format %
+% \fi \href{https://fr.wikipedia.org/wiki/ISO_8601}{ISO~8601} %
+% \ifenglish%
+% format YYYY-MM-DD. For example: %
+% \else%
+% AAAA-MM-JJ. Par exemple: %
+% \fi
+% \begin{quote}
+% \cmdprint{\received}\code{\{2023-06-20\}}
+% \end{quote}
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+%
+% \ifenglish%
+% It may happen that the title material occupies too much space (or,
+% rarely, too little). When this happens, the editors can tweak the
+% typesetting of the title page using the following elements. %
+% \else%
+% Il peut arriver que les informations de la page de titre occupent trop
+% d'espace (ou, plus rarement, trop peu). Les éditeurs peuvent modifier en
+% partie l'apparence de la page de titre avec les éléments suivants. %
+% \fi
+%
+% \begin{DescribeLength}{\titlingskip}
+% \ifenglish%
+% The distance between the elements of the title page (from the
+% abstracts to the corresponding author address) is
+% \cmd{\titlingskip}. This value may be changed as usual via
+% \cmd{\setlength}. The default value is \code{\the\titlingskip}. %
+% \else%
+% La distance entre les éléments de la page de titre (depuis les
+% résumés jusqu'à l'adresse de l'auteur correspondant) est
+% \cmd{\titlingskip}. Cette valeur peut être modifiée avec
+% \cmd{\setlength}. La valeur par défaut est
+% \code{\the\titlingskip}. %
+% \fi
+% \end{DescribeLength}
+%
+% \begin{DescribeLength}{\fancybreaksep}
+% \ifenglish%
+% The decorative element between the title information and the body
+% of the article is surrounded by a vertical skip of length
+% \cmd{\fancybreaksep}.\footnote{%
+% The terminology \emph{fancy break} is taken from
+% \class{memoir}.} %
+% This value may be changed as usual via \cmd{\setlength}. The
+% default value is \code{\the\fancybreaksep}. %
+% \else%
+% La décoration entre les informations de la page de titre et le
+% corps de l'article est précédée et suivie d'une espace verticale
+% de longueur \cmd{\fancybreaksep}.\footnote{%
+% La terminologie «\emph{fancy break}» est empruntée à
+% \class{memoir}.} %
+% Cette valeur peut être modifiée avec \cmd{\setlength}. La valeur
+% par défaut est \code{\the\fancybreaksep}. %
+% \fi
+% \end{DescribeLength}
+%
+% \begin{DescribeMacro}{\suppressfancybreak}
+% \begin{DescribeMacro}{\showfancybreak}
+% \ifenglish%
+% The command \cmd{\suppressfancybreak} suppresses the decorative
+% element between the title information and the body of the article.
+% This will be useful if it appears at the bottom of the title page
+% or the top of the subsequent page. The command must appear
+% \emph{before} \cmd{\maketitle}. For the sake of symmetry, the
+% class also provides the command \cmd{\showfancybreak} to force the
+% display of the decorative element, although this is the default
+% behaviour. %
+% \else%
+% La commande \cmd{\suppressfancybreak} permet de supprimer la
+% décoration entre les informations de la page de titre et le corps
+% de l'article lorsque celle-ci apparait tout au bas de la page
+% de titre ou au haut de la page suivante. La commande doit
+% apparaitre \emph{avant} \cmd{\maketitle}. Par souci de symétrie,
+% la classe contient également la commande \cmd{\showfancybreak}
+% pour forcer l'affichage de la décoration, mais c'est là le
+% comportement par défaut de la classe. %
+% \fi
+% \end{DescribeMacro}
+% \end{DescribeMacro}
+%
+% \MaybeStop{%
+% \ifenglish%
+% \PrintChanges
+% \else%
+% \section{Mise en œuvre et historique des versions}
+% \label{sec:implementation}
+% Consultez la version anglaise de la documentation pour connaitre
+% les détails de mise en œuvre de la classe et l'historique des
+% versions. %
+% \fi}
+%
+%
+% ^^A >>>>> Start of the code of the class
+% \section{Implementation}
+% \label{sec:implementation}
+%
+% This appendix describes the {\TeX} and {\LaTeX} code of the class.
+% It is likely to be of interest only to experts, bug hunters or casual
+% readers curious to know how the class is implemented.
+%
+% \subsection{Class setup}
+% \label{sec:implementation:setup}
+%
+% \subsubsection{Boolean values}
+% \label{sec:implementation:setup:boolean}
+%
+% We start by defining the boolean values needed throughout the
+% class. In the sequel, the booleans \cmd{\ifCJS@nocjs} and
+% \cmd{\ifCJS@journalinfo} will be used as negation of one another.
+% \begin{macrocode}
+%<*class>
+\newif\ifCJS@review \CJS@reviewfalse % review version?
+\newif\ifCJS@supplement \CJS@supplementfalse % supplementary material?
+\newif\ifCJS@nocjs \CJS@nocjsfalse % not a CJS article?
+\newif\ifCJS@final \CJS@finalfalse % final version?
+\newif\ifCJS@titlingfooter \CJS@titlingfooterfalse % footer on title page?
+\newif\ifCJS@journalinfo \CJS@journalinfotrue % display journal info?
+\newif\ifCJS@fancybreak \CJS@fancybreaktrue % display fancy break?
+\newif\ifCJS@history \CJS@historyfalse % history present?
+\newif\ifCJS@corrauth \CJS@corrauthfalse % corresponding author?
+\newif\ifCJS@newauth \CJS@newauthtrue % internal; author blocks
+% \end{macrocode}
+%
+% \subsubsection{Options}
+% \label{sec:implementation:setup:options}
+%
+% The class features options for authors and some others targeted more
+% specifically to editors.
+%
+% \begin{option}{review}
+% The class option \code{review} composes an anonymized version of
+% the article (or the supplementary material) suitable for revision
+% by external referees. It uses a standard footer on the title page.
+% \begin{macrocode}
+\DeclareOption{review}{%
+ \CJS@reviewtrue
+ \CJS@titlingfootertrue}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{supplement}
+% The class option \code{supplement} enables authors to use the
+% class to prepare the supplementary material to the article. It
+% uses a standard footer on the title page.
+% \begin{macrocode}
+\DeclareOption{supplement}{%
+ \CJS@supplementtrue
+ \CJS@titlingfootertrue}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{nocjs}
+% The class option \code{nocjs} is a convenience feature for
+% authors who wish to use the class for something else than an
+% article in {\TheCJS}. It hides any journal-specific information
+% from the manuscript. It also uses a standard footer on the title
+% page.
+% \begin{macrocode}
+\DeclareOption{nocjs}{%
+ \CJS@nocjstrue
+ \CJS@titlingfootertrue
+ \CJS@journalinfofalse}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{option}{final}
+% The class option \code{final} activates sanity checks for the
+% preparation of the final copy of the article, and the display of
+% the licence statement on the title page (when available). The
+% option takes precedence over \code{review}.
+% \begin{macrocode}
+\DeclareOption{final}{%
+ \CJS@finaltrue
+ \CJS@reviewfalse}
+% \end{macrocode}
+% \end{option}
+%
+% \subsubsection{Underlying document class}
+%
+% The class {\CJSclass} is based on \class{memoir}. We
+% force the options \code{letterpaper}, \code{10pt}, \code{article}
+% and \code{twoside}.
+% \begin{macrocode}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{memoir}}
+\ProcessOptions\relax
+\LoadClass[letterpaper,10pt,article,twoside]{memoir}
+% \end{macrocode}
+%
+% \subsubsection{Required packages}
+% \label{sec:implementation:setup:packages}
+%
+% The class tries to load as few packages as possible to avoid
+% conflicts. Yet, some are required for standard features of a
+% mathematics oriented journal, or else for internal processing.
+% Useful packages like \pkg{iftex} and \pkg{etoolbox} are already
+% loaded by \class{memoir}.
+%
+% The package \pkg{iflang} provides expandable checks for the current
+% language based on the macro \cmdprint{\languagename} or hyphenation
+% patterns.
+% \begin{macrocode}
+\RequirePackage{iflang}
+% \end{macrocode}
+%
+% We rely on \pkg{natbib} for author-year citations. This package must
+% be loaded before \pkg{babel}. The option \code{sectionbib} ensures
+% that the bibliography (or list of references) is typeset as a
+% section, rather than as a chapter.
+% \begin{macrocode}
+\RequirePackage[round,semicolon,authoryear,sectionbib]{natbib}
+% \end{macrocode}
+%
+% Articles in \emph{The Canadian Journal of Statistics} contain at
+% least two languages, English and French, for the abstracts.
+% Multilingual support is provided by \pkg{babel}. The languages are
+% declared with \cmdprint{\documentclass} in the article source file.
+% The package \pkg{numprint} prints numbers with a separator every
+% three digits and convert numbers in scientific notation. The package
+% alters its behaviour with the active language declared to
+% \pkg{babel}.
+% \begin{macrocode}
+\RequirePackage{babel}
+\RequirePackage[autolanguage]{numprint}
+% \end{macrocode}
+%
+% The required packages \pkg{bookmark} and \pkg{hyperref} must usually
+% be loaded very last. To achieve this within the class, the packages
+% are loaded with the \pkg{etoolbox} command
+% \cmdprint{\AtEndPreamble}. Since they require \pkg{hyperref} to be
+% loaded, it is also at this point that we define the English and
+% French contextual labels for \cmd{\autoref} for all elements defined
+% by the class.
+% \changes{0.9}{2023-10-14}{Fix missing comment characters in
+% \cs{extrasenglish} and \cs{extrasfrench}.}
+% \begin{macrocode}
+\AtEndPreamble{%
+ \RequirePackage{bookmark} % loads hyperref
+ \hypersetup{%
+ colorlinks = true,
+ urlcolor = {CJSurl},
+ linkcolor = {CJSlink},
+ citecolor = {CJScitation}}
+ \bookmarksetup{%
+ open = true,
+ depth = 3,
+ numbered = true}
+ \addto\extrasenglish{%
+ \def\sectionautorefname{Section}%
+ \def\subsectionautorefname{Section}%
+ \def\subsubsectionautorefname{Section}%
+ \def\figureautorefname{Figure}%
+ \def\tableautorefname{Table}%
+ \def\theoremautorefname{Theorem}%
+ \def\lemmaautorefname{Lemma}%
+ \def\propositionautorefname{Proposition}%
+ \def\corollaryautorefname{Corollary}%
+ \def\definitionautorefname{Definition}%
+ \def\algorithmautorefname{Algorithm}%
+ \def\remarkautorefname{Remark}}
+ \addto\extrasfrench{%
+ \def\sectionautorefname{section}%
+ \def\subsectionautorefname{section}%
+ \def\subsubsectionautorefname{section}%
+ \def\figureautorefname{figure}%
+ \def\tableautorefname{tableau}%
+ \def\theoremautorefname{théorème}%
+ \def\lemmaautorefname{lemme}%
+ \def\propositionautorefname{proposition}%
+ \def\corollaryautorefname{corollaire}%
+ \def\definitionautorefname{définition}%
+ \def\algorithmautorefname{algorithme}%
+ \def\remarkautorefname{remarque}}}
+% \end{macrocode}
+%
+% The next set of packages are mostly for internal purposes: %
+% \pkg{keyval} provides the key-value interface used for
+% \cmd{\author}; %
+% \pkg{enumitem} and \pkg{environ} help to define new environments for
+% the titling information; %
+% \pkg{datetime2} is used to store and format dates from the article
+% history; %
+% \pkg{xcolor} provides {\LaTeX} extensions to colourize text; %
+% \pkg{paracol} and \pkg{ragged2e} are used to typeset the
+% abstracts in columns, ragged right and with proper hyphenation; %
+% \pkg{url} is a fairly standard package to enter an URL or email
+% address, used at least here for the corresponding author email; %
+% \pkg{relsize} provides commands to set font sizes relatives to the
+% current size, like \cmdprint{\smaller} or \cmdprint{\larger}; %
+% \pkg{fontawesome5} provides a number of symbols, including the ORCID
+% logo and the Creative Commons licence icons.
+% \begin{macrocode}
+\RequirePackage{keyval}
+\RequirePackage[shortlabels]{enumitem}
+\RequirePackage{environ}
+\RequirePackage[useregional,french,en-GB]{datetime2}
+\RequirePackage{xcolor}
+\RequirePackage{paracol}
+\RequirePackage{ragged2e}
+\RequirePackage{url}
+\RequirePackage{relsize}
+\RequirePackage{fontawesome5}
+% \end{macrocode}
+%
+% The \pkg{graphicx} package is not directly used by the class, but
+% many authors may need it to display graphics and images, so we load
+% it by default.
+% \begin{macrocode}
+\RequirePackage{graphicx}
+% \end{macrocode}
+%
+% The \pkg{amsmath} and \pkg{amsthm} packages are standard
+% requirements for mathematics papers. They are used in the class to
+% define new commands for mathematical symbols and theorem-like
+% environments.
+% \begin{macrocode}
+\RequirePackage{amsmath}
+\RequirePackage{amsthm}
+% \end{macrocode}
+%
+% Finally, \pkg{lineno} is loaded to number lines with option
+% \code{review}.
+% \begin{macrocode}
+\ifCJS@review
+ \RequirePackage{lineno}
+ \linenumbers
+\fi
+% \end{macrocode}
+%
+% Note that some additional packages related to font management are
+% loaded in \autoref{sec:implementation:layout:fonts}.
+%
+% \subsubsection{Incompatible package}
+% \label{sec:implementation:setup:geometry}
+%
+% The package \pkg{geometry} is incompatible with \class{memoir} and
+% should not be used in the first place to change the document layout.
+% We issue an error message if users load it in their article.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \@ifpackageloaded{geometry}{%
+ \ClassError{cjs-rcs-article}%
+ {Package geometry is incompatible with this class}%
+ {You should not change the page layout.\MessageBreak%
+ If absolutely needed, use the memoir class facilities.}}{\relax}}
+% \end{macrocode}
+%
+% \subsection{Document layout}
+% \label{sec:implementation:layout}
+%
+% \changes{1.0}{2023-11-29}{Mention the inspiration for the layout of
+% the class at the beginning of Section B.2 of the English
+% documentation.}
+% The document layout of the class is inspired by the layout of
+% the newspaper \emph{Le Devoir} designed by Lucie Lacava in 2018.
+%
+% \subsubsection{Fonts and character encoding}
+% \label{sec:implementation:layout:fonts}
+%
+% The class uses special fonts for the main text and mathematics, for
+% decorative text (section titles, headers and such), and for text set in
+% monospace (like computer code). The class also imposes Unicode UTF-8
+% character encoding for the source files.
+%
+% We need two sets of commands to load the main document fonts
+% depending on the engine used. For the modern engines {\XeTeX} and
+% {\LuaTeX}, commands from \pkg{fontspec} and \pkg{unicode-math} load
+% the OpenType variants of the fonts. The encoding is UTF-8 by default
+% for these engines.
+% \begin{macrocode}
+\iftutex
+ \RequirePackage[babel=true]{microtype}
+ \RequirePackage{fontspec}
+ \RequirePackage{unicode-math}
+ \setmainfont{STIXTwoText}
+ [
+ Extension = .otf,
+ UprightFont = *-Regular,
+ BoldFont = *-SemiBold,
+ ItalicFont = *-Italic,
+ BoldItalicFont = *-SemiBoldItalic,
+ Scale = 1,
+ Ligatures = TeX
+ ]
+ \setmathfont{STIXTwoMath-Regular}
+ [
+ Extension = .otf,
+ Scale = 1,
+ Ligatures = TeX
+ ]
+ \setmathfont{FiraMath-Regular}
+ [
+ version = titles,
+ Extension = .otf,
+ Scale = 0.92
+ ]
+% \end{macrocode}
+% For the traditional engine {pdf\TeX}, we need to rely on ancillary
+% packages and the Type~1 variants of the fonts. These are no longer
+% updated, in contrast to their OpenType counterparts. Furthermore, the
+% Type~1 variant of STIX~Two does not contain the semibold weight.
+% \changes{0.93}{2023-11-07}{Disable old-style numbers in pdfLaTeX.}
+% \changes{0.93}{2023-11-07}{Replace packages stickstoo and newtxmath
+% by the simpler stix2 now that access to font features is no longer
+% needed.}
+% \begin{macrocode}
+\else
+ \RequirePackage[babel=true]{microtype}
+ \RequirePackage[utf8]{inputenc}
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage{stix2}
+\fi
+% \end{macrocode}
+%
+% For the sans serif font, the packages \pkg{FiraSans} and
+% \pkg{FiraMono} provide a unified interface for the OpenType and
+% Type~1 versions of the fonts.
+% \begin{macrocode}
+\RequirePackage[book,medium,proportional,lining,scale=0.92]{FiraSans}
+\RequirePackage[medium,lining,scale=0.90]{FiraMono}
+% \end{macrocode}
+%
+% With option \code{review}, we redefine the font for the line numbers
+% and position them closer to the left margin (default is 10~pt) to
+% avoid overlap in abstracts.
+% \begin{macrocode}
+\ifCJS@review
+ \renewcommand*\linenumberfont{\normalfont\firalining\tiny}
+ \setlength\linenumbersep{5pt}
+\fi
+% \end{macrocode}
+%
+% \subsubsection{Colours}
+% \label{sec:implementation:layout:colours}
+%
+% We define some colours used by the class. First, the three main
+% colours of {\TheCJS} logo: %
+% \textcolor{CJSpink}{\rule{1.5em}{1.2ex}} %
+% \textcolor{CJSred}{\rule{1.5em}{1.2ex}} %
+% \textcolor{CJSyellow}{\rule{1.5em}{1.2ex}}\,.
+% \begin{macrocode}
+\definecolor{CJSpink}{HTML}{E3038B}
+\definecolor{CJSred}{HTML}{D10000}
+\definecolor{CJSyellow}{HTML}{FEC70D}
+% \end{macrocode}
+% Next, the colours for the hyperlinks (inspired by %
+% \href{https://ctan.org/pkg/classicthesis}{\pkg{classicthesis}}):
+% \textcolor{CJSlink}{\rule{1.5em}{1.2ex}} for internal links;%
+% \textcolor{CJSurl}{\rule{1.5em}{1.2ex}} for external links;%
+% \textcolor{CJScitation}{\rule{1.5em}{1.2ex}} for citations.
+% \begin{macrocode}
+\definecolor{CJSlink}{rgb}{0,0.4,0.6} % internal links
+\definecolor{CJSurl}{rgb}{0.6,0,0} % external links
+\definecolor{CJScitation}{rgb}{0,0.5,0} % citations
+% \end{macrocode}
+% Finally, the colour of the ORCID icon\footnote{%
+% See \url{https://info.orcid.org/brand-guidelines}.}: %
+% \textcolor{CJSorcid}{\rule{1.5em}{1.2ex}}\,.
+% \begin{macrocode}
+\definecolor{CJSorcid}{HTML}{A6CE39}
+% \end{macrocode}
+%
+% \subsubsection{Page size and margins}
+% \label{sec:implementation:layout:margins}
+%
+% The page size was set to letter paper in the options passed to
+% \class{memoir}. We use the very nice commands of \class{memoir} to
+% set the margins. Their size is determined such that the typeblock
+% has a height to width aspect ratio of approximately $\sqrt{2}{:}1$, the
+% same as %
+% \href{https://en.wikipedia.org/wiki/ISO_216}{ISO A series} %
+% paper.
+% \begin{macrocode}
+\setlrmarginsandblock{24mm}{30mm}{*}
+\setulmarginsandblock{24mm}{26mm}{*}
+\setheadfoot{13.5pt}{9mm}
+\checkandfixthelayout[nearest]
+% \end{macrocode}
+%
+% \subsubsection{Journal name and publication information}
+% \label{sec:implementation:layout:journalinfo}
+%
+% The title page starts with the journal name and publication
+% information set next to a decorative element (called ``ornament'' in
+% the code).
+%
+% First, define macros containing the English and French names of the
+% journal, and another one that displays both.
+% \begin{macrocode}
+\def\CJS@journalname@en{The Canadian Journal of Statistics}
+\def\CJS@journalname@fr{La revue canadienne de statistique}
+\def\CJS@journalname{\CJS@journalname@en~{\textbar}~\CJS@journalname@fr}
+% \end{macrocode}
+%
+% The decorative element is created using plain {\TeX} rules. Its
+% height and depth are identical to the journal information.
+% \begin{macrocode}
+\setbox\z@=\vbox{\sffamily\hbox{\CJS@journalname}\hbox{\bfseries V,}}
+\newsavebox\CJS@journalornament
+\setbox\CJS@journalornament=\vbox{%
+ \setbox\tw@\hbox{\vrule \@width4pt\@height\ht\z@\@depth\dp\z@}
+ \hbox{\textcolor{CJSpink}{\copy\tw@}\kern2pt%
+ \textcolor{CJSred}{\copy\tw@}\kern2pt%
+ \textcolor{CJSyellow}{\copy\tw@}\kern6pt}}
+% \end{macrocode}
+%
+% \begin{macro}{\makejournalinfo}
+% The command \cmd{\makejournalinfo} puts the journal information
+% together. The actual information is provided through the editor
+% commands defined in \autoref{sec:implementation:editors}. Although
+% a visible command, \cmdprint{\makejournalinfo} is actually called
+% by \cmd{\maketitle}.
+% \begin{macrocode}
+\newcommand*\makejournalinfo{%
+ \mbox{%
+ \box\CJS@journalornament
+ \vbox{%
+ \sffamily
+ \hbox{\CJS@journalname}
+ \hbox{\bfseries Vol.~\CJS@vol, %
+ No.~\CJS@issue, %
+ \CJS@year, %
+ \CJS@firstpage--\thelastpage}}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Headers and footers}
+% \label{sec:implementation:layout:headers}
+%
+% We need to define headers and footers for the internal pages, and
+% specific ones for the title page. They are built from scratch using
+% \code{tabular} environments.
+%
+% First, a command to set the font.
+% \begin{macrocode}
+\newcommand*\CJS@setheadfootfont{%
+ \firalining\fontsize{9}{13}\selectfont}
+% \end{macrocode}
+%
+% Next, a command to draw the vertical rule that will be used as a
+% separator between the header or footer content and the page folio.
+% \begin{macrocode}
+\newlength\CJS@headdivheight
+\settoheight\CJS@headdivheight{\CJS@setheadfootfont 1}
+\setlength\CJS@headdivheight{0.9\CJS@headdivheight}
+\newcommand*\CJS@headdivrule{%
+ \rule[0.05\CJS@headdivheight]{0.75\normalrulethickness}{\CJS@headdivheight}}
+% \end{macrocode}
+%
+% Now, the page style \code{cjs} for the internal pages. The even
+% header contains the names of the authors flush left. The odd header
+% contains the article title (short version, if appropriate) flush
+% right.
+% \begin{macrocode}
+\newlength\CJS@pagenumwidth
+\settowidth\CJS@pagenumwidth{9\qquad}
+\makepagestyle{cjs}
+\makeevenhead{cjs}{%
+ \CJS@setheadfootfont
+ \begin{tabular*}{\textwidth}%
+ {@{}p{\CJS@pagenumwidth}@{\CJS@headdivrule\qquad}l@{\extracolsep\fill}}
+ \thepage & \ifCJS@review\else\MakeTextUppercase{\CJS@runningauthor}\fi \\ \hline
+ \end{tabular*}}{}{}
+\makeoddhead{cjs}{}{}{%
+ \CJS@setheadfootfont
+ \begin{tabular*}{\textwidth}%
+ {l@{\extracolsep\fill}r@{\extracolsep{0pt}\qquad\CJS@headdivrule}p{\CJS@pagenumwidth}@{}}
+ & \MakeTextUppercase{\CJS@shorttitle} & \hfill\thepage \\ \hline
+ \end{tabular*}}
+% \end{macrocode}
+% The footer for internal pages is empty.
+% \begin{macrocode}
+\makeevenfoot{cjs}{}{}{} \makeoddfoot{cjs}{}{}{}
+% \end{macrocode}
+% Use the \code{cjs} page style.
+% \begin{macrocode}
+\pagestyle{cjs}
+% \end{macrocode}
+%
+% We need a special page style for the title page. The header of the
+% title page is empty.
+% \begin{macrocode}
+\makepagestyle{cjsfirstpage}
+\makeevenhead{cjsfirstpage}{}{}{} \makeoddhead{cjsfirstpage}{}{}{}
+% \end{macrocode}
+% With the \code{review}, \code{statement} and \code{nocjs} options,
+% the title page features a footer with the page folio. With option
+% \code{nocjs}, the footer may also contain a licence statement
+% specified with \cmd{\licence}; see
+% \autoref{sec:implementation:licensing}.
+% \begin{macrocode}
+\ifCJS@titlingfooter
+ \makeevenfoot{cjsfirstpage}{%
+ \CJS@setheadfootfont
+ \begin{tabular*}{\textwidth}%
+ {@{}p{\CJS@pagenumwidth}@{\CJS@headdivrule\qquad}l@{\extracolsep\fill}}
+ \hline \thepage &
+ \ifCJS@nocjs\CJS@licence\fi
+ \end{tabular*}}{}{}
+ \makeoddfoot{cjsfirstpage}{}{}{%
+ \CJS@setheadfootfont
+ \begin{tabular*}{\textwidth}%
+ {l@{\extracolsep\fill}r@{\extracolsep{0pt}\qquad\CJS@headdivrule}p{\CJS@pagenumwidth}@{}}
+ \hline &
+ \ifCJS@nocjs\CJS@licence\fi &
+ \hfill\thepage
+ \end{tabular*}}
+\fi
+% \end{macrocode}
+%
+% \subsubsection{Section titles}
+% \label{sec:implementation:layout:titles}
+%
+% The \class{memoir} class assumes that sectioning starts at the
+% chapter level --- even with the \code{article} option. To get around
+% this requirement, we disable the effect of \cmdprint{\chapter}. A
+% desirable side effect is to make \cmd{\autoref} work correctly for
+% appendices.
+% \begin{macrocode}
+\let\chapter\relax
+\counterwithout{section}{chapter}
+% \end{macrocode}
+%
+% The class uses a numbering system of at most three levels.
+% \begin{macrocode}
+\setsecnumdepth{subsubsection}
+\maxsecnumdepth{subsubsection}
+% \end{macrocode}
+%
+% We then define the style of section titles from level
+% \cmdprint{\section} down to \cmdprint{\subparagraph}. With the
+% {\XeTeX} and {\LuaTeX} engines, we make sure to use a matching font
+% for mathematics in case some appears in the titles.
+% \begin{macrocode}
+\iftutex
+ \setsecheadstyle{\normalfont\Large\sffamily\mathversion{titles}\bfseries\raggedright}
+ \setsubsecheadstyle{\normalfont\large\sffamily\mathversion{titles}\bfseries\raggedright}
+ \setsubsubsecheadstyle{\normalfont\sffamily\mathversion{titles}\bfseries\raggedright}
+ \setparaheadstyle{\normalfont\sffamily\mathversion{titles}\bfseries}
+ \setsubparaheadstyle{\normalfont\mathversion{titles}\bfseries}
+\else
+ \setsecheadstyle{\normalfont\Large\sffamily\bfseries\raggedright}
+ \setsubsecheadstyle{\normalfont\large\sffamily\bfseries\raggedright}
+ \setsubsubsecheadstyle{\normalfont\sffamily\bfseries\raggedright}
+ \setparaheadstyle{\normalfont\sffamily\bfseries}
+ \setsubparaheadstyle{\normalfont\bfseries}
+\fi
+\setbeforesecskip{-1.75ex plus -0.5ex minus -0.1ex}
+\setaftersecskip{1.2ex plus 0.1ex}
+\setbeforesubsecskip{-1.5ex plus -0.5ex minus -0.1ex}
+\setaftersubsecskip{0.75ex plus 0.1ex}
+\setbeforesubsubsecskip{-1.5ex plus -0.5ex minus -0.1ex}
+\setaftersubsubsecskip{0.75ex plus 0.1ex}
+\setbeforeparaskip{0pt}
+\setafterparaskip{-0.5em}
+\setbeforesubparaskip{0pt}
+\setaftersubparaskip{-0.25em}
+% \end{macrocode}
+%
+% \subsubsection{Line spacing}
+% \label{sec:implementation:layout:linespacing}
+%
+% With option \code{review}, line spacing is increased using the
+% command \cmdprint{\OnehalfSpacing} of \class{memoir}.
+% \begin{macrocode}
+\ifCJS@review
+ \OnehalfSpacing
+\fi
+% \end{macrocode}
+%
+% \subsubsection{Captions}
+% \label{sec:implementation:layout:captions}
+%
+% The caption name for tables and figures is typeset in bold.
+% \begin{macrocode}
+\captionnamefont{\bfseries}
+% \end{macrocode}
+%
+% \subsubsection{Configuration for French}
+% \label{sec:implementation:layout:french}
+%
+% We change some of the defaults of \pkg{babel-french} and allow
+% French opening and closing quotes («~») to be entered directly with
+% the keyboard.
+% \begin{macrocode}
+\frenchsetup{%
+ SmallCapsFigTabCaptions=false,
+ ThinSpaceInFrenchNumbers=true,
+ og=«, fg=»}
+\renewcommand*\frenchtablename{Tableau}
+\renewcommand*\frenchfigurename{Figure}
+% \end{macrocode}
+%
+% \subsection{Titling material}
+% \label{sec:implementation:titling}
+%
+% Before we dive into the definition of the commands to enter titling
+% information, we first define the various lengths that will be needed
+% to position the elements on the title page.
+%
+% \begin{length}{\journalinfoskip}
+% The length \cmd{\journalinfoskip} holds the distance between the
+% top of the typeblock and the journal information.
+% \begin{macrocode}
+\newlength\journalinfoskip
+\setlength\journalinfoskip{-4ex}
+% \end{macrocode}
+% \end{length}
+%
+% \begin{length}{\maintitleskip}
+% The length \cmd{\maintitleskip} holds the distance between the
+% journal information and the start of the main title area.
+% \begin{macrocode}
+\newlength\maintitleskip
+\setlength\maintitleskip{6ex}
+% \end{macrocode}
+% \end{length}
+%
+% \begin{length}{\supptitleskip}
+% The length \cmd{\supptitleskip} holds the distance between the
+% supplementary material statement and the main title of the
+% article.
+% \begin{macrocode}
+\newlength\supptitleskip
+\setlength\supptitleskip{2ex}
+% \end{macrocode}
+% \end{length}
+%
+% \begin{length}{\authorskip}
+% The length \cmd{\authorskip} holds the distance between the main
+% title and the author block.
+% \begin{macrocode}
+\newlength\authorskip
+\setlength\authorskip{5ex}
+% \end{macrocode}
+% \end{length}
+%
+% \begin{length}{\titlingskip}
+% The length \cmd{\titlingskip} holds the distance between the other
+% elements of the title page, that is, from the abstract to the
+% corresponding author.
+% \begin{macrocode}
+\newlength\titlingskip
+\setlength\titlingskip{2pt plus2pt minus0.8pt}
+% \end{macrocode}
+% \end{length}
+%
+% \begin{length}{\fancybreaksep}
+% The length \cmd{\fancybreaksep} holds the distance between the
+% fancy break and the surrounding text.
+% \begin{macrocode}
+\newlength\fancybreaksep
+\setlength\fancybreaksep{6pt plus3pt minus1pt}
+% \end{macrocode}
+% \end{length}
+%
+% \subsubsection{Article title}
+% \label{sec:implementation:titling:title}
+%
+% The main title area is composed of two elements: the statement that
+% the document is supplementary material to an article when the option
+% \code{supplement} is specified, and the main title of the article.
+%
+% \begin{macro}{\supplementfont}
+% The public command \cmd{\supplementfont} defines the font of
+% the supplementary material title.
+% \begin{macrocode}
+\def\CJS@supptitlename@en{supplementary material for the article}
+\def\CJS@supptitlename@fr{matériel additionnel pour l'article}
+\newcommand*\supplementfont{\normalfont\Large\scshape}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\maintitlefont}
+% The public command \cmd{\maintitlefont} defines the font of
+% the main title.
+% \begin{macrocode}
+\newcommand*\maintitlefont{\raggedright\normalfont\huge\bfseries}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\title}
+% The implementation of \cmd{\title}, copied from
+% \class{amsart.cls}, allows an optional argument to provide the
+% short title that is displayed in the running head.
+% \begin{macrocode}
+\renewcommand*\title[2][]{\gdef\CJS@shorttitle{#1}\gdef\@title{#2}}
+\edef\title{\@nx\@dblarg
+ \@xp\@nx\csname\string\title\endcsname}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Author and affiliation information}
+% \label{sec:implementation:titling:author}
+%
+% The mechanism to enter the author and affiliation information is inspired
+% from \pkg{authblk}, but the implementation is rewritten more legibly
+% using the tools from \pkg{etoolbox}.
+%
+% \begin{macro}{\authfont,\affilfont}
+% First, we define two public commands to control the visual style of
+% author names and affiliations, respectively.
+% \begin{macrocode}
+\newcommand*\authfont{\normalfont\sffamily\bfseries\color{black}}
+\newcommand*\affilfont{\normalfont\sffamily\color{gray}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{length}{\affilsep,\authsep}
+% Next, we define (and initialize) two lengths holding the space between
+% the author identification and the affiliation, and between author
+% blocks.
+% \begin{macrocode}
+\newlength\affilsep \setlength\affilsep{\z@}
+\newlength\authsep \setlength\authsep{1ex}
+% \end{macrocode}
+% \end{length}
+%
+% \changes{0.9}{2023-10-14}{Change the corresponding author symbol
+% from an envelope to @.}
+% \begin{macro}{\author}
+% We can now define a new version of \cmd{\author} that will inject the
+% author names into \cmd{\@author}, along with styling instructions and the
+% appropriate separator between the author blocks (none before the first
+% author, a space \cmd{\authsep} between the following ones).
+%
+% The command also allows collection of the ORCID iD, email address and
+% corresponding author status through a now fairly standard
+% key-value interface.
+% \begin{macrocode}
+\define@key{author}{orcid}{\def\CJS@orcid{#1}}
+\define@key{author}{email}{\def\CJS@email{#1}}
+\define@key{author}{corresponding}[true]{%
+ \csname if#1\endcsname \CJS@corrauthtrue\fi}
+\def\CJS@corrauthname@en{Corresponding author}
+\def\CJS@corrauthname@fr{Auteur correspondant}
+\newcommand*\CJS@corrauth{}
+\newcommand*\CJS@orcidlist{}
+\newcommand*\CJS@orcidname{ORCID}
+\newcommand*\CJS@authsep{, }
+\newcommand*\CJS@orcid@and{}
+\newcommand*\CJS@blk@and{\protect\authfont}
+\newcommand*\CJS@pand{\protect\\[\authsep] \protect\authfont}
+\renewcommand\author{%
+ \new@ifnextchar[{\author@}%
+ {\author@[]}}
+\newcommand*\author@{}
+\def\author@[#1]#2{%
+ \begingroup
+ \setkeys{author}{#1}
+ \let\protect\@unexpandable@protect
+ \ifCJS@newauth
+ \xappto\@author{\CJS@blk@and#2}
+ \else
+ \xappto\@author{\CJS@authsep#2}
+ \fi
+ \ifCJS@corrauth
+ \ifundef{\CJS@email}{\relax}{%
+ \protected@xdef\CJS@corrauth{\protect\url{\CJS@email}}
+ \xappto\@author{\;%
+ \protect\href{mailto:\CJS@email}{\corrauthmark}}}
+ \fi
+ \ifundef{\CJS@orcid}{\relax}{%
+ \xappto\@author{\;%
+ \protect\href{https://orcid.org/\CJS@orcid}%
+ {\textcolor{CJSorcid}{\faOrcid}}}
+ \xappto\CJS@orcidlist{\CJS@orcid@and#2: %
+ \protect\href{https://orcid.org/\CJS@orcid}%
+ {\textcolor{CJSorcid}{\faOrcid}\, \protect\url{https://orcid.org/\CJS@orcid}}}
+ \gdef\CJS@orcid@and{\protect\\}}
+ \endgroup
+ \CJS@newauthfalse
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\affil}
+% We immediately define the command \cmd{\affil} since it works in
+% tandem with \cmd{\author}. The command provides an affiliation for
+% the author previously mentioned in \cmd{\author}. Note how the
+% separator \cmd{\CJS@blk@and} is redefined here.
+% \begin{macrocode}
+\newcommand*\affil[1]{%
+ \CJS@newauthtrue
+ \let\CJS@blk@and\CJS@pand
+ \begingroup
+ \let\protect\@unexpandable@protect
+ \gappto\@author{\protect\\[\affilsep]\protect\affilfont #1}
+ \endgroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\surname}
+% The command \cmd{\surname} defines the styling of the surname
+% (using \cmd{\CJS@printsurname}), but also collects the surnames in
+% the \cmd{\CJS@runningauthor} macro with the appropriate
+% separators. This will be printed in the running head.
+%
+% The command \cmd{\surname} is expanded by \cmd{\maketitle}. We
+% need to take into account that \cmd{\runningauthors} (see below)
+% may be used in the document, in which case the command should not
+% collect the surnames in \cmd{\CJS@runningauthor}. When
+% \cmd{\runningauthors} is used, \cmd{\CJS@runningauthor} is not
+% empty when \cmd{\maketitle} is expanded and, therefore,
+% \cmd{\CJS@runningauthor@and} is never defined by \cmd{\surname}.
+% Hence the test with \cmd{\ifvoiddef} in the ``false'' branch of
+% \cmd{\ifdefempty}.
+% \begin{macrocode}
+\newcommand*\CJS@runningauthor{}
+\newcommand*\CJS@printsurname[1]{\MakeTextUppercase{#1}}
+\newrobustcmd{\surname}[1]{%
+ \ifdefempty{\CJS@runningauthor}{%
+ \def\CJS@runningauthor@{#1}%
+ \edef\CJS@runningauthor@and{\iflanguage{french}{ et }{ and }}%
+ \gappto\CJS@runningauthor{#1}}{%
+ \ifdefvoid{\CJS@runningauthor@and}{\relax}{%
+ \global\let\CJS@runningauthor\CJS@runningauthor@
+ \appto\CJS@runningauthor@{, #1}%
+ \xappto\CJS@runningauthor{\CJS@runningauthor@and#1}%
+ \edef\CJS@runningauthor@and{\iflanguage{french}{ et }{, and }}}}%
+ \CJS@printsurname{#1}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\corrauthmark}
+% The command \cmd{\corrauthmark} contains the marker that is
+% used as a hyperlink next to the name of the corresponding author,
+% and as the mark next to the titling information.
+% \begin{macrocode}
+\newcommand*\corrauthmark{{\small\faAt}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\runningauthor}
+% The command \cmd{\runningauthors} may be used to provide an
+% alternative (shorter) version of the author names for the running
+% head.
+% \begin{macrocode}
+\newcommand*\runningauthor[1]{\renewcommand*\CJS@runningauthor{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% Finally, we need to reset \cmd{\@author} to avoid %
+% \code{No }\cmdprint{\author}\code{ given} warnings.
+% \begin{macrocode}
+\def\@author{}
+% \end{macrocode}
+%
+% \subsubsection{Abstracts}
+% \label{sec:implementation:titling:abstracts}
+%
+% \begin{environment}{englishabstract,frenchabstract}
+% The environments for the English and French abstracts are defined
+% using the facilities of the package \pkg{environ}. They each
+% merely collect their body into a macro whose content is later
+% typeset by \cmd{\maketitle}.
+% \begin{macrocode}
+\def\CJS@englishabstract{}
+\def\CJS@frenchabstract{}
+\NewEnviron{englishabstract}{\global\let\CJS@englishabstract\BODY}
+\NewEnviron{frenchabstract}{\global\let\CJS@frenchabstract\BODY}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Keywords}
+% \label{sec:implementation:titling:keywords}
+%
+% \begin{environment}{keywords}
+% The treatment of keywords involves two environments. The first,
+% \code{keywords}, is the visible one that collects the information
+% into a macro. The second, \code{CJS@keywordslist}, is the (inline)
+% environment based on \code{itemize} that actually typesets the
+% information inside \cmd{\maketitle}. (The command
+% \cmdprint{\newlist} comes from \pkg{enumitem}.)
+% \begin{macrocode}
+\def\CJS@keywords{}
+\def\CJS@keywordsname@en{Keywords}
+\def\CJS@keywordsname@fr{Mots-clés}
+\NewEnviron{keywords}{\global\let\CJS@keywords\BODY}
+\newlist{CJS@keywordslist}{itemize*}{1}
+\setlist[CJS@keywordslist]{%
+ mode=unboxed,
+ label={},
+ afterlabel={},
+ itemjoin={{; }},
+ after={.}
+}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Mathematics subject classification}
+% \label{sec:implementation:titling:classifications}
+%
+% \begin{environment}{classification}
+% The implementation of the environment \code{environment} is
+% similar to \code{keywords}, the main difference being that this
+% environment has an optional argument with a default value stored
+% in the macro \cmdprint{\CJS@defclassifname}.
+% \begin{macrocode}
+\def\CJS@classif{}
+\def\CJS@classifname{}
+\def\CJS@defclassifname{MSC2020}
+\NewEnviron{classification}[1][%
+ \CJS@defclassifname]{%
+ \global\def\CJS@classifname{#1}
+ \global\let\CJS@classif\BODY}
+\newlist{CJS@classiflist}{itemize*}{1}
+\setlist[CJS@classiflist]{%
+ mode=unboxed,
+ itemjoin={{; }},
+ after={.}
+}
+% \end{macrocode}
+% \end{environment}
+%
+% \subsubsection{Fancy break}
+% \label{sec:implementation:titling:fancybreak}
+%
+% \begin{macro}{\pfbreakdisplay}
+% The fancy break is the three-rule separator between the titling
+% information and the body of the paper. Using the facilities of
+% \class{memoir}, we simply redefine the command
+% \cmd{\pfbreakdisplay}.
+% \begin{macrocode}
+\renewcommand\pfbreakdisplay{%
+ \vskip\fancybreaksep\par%
+ \rule[\z@]{\linewidth}{\normalrulethickness}\hskip-\linewidth
+ \rule[4\normalrulethickness]{\linewidth}{\normalrulethickness}\hskip-\linewidth
+ \rule[8\normalrulethickness]{\linewidth}{\normalrulethickness}\par%
+ \vskip\fancybreaksep}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\suppressfancybreak,\showfancybreak}
+% The command \cmd{\suppressfancybreak} allows suppression of the fancy
+% break should it appear at the very bottom of the title page or at
+% the very top of the second page. The converse
+% \cmd{\showfancybreak} forces display, although it should not be
+% needed as it is the default behaviour of the class.
+% \begin{macrocode}
+\newcommand*\suppressfancybreak{\CJS@fancybreakfalse}
+\newcommand*\showfancybreak{\CJS@fancybreaktrue}
+% \end{macrocode}
+%
+% \subsubsection{Typesetting of the titling material}
+% \label{sec:implementation:titling:maketitle}
+%
+% \begin{macro}{\maketitle}
+% The command \cmd{\maketitle} typesets the titling material. Single
+% spacing is turned on, top floats are suppressed from the title
+% page (we still need bottom floats for the licence statement; see
+% below), and paragraph spacing and indentation is set to zero.
+% \begin{macrocode}
+\renewcommand\maketitle{{%
+ \SingleSpacing
+ \suppressfloats[t]
+ \setlength\parskip{\z@}
+ \setlength\parindent{\z@}
+ \setcounter{page}{\CJS@firstpage}
+ \thispagestyle{cjsfirstpage}
+% \end{macrocode}
+% The decorative element and journal information is hidden
+% with option \code{nocjs}.
+% \begin{macrocode}
+ \ifCJS@journalinfo
+ \vspace*{\journalinfoskip}
+ \makejournalinfo\par
+ \fi
+ \vspace*{\maintitleskip}
+% \end{macrocode}
+% We need to know the height of the supplementary material statement
+% to replace it by a strut for regular articles.
+% \begin{macrocode}
+ \setbox\z@=\vbox{\supplementfont%
+ \iflanguage{french}{\CJS@supptitlename@fr}{\CJS@supptitlename@en}}
+ \ifCJS@supplement
+ \box\z@\par
+ \else
+ \rule{\z@}{\dimexpr\ht\z@}\par % strut
+ \fi
+ \vskip\supptitleskip
+ \begin{minipage}{0.9\textwidth}
+ \maintitlefont\@title\par
+ \end{minipage}
+ \vskip\authorskip
+% \end{macrocode}
+% The author block is displayed when the option \code{review} is not
+% specified.
+% \begin{macrocode}
+ \ifCJS@review\else
+ \hrulefill
+ \vskip\belowrulesep
+ \begin{minipage}{0.9\textwidth}
+ \@author
+ \end{minipage}\par
+ \vskip\aboverulesep
+ \hrulefill\par
+ \fi
+% \end{macrocode}
+% The rest of the titling material, except the corresponding author
+% address, is hidden with option \code{supplement}.
+% \begin{macrocode}
+ \ifCJS@supplement\else
+ \vskip2\titlingskip
+% \end{macrocode}
+% The abstracts are positioned automatically depending on the main
+% language of the article.
+% \begin{macrocode}
+ \begin{paracol}{2}
+ \RaggedRight
+ \switchcolumn[\iflanguage{english}{0}{1}]
+ \begingroup
+ \selectlanguage{english}\paragraph{\abstractname}\CJS@englishabstract
+ \endgroup
+ \switchcolumn[\iflanguage{french}{0}{1}]
+ \begingroup
+ \selectlanguage{french}\paragraph{\abstractname}\CJS@frenchabstract
+ \endgroup
+ \end{paracol}\par
+% \end{macrocode}
+% Start a group for the keywords and subject classification that are
+% typeset ragged right.
+% \begin{macrocode}
+ \begingroup
+ \sloppy\RaggedRight
+ \ifdefempty{\CJS@keywords}{\relax}{%
+ \vskip\titlingskip
+ \paragraph{\iflanguage{french}{\CJS@keywordsname@fr}{\CJS@keywordsname@en}}
+ \begin{CJS@keywordslist}
+ \CJS@keywords
+ \end{CJS@keywordslist}\par}
+ \vskip\titlingskip
+% \end{macrocode}
+% The subject classification block is always shown, just with an
+% empty content if the information is not provided.
+% \begin{macrocode}
+ \paragraph{{\CJS@classifname}}
+ \ifdefempty{\CJS@classif}{\mbox{}}{%
+ \begin{CJS@classiflist}
+ \CJS@classif
+ \end{CJS@classiflist}}\par
+ \endgroup
+ \fi
+% \end{macrocode}
+% The corresponding author address is only hidden with option
+% \code{review}.
+% \begin{macrocode}
+ \unless\ifCJS@review
+ \ifdefempty{\CJS@corrauth}{\relax}{%
+ \vskip\titlingskip
+ \paragraph{\corrauthmark\;%
+ \iflanguage{french}{\CJS@corrauthname@fr}{\CJS@corrauthname@en}}
+ \CJS@corrauth\par}
+ \fi
+ \ifCJS@fancybreak
+ \fancybreak{\pfbreakdisplay}
+ \fi
+% \end{macrocode}
+% Finally, unless overridden by a class option, allocate space
+% for the licence statement at the bottom of the title page. By
+% default, a notice indicates that the licence will appear
+% here. With option \code{final}, the licence statement is
+% displayed, if provided.
+% \begin{macrocode}
+ \unless\ifCJS@titlingfooter
+ \CJS@measurelicence
+ \setlength\textfloatsep{0pt}
+ \def\CJS@notice{%
+ \iflanguage{french}{Futur emplacement de la déclaration de licence.}%
+ {Licence statement to appear here.}}
+ \begin{figure}[!b]
+ \raisebox{0pt}[0pt][\footskip]{%
+ \vbox{%
+ \CJS@setlicencefont
+ \rule{\textwidth}{\normalrulethickness}
+ \parbox[t][\CJS@licenceht][t]{\textwidth}{%
+ \ifCJS@final\CJS@licence \else\textit\CJS@notice \fi}}}
+ \end{figure}
+ \fi
+}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Back matter}
+% \label{sec:implementation:backmatter}
+%
+% Perhaps a word is in order to explain the presence of the back
+% matter environments in the class. The funding information started
+% its life on the title page. It was therefore natural to provide an
+% environment \code{funding} along with the environments
+% \code{keywords} and \code{classification}.
+%
+% It was later decided to move this information at the end of the
+% article, where space is less at a premium. We could have just
+% included the appropriate sectioning commands in the templates, but
+% it turned out that providing a command \cmd{\makebackmatter} proved
+% useful to impose the order of the back matter and, furthermore, to
+% display the full ORCID iDs, when available. The other environments
+% of this section followed.
+%
+% \begin{environment}{supplement,sharing}
+% The environments \code{supplement} and \code{sharing} only collect
+% their contents into macros.
+% \begin{macrocode}
+\def\CJS@supplement{}
+\def\CJS@supplementname@en{Supplementary material}
+\def\CJS@supplementname@fr{Matériel additionnel}
+\NewEnviron{supplement}{\global\let\CJS@supplement\BODY}
+% \end{macrocode}
+% \begin{macrocode}
+\def\CJS@sharing{}
+\def\CJS@sharingname@en{Data sharing}
+\def\CJS@sharingname@fr{Partage des données}
+\NewEnviron{sharing}{\global\let\CJS@sharing\BODY}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{acknowledgements,acknowledgments,funding}
+% The environments \code{acknowledgements} (or its alias
+% \code{acknowledgments}) and \code{funding} are very similar,
+% except that they accept an optional argument to change the name of
+% the information provided.
+% \begin{macrocode}
+\def\CJS@ack{}
+\def\CJS@ackname@en{Acknowledgements}
+\def\CJS@ackname@fr{Remerciements}
+\NewEnviron{acknowledgements}{\global\let\CJS@ack\BODY}
+\let\acknowledgments\acknowledgements
+\let\endacknowledgments\endacknowledgements
+% \end{macrocode}
+% \begin{macrocode}
+\def\CJS@funding{}
+\def\CJS@fundingname{}
+\def\CJS@fundingname@en{Funding information}
+\def\CJS@fundingname@fr{Financement}
+\NewEnviron{funding}[1][%
+ \iflanguage{french}{\CJS@fundingname@fr}{\CJS@fundingname@en}]{%
+ \global\def\CJS@fundingname{#1}
+ \global\let\CJS@funding\BODY}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\makebackmatter}
+% Similar to \cmd{\maketitle}, the command \cmd{\makebackmatter}
+% typesets all elements of the back matter that are available at the
+% point where it appears.
+% \begin{macrocode}
+\newcommand\makebackmatter{%
+ \ifCJS@supplement\else
+ \ifdefempty{\CJS@supplement}{\relax}{%
+ \section*{\iflanguage{french}{\CJS@supplementname@fr}{\CJS@supplementname@en}}
+ \CJS@supplement}
+ \ifdefempty{\CJS@sharing}{\relax}{%
+ \section*{\iflanguage{french}{\CJS@sharingname@fr}{\CJS@sharingname@en}}
+ \CJS@sharing}
+ \ifCJS@review\else
+ \ifdefempty{\CJS@ack}{\relax}{%
+ \section*{\iflanguage{french}{\CJS@ackname@fr}{\CJS@ackname@en}}
+ \CJS@ack}
+ \ifdefempty{\CJS@funding}{\relax}{%
+ \section*{\CJS@fundingname}
+ \CJS@funding}
+ \ifdefempty{\CJS@orcidlist}{\relax}{%
+ \section*{\CJS@orcidname}
+ \begingroup
+ \let\surname\relax
+ \let\corrauth\@gobble
+ \CJS@orcidlist
+ \endgroup}
+ \fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Licensing}
+% \label{sec:implementation:licensing}
+%
+% The licensing information is used in two main ways by the class:
+% either the licence statement provided by the publisher is inserted
+% at the bottom of the title page with option \code{final}, or else
+% the user provided licence statement is displayed in the footer of
+% the title page with option \code{nocjs}. In all other cases the
+% licensing information is ignored.
+%
+% In order to maintain the page layout as much as possible, we leave
+% space by default at the bottom of the title page for the future
+% licence statement.
+%
+% First, set the font for the licence statement.
+% \begin{macrocode}
+\newcommand*\CJS@setlicencefont{%
+ \firalining\fontsize{8pt}{9pt}\selectfont}
+% \end{macrocode}
+%
+% \begin{macro}{\CJS@measurelicence}
+% We need to compute the required space for a licence statement. The
+% internal command \cmd{\CJS@measurelicence} measures the total
+% height of either the licence statement provided with
+% \cmd{\licence}, or the seemingly longest version of the license
+% statement used by the publisher. The command is used inside
+% \cmd{\maketitle}.
+% \begin{macrocode}
+\newlength\CJS@licenceht
+\newcommand\CJS@licencesample{%
+ {\ccbyncnd*} 2023 The Authors. The Canadian Journal of
+ Statistics~{\textbar}~La revue canadienne de statistique published
+ by Wiley Periodicals LLC on behalf of Statistical Society of
+ Canada~{\textbar}~Société statistique du Canada. This is an open
+ access article under the terms of the Creative Commons
+ Attribution-NonCommercial-NoDerivs License, which permits use and
+ distribution in any medium, provided the original work is properly
+ cited, the use is non-commercial and no modifications or adaptations
+ are made.}
+\newsavebox\CJS@licencebox
+\newcommand\CJS@measurelicence{%
+ \setbox\CJS@licencebox=\vbox{%
+ \CJS@setlicencefont
+ \ifdefempty{\CJS@licence}{\CJS@licencesample}{\CJS@licence}}
+ \setlength\CJS@licenceht{\dimexpr\ht\CJS@licencebox+\dp\CJS@licencebox}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\licence,\license}
+% The command \cmd{\licence} (alias \cmd{\license}) specifies the
+% licence statement for the manuscript. It may be used by the
+% editors or the publisher to insert the statement at the bottom of
+% the title page with option \code{final}. Otherwise, the statement
+% is only displayed in the footer with option \code{nocjs}.
+% \begin{macrocode}
+\def\CJS@licence{}
+\newcommand\licence[1]{\renewcommand*\CJS@licence{#1}}
+\let\license\licence
+% \end{macrocode}
+% \end{macro}
+%
+% For convenience, we define commands to display the icons of the
+% most common Creative Commons licences. The starred versions add the
+% Font Awesome copyright icon {\faCopyright[regular]} at the end.
+% Inspired by the package \pkg{ccicons} (not used by the class since
+% \pkg{fontawesome5} contains all the Creative Commons icons).
+%
+% \begin{macro}{\ccby,\ccby*}
+% The command \cmd{\ccby} typesets the icons for the Attribution
+% licence: {\ccby}.
+% \begin{macrocode}
+\newcommand*\ccby{\ccby@\@ifstar{~\faCopyright[regular]}\relax}
+\newcommand*\ccby@{\mbox{%
+ \faCreativeCommons\kern0.1em%
+ \faCreativeCommonsBy\kern0.1em}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ccbysa,\ccbysa*}
+% The command \cmd{\ccbysa} typesets the icons for the
+% Attribution"-ShareAlike licence: {\ccbysa}.
+% \begin{macrocode}
+\newcommand*\ccbysa{\ccbysa@\@ifstar{~\faCopyright[regular]}\relax}
+\newcommand*\ccbysa@{\mbox{%
+ \faCreativeCommons\kern0.1em%
+ \faCreativeCommonsBy\kern0.1em%
+ \faCreativeCommonsSa}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ccbync,\ccbync*}
+% The command \cmd{\ccbync} typesets the icons for the
+% Attribution"-NonCommercial licence: {\ccbync}.
+% \begin{macrocode}
+\newcommand*\ccbync{\ccbync@\@ifstar{~\faCopyright[regular]}\relax}
+\newcommand*\ccbync@{\mbox{%
+ \faCreativeCommons\kern0.1em%
+ \faCreativeCommonsBy\kern0.1em%
+ \faCreativeCommonsNc}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ccbyncsa,\ccbyncsa*}
+% The command \cmd{\ccbyncsa} typesets the icons for the
+% Attribution"-NonCommercial"-ShareAlike licence:
+% {\ccbyncsa}.
+% \begin{macrocode}
+\newcommand*\ccbyncsa{\ccbyncsa@\@ifstar{~\faCopyright[regular]}\relax}
+\newcommand*\ccbyncsa@{\mbox{%
+ \faCreativeCommons\kern0.1em%
+ \faCreativeCommonsBy\kern0.1em%
+ \faCreativeCommonsNc\kern0.1em%
+ \faCreativeCommonsSa}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ccbynd,\ccbynd*}
+% The command \cmd{\ccbynd} typesets the icons for the
+% Attribution"-NoDerivatives licence: {\ccbynd}.
+% \begin{macrocode}
+\newcommand*\ccbynd{\ccbynd@\@ifstar{~\faCopyright[regular]}\relax}
+\newcommand*\ccbynd@{\mbox{%
+ \faCreativeCommons\kern0.1em%
+ \faCreativeCommonsBy\kern0.1em%
+ \faCreativeCommonsNd}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ccbyncnd,\ccbyncnd*}
+% The command \cmd{\ccbyncnd} typesets the icons for the
+% Attribution"-NonCommercial"-NoDerivatives licence: {\ccbyncnd}.
+% \begin{macrocode}
+\newcommand*\ccbyncnd{\ccbyncnd@\@ifstar{~\faCopyright[regular]}\relax}
+\newcommand*\ccbyncnd@{\mbox{%
+ \faCreativeCommons\kern0.1em%
+ \faCreativeCommonsBy\kern0.1em%
+ \faCreativeCommonsNc\kern0.1em%
+ \faCreativeCommonsNd}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Mathematics}
+% \label{sec:implementation:mathematics}
+%
+% \begin{macro}{\Pr,\E,\Var,\Cov,\corr}
+% We provide a number of shortcuts for the more common mathematical
+% operators.
+% \begin{macrocode}
+\let\Pr\relax
+\DeclareMathOperator{\Pr}{P}
+\DeclareMathOperator{\E}{E}
+\DeclareMathOperator{\Var}{var}
+\DeclareMathOperator{\Cov}{cov}
+\DeclareMathOperator{\corr}{corr}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\prdist}
+% The command \cmd{\prdist} typesets the symbol or the name of a
+% probability distribution. With the newer {\TeX} engines that load
+% \pkg{unicode-math}, \cmd{\symcal} is recommended over
+% \cmdprint{\mathcal}.
+% \begin{macrocode}
+\iftutex
+ \let\prdist\symcal
+\else
+ \let\prdist\mathcal
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mat,\trsp,\tr,\diag}
+% The class provides special commands to typeset matrix and vector
+% names, a carefully designed transpose symbol, and the most common
+% linear algebra operators.
+% \begin{macrocode}
+\iftutex
+ \newcommand*\mat[1]{\symbf{#1}}
+ \newcommand*\trsp{^{\mkern-1.5mu\symsfup{T}}}
+\else
+ \newcommand*\mat[1]{\mathbf{#1}}
+ \newcommand*\trsp{^{\mkern-1.5mu\mathsf{T}}}
+\fi
+\DeclareMathOperator{\tr}{tr}
+\DeclareMathOperator{\diag}{diag}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Nset,\Zset,\Qset,\Rset,\Cset}
+% To ensure uniformity, the class provides commands to typeset the
+% sets of natural numbers, integers, rational numbers, real numbers,
+% and complex numbers.
+% \begin{macrocode}
+\iftutex
+ \newcommand*\Nset{\symbb{N}}
+ \newcommand*\Zset{\symbb{Z}}
+ \newcommand*\Qset{\symbb{Q}}
+ \newcommand*\Rset{\symbb{R}}
+ \newcommand*\Cset{\symbb{C}}
+\else
+ \newcommand*\Nset{\mathbb{N}}
+ \newcommand*\Zset{\mathbb{Z}}
+ \newcommand*\Qset{\mathbb{Q}}
+ \newcommand*\Rset{\mathbb{R}}
+ \newcommand*\Cset{\mathbb{C}}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% The class defines a number of theorem-like environments using the
+% \pkg{amsthm} styles.
+% \begin{macrocode}
+\def\CJS@theoremname@en{Theorem}
+\def\CJS@theoremname@fr{Théorème}
+\def\CJS@lemmaname@en{Lemma}
+\def\CJS@lemmaname@fr{Lemme}
+\def\CJS@propositionname@en{Proposition}
+\def\CJS@propositionname@fr{Proposition}
+\def\CJS@corollaryname@en{Corollary}
+\def\CJS@corollaryname@fr{Corollaire}
+\def\CJS@definitionname@en{Definition}
+\def\CJS@definitionname@fr{Définition}
+\def\CJS@algorithmname@en{Algorithm}
+\def\CJS@algorithmname@fr{Algorithme}
+\def\CJS@remarkname@en{Remark}
+\def\CJS@remarkname@fr{Remarque}
+\theoremstyle{plain}
+\newtheorem{theorem}{\iflanguage{french}{\CJS@theoremname@fr}{\CJS@theoremname@en}}
+\newtheorem{lemma}{\iflanguage{french}{\CJS@lemmaname@fr}{\CJS@lemmaname@en}}
+\newtheorem{proposition}{\iflanguage{french}{\CJS@propositionname@fr}{\CJS@propositionname@en}}
+\newtheorem{corollary}{\iflanguage{french}{\CJS@corollaryname@fr}{\CJS@corollaryname@en}}
+\theoremstyle{definition}
+\newtheorem{definition}{\iflanguage{french}{\CJS@definitionname@fr}{\CJS@definitionname@en}}
+\newtheorem{algorithm}{\iflanguage{french}{\CJS@algorithmname@fr}{\CJS@algorithmname@en}}
+\theoremstyle{remark}
+\newtheorem{remark}{\iflanguage{french}{\CJS@remarkname@fr}{\CJS@remarkname@en}}
+% \end{macrocode}
+%
+% \begin{macro}{\eqref}
+% The command \cmd{\eqref} from \pkg{amsmath} should be used to
+% refer to equations. We redefine it such that the parentheses are
+% part of the hyperlink, and that the command inherits
+% font changes, notably in titles.\footnote{%
+% With thanks to Heiko Oberdiek
+% (\url{https://tex.stackexchange.com/a/192754}) and David
+% Carlisle (\url{https://tex.stackexchange.com/a/631254}).}
+% \begin{macrocode}
+\renewcommand*\eqref[1]{\hyperref[{#1}]{\textup{(\ref*{#1})}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Computer code and software}
+% \label{sec:implementation:software}
+%
+% \begin{macro}{\proglang}
+% The command \cmd{\proglang} provides a means to uniformly typeset
+% the name of a software or programming language. The command also
+% prevents hyphenation within the name. The class also provides
+% shortcuts to the most common languages. Notice that the
+% \cmd{\Cpplang} case is specially crafted.
+% \begin{macrocode}
+\newcommand*\proglang[1]{{\hyphenchar\font=-1 #1}}
+\newcommand*\Rlang{\proglang{R}}
+\newcommand*\SASlang{\proglang{SAS}}
+\newcommand*\SPSSlang{\proglang{SPSS}}
+\newcommand*\Statalang{\proglang{Stata}}
+\newcommand*\Pylang{\proglang{Python}}
+\newcommand*\Julialang{\proglang{Julia}}
+\newcommand*\Clang{\proglang{C}}
+\newcommand*\CJS@plus{%
+ \ifx\f@family\sfdefault%
+ \protect\hspace{-.04em}\protect\raisebox{-.125ex}{\larger+}%
+ \else%
+ \protect\hspace{-.03em}\protect\raisebox{.25ex}{\smaller+}%
+ \fi}
+\newcommand*\Cpplang{\proglang{C\CJS@plus\CJS@plus}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pkg}
+% The command \cmd{\pkg} typesets the name of software packages, extensions
+% or modules.
+% \begin{macrocode}
+\let\pkg\textbf
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\code}
+% The following pretty smart implementation of \cmd{\code} allows
+% use of the active characters \code{_}, \code{~} and \code{$} as is
+% within the command. It is lifted from the class file of the
+% \emph{Journal of Statistical Software}.
+% \begin{macrocode}
+\newcommand\code{\bgroup\@makeother\_\@makeother\~\@makeother\$\code@}
+\def\code@#1{{\normalfont\ttfamily\hyphenchar\font=-1 #1}\egroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Appendices}
+% \label{sec:implementation:appendices}
+%
+% \begin{macro}{\appendix}
+% Given that appendices are sections in the class (instead of
+% chapters as with \class{memoir}), we redefine \cmd{\appendix}
+% based on the standard \class{article} class definition.
+% \begin{macrocode}
+\renewcommand*\appendix{\par
+ \setcounter{section}{0}
+ \gdef\thesection{\@Alph\c@section}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Citations and references}
+% \label{sec:implementation:references}
+%
+% Very little to do here, as most of the work on the citations front
+% is handled by \pkg{natbib}. We loaded the package with the option
+% \code{sectionbib} to obtain the list of references as a section, but
+% \class{memoir} will use \cmd{\section} in such instances. We want an
+% unnumbered section. To achieve this efficiently, we redefine
+% the internal command of \class{memoir}.
+% \begin{macrocode}
+\renewcommand{\@memb@bsec}{\section*{\bibname}\prebibhook}
+% \end{macrocode}
+%
+% Furthermore, we need to redefine the title of the section, because
+% \class{memoir} uses ``Bibliography'' by default. Due to the presence
+% of \pkg{babel}, we have to use \cmd{\setlocalecaption} rather than
+% redefine \cmd{\bibname} directly.
+% \begin{macrocode}
+\setlocalecaption{english}{bib}{References}
+\setlocalecaption{french}{bib}{Références}
+% \end{macrocode}
+%
+% The class uses its own bibliographic styles: {\CJSbsten} for
+% articles in English, and {\CJSbstfr} for articles in French. For
+% additional information on these styles, please refer to the
+% documentation of the master bibliographic style in
+% \code{cjs-rcs-merlin.pdf}.
+% \begin{macrocode}
+\bibliographystyle{\iflanguage{french}{cjs-rcs-fr}{cjs-rcs-en}}
+% \end{macrocode}
+%
+% Finally, condense the bibliography. The default spacing between the
+% entries defined by \pkg{natbib} is $\cmdprint{\itemsep} +
+% \cmdprint{\parsep}$, which amounts to $2 \times \cmdprint{\itemsep}$.
+% Reduce this to \cmdprint{\itemsep}.
+% \begin{macrocode}
+\setlength{\bibsep}{\itemsep}
+% \end{macrocode}
+%
+% \subsection{Supplementary material}
+%
+% In order to easily distinguish them from their counterparts of the
+% main article, sections, equations, theorems, figure, etc., are
+% numbered with \makeatletter``\CJS@suppprefix''\makeatother in
+% prefix. For document divisions, we only need to change
+% \cmd{\thesection} as the lower level printing commands are based on
+% the latter.
+% \begin{macrocode}
+\def\CJS@suppprefix{S} % required for the documentation
+\ifCJS@supplement
+ \renewcommand*\thesection{\CJS@suppprefix\arabic{section}}
+ \renewcommand*\thefigure{\CJS@suppprefix\arabic{figure}}
+ \renewcommand*\thetable{\CJS@suppprefix\arabic{table}}
+ \renewcommand*\theequation{\CJS@suppprefix\arabic{equation}}
+ \renewcommand*\thetheorem{\CJS@suppprefix\arabic{theorem}}
+ \renewcommand*\thelemma{\CJS@suppprefix\arabic{lemma}}
+ \renewcommand*\theproposition{\CJS@suppprefix\arabic{proposition}}
+ \renewcommand*\thecorollary{\CJS@suppprefix\arabic{corollary}}
+ \renewcommand*\thedefinition{\CJS@suppprefix\arabic{definition}}
+ \renewcommand*\thealgorithm{\CJS@suppprefix\arabic{algorithm}}
+ \renewcommand*\theremark{\CJS@suppprefix\arabic{remark}}
+\fi
+% \end{macrocode}
+%
+% \subsection{Commands for the editors}
+% \label{sec:implementation:editors}
+%
+% \begin{option}{final}
+% The class option \code{final} activates a number of sanity checks
+% on the document: the journal publication information (volume,
+% issue, year) is provided; the folio of the first page is set; the
+% article history (date received, date accepted) is provided. These
+% checks are conducted at the end of the document.
+% \begin{macrocode}
+\AtEndDocument{%
+ \ifCJS@final
+ \ifdefempty{\CJS@vol}{%
+ \ClassError{cjs-rcs-article}%
+ {Unknown Journal volume}%
+ {Use \string\jvol\space to specify the volume.}}{\relax}
+ \ifdefempty{\CJS@issue}{%
+ \ClassError{cjs-rcs-article}%
+ {Unknown Journal issue}%
+ {Use \string\jissue\space to specify the issue.}}{\relax}
+ \ifdefempty{\CJS@year}{%
+ \ClassError{cjs-rcs-article}%
+ {Unknown Journal publication year}%
+ {Use \string\jyear\space to specify the year.}}{\relax}
+ \ifdefstring{\CJS@firstpage}{1}{%
+ \ClassWarningNoLine{cjs-rcs-article}%
+ {The first page number is not set.\MessageBreak%
+ Using the default folio 1}}{\relax}
+ \ifCJS@history\else
+ \ClassError{cjs-rcs-article}%
+ {Unknown article history}%
+ {Use \string\received\space and \string\accepted\space to provide the article history.}
+ \fi
+ \fi}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{macro}{\jvol,\jissue,\jyear,\firstpage}
+% The editors use the commands \cmd{\jvol}, \cmd{\jissue},
+% \cmd{\jyear} and \cmd{\firstpage} to enter the publication
+% information of the journal.
+% \begin{macrocode}
+\def\CJS@vol{}
+\def\CJS@issue{}
+\def\CJS@year{}
+\def\CJS@firstpage{1}
+\newcommand*\jvol[1]{\renewcommand*\CJS@vol{#1}}
+\newcommand*\jissue[1]{\renewcommand*\CJS@issue{#1}}
+\newcommand*\jyear[1]{\renewcommand*\CJS@year{#1}}
+\newcommand*\firstpage[1]{\renewcommand*\CJS@firstpage{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\received,\accepted}
+% The article history --- dates when the article was received and
+% accepted --- is printed at the very end of the article when present.
+% Its treatment involves a number of steps.
+%
+% First, the dates themselves are input in ISO format YYYY-MM-DD and
+% converted in language dependent strings using the package
+% \pkg{datetime2}. In English, we want to use the British format
+% without the ordinal for the day: ``1 January 1970''. In French, we
+% can simply rely on the default format.
+% \begin{macrocode}
+\DTMlangsetup[en-GB]{ord=omit}
+% \end{macrocode}
+%
+% Next, we need interface commands, a special kind of list to
+% display the information, and a macro to actually typeset the
+% history. Providing a \emph{received} date marks the article
+% history as present. The dates are saved and printed using commands
+% from \pkg{datetime2}.
+% \begin{macrocode}
+\def\CJS@receivedname@en{Received}
+\def\CJS@receivedname@fr{Reçu le}
+\def\CJS@acceptedname@en{Accepted}
+\def\CJS@acceptedname@fr{Accepté le}
+\newcommand*\received[1]{\CJS@historytrue\DTMsavedate{received}{#1}}
+\newcommand*\accepted[1]{\DTMsavedate{accepted}{#1}}
+\newlist{CJS@historylist}{itemize*}{1}
+\setlist[CJS@historylist]{%
+ mode=unboxed,
+ font=\sffamily,
+ itemjoin={{ --- }},
+ after={}
+}
+\newcommand*\CJS@history{%
+ \small\sffamily%
+ \begin{CJS@historylist}
+ \item[\iflanguage{french}{\CJS@receivedname@fr}{\CJS@receivedname@en}]
+ \DTMusedate{received}%
+ \DTMifsaveddate{accepted}{%
+ \item[\iflanguage{french}{\CJS@acceptedname@fr}{\CJS@acceptedname@en}]
+ \DTMusedate{accepted}}{\relax}%
+ \end{CJS@historylist}\par}
+% \end{macrocode}
+% \end{macro}
+%
+% We also define a decorative element similar to the one used on the
+% title page, only adapted for a single line content. To create a
+% balanced element, we use the height of a letter with an ascender and
+% the depth of the old-style number 4.
+% \begin{macrocode}
+\setbox\@ne=\vbox{\hbox{\firaoldstyle\small l4}}
+\newsavebox\CJS@historyornament
+\setbox\CJS@historyornament=\vbox{%
+ \setbox\thr@@\hbox{\vrule \@width1.5pt\@height\ht\@ne\@depth\dp\@ne}
+ \hbox{\textcolor{CJSpink}{\copy\thr@@}\kern.75pt%
+ \textcolor{CJSred}{\copy\thr@@}\kern.75pt%
+ \textcolor{CJSyellow}{\copy\thr@@}\kern3pt}}
+% \end{macrocode}
+%
+% Finally, the history information, when present, is printed at the
+% end of the article.
+% \begin{macrocode}
+\newcommand*\CJS@historybox{
+ \par\addvspace{2\baselineskip}\noindent%
+ \smash{\box\CJS@historyornament \CJS@history}\par%
+ \vspace*{40pt}}
+\AtEndDocument{\ifCJS@journalinfo\ifCJS@history\CJS@historybox\fi\fi}
+% \end{macrocode}
+% \end{macro}
+%</class>
+% ^^A <<<<< End of the code of the class
+%
+% ^^A Change notes for the templates must appear before \Finale
+% \changes{0.93}{2023-11-07}{Templates: fix a missing closing brace in
+% \cs{author} commands.}
+% \Finale
+%
+% \iffalse
+% ^^A English and French templates
+%<*template>
+%<en>%% ARTICLE TEMPLATE FOR THE CANADIAN JOURNAL OF STATISTICS
+%<en>%%
+%<en>%% Please refer to the documentation of the class cjs-rcs-article
+%<en>%% for a detailed description of the class.
+%<en>%%
+%<en>%% [Do not hesitate to delete the comments once read.]
+%<en>%%
+%<en>%% Class declaration for an article in English.
+%<en>\documentclass[french,english]{cjs-rcs-article}
+%<fr>%% GABARIT D'ARTICLE POUR LA REVUE CANADIENNE DE STATISTIQUE
+%<fr>%%
+%<fr>%% Consulter la documentation de la classe cjs-rcs-article pour une
+%<fr>%% description détaillée de la classe.
+%<fr>%%
+%<fr>%% [Ne pas hésiter à supprimer les commentaires après les avoir lus.]
+%<fr>%%
+%<fr>%% Déclaration de la classe pour un article en français.
+%<fr>\documentclass[english,french]{cjs-rcs-article}
+%<en> %% Reserved commands for the journal editors. Leave untouched
+%<en> %% and commented out.
+%<fr> %% Commandes réservées aux éditeurs de La revue. Laisser en
+%<fr> %% commentaires sans les supprimer.
+ % \jvol{00}
+ % \jissue{00}
+ % \jyear{YYYY}
+ % \firstpage{1}
+ % \received{YYYY-MM-DD}
+ % \accepted{YYYY-MM-DD}
+ % \licence{}
+
+%<en> %% Load additional packages here. Avoid loading unnecessary
+%<en> %% packages.
+%<fr> %% Charger ici les éventuels paquetages additionnels. Utiliser
+%<fr> %% uniquement des paquetages absolument requis pour le manuscript.
+ % \usepackage{}
+
+%<en> %% Information for the title page and back matter. Replace the text
+%<en> %% between < >. Delete the symbols < >.
+%<fr> %% Informations de la page de titre et des parties annexes.
+%<fr> %% Remplacer le texte entre < >. Supprimer les caractères < >.
+ %%
+%<en> %% TITLE OF THE ARTICLE. The title should be concise and
+%<en> %% descriptive. Insert line breaks manually in long titles using \\
+%<en> %% (before determinants and prepositions). If the full title does
+%<en> %% not fit in the article header, provide a shorter version in the
+%<en> %% optional argument (between the brackets [ ]).
+%<en> \title{<Title of the article>}
+%<en> % \title[Short version of the title]{Example of a long title \\
+%<en> % with manual line break}
+%<fr> %% TITRE DE L'ARTICLE. Utiliser un titre concis et descriptif. Si le
+%<fr> %% titre est long, insérer les changements de ligne manuellement
+%<fr> %% avec \\ (avant les déterminants et prépositions). Si le titre
+%<fr> %% est trop long pour l'entête, fournir une version courte en
+%<fr> %% argument optionnel (entre les crochets [ ]).
+%<fr> \title{<Titre de l'article>}
+%<fr> % \title[Version courte du titre]{Ceci est un exemple de long titre \\
+%<fr> % avec saut de ligne manuel}
+
+%<en> %% AUTHORS AND AFFILIATIONS. The identification of the authors uses
+%<en> %% a series of pairs of commands \author and \affil, one per author.
+%<en> %% Enter the name entirely in lowercase (except for leading capitals
+%<en> %% and initials). The surname must be given inside \surname. Use the
+%<en> %% optional argument to specify the ORCID iD, email address, and
+%<en> %% corresponding author status of the author.
+%<en> \author[orcid=<id>, email=<email>, corresponding]
+%<en> {<Forename> \surname{<Surname>}}
+%<en> \affil{<Department, University, City, Country>}
+%<en> % \author[orcid=<id>, email=<email>]
+%<en> % {<Forename> \surname{<Surname>}}
+%<en> % \affil{<Department, University, City, Country>}
+%<en> % \author[orcid=<id>, email=<email>]
+%<en> % {<Forename> \surname{<Surname>}}
+%<en> % \affil{<Department, University, City, Country>}
+%<fr> %% AUTEURS ET AFFILIATIONS. L'identification des auteurs se fait
+%<fr> %% par des paires de commandes \author et \affil, une par auteur.
+%<fr> %% Saisir le nom de l'auteur entièrement en minuscules (sauf pour
+%<fr> %% les premières lettres et les initiales). Placer le nom (de
+%<fr> %% famille) dans une commande \surname. L'argument optionnel permet
+%<fr> %% d'indiquer l'identifiant ORCID de l'auteur, son adresse courriel
+%<fr> %% et son statut d'auteur correspondant.
+%<fr> \author[orcid=<id>, email=<courriel>, corresponding]
+%<fr> {<Prénom> \surname{<Nom>}}
+%<fr> \affil{<Département, Université, Ville, Pays>}
+%<fr> % \author[orcid=<id>, email=<courriel>]
+%<fr> % {<Prénom> \surname{<Nom>}}
+%<fr> % \affil{<Département, Université, Ville, Pays>}
+%<fr> % \author[orcid=<id>, email=<courriel>]
+%<fr> % {<Prénom> \surname{<Nom>}}
+%<fr> % \affil{<Département, Université, Ville, Pays>}
+
+%<en> %% (Optional - uncomment to use) If the list of authors does not fit
+%<en> %% in the article header, use the command \runningauthor to provide
+%<en> %% a shorter identification of the form "Surname et al.".
+%<en> % \runningauthor{<Surname> et al.}
+%<fr> %% (Optionnel - décommenter pour utiliser) Si la liste des auteurs
+%<fr> %% est trop longue pour l'entête de l'article, utiliser la commande
+%<fr> %% \runningauthor pour fournir une identification plus courte de la
+%<fr> %% forme «Nom et collab.»
+%<fr> % \runningauthor{<Nom> et collab.}
+
+%<en> %% ABSTRACTS. You must provide an English and a French abstract.
+%<en> %% The order is not important; they will be positioned on the title
+%<en> %% page automatically.
+%<fr> %% RÉSUMÉS. Vous devez fournir un résumé en français et un résumé en
+%<fr> %% anglais. L'ordre est sans importance; ils seront positionnés sur
+%<fr> %% la page de titre automatiquement.
+ \begin{englishabstract}
+ <Insert your English abstract here. The abstract should be concise
+ --- up to 10 lines long --- and descriptive. Avoid symbols as much
+ as possible. Formulas are strongly discouraged, and citations
+ should be avoided.>
+%<fr> [Un résumé en anglais sera fourni pour les auteurs qui ne peuvent
+%<fr> le préparer eux-mêmes.]
+ \end{englishabstract}
+
+ \begin{frenchabstract}
+ <Insérer le texte du résumé en français ici. Le résumé doit être
+ concis --- une dizaine de lignes --- et descriptif. Éviter autant
+ que possible les symboles. Les équations mathématiques sont
+ fortement découragées et les citations sont à éviter.>
+%<en> [We will supply a French abstract for those authors who
+%<en> can't prepare it themselves.]
+ \end{frenchabstract}
+
+%<en> %% KEY WORDS. Provide a list of key words in alphabetical order.
+%<en> %% Capitalize only the first key word. Do not use any punctuation.
+%<fr> %% MOTS-CLÉS. Fournir une liste de mots-clés en ordre alphabétique.
+%<fr> %% Utiliser une majuscule initiale pour le premier mot-clé seulement.
+%<fr> %% Ne pas saisir de ponctuation.
+ \begin{keywords}
+%<en> \item <Key word 1>
+%<en> \item <key word 2>
+%<en> \item <key word 3>
+%<fr> \item <Mot-clé 1>
+%<fr> \item <mot-clé 2>
+%<fr> \item <mot-clé 3>
+ \end{keywords}
+
+%<en> %% MATHEMATICS SUBJECT CLASSIFICATION. Provide a subject
+%<en> %% classification for the article, usually split into primary and
+%<en> %% secondary keys. Separate keys by commas, but do not use any other
+%<en> %% punctuation. The default classification is MSC 2020. You can
+%<en> %% specify an alternate type through the optional argument <type>.
+%<fr> %% CLASSIFICATION MATHÉMATIQUE. Fournir des rubriques de
+%<fr> %% classification mathématique de l'article, habituellement divisées
+%<fr> %% en niveaux primaire et secondaire. Séparer les rubriques par des
+%<fr> %% virgules, mais sans aucune autre ponctuation. La classification
+%<fr> %% par défaut est MSC 2020. Il est possible de fournir un autre type
+%<fr> %%de classification avec l'argument optionnel <type>.
+ \begin{classification}
+%<en> \item[Primary] <key 1>, <key 2>
+%<en> \item[Secondary] <key 1>, <key 2>
+%<fr> \item[Primaire] <rubrique 1>, <rubrique 2>
+%<fr> \item[Secondaire] <rubrique 1>, <rubrique 2>
+ \end{classification}
+ % \begin{classification}[<type>]
+%<en> % \item[Primary] <key 1>, <key 2>
+%<en> % \item[Secondary] <key 1>, <key 2>
+%<fr> % \item[Primaire] <rubrique 1>, <rubrique 2>
+%<fr> % \item[Secondaire] <rubrique 1>, <rubrique 2>
+ % \end{classification}
+
+%<en> %% SUPPLEMENTARY MATERIAL (optional - comment out if unused). List
+%<en> %% supplementary material available online. This material must be
+%<en> %% cited in the main article.
+%<fr> %% MATÉRIEL ADDITIONNEL (optionnel - commenter si inutilisé).
+%<fr> %% Fournir la liste du matériel additionnel disponible en ligne. Ce
+%<fr> %% matériel doit être cité dans l'article.
+ \begin{supplement}
+%<en> <Free form text>
+%<fr> <Texte libre>
+ \end{supplement}
+
+%<en> %% DATA SHARING (optional - comment out if unused). Describe how to
+%<en> %% access data that you wish to share. Provide a permanent link such
+%<en> %% as a Document Object Identifier (DOI) or an URL.
+%<fr> %% PARTAGE DES DONNÉES (optionnel - commenter si inutilisé).
+%<fr> %% Expliquer comment accéder à des données de l'article mises à
+%<fr> %% disposition. Fournir un lien permanent, comme un identificateur
+%<fr> %% d'objets numériques (DOI) ou une adresse URL.
+ \begin{sharing}
+%<en> <Free form text>
+%<fr> <Texte libre>
+ \end{sharing}
+
+%<en> %% ACKNOWLEDGEMENTS (optional - comment out if unused). Place all
+%<en> %% acknowledgements here. Avoid duplicating the contents of the
+%<en> %% funding information, below. You may specify a different title
+%<en> %% for this information through the optional argument.
+%<fr> %% REMERCIEMENTS (optionnel - commenter si inutilisé). Inscrire vos
+%<fr> %% remerciements ici. Attention de ne pas répéter la rubrique de
+%<fr> %% financement de la recherche, ci-dessous. L'argument optionnel
+%<fr> %% permet de remplacer le titre par défaut par un terme de votre
+%<fr> %% choix.
+ \begin{acknowledgements}
+%<en> <Free form text>
+%<fr> <Texte libre>
+ \end{acknowledgements}
+%<en> % \begin{acknowledgements}[<Title>]
+%<en> % <Free form text>
+%<fr> % \begin{acknowledgements}[<Titre>]
+%<fr> % <Texte libre>
+ % \end{acknowledgements}
+
+%<en> %% FUNDING INFORMATION (optional - comment out if unused). Provide
+%<en> %% any funding information as free form text. Do not abbreviate the
+%<en> %% name of grating agencies. You may specify a different title for
+%<en> %% this information through the optional argument.
+%<fr> %% FINANCEMENT DE LA RECHERCHE (optionnel - commenter si inutilisé).
+%<fr> %% Inscrire les informations sur le financement de la recherche sous
+%<fr> %% forme de texte libre. Indiquer le nom des agences de financement
+%<fr> %% au long. L'argument optionnel permet de remplacer le titre par
+%<fr> %% défaut par un terme de votre choix.
+ \begin{funding}
+%<en> <Free form text>
+%<fr> <Texte libre>
+ \end{funding}
+%<en> % \begin{funding}[<Title>]
+%<en> % <Free form text>
+%<fr> % \begin{funding}[<Titre>]
+%<fr> % <Texte libre>
+ % \end{funding}
+
+\begin{document}
+
+%<en>%% Title page
+%<en>\maketitle % typeset the title page
+%<fr>%% Page de titre
+%<fr>\maketitle % composer la page de titre
+
+%<en>%% Body of the article
+%<fr>%% Corps de l'article
+\section{Introduction}
+
+%<en><Start the article by an introduction.>
+%<fr><Débuter l'article par une introduction.>
+
+%<en>\section{<Section title>}
+%<fr>\section{<Titre de section>}
+
+%<en><Use the LaTeX sectioning commands to divide the articles in sections,
+%<en>subsections, subsubsections, etc. Write the title in sentence style,
+%<en>that is, with only a leading capital.>
+%<fr><Utiliser les commandes LaTeX pour diviser en sections, sous-sections,
+%<fr>sous-sous-sections, etc. Écrire les titres avec uniquement une
+%<fr>majuscule initiale.>
+
+\section{Conclusion}
+
+%<en><Summarize the article in a conclusion.>
+%<fr><Résumer l'article dans une conclusion.>
+
+%<en>%% Back matter
+%<en>\makebackmatter % typeset the back matter
+%<fr>%% Parties annexes
+%<fr>\makebackmatter % composer les parties annexes
+
+%<en>%% Appendices (optional - comment out if unused)
+%<en>\appendix % start of appendices
+%<fr>%% Annexes (optionnel - commenter si inutilisé)
+%<fr>\appendix % début des annexes
+%<en>\section{<Appendix title>}
+%<fr>\section{<Titre de l'annexe>}
+
+%<en><Appendices are reserved for proofs and longer mathematical
+%<en>arguments. All appendices must be cited in the main article.>
+%<fr><Les annexes sont dévolues aux démontrations de théorèmes ou autres
+%<fr>longs développements mathématiques. Les annexes doivent être citées
+%<fr>dans l'article.>
+
+%<en>%% List of references. Cite using the commands of the natbib package.
+%<en>%% Insert the filenames of the bibliography files (.bib files) inside
+%<en>%% the command \bibliography, without the extension and separated by
+%<en>%% commas.
+%<fr>%% Liste des références. Citer avec les commandes du paquetage natbib.
+%<fr>%% Insérer les noms des bases de données bibliographiques (fichiers
+%<fr>%% .bib) dans la commande \bibliography, sans extension et séparés
+%<fr>%% par des virgules.
+\bibliography{}
+
+\end{document}
+%</template>
+% \fi
+%
+% \iffalse
+%<*fr-doc>
+%% Wrapper to set language to French
+%% (https://tex.stackexchange.com/a/28646).
+\expandafter\newif\csname ifenglish\endcsname
+\englishfalse
+\input{cjs-rcs-article.dtx}
+%</fr-doc>
+% \fi
diff --git a/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-article.ins b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-article.ins
new file mode 100644
index 00000000000..44665d1a2bb
--- /dev/null
+++ b/Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-article.ins
@@ -0,0 +1,34 @@
+\input docstrip.tex
+
+\batchinput{cjs-rcs-class.dbj}
+\batchinput{cjs-rcs-bst-en.dbj}
+\batchinput{cjs-rcs-bst-fr.dbj}
+
+\obeyspaces
+\Msg{**************************************************************}
+\Msg{* *}
+\Msg{* The cjs-rcs-article class is now ready to use! *}
+\Msg{* *}
+\Msg{* Use one of the provided templates as a basis for your *}
+\Msg{* paper. *}
+\Msg{* *}
+\Msg{* To produce the English documentation of the class run *}
+\Msg{* the file cjs-rcs-article.dtx through XeLaTeX. *}
+\Msg{* *}
+\Msg{* Have fun writing! *}
+\Msg{* *}
+\Msg{* ========================================================== *}
+\Msg{* *}
+\Msg{* La classe cjs-rcs-article est maintenant prête à l'emploi! *}
+\Msg{* *}
+\Msg{* Utiliser un des gabarits fournis avec la classe comme *}
+\Msg{* base pour votre article. *}
+\Msg{* *}
+\Msg{* Pour produire la documentation française de la classe, *}
+\Msg{* compiler le fichier cjs-rcs-article-fr.tex avec XeLaTeX. *}
+\Msg{* *}
+\Msg{* Bonne rédaction! *}
+\Msg{* *}
+\Msg{**************************************************************}
+
+\endbatchfile
diff --git a/Master/texmf-dist/tex/latex/cjs-rcs-article/cjs-rcs-article.cls b/Master/texmf-dist/tex/latex/cjs-rcs-article/cjs-rcs-article.cls
new file mode 100644
index 00000000000..7a2093a2d49
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/cjs-rcs-article/cjs-rcs-article.cls
@@ -0,0 +1,755 @@
+%%
+%% This is file `cjs-rcs-article.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cjs-rcs-article.dtx (with options: `class')
+%%
+%% This is a generated file.
+%%
+%% Copyright (C) 2023 Statistical Society of Canada | Société
+%% canadienne de statistique
+%%
+%% 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
+%%
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2006/05/20 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Vincent Goulet
+%% <vincent.goulet@act.ulaval.ca>.
+%%
+%% This work consists of the file cjs-rcs-article.dtx and the derived
+%% files cjs-rcs-article.cls, cjs-rcs-article-fr.tex, cjs-template.tex
+%% and rcs-gabarit.tex.
+%%
+\NeedsTeXFormat{LaTeX2e}[2009/09/24]
+\ProvidesClass{cjs-rcs-article}%
+ [2023/11/29 v1.0 Article class for The Canadian Journal of
+ Statistics | La revue canadienne de statistique]
+\newif\ifCJS@review \CJS@reviewfalse % review version?
+\newif\ifCJS@supplement \CJS@supplementfalse % supplementary material?
+\newif\ifCJS@nocjs \CJS@nocjsfalse % not a CJS article?
+\newif\ifCJS@final \CJS@finalfalse % final version?
+\newif\ifCJS@titlingfooter \CJS@titlingfooterfalse % footer on title page?
+\newif\ifCJS@journalinfo \CJS@journalinfotrue % display journal info?
+\newif\ifCJS@fancybreak \CJS@fancybreaktrue % display fancy break?
+\newif\ifCJS@history \CJS@historyfalse % history present?
+\newif\ifCJS@corrauth \CJS@corrauthfalse % corresponding author?
+\newif\ifCJS@newauth \CJS@newauthtrue % internal; author blocks
+\DeclareOption{review}{%
+ \CJS@reviewtrue
+ \CJS@titlingfootertrue}
+\DeclareOption{supplement}{%
+ \CJS@supplementtrue
+ \CJS@titlingfootertrue}
+\DeclareOption{nocjs}{%
+ \CJS@nocjstrue
+ \CJS@titlingfootertrue
+ \CJS@journalinfofalse}
+\DeclareOption{final}{%
+ \CJS@finaltrue
+ \CJS@reviewfalse}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{memoir}}
+\ProcessOptions\relax
+\LoadClass[letterpaper,10pt,article,twoside]{memoir}
+\RequirePackage{iflang}
+\RequirePackage[round,semicolon,authoryear,sectionbib]{natbib}
+\RequirePackage{babel}
+\RequirePackage[autolanguage]{numprint}
+\AtEndPreamble{%
+ \RequirePackage{bookmark} % loads hyperref
+ \hypersetup{%
+ colorlinks = true,
+ urlcolor = {CJSurl},
+ linkcolor = {CJSlink},
+ citecolor = {CJScitation}}
+ \bookmarksetup{%
+ open = true,
+ depth = 3,
+ numbered = true}
+ \addto\extrasenglish{%
+ \def\sectionautorefname{Section}%
+ \def\subsectionautorefname{Section}%
+ \def\subsubsectionautorefname{Section}%
+ \def\figureautorefname{Figure}%
+ \def\tableautorefname{Table}%
+ \def\theoremautorefname{Theorem}%
+ \def\lemmaautorefname{Lemma}%
+ \def\propositionautorefname{Proposition}%
+ \def\corollaryautorefname{Corollary}%
+ \def\definitionautorefname{Definition}%
+ \def\algorithmautorefname{Algorithm}%
+ \def\remarkautorefname{Remark}}
+ \addto\extrasfrench{%
+ \def\sectionautorefname{section}%
+ \def\subsectionautorefname{section}%
+ \def\subsubsectionautorefname{section}%
+ \def\figureautorefname{figure}%
+ \def\tableautorefname{tableau}%
+ \def\theoremautorefname{théorème}%
+ \def\lemmaautorefname{lemme}%
+ \def\propositionautorefname{proposition}%
+ \def\corollaryautorefname{corollaire}%
+ \def\definitionautorefname{définition}%
+ \def\algorithmautorefname{algorithme}%
+ \def\remarkautorefname{remarque}}}
+\RequirePackage{keyval}
+\RequirePackage[shortlabels]{enumitem}
+\RequirePackage{environ}
+\RequirePackage[useregional,french,en-GB]{datetime2}
+\RequirePackage{xcolor}
+\RequirePackage{paracol}
+\RequirePackage{ragged2e}
+\RequirePackage{url}
+\RequirePackage{relsize}
+\RequirePackage{fontawesome5}
+\RequirePackage{graphicx}
+\RequirePackage{amsmath}
+\RequirePackage{amsthm}
+\ifCJS@review
+ \RequirePackage{lineno}
+ \linenumbers
+\fi
+\AtBeginDocument{%
+ \@ifpackageloaded{geometry}{%
+ \ClassError{cjs-rcs-article}%
+ {Package geometry is incompatible with this class}%
+ {You should not change the page layout.\MessageBreak%
+ If absolutely needed, use the memoir class facilities.}}{\relax}}
+\iftutex
+ \RequirePackage[babel=true]{microtype}
+ \RequirePackage{fontspec}
+ \RequirePackage{unicode-math}
+ \setmainfont{STIXTwoText}
+ [
+ Extension = .otf,
+ UprightFont = *-Regular,
+ BoldFont = *-SemiBold,
+ ItalicFont = *-Italic,
+ BoldItalicFont = *-SemiBoldItalic,
+ Scale = 1,
+ Ligatures = TeX
+ ]
+ \setmathfont{STIXTwoMath-Regular}
+ [
+ Extension = .otf,
+ Scale = 1,
+ Ligatures = TeX
+ ]
+ \setmathfont{FiraMath-Regular}
+ [
+ version = titles,
+ Extension = .otf,
+ Scale = 0.92
+ ]
+\else
+ \RequirePackage[babel=true]{microtype}
+ \RequirePackage[utf8]{inputenc}
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage{stix2}
+\fi
+\RequirePackage[book,medium,proportional,lining,scale=0.92]{FiraSans}
+\RequirePackage[medium,lining,scale=0.90]{FiraMono}
+\ifCJS@review
+ \renewcommand*\linenumberfont{\normalfont\firalining\tiny}
+ \setlength\linenumbersep{5pt}
+\fi
+\definecolor{CJSpink}{HTML}{E3038B}
+\definecolor{CJSred}{HTML}{D10000}
+\definecolor{CJSyellow}{HTML}{FEC70D}
+\definecolor{CJSlink}{rgb}{0,0.4,0.6} % internal links
+\definecolor{CJSurl}{rgb}{0.6,0,0} % external links
+\definecolor{CJScitation}{rgb}{0,0.5,0} % citations
+\definecolor{CJSorcid}{HTML}{A6CE39}
+\setlrmarginsandblock{24mm}{30mm}{*}
+\setulmarginsandblock{24mm}{26mm}{*}
+\setheadfoot{13.5pt}{9mm}
+\checkandfixthelayout[nearest]
+\def\CJS@journalname@en{The Canadian Journal of Statistics}
+\def\CJS@journalname@fr{La revue canadienne de statistique}
+\def\CJS@journalname{\CJS@journalname@en~{\textbar}~\CJS@journalname@fr}
+\setbox\z@=\vbox{\sffamily\hbox{\CJS@journalname}\hbox{\bfseries V,}}
+\newsavebox\CJS@journalornament
+\setbox\CJS@journalornament=\vbox{%
+ \setbox\tw@\hbox{\vrule \@width4pt\@height\ht\z@\@depth\dp\z@}
+ \hbox{\textcolor{CJSpink}{\copy\tw@}\kern2pt%
+ \textcolor{CJSred}{\copy\tw@}\kern2pt%
+ \textcolor{CJSyellow}{\copy\tw@}\kern6pt}}
+\newcommand*\makejournalinfo{%
+ \mbox{%
+ \box\CJS@journalornament
+ \vbox{%
+ \sffamily
+ \hbox{\CJS@journalname}
+ \hbox{\bfseries Vol.~\CJS@vol, %
+ No.~\CJS@issue, %
+ \CJS@year, %
+ \CJS@firstpage--\thelastpage}}}}
+\newcommand*\CJS@setheadfootfont{%
+ \firalining\fontsize{9}{13}\selectfont}
+\newlength\CJS@headdivheight
+\settoheight\CJS@headdivheight{\CJS@setheadfootfont 1}
+\setlength\CJS@headdivheight{0.9\CJS@headdivheight}
+\newcommand*\CJS@headdivrule{%
+ \rule[0.05\CJS@headdivheight]{0.75\normalrulethickness}{\CJS@headdivheight}}
+\newlength\CJS@pagenumwidth
+\settowidth\CJS@pagenumwidth{9\qquad}
+\makepagestyle{cjs}
+\makeevenhead{cjs}{%
+ \CJS@setheadfootfont
+ \begin{tabular*}{\textwidth}%
+ {@{}p{\CJS@pagenumwidth}@{\CJS@headdivrule\qquad}l@{\extracolsep\fill}}
+ \thepage & \ifCJS@review\else\MakeTextUppercase{\CJS@runningauthor}\fi \\ \hline
+ \end{tabular*}}{}{}
+\makeoddhead{cjs}{}{}{%
+ \CJS@setheadfootfont
+ \begin{tabular*}{\textwidth}%
+ {l@{\extracolsep\fill}r@{\extracolsep{0pt}\qquad\CJS@headdivrule}p{\CJS@pagenumwidth}@{}}
+ & \MakeTextUppercase{\CJS@shorttitle} & \hfill\thepage \\ \hline
+ \end{tabular*}}
+\makeevenfoot{cjs}{}{}{} \makeoddfoot{cjs}{}{}{}
+\pagestyle{cjs}
+\makepagestyle{cjsfirstpage}
+\makeevenhead{cjsfirstpage}{}{}{} \makeoddhead{cjsfirstpage}{}{}{}
+\ifCJS@titlingfooter
+ \makeevenfoot{cjsfirstpage}{%
+ \CJS@setheadfootfont
+ \begin{tabular*}{\textwidth}%
+ {@{}p{\CJS@pagenumwidth}@{\CJS@headdivrule\qquad}l@{\extracolsep\fill}}
+ \hline \thepage &
+ \ifCJS@nocjs\CJS@licence\fi
+ \end{tabular*}}{}{}
+ \makeoddfoot{cjsfirstpage}{}{}{%
+ \CJS@setheadfootfont
+ \begin{tabular*}{\textwidth}%
+ {l@{\extracolsep\fill}r@{\extracolsep{0pt}\qquad\CJS@headdivrule}p{\CJS@pagenumwidth}@{}}
+ \hline &
+ \ifCJS@nocjs\CJS@licence\fi &
+ \hfill\thepage
+ \end{tabular*}}
+\fi
+\let\chapter\relax
+\counterwithout{section}{chapter}
+\setsecnumdepth{subsubsection}
+\maxsecnumdepth{subsubsection}
+\iftutex
+ \setsecheadstyle{\normalfont\Large\sffamily\mathversion{titles}\bfseries\raggedright}
+ \setsubsecheadstyle{\normalfont\large\sffamily\mathversion{titles}\bfseries\raggedright}
+ \setsubsubsecheadstyle{\normalfont\sffamily\mathversion{titles}\bfseries\raggedright}
+ \setparaheadstyle{\normalfont\sffamily\mathversion{titles}\bfseries}
+ \setsubparaheadstyle{\normalfont\mathversion{titles}\bfseries}
+\else
+ \setsecheadstyle{\normalfont\Large\sffamily\bfseries\raggedright}
+ \setsubsecheadstyle{\normalfont\large\sffamily\bfseries\raggedright}
+ \setsubsubsecheadstyle{\normalfont\sffamily\bfseries\raggedright}
+ \setparaheadstyle{\normalfont\sffamily\bfseries}
+ \setsubparaheadstyle{\normalfont\bfseries}
+\fi
+\setbeforesecskip{-1.75ex plus -0.5ex minus -0.1ex}
+\setaftersecskip{1.2ex plus 0.1ex}
+\setbeforesubsecskip{-1.5ex plus -0.5ex minus -0.1ex}
+\setaftersubsecskip{0.75ex plus 0.1ex}
+\setbeforesubsubsecskip{-1.5ex plus -0.5ex minus -0.1ex}
+\setaftersubsubsecskip{0.75ex plus 0.1ex}
+\setbeforeparaskip{0pt}
+\setafterparaskip{-0.5em}
+\setbeforesubparaskip{0pt}
+\setaftersubparaskip{-0.25em}
+\ifCJS@review
+ \OnehalfSpacing
+\fi
+\captionnamefont{\bfseries}
+\frenchsetup{%
+ SmallCapsFigTabCaptions=false,
+ ThinSpaceInFrenchNumbers=true,
+ og=«, fg=»}
+\renewcommand*\frenchtablename{Tableau}
+\renewcommand*\frenchfigurename{Figure}
+\newlength\journalinfoskip
+\setlength\journalinfoskip{-4ex}
+\newlength\maintitleskip
+\setlength\maintitleskip{6ex}
+\newlength\supptitleskip
+\setlength\supptitleskip{2ex}
+\newlength\authorskip
+\setlength\authorskip{5ex}
+\newlength\titlingskip
+\setlength\titlingskip{2pt plus2pt minus0.8pt}
+\newlength\fancybreaksep
+\setlength\fancybreaksep{6pt plus3pt minus1pt}
+\def\CJS@supptitlename@en{supplementary material for the article}
+\def\CJS@supptitlename@fr{matériel additionnel pour l'article}
+\newcommand*\supplementfont{\normalfont\Large\scshape}
+\newcommand*\maintitlefont{\raggedright\normalfont\huge\bfseries}
+\renewcommand*\title[2][]{\gdef\CJS@shorttitle{#1}\gdef\@title{#2}}
+\edef\title{\@nx\@dblarg
+ \@xp\@nx\csname\string\title\endcsname}
+\newcommand*\authfont{\normalfont\sffamily\bfseries\color{black}}
+\newcommand*\affilfont{\normalfont\sffamily\color{gray}}
+\newlength\affilsep \setlength\affilsep{\z@}
+\newlength\authsep \setlength\authsep{1ex}
+\define@key{author}{orcid}{\def\CJS@orcid{#1}}
+\define@key{author}{email}{\def\CJS@email{#1}}
+\define@key{author}{corresponding}[true]{%
+ \csname if#1\endcsname \CJS@corrauthtrue\fi}
+\def\CJS@corrauthname@en{Corresponding author}
+\def\CJS@corrauthname@fr{Auteur correspondant}
+\newcommand*\CJS@corrauth{}
+\newcommand*\CJS@orcidlist{}
+\newcommand*\CJS@orcidname{ORCID}
+\newcommand*\CJS@authsep{, }
+\newcommand*\CJS@orcid@and{}
+\newcommand*\CJS@blk@and{\protect\authfont}
+\newcommand*\CJS@pand{\protect\\[\authsep] \protect\authfont}
+\renewcommand\author{%
+ \new@ifnextchar[{\author@}%
+ {\author@[]}}
+\newcommand*\author@{}
+\def\author@[#1]#2{%
+ \begingroup
+ \setkeys{author}{#1}
+ \let\protect\@unexpandable@protect
+ \ifCJS@newauth
+ \xappto\@author{\CJS@blk@and#2}
+ \else
+ \xappto\@author{\CJS@authsep#2}
+ \fi
+ \ifCJS@corrauth
+ \ifundef{\CJS@email}{\relax}{%
+ \protected@xdef\CJS@corrauth{\protect\url{\CJS@email}}
+ \xappto\@author{\;%
+ \protect\href{mailto:\CJS@email}{\corrauthmark}}}
+ \fi
+ \ifundef{\CJS@orcid}{\relax}{%
+ \xappto\@author{\;%
+ \protect\href{https://orcid.org/\CJS@orcid}%
+ {\textcolor{CJSorcid}{\faOrcid}}}
+ \xappto\CJS@orcidlist{\CJS@orcid@and#2: %
+ \protect\href{https://orcid.org/\CJS@orcid}%
+ {\textcolor{CJSorcid}{\faOrcid}\, \protect\url{https://orcid.org/\CJS@orcid}}}
+ \gdef\CJS@orcid@and{\protect\\}}
+ \endgroup
+ \CJS@newauthfalse
+}
+\newcommand*\affil[1]{%
+ \CJS@newauthtrue
+ \let\CJS@blk@and\CJS@pand
+ \begingroup
+ \let\protect\@unexpandable@protect
+ \gappto\@author{\protect\\[\affilsep]\protect\affilfont #1}
+ \endgroup
+}
+\newcommand*\CJS@runningauthor{}
+\newcommand*\CJS@printsurname[1]{\MakeTextUppercase{#1}}
+\newrobustcmd{\surname}[1]{%
+ \ifdefempty{\CJS@runningauthor}{%
+ \def\CJS@runningauthor@{#1}%
+ \edef\CJS@runningauthor@and{\iflanguage{french}{ et }{ and }}%
+ \gappto\CJS@runningauthor{#1}}{%
+ \ifdefvoid{\CJS@runningauthor@and}{\relax}{%
+ \global\let\CJS@runningauthor\CJS@runningauthor@
+ \appto\CJS@runningauthor@{, #1}%
+ \xappto\CJS@runningauthor{\CJS@runningauthor@and#1}%
+ \edef\CJS@runningauthor@and{\iflanguage{french}{ et }{, and }}}}%
+ \CJS@printsurname{#1}%
+}
+\newcommand*\corrauthmark{{\small\faAt}}
+\newcommand*\runningauthor[1]{\renewcommand*\CJS@runningauthor{#1}}
+\def\@author{}
+\def\CJS@englishabstract{}
+\def\CJS@frenchabstract{}
+\NewEnviron{englishabstract}{\global\let\CJS@englishabstract\BODY}
+\NewEnviron{frenchabstract}{\global\let\CJS@frenchabstract\BODY}
+\def\CJS@keywords{}
+\def\CJS@keywordsname@en{Keywords}
+\def\CJS@keywordsname@fr{Mots-clés}
+\NewEnviron{keywords}{\global\let\CJS@keywords\BODY}
+\newlist{CJS@keywordslist}{itemize*}{1}
+\setlist[CJS@keywordslist]{%
+ mode=unboxed,
+ label={},
+ afterlabel={},
+ itemjoin={{; }},
+ after={.}
+}
+\def\CJS@classif{}
+\def\CJS@classifname{}
+\def\CJS@defclassifname{MSC2020}
+\NewEnviron{classification}[1][%
+ \CJS@defclassifname]{%
+ \global\def\CJS@classifname{#1}
+ \global\let\CJS@classif\BODY}
+\newlist{CJS@classiflist}{itemize*}{1}
+\setlist[CJS@classiflist]{%
+ mode=unboxed,
+ itemjoin={{; }},
+ after={.}
+}
+\renewcommand\pfbreakdisplay{%
+ \vskip\fancybreaksep\par%
+ \rule[\z@]{\linewidth}{\normalrulethickness}\hskip-\linewidth
+ \rule[4\normalrulethickness]{\linewidth}{\normalrulethickness}\hskip-\linewidth
+ \rule[8\normalrulethickness]{\linewidth}{\normalrulethickness}\par%
+ \vskip\fancybreaksep}
+\newcommand*\suppressfancybreak{\CJS@fancybreakfalse}
+\newcommand*\showfancybreak{\CJS@fancybreaktrue}
+\renewcommand\maketitle{{%
+ \SingleSpacing
+ \suppressfloats[t]
+ \setlength\parskip{\z@}
+ \setlength\parindent{\z@}
+ \setcounter{page}{\CJS@firstpage}
+ \thispagestyle{cjsfirstpage}
+ \ifCJS@journalinfo
+ \vspace*{\journalinfoskip}
+ \makejournalinfo\par
+ \fi
+ \vspace*{\maintitleskip}
+ \setbox\z@=\vbox{\supplementfont%
+ \iflanguage{french}{\CJS@supptitlename@fr}{\CJS@supptitlename@en}}
+ \ifCJS@supplement
+ \box\z@\par
+ \else
+ \rule{\z@}{\dimexpr\ht\z@}\par % strut
+ \fi
+ \vskip\supptitleskip
+ \begin{minipage}{0.9\textwidth}
+ \maintitlefont\@title\par
+ \end{minipage}
+ \vskip\authorskip
+ \ifCJS@review\else
+ \hrulefill
+ \vskip\belowrulesep
+ \begin{minipage}{0.9\textwidth}
+ \@author
+ \end{minipage}\par
+ \vskip\aboverulesep
+ \hrulefill\par
+ \fi
+ \ifCJS@supplement\else
+ \vskip2\titlingskip
+ \begin{paracol}{2}
+ \RaggedRight
+ \switchcolumn[\iflanguage{english}{0}{1}]
+ \begingroup
+ \selectlanguage{english}\paragraph{\abstractname}\CJS@englishabstract
+ \endgroup
+ \switchcolumn[\iflanguage{french}{0}{1}]
+ \begingroup
+ \selectlanguage{french}\paragraph{\abstractname}\CJS@frenchabstract
+ \endgroup
+ \end{paracol}\par
+ \begingroup
+ \sloppy\RaggedRight
+ \ifdefempty{\CJS@keywords}{\relax}{%
+ \vskip\titlingskip
+ \paragraph{\iflanguage{french}{\CJS@keywordsname@fr}{\CJS@keywordsname@en}}
+ \begin{CJS@keywordslist}
+ \CJS@keywords
+ \end{CJS@keywordslist}\par}
+ \vskip\titlingskip
+ \paragraph{{\CJS@classifname}}
+ \ifdefempty{\CJS@classif}{\mbox{}}{%
+ \begin{CJS@classiflist}
+ \CJS@classif
+ \end{CJS@classiflist}}\par
+ \endgroup
+ \fi
+ \unless\ifCJS@review
+ \ifdefempty{\CJS@corrauth}{\relax}{%
+ \vskip\titlingskip
+ \paragraph{\corrauthmark\;%
+ \iflanguage{french}{\CJS@corrauthname@fr}{\CJS@corrauthname@en}}
+ \CJS@corrauth\par}
+ \fi
+ \ifCJS@fancybreak
+ \fancybreak{\pfbreakdisplay}
+ \fi
+ \unless\ifCJS@titlingfooter
+ \CJS@measurelicence
+ \setlength\textfloatsep{0pt}
+ \def\CJS@notice{%
+ \iflanguage{french}{Futur emplacement de la déclaration de licence.}%
+ {Licence statement to appear here.}}
+ \begin{figure}[!b]
+ \raisebox{0pt}[0pt][\footskip]{%
+ \vbox{%
+ \CJS@setlicencefont
+ \rule{\textwidth}{\normalrulethickness}
+ \parbox[t][\CJS@licenceht][t]{\textwidth}{%
+ \ifCJS@final\CJS@licence \else\textit\CJS@notice \fi}}}
+ \end{figure}
+ \fi
+}}
+\def\CJS@supplement{}
+\def\CJS@supplementname@en{Supplementary material}
+\def\CJS@supplementname@fr{Matériel additionnel}
+\NewEnviron{supplement}{\global\let\CJS@supplement\BODY}
+\def\CJS@sharing{}
+\def\CJS@sharingname@en{Data sharing}
+\def\CJS@sharingname@fr{Partage des données}
+\NewEnviron{sharing}{\global\let\CJS@sharing\BODY}
+\def\CJS@ack{}
+\def\CJS@ackname@en{Acknowledgements}
+\def\CJS@ackname@fr{Remerciements}
+\NewEnviron{acknowledgements}{\global\let\CJS@ack\BODY}
+\let\acknowledgments\acknowledgements
+\let\endacknowledgments\endacknowledgements
+\def\CJS@funding{}
+\def\CJS@fundingname{}
+\def\CJS@fundingname@en{Funding information}
+\def\CJS@fundingname@fr{Financement}
+\NewEnviron{funding}[1][%
+ \iflanguage{french}{\CJS@fundingname@fr}{\CJS@fundingname@en}]{%
+ \global\def\CJS@fundingname{#1}
+ \global\let\CJS@funding\BODY}
+\newcommand\makebackmatter{%
+ \ifCJS@supplement\else
+ \ifdefempty{\CJS@supplement}{\relax}{%
+ \section*{\iflanguage{french}{\CJS@supplementname@fr}{\CJS@supplementname@en}}
+ \CJS@supplement}
+ \ifdefempty{\CJS@sharing}{\relax}{%
+ \section*{\iflanguage{french}{\CJS@sharingname@fr}{\CJS@sharingname@en}}
+ \CJS@sharing}
+ \ifCJS@review\else
+ \ifdefempty{\CJS@ack}{\relax}{%
+ \section*{\iflanguage{french}{\CJS@ackname@fr}{\CJS@ackname@en}}
+ \CJS@ack}
+ \ifdefempty{\CJS@funding}{\relax}{%
+ \section*{\CJS@fundingname}
+ \CJS@funding}
+ \ifdefempty{\CJS@orcidlist}{\relax}{%
+ \section*{\CJS@orcidname}
+ \begingroup
+ \let\surname\relax
+ \let\corrauth\@gobble
+ \CJS@orcidlist
+ \endgroup}
+ \fi
+ \fi}
+\newcommand*\CJS@setlicencefont{%
+ \firalining\fontsize{8pt}{9pt}\selectfont}
+\newlength\CJS@licenceht
+\newcommand\CJS@licencesample{%
+ {\ccbyncnd*} 2023 The Authors. The Canadian Journal of
+ Statistics~{\textbar}~La revue canadienne de statistique published
+ by Wiley Periodicals LLC on behalf of Statistical Society of
+ Canada~{\textbar}~Société statistique du Canada. This is an open
+ access article under the terms of the Creative Commons
+ Attribution-NonCommercial-NoDerivs License, which permits use and
+ distribution in any medium, provided the original work is properly
+ cited, the use is non-commercial and no modifications or adaptations
+ are made.}
+\newsavebox\CJS@licencebox
+\newcommand\CJS@measurelicence{%
+ \setbox\CJS@licencebox=\vbox{%
+ \CJS@setlicencefont
+ \ifdefempty{\CJS@licence}{\CJS@licencesample}{\CJS@licence}}
+ \setlength\CJS@licenceht{\dimexpr\ht\CJS@licencebox+\dp\CJS@licencebox}}
+\def\CJS@licence{}
+\newcommand\licence[1]{\renewcommand*\CJS@licence{#1}}
+\let\license\licence
+\newcommand*\ccby{\ccby@\@ifstar{~\faCopyright[regular]}\relax}
+\newcommand*\ccby@{\mbox{%
+ \faCreativeCommons\kern0.1em%
+ \faCreativeCommonsBy\kern0.1em}}
+\newcommand*\ccbysa{\ccbysa@\@ifstar{~\faCopyright[regular]}\relax}
+\newcommand*\ccbysa@{\mbox{%
+ \faCreativeCommons\kern0.1em%
+ \faCreativeCommonsBy\kern0.1em%
+ \faCreativeCommonsSa}}
+\newcommand*\ccbync{\ccbync@\@ifstar{~\faCopyright[regular]}\relax}
+\newcommand*\ccbync@{\mbox{%
+ \faCreativeCommons\kern0.1em%
+ \faCreativeCommonsBy\kern0.1em%
+ \faCreativeCommonsNc}}
+\newcommand*\ccbyncsa{\ccbyncsa@\@ifstar{~\faCopyright[regular]}\relax}
+\newcommand*\ccbyncsa@{\mbox{%
+ \faCreativeCommons\kern0.1em%
+ \faCreativeCommonsBy\kern0.1em%
+ \faCreativeCommonsNc\kern0.1em%
+ \faCreativeCommonsSa}}
+\newcommand*\ccbynd{\ccbynd@\@ifstar{~\faCopyright[regular]}\relax}
+\newcommand*\ccbynd@{\mbox{%
+ \faCreativeCommons\kern0.1em%
+ \faCreativeCommonsBy\kern0.1em%
+ \faCreativeCommonsNd}}
+\newcommand*\ccbyncnd{\ccbyncnd@\@ifstar{~\faCopyright[regular]}\relax}
+\newcommand*\ccbyncnd@{\mbox{%
+ \faCreativeCommons\kern0.1em%
+ \faCreativeCommonsBy\kern0.1em%
+ \faCreativeCommonsNc\kern0.1em%
+ \faCreativeCommonsNd}}
+\let\Pr\relax
+\DeclareMathOperator{\Pr}{P}
+\DeclareMathOperator{\E}{E}
+\DeclareMathOperator{\Var}{var}
+\DeclareMathOperator{\Cov}{cov}
+\DeclareMathOperator{\corr}{corr}
+\iftutex
+ \let\prdist\symcal
+\else
+ \let\prdist\mathcal
+\fi
+\iftutex
+ \newcommand*\mat[1]{\symbf{#1}}
+ \newcommand*\trsp{^{\mkern-1.5mu\symsfup{T}}}
+\else
+ \newcommand*\mat[1]{\mathbf{#1}}
+ \newcommand*\trsp{^{\mkern-1.5mu\mathsf{T}}}
+\fi
+\DeclareMathOperator{\tr}{tr}
+\DeclareMathOperator{\diag}{diag}
+\iftutex
+ \newcommand*\Nset{\symbb{N}}
+ \newcommand*\Zset{\symbb{Z}}
+ \newcommand*\Qset{\symbb{Q}}
+ \newcommand*\Rset{\symbb{R}}
+ \newcommand*\Cset{\symbb{C}}
+\else
+ \newcommand*\Nset{\mathbb{N}}
+ \newcommand*\Zset{\mathbb{Z}}
+ \newcommand*\Qset{\mathbb{Q}}
+ \newcommand*\Rset{\mathbb{R}}
+ \newcommand*\Cset{\mathbb{C}}
+\fi
+\def\CJS@theoremname@en{Theorem}
+\def\CJS@theoremname@fr{Théorème}
+\def\CJS@lemmaname@en{Lemma}
+\def\CJS@lemmaname@fr{Lemme}
+\def\CJS@propositionname@en{Proposition}
+\def\CJS@propositionname@fr{Proposition}
+\def\CJS@corollaryname@en{Corollary}
+\def\CJS@corollaryname@fr{Corollaire}
+\def\CJS@definitionname@en{Definition}
+\def\CJS@definitionname@fr{Définition}
+\def\CJS@algorithmname@en{Algorithm}
+\def\CJS@algorithmname@fr{Algorithme}
+\def\CJS@remarkname@en{Remark}
+\def\CJS@remarkname@fr{Remarque}
+\theoremstyle{plain}
+\newtheorem{theorem}{\iflanguage{french}{\CJS@theoremname@fr}{\CJS@theoremname@en}}
+\newtheorem{lemma}{\iflanguage{french}{\CJS@lemmaname@fr}{\CJS@lemmaname@en}}
+\newtheorem{proposition}{\iflanguage{french}{\CJS@propositionname@fr}{\CJS@propositionname@en}}
+\newtheorem{corollary}{\iflanguage{french}{\CJS@corollaryname@fr}{\CJS@corollaryname@en}}
+\theoremstyle{definition}
+\newtheorem{definition}{\iflanguage{french}{\CJS@definitionname@fr}{\CJS@definitionname@en}}
+\newtheorem{algorithm}{\iflanguage{french}{\CJS@algorithmname@fr}{\CJS@algorithmname@en}}
+\theoremstyle{remark}
+\newtheorem{remark}{\iflanguage{french}{\CJS@remarkname@fr}{\CJS@remarkname@en}}
+\renewcommand*\eqref[1]{\hyperref[{#1}]{\textup{(\ref*{#1})}}}
+\newcommand*\proglang[1]{{\hyphenchar\font=-1 #1}}
+\newcommand*\Rlang{\proglang{R}}
+\newcommand*\SASlang{\proglang{SAS}}
+\newcommand*\SPSSlang{\proglang{SPSS}}
+\newcommand*\Statalang{\proglang{Stata}}
+\newcommand*\Pylang{\proglang{Python}}
+\newcommand*\Julialang{\proglang{Julia}}
+\newcommand*\Clang{\proglang{C}}
+\newcommand*\CJS@plus{%
+ \ifx\f@family\sfdefault%
+ \protect\hspace{-.04em}\protect\raisebox{-.125ex}{\larger+}%
+ \else%
+ \protect\hspace{-.03em}\protect\raisebox{.25ex}{\smaller+}%
+ \fi}
+\newcommand*\Cpplang{\proglang{C\CJS@plus\CJS@plus}}
+\let\pkg\textbf
+\newcommand\code{\bgroup\@makeother\_\@makeother\~\@makeother\$\code@}
+\def\code@#1{{\normalfont\ttfamily\hyphenchar\font=-1 #1}\egroup}
+\renewcommand*\appendix{\par
+ \setcounter{section}{0}
+ \gdef\thesection{\@Alph\c@section}}
+\renewcommand{\@memb@bsec}{\section*{\bibname}\prebibhook}
+\setlocalecaption{english}{bib}{References}
+\setlocalecaption{french}{bib}{Références}
+\bibliographystyle{\iflanguage{french}{cjs-rcs-fr}{cjs-rcs-en}}
+\setlength{\bibsep}{\itemsep}
+\def\CJS@suppprefix{S} % required for the documentation
+\ifCJS@supplement
+ \renewcommand*\thesection{\CJS@suppprefix\arabic{section}}
+ \renewcommand*\thefigure{\CJS@suppprefix\arabic{figure}}
+ \renewcommand*\thetable{\CJS@suppprefix\arabic{table}}
+ \renewcommand*\theequation{\CJS@suppprefix\arabic{equation}}
+ \renewcommand*\thetheorem{\CJS@suppprefix\arabic{theorem}}
+ \renewcommand*\thelemma{\CJS@suppprefix\arabic{lemma}}
+ \renewcommand*\theproposition{\CJS@suppprefix\arabic{proposition}}
+ \renewcommand*\thecorollary{\CJS@suppprefix\arabic{corollary}}
+ \renewcommand*\thedefinition{\CJS@suppprefix\arabic{definition}}
+ \renewcommand*\thealgorithm{\CJS@suppprefix\arabic{algorithm}}
+ \renewcommand*\theremark{\CJS@suppprefix\arabic{remark}}
+\fi
+\AtEndDocument{%
+ \ifCJS@final
+ \ifdefempty{\CJS@vol}{%
+ \ClassError{cjs-rcs-article}%
+ {Unknown Journal volume}%
+ {Use \string\jvol\space to specify the volume.}}{\relax}
+ \ifdefempty{\CJS@issue}{%
+ \ClassError{cjs-rcs-article}%
+ {Unknown Journal issue}%
+ {Use \string\jissue\space to specify the issue.}}{\relax}
+ \ifdefempty{\CJS@year}{%
+ \ClassError{cjs-rcs-article}%
+ {Unknown Journal publication year}%
+ {Use \string\jyear\space to specify the year.}}{\relax}
+ \ifdefstring{\CJS@firstpage}{1}{%
+ \ClassWarningNoLine{cjs-rcs-article}%
+ {The first page number is not set.\MessageBreak%
+ Using the default folio 1}}{\relax}
+ \ifCJS@history\else
+ \ClassError{cjs-rcs-article}%
+ {Unknown article history}%
+ {Use \string\received\space and \string\accepted\space to provide the article history.}
+ \fi
+ \fi}
+\def\CJS@vol{}
+\def\CJS@issue{}
+\def\CJS@year{}
+\def\CJS@firstpage{1}
+\newcommand*\jvol[1]{\renewcommand*\CJS@vol{#1}}
+\newcommand*\jissue[1]{\renewcommand*\CJS@issue{#1}}
+\newcommand*\jyear[1]{\renewcommand*\CJS@year{#1}}
+\newcommand*\firstpage[1]{\renewcommand*\CJS@firstpage{#1}}
+\DTMlangsetup[en-GB]{ord=omit}
+\def\CJS@receivedname@en{Received}
+\def\CJS@receivedname@fr{Reçu le}
+\def\CJS@acceptedname@en{Accepted}
+\def\CJS@acceptedname@fr{Accepté le}
+\newcommand*\received[1]{\CJS@historytrue\DTMsavedate{received}{#1}}
+\newcommand*\accepted[1]{\DTMsavedate{accepted}{#1}}
+\newlist{CJS@historylist}{itemize*}{1}
+\setlist[CJS@historylist]{%
+ mode=unboxed,
+ font=\sffamily,
+ itemjoin={{ --- }},
+ after={}
+}
+\newcommand*\CJS@history{%
+ \small\sffamily%
+ \begin{CJS@historylist}
+ \item[\iflanguage{french}{\CJS@receivedname@fr}{\CJS@receivedname@en}]
+ \DTMusedate{received}%
+ \DTMifsaveddate{accepted}{%
+ \item[\iflanguage{french}{\CJS@acceptedname@fr}{\CJS@acceptedname@en}]
+ \DTMusedate{accepted}}{\relax}%
+ \end{CJS@historylist}\par}
+\setbox\@ne=\vbox{\hbox{\firaoldstyle\small l4}}
+\newsavebox\CJS@historyornament
+\setbox\CJS@historyornament=\vbox{%
+ \setbox\thr@@\hbox{\vrule \@width1.5pt\@height\ht\@ne\@depth\dp\@ne}
+ \hbox{\textcolor{CJSpink}{\copy\thr@@}\kern.75pt%
+ \textcolor{CJSred}{\copy\thr@@}\kern.75pt%
+ \textcolor{CJSyellow}{\copy\thr@@}\kern3pt}}
+\newcommand*\CJS@historybox{
+ \par\addvspace{2\baselineskip}\noindent%
+ \smash{\box\CJS@historyornament \CJS@history}\par%
+ \vspace*{40pt}}
+\AtEndDocument{\ifCJS@journalinfo\ifCJS@history\CJS@historybox\fi\fi}
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index 222c194014a..46e562655f8 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -188,7 +188,7 @@ my @TLP_working = qw(
chronosys chs-physics-report chscite churchslavonic
cidarticle cinzel circ circledsteps circledtext circuit-macros circuitikz
circularglyphs citation-style-language cite citeall citeref
- cje cjhebrew cjk cjk-gs-integrate cjk-ko cjkpunct
+ cje cjhebrew cjk cjk-gs-integrate cjk-ko cjkpunct cjs-rcs-article
clara classics classpack classicthesis
cleanthesis clearsans clefval cleveref cleveref-usedon
clicks clipboard clistmap
diff --git a/Master/tlpkg/tlpsrc/cjs-rcs-article.tlpsrc b/Master/tlpkg/tlpsrc/cjs-rcs-article.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/cjs-rcs-article.tlpsrc
diff --git a/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc b/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc
index 1db0dd14fb6..80e68705055 100644
--- a/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc
@@ -52,6 +52,7 @@ depend chifoot
depend chs-physics-report
depend cidarticle
depend cje
+depend cjs-rcs-article
depend classicthesis
depend cleanthesis
depend cmpj