From bf1c88cd59a3d259436bfb09a0b56610a7da0231 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 30 Nov 2023 21:04:50 +0000 Subject: cjs-rcs-article (30nov23) git-svn-id: svn://tug.org/texlive/trunk@69006 c570f23f-e606-0410-a88d-b1316a301751 --- .../bibtex/bst/cjs-rcs-article/cjs-rcs-en.bst | 1702 +++++ .../bibtex/bst/cjs-rcs-article/cjs-rcs-fr.bst | 1702 +++++ .../texmf-dist/doc/latex/cjs-rcs-article/README.md | 220 + .../latex/cjs-rcs-article/cjs-rcs-article-fr.pdf | Bin 0 -> 112323 bytes .../latex/cjs-rcs-article/cjs-rcs-article-fr.tex | 5 + .../doc/latex/cjs-rcs-article/cjs-rcs-article.pdf | Bin 0 -> 176709 bytes .../doc/latex/cjs-rcs-article/cjs-rcs-bst-en.dbj | 611 ++ .../doc/latex/cjs-rcs-article/cjs-rcs-bst-fr.dbj | 603 ++ .../doc/latex/cjs-rcs-article/cjs-rcs-class.dbj | 39 + .../doc/latex/cjs-rcs-article/cjs-rcs-english.mbs | 420 + .../doc/latex/cjs-rcs-article/cjs-rcs-french.mbs | 370 + .../doc/latex/cjs-rcs-article/cjs-rcs-merlin.mbs | 8009 ++++++++++++++++++++ .../doc/latex/cjs-rcs-article/cjs-rcs-merlin.pdf | Bin 0 -> 38737 bytes .../doc/latex/cjs-rcs-article/cjs-template.tex | 170 + .../doc/latex/cjs-rcs-article/rcs-gabarit.tex | 178 + .../latex/cjs-rcs-article/cjs-rcs-article.dtx | 5080 +++++++++++++ .../latex/cjs-rcs-article/cjs-rcs-article.ins | 34 + .../tex/latex/cjs-rcs-article/cjs-rcs-article.cls | 755 ++ Master/tlpkg/bin/tlpkg-ctan-check | 2 +- Master/tlpkg/tlpsrc/cjs-rcs-article.tlpsrc | 0 Master/tlpkg/tlpsrc/collection-publishers.tlpsrc | 1 + 21 files changed, 19900 insertions(+), 1 deletion(-) create mode 100644 Master/texmf-dist/bibtex/bst/cjs-rcs-article/cjs-rcs-en.bst create mode 100644 Master/texmf-dist/bibtex/bst/cjs-rcs-article/cjs-rcs-fr.bst create mode 100644 Master/texmf-dist/doc/latex/cjs-rcs-article/README.md create mode 100644 Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-article-fr.pdf create mode 100644 Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-article-fr.tex create mode 100644 Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-article.pdf create mode 100644 Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-bst-en.dbj create mode 100644 Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-bst-fr.dbj create mode 100644 Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-class.dbj create mode 100644 Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-english.mbs create mode 100644 Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-french.mbs create mode 100644 Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-merlin.mbs create mode 100644 Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-merlin.pdf create mode 100644 Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-template.tex create mode 100644 Master/texmf-dist/doc/latex/cjs-rcs-article/rcs-gabarit.tex create mode 100644 Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-article.dtx create mode 100644 Master/texmf-dist/source/latex/cjs-rcs-article/cjs-rcs-article.ins create mode 100644 Master/texmf-dist/tex/latex/cjs-rcs-article/cjs-rcs-article.cls create mode 100644 Master/tlpkg/tlpsrc/cjs-rcs-article.tlpsrc (limited to 'Master') 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 +%% . +%% +%% 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 +%% . +%% +%% 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 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 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 Binary files /dev/null and b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-article-fr.pdf 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 Binary files /dev/null and b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-article.pdf 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 +. + +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 +. + +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 +. + +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 +% . +% +% 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 +% +%<*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} +% +% 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\ |%|, and the last command is +% |\endoptions|. The rest of the file is nested between |%<*!options&!driver>| +% \dots\ |%| 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 +% +% \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} +%{ "editors" } +%{ "eds." } + +FUNCTION {bbl.editor} +%{ "editor" } +%{ "ed." } + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +%{ "edition" } +%{ "edn." } +%{ "ed." } + +FUNCTION {bbl.volume} +%{ "volume" } +%{ "vol." } + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +%{ "number" } +%{ "no." } + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +%{ "pages" } +%{ "pp." } +%{ "" } + +FUNCTION {bbl.page} +%{ "page" } +%{ "p." } +%{ "" } + +%<*revdata> +FUNCTION {bbl.eidpp} +{ "pages" } + +% +FUNCTION {bbl.chapter} +%{ "chapter" } +%{ "chap." } + +FUNCTION {bbl.techrep} +%{ "Technical Report" } +%{ "Tech. Rep." } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +%<*!xedn> +FUNCTION {bbl.first} +%{ "First" } +%{ "1st" } + +FUNCTION {bbl.second} +%{ "Second" } +%{ "2nd" } + +FUNCTION {bbl.third} +%{ "Third" } +%{ "3rd" } + +FUNCTION {bbl.fourth} +%{ "Fourth" } +%{ "4th" } + +FUNCTION {bbl.fifth} +%{ "Fifth" } +%{ "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$ +} + +% +%<*!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> +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 +% \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 +% . +% +% 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 +% +%<*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} +% +% 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\ |%|, and the last command is +% |\endoptions|. The rest of the file is nested between |%<*!options&!driver>| +% \dots\ |%| 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 +% +% \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} +%{ "directeurs" } +%{ "dir." } + +FUNCTION {bbl.editor} +%{ "directeur" } +%{ "dir." } + +FUNCTION {bbl.edby} +{ "sous la direction de" } + +FUNCTION {bbl.edition} +%{ "\'edition" } +%{ "\'ed." } + +FUNCTION {bbl.volume} +%{ "volume" } +%{ "vol." } + +FUNCTION {bbl.of} +{ "de" } + +FUNCTION {bbl.number} +%{ "num\'ero" } +%{ "{\no}" } + +FUNCTION {bbl.nr} +{ "{\no}" } + +FUNCTION {bbl.in} +{ "dans" } + +FUNCTION {bbl.pages} +%{ "pages" } +%{ "p." } +%{ "" } + +FUNCTION {bbl.page} +%{ "page" } +%{ "p." } +%{ "" } + +%<*revdata> +FUNCTION {bbl.eidpp} +{ "pages" } + +% +FUNCTION {bbl.chapter} +%{ "chapitre" } +%{ "chap." } + +FUNCTION {bbl.techrep} +%{ "rapport technique" } +%{ "rapport technique" } + +FUNCTION {bbl.mthesis} +{ "m\'emoire de ma\^itrise" } + +FUNCTION {bbl.phdthesis} +{ "th\`ese de doctorat" } + +%<*!xedn> +FUNCTION {bbl.first} +%{ "Premi\`ere" } +%{ "1{\iere}" } + +FUNCTION {bbl.second} +%{ "Deuxi\`eme" } +%{ "2{\ieme}" } + +FUNCTION {bbl.third} +%{ "Troisi\`eme" } +%{ "3{\ieme}" } + +FUNCTION {bbl.fourth} +%{ "Quatri\`eme" } +%{ "4{\ieme}" } + +FUNCTION {bbl.fifth} +%{ "Cinqui\`eme" } +%{ "5{\ieme}" } + +FUNCTION {bbl.th} +{ "{\ieme}" } + +% +%<*!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> +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 +% \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 +% . +% +% 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 +% +%<*a&!a> +% The following ensures that the driver part is not seen by makebst +% The driver part must not contain any \end other than \end{document} ! +\ifx\endoptions\undefined\let\tempx=\relax\else + \long\def\tempx#1\end#2{}\fi\tempx +% +%<*driver> +\NeedsTeXFormat{LaTeX2e}% +\documentclass[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} +% +% 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\ |%|, and the last command is +% |\endoptions|. The rest of the file is nested between +% \begin{quote} +% |%<*!options&!driver&!bblbst>| \dots\ || +% \end{quote} +% in order to exclude it if \dtx{} is used to +% extract the menu information, the documentation driver, or the +% \texttt{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 +% || and the tail with ||. This roundabout means of +% doing things makes it possible to process \texttt{\filename} with +% \texttt{.dbj} files that were generated for the older +% \texttt{genbst.mbs} file by simply changing the name of the source +% file. If both \texttt{head} and \texttt{tail} (and \texttt{exlang}) +% options are omitted, as they are in the older \texttt{.dbj} files, +% \texttt{\filename} is processed completely in one pass. To include +% external files, two passes are needed, one for each part, with the +% external file(s) coming in between. +% +% Note too that if the internal language commands are taken (i.e., if +% \texttt{exlang} option is not given) then the default language is +% English, which is tested for as ||. This too permits the simple +% update of older \texttt{.dbj}, at least for English. +% +% \subsection*{Selecting Language} +% Explicit words in the bibliography style, such as \textsl{and}, +% \textsl{editor}, etc., +% are represented by functions \texttt{bbl.and}, \texttt{bbl.editor}, and so on. +% By default these functions translate to the normal English text, but +% other languages are also possible. +% +% The definitions of these functions for other languages are contained in +% external files. At this point, we can make use of features in +% \texttt{makebst} (version~3.0 or later) to ask for the name of such a +% definition file, and store it in |\cfile|. If no external file is +% specified, then the internal definitions are taken, for which there are +% two possibilities: English or \LaTeX{} commands (Babel). +% +% The commands |\MBswitch|, |\mes|, |\MBaskfile|, |\wr|, |\pc|, |\spsp| are +% defined in \texttt{makebst.tex}. +% +% If |\MBswitch| does not exist, then the version of \texttt{makebst} +% cannot support external files. +% +% \begin{macrocode} +%<*options> +\expandafter\ifx\csname beginoptiongroup\endcsname\relax + \mes{^^J******************^^J% + !!!!!! VERSION CLASH !!!!!!!!!^^J% + This mbs file requires makebst version 4.0 or more^^J% + You must update makebst to run it with this mbs file^^J% + No docstrip batch file can be produced on this run^^J% + ******************} + \let\temp\endinput\else\let\temp\relax\fi\temp + +\newif\ifnumerical +\newif\ifmytemp +\mes{<<< For more information about the meanings of^^J% + <<< the various options, see the section on ^^J% + <<< Menu Information in the .mbs file documentation.} + +\umes{EXTERNAL FILES:} +\expandafter\ifx\csname MBswitch\endcsname\relax + \mes{^^J**************^^J% + Makebst version is less than 3.0^^J% + Cannot add external file for language definition^^J% + **************} + \umes{No included files.}% + \def\cfile{}\def\jfile{}% +\else + \MBaskfile{^^JName of language definition file}(\mroot.\mext)i\cfile + \edef\ctemp{\mroot.\mext} + \ifx\ctemp\cfile\def\cfile{}\fi + \umes{Name of language file: \string\cfile=\cfile.}% +% \end{macrocode} +% +% A second type of external file that can be added is one containing names +% of journals that are to be prestored into the \texttt{.bst} file. +% Several file names are allowed here, with the root names separated by +% commas, and with the common extension added at the end. To assist later +% parsing of the names, an additional comma is added before the extension. +% +% Note that in this case |\MBaskfile| treats the file(s) as output, i.e., +% it does not check if the file(s) actually exist. +% +% The macro |\Mgetnext| allows the root names to be extracted from the +% list of file names. +% \begin{macrocode} + \def\jfile{} + \ask{\yn}{^^JInclude file(s) for extra journal names? (NO)} + \mytempfalse + \if!\yn!\else\if\yn n\else\if\yn N\else\mytemptrue\fi\fi\fi + \ifmytemp + \MBaskfile{^^JFile to include}(physjour,geojour,photjour.mbs)o\jfile + \edef\jfile{\froot,.\fext} + \umes{Name of included files: \string\jfile=\jfile.}% + \else + \umes{No included files.}% + \fi +\fi%MBswitch +\def\Mgetnext#1,#2.#3??{\def\froot{#1}\def\Mrest{#2}\def\fext{#3}} +% \end{macrocode} +% +% If no external files are specified, then both |\cfile| and |\jfile| are +% empty. In this case, do \emph{not} set the options \texttt{head} and +% \texttt{tail}, which control the \dtx{} passes through +% \texttt{filename}. Now only one pass is made. +% +% If there is an external definition file, or an external list of +% journal names, then some extra text must be +% written to fit in with that already written by \texttt{makebst}. This is +% explained in that documentation. The |\MBswitch| command turns the curly +% braces |{..}| into normal characters, and the parentheses |(..)| take on +% their grouping functionality. This permits unbalanced braces to be +% written to the output file. +% +% \begin{macrocode} +\if!\cfile\jfile!\else + \begingroup\MBswitch + \wr(\spsp head,\string\MBopta}) + \if!\cfile!\else + \wr(\string\from{\cfile}{\string\MBopta}) + \fi + \if!\jfile!\else + \let\jxfile\jfile + \loop +% \end{macrocode} +% +% Parse the list of journal name files, adding a new |\from| for each one. +% +% \begin{macrocode} + \expandafter\Mgetnext\jxfile?? + \wr(\string\from{\froot.\fext}{\string\MBopta}) + \edef\jxfile(\Mrest.\fext) + \if!\Mrest!\def\Mtst(1)\else\def\Mtst()\fi + \if!\Mtst! + \repeat + \fi + \wr(\string\from{\mroot.\mext}{tail,\string\MBopta}}) + \wr(\string\def\string\MBopta{\pc) + \endgroup +\fi +% \end{macrocode} +% +% Ask whether there is a need for +% explicit English words or \LaTeX{} commands whose definitions are +% to be found in the file \texttt{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}{(<> ..)} +\optdef{x}{tit-qq,qt-s,qx}{Title in single quotes}{(`Title', ..)} +\optdef{y}{tit-qq,qx}{Title in double quotes}{(``Title'', ..)} +\optdef{z}{tit-qq,qt-g,qx}{Title in guillemets}{(<>, ..)} +\getans +\endoptiongroup +\mytempfalse +\if\ans q\mytemptrue\fi +\if\ans d\mytemptrue\fi +\if\ans g\mytemptrue\fi +\if\ans x\mytemptrue\fi +\if\ans y\mytemptrue\fi +\if\ans z\mytemptrue\fi +\beginoptiongroup{COLLECTION/PROCEEDINGS TITLES + (if quoted title)} + {\ifmytemp*\fi}% +\optdef{*}{bt-qq}{Quote collection and proceedings titles}{too} +\optdef{x}{}{Collection and proceedings titles not in quotes}{} +\getans +\endoptiongroup +\beginoptiongroup{CAPITALIZATION OF ARTICLE TITLE:}{} +\optdef{*}{}{Sentence style}{(capitalize first word and those in braces)} +\optdef{t}{atit-u}{Title style}{(just as in bib entry)} +\getans +\endoptiongroup + +\beginoptiongroup{ARTICLE TITLE PRESENT:}{} +\optdef{*}{}{Article title present}{in journals and proceedings} +\optdef{x}{jtit-x}{No article title}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Journal names} +% Abbreviated journal names normally contain periods; the periods may be +% removed with this option. In fact, only letters, numbers, and spacing are +% retained. +% \begin{macrocode} +\beginoptiongroup{JOURNAL NAMES:}{} +\optdef{*}{}{Periods in journal names}{are retained, as `Phys. Rev.'} +\optdef{x}{jxper}{Dotless journal names}{as `Phys Rev'} +\getans +\endoptiongroup +% \end{macrocode} +% Journal name is normally printed in italics; can be left in normal font. +% \begin{macrocode} +\beginoptiongroup{JOURNAL NAME FONT:}{} +\optdef{*}{}{Journal name italics}{} +\optdef{r}{jttl-rm}{Journal name normal}{font} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Title of Theses and Technical Reports} +% The title of a these (PhD or Master's) is normally treated the same +% as that of a book. Optionally, it may be formatted like that of +% an article. +% +% The title of a technical report is normally treated the same as that +% of an article. Optionally, it may be formatted like that of a book. +% +% \begin{macrocode} +\beginoptiongroup{THESIS TITLE:}{} +\optdef{*}{}{Thesis titles like books}{} +\optdef{a}{thtit-a}{Thesis title like article}{} +\optdef{x}{thtit-x}{No thesis title}{} +\getans +\endoptiongroup + +\beginoptiongroup{TECHNICAL REPORT TITLE:}{} +\optdef{*}{}{Tech. report title like articles}{} +\optdef{b}{trtit-b}{Tech. report title like books}{} +\getans +\endoptiongroup + +\beginoptiongroup{TECHNICAL REPORT NUMBER:}{} +\optdef{*}{}{Tech. report and number plain}{as `Tech. Rep. 123'} +\optdef{i}{trnum-it}{Tech. report and number italic}% + {as `{\string\it\space Tech. Rep. 123'}} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Journal reference} +% Great diversity of opinion exists as to how a journal reference is to be +% formatted. It consists of a volume, possibly a number, and page limits. +% The number is really only necessary if the page numbers within one volume +% start at 1 for each physical `number'. Since journals are often bound +% together in one volume later, it makes more sense to number the pages +% continuously through the whole volume. +% +% I am only aware of one journal that used to reset the pagination for each +% `number', in which case the number was part of the page designation. +% I had erroneously provided an option \texttt{vnum-pg} to achieve this, but I +% now realize that instead, for this one journal, the database entries must +% contain \texttt{pages="(2)33--2(55)"}. This option has been removed at +% version 3.84. +% +% A number of styles for journal specifications are +% \begin{quote} +% \begin{tabular}{l@{\qquad}l} +% 21(2):33--55 & 21, no.\ 2: 33--55\\ +% \textbf{21}(2):33--55 & \textbf{21}, \#2, 33--55\\ +% \textit{21}(2), 33--55 & \textit{21} (2); 33--55 \\ +% 21(2) (1995) 33--55 & 21(1995), 33-55\\ +% 21(2) 33--55 & vol.~21 (2), pp.~33--55 +% \end{tabular} +% \end{quote} +% +% Here both start and stop page numbers have been given; often only the +% start page is wanted. +% +% It is also possible to include the year as part of the journal specification, +% in which case the year is always in parentheses, attached snugly or with space +% to the volume, or preceding the pages. +% +% \begin{macrocode} +\beginoptiongroup{JOURNAL VOLUME:}{} +\optdef{*}{}{Volume plain}{as vol(num)} +\optdef{i}{vol-it}{Volume italic}{as {\string\em\space vol}(num)} +\optdef{b}{vol-bf}{Volume bold}{as {\string\bf\space vol}(num)} +\optdef{d}{vol-2bf}{Volume and number bold}{as {\string\bf\space vol(num)}} +\getans +\endoptiongroup +% \end{macrocode} +% +% The form of the `number' is also given: in parentheses, with `no.', +% with \#, or omitted. The \texttt{vnum-b} option is meant to be used +% with \texttt{jdt-v} and \texttt{jdt-vs} but could be used alone. +% \begin{macrocode} +\beginoptiongroup{JOURNAL VOL AND NUMBER:}{} +\optdef{*}{}{Journal vol(num)}{as 34(2)} +\optdef{s}{vnum-sp}{Journal vol (num)}{as 34 (2)} +\optdef{c}{vnum-cm}{Journal vol, num}{as 34, 2} +\optdef{n}{vnum-nr}{Journal vol, no. num}{as 34, no. 2} +\optdef{h}{vnum-h}{Journal vol, \string\# number}{as 34, \string\#2} +\optdef{b}{vnum-b}{Journal vol number}{as 34 2} +\optdef{x}{vnum-x}{Journal vol, without number}{as 34} +\getans +\endoptiongroup + +\beginoptiongroup{VOLUME PUNCTUATION:}{} +\optdef{*}{}{Volume with colon}{as vol(num):ppp} +\optdef{s}{volp-sp}{Volume with colon and space}{as vol(num): ppp} +\optdef{h}{volp-semi}{Volume with semi-colon}{as vol(num); ppp} +\optdef{c}{volp-com}{Volume with comma}{as vol(num), ppp} +\optdef{b}{volp-blk}{Volume with blank}{as vol(num) ppp} +\getans +\endoptiongroup + +\beginoptiongroup{YEAR IN JOURNAL SPECIFICATION:}{} +\optdef{*}{}{Journal year like others}{as given by date position} +\optdef{v}{jdt-v}{Journal vol(year)}{as 34(1995)} +\optdef{s}{jdt-vs}{Journal vol (year)}{as 34 (1995)} +\optdef{p}{jdt-p}{Year with pages}{as 34(2), (1995) 1345--1387} +\optdef{c}{jdt-pc}{Year, comma, pages}{as 34(2), (1995), 1345--1387} +\getans +\endoptiongroup + +\beginoptiongroup{PAGE NUMBERS:}{} +\optdef{*}{}{Start and stop page numbers}{given} +\optdef{f}{jpg-1}{Only start page number}{} +\getans +\endoptiongroup + +\beginoptiongroup{LARGE PAGE NUMBERS:}{} +\optdef{*}{}{No separators for large page numbers}{} +\optdef{c}{pgsep-c}{Comma inserted over 9999}{as 11,234} +\optdef{s}{pgsep-s}{Thin space inserted over 9999}{as 11 234} +\optdef{p}{pgsep-p}{Period inserted over 9999}{as 11.234} +\getans +\endoptiongroup + +\beginoptiongroup{WORD `PAGE' IN ARTICLES:}{} +\optdef{*}{}{Article pages numbers only}{as 234-256} +\optdef{p}{jwdpg}{Include `page' in articles}{as pp. 234--256} +\getans +\endoptiongroup +% \end{macrocode} +% +% Some journals want page numbers at the end, even for books, proceedings, as +% well as for journals. +% \begin{macrocode} +\beginoptiongroup{POSITION OF PAGES:}{} +\optdef{*}{}{Pages given mid text}{as is normal} +\optdef{e}{pp-last}{Pages at end}{but before any notes} +\getans +\endoptiongroup + +\beginoptiongroup{WORD `VOLUME' IN ARTICLES:}{} +\optdef{*}{}{Article volume as number only}{as 21} +\optdef{p}{jwdvol}{Include `volume' in articles}{as vol. 21} +\getans +\endoptiongroup +% \end{macrocode} +% +% Fiddle with the format and location of the number/series for collections and +% inproceedings. +% \begin{macrocode} +\beginoptiongroup{NUMBER AND SERIES FOR COLLECTIONS:}{} +\optdef{*}{num-xser}{Allows number without series}{and suppresses word "number"} +\optdef{s}{}{Standard BibTeX}{as: "number 123 in Total Works"; error if number and no series} +\getans +\endoptiongroup + +\beginoptiongroup{POSITION OF NUMBER AND SERIES:}{} +\optdef{*}{}{After chapter and pages}{as in standard BibTeX} +\optdef{t}{numser}{Just before publisher}{or organization} +\getans +\endoptiongroup +% \end{macrocode} +% +% Fiddle with the format and location of series and volume with books and collections. +% \begin{macrocode} +\beginoptiongroup{VOLUME AND SERIES FOR BOOKS/COLLECTIONS:}{} +\optdef{*}{}{Vol. 23 of Series}{as in standard BibTeX} +\optdef{s}{ser-vol}{Series, vol. 23}{} +\getans +\endoptiongroup + +\beginoptiongroup{POSITION OF VOLUME AND SERIES FOR INCOLLECTIONS:}{} +\optdef{*}{}{Series and volume after the editors}{} +\optdef{e}{ser-ed}{Series and volume after booktitle}{and before editors} +\getans +\endoptiongroup +% \end{macrocode} +% +% It is possible to decide whether the journal name should be +% separated from the following specifications with a blank or comma. +% \begin{macrocode} +\beginoptiongroup{JOURNAL NAME PUNCTUATION:}{} +\optdef{*}{}{Comma after journal}{name} +\optdef{x}{jnm-x}{Space after journal}{name} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Books} +% The title of a book (as opposed to an article in a book or journal) is +% normally italicized. This may be set to the regular font. +% +% The page numbers in books may be set in parentheses, as (pp.\ 345--350). +% \begin{macrocode} +\beginoptiongroup{BOOK TITLE:}{} +\optdef{*}{}{Book title italic}{(\string\em)} +\optdef{p}{btit-rm,bt-rm}{Book title plain}{(no font command)} +\getans +\endoptiongroup + +\beginoptiongroup{PAGES IN BOOKS:}{} +\optdef{*}{}{Pages in book plain}{as pp. 50-55} +\optdef{p}{bkpg-par}{Pages in book in parentheses}{as (pp. 50-55)} +\optdef{x}{bkpg-x}{Pages in book bare}{as 50-55} +\getans +\endoptiongroup +\beginoptiongroup{TOTAL PAGES OF A BOOK:}{} +\optdef{*}{}{Total book pages not printed}{} +\optdef{p}{pg-bk}{For book: 345 pages}{or pp.} +\optdef{a}{pg-bk,pg-pre}{Total book pages before publisher}{} +\getans +\endoptiongroup +% \end{macrocode} +% Some psychology journals wish to have the publisher's address preceding +% the name, separated by colon, as +% \begin{quote}New York: Wiley and Sons\end{quote} +% +% Some journals (e.g.\ Nature) put publisher in parentheses with date, +% as (Wiley and Sons, New York, 1983). These normally put the date in +% parentheses at the end anyway, so this is a merging of the two sets of +% parentheses. +% \begin{macrocode} +\beginoptiongroup{PUBLISHER ADDRESS:}{} +\optdef{*}{}{Publisher, address}{as Harcourt, New York} +\optdef{a}{add-pub}{Address: Publisher}{as New York: Harcourt} +\getans +\endoptiongroup + +\beginoptiongroup{PUBLISHER IN PARENTHESES:}{} +\optdef{*}{}{Publisher as normal block}{without parentheses} +\optdef{p}{pub-par}{Publisher in parentheses}{} +\optdef{d}{pub-date}{Publisher and date in parentheses}{(Oxford, 1994)} +\optdef{c}{pub-date,pub-xc}{Publisher and date in parentheses, no comma}{(Oxford 1994)} +\optdef{f}{pub-date,pub-xpar}{Publisher and date without parentheses}{Oxford, 1994} +\optdef{k}{pub-date,pub-xpar,pub-xc}{Publisher and date, no parentheses, no comma}{Oxford 1994} +\getans +\endoptiongroup + +\beginoptiongroup{PUBLISHER POSITION:}{} +\optdef{*}{}{Publisher after chapter, pages}{} +\optdef{p}{pre-pub}{Publisher before chapter, pages}{} +\optdef{e}{pre-edn}{Publisher after edition}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{ISBN, ISSN, DOI numbers} +% Books normally possess an ISBN number. This may be included as an +% optional entry for \texttt{book}, \texttt{inbook}, \texttt{booklet}, +% \texttt{incollection}, \texttt{proceedings}, \texttt{inproceedings}. +% However, it should be suppressed for \texttt{inbook} etc.\ when +% there is a crossref to another book with the ISBN number. +% +% Periodicals contain an ISSN number. Add this to \texttt{article}, or +% course, but also to \texttt{inproceedings} and \texttt{proceedings}, since +% they are sometimes printed in a periodical. +% +% Journal articles that appear online are given a DOI number, something more +% robust than a URL that can change as machines are upgraded. +% The American Geophysical Union (AGU) uses the DOI as part of the +% page number substitution for electronic journals, placing the number +% where the pages would normally appear. +% \begin{macrocode} +\beginoptiongroup{ISBN NUMBER:}{} +\optdef{*}{isbn}{Include ISBN}{for books, booklets, etc.} +\optdef{x}{}{No ISBN}{} +\getans +\endoptiongroup + +\beginoptiongroup{ISSN NUMBER:}{} +\optdef{*}{issn}{Include ISSN}{for periodicals} +\optdef{x}{}{No ISSN}{} +\getans +\endoptiongroup + +\beginoptiongroup{DOI NUMBER:}{} +\optdef{*}{doi}{Include DOI}{as "doi: number"} +\optdef{u}{url-doi}{Format DOI as URL //doi.org/doi}{(must give url options!)} +\optdef{a}{agu-doi,doi}{Insert DOI AGU style}{as part of page number} +\optdef{x}{}{No DOI}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Editor of book without author} +% +% This is normally +% \begin{quote} +% J. K. James, editor +% \end{quote} +% but may also be +% \begin{quote} +% J. K. James, (editor)\\ +% J. K. James (editor), +% \end{quote} +% Alternatively, the word \textsl{editor} may be capitalized and/or +% abbreviated. +% +% \begin{macrocode} +\beginoptiongroup{`EDITOR' AFTER NAMES (EDITED BOOKS WITHOUT AUTHORS):}{} +\optdef{*}{}{Word `editor' after name}{} +\optdef{a}{edpar}{`Name (editor),'}{in parentheses, after name, comma after} +\optdef{b}{edpar,bkedcap}{`Name (Editor),'}{as above, editor upper case} +\optdef{c}{edparc}{`Name, (editor)'}{in parentheses, after name, comma between} +\optdef{d}{edparc,bkedcap}{`Name, (Editor)'}{as above, editor upper case} +\optdef{e}{edparxc}{`Name (editor)'}{in parentheses, after name, no commas} +\optdef{f}{edparxc,bkedcap}{`Name (Editor)'}{as above, editor upper case} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Edited by} +% For an article within an edited collection, the normal form is +% \begin{quote} +% In J. K. James, editor, \emph{Title of Collection} \dots +% \end{quote} +% Alternative forms are +% \begin{quote} +% In J. K. James (editor), \emph{Title} \dots\\ +% In \emph{Title}, edited by J. K. James \dots\\ +% In \emph{Title} (Edited by J. K. James) \dots +% \end{quote} +% If none of the \texttt{edby} variations is used, then the same system is +% used as for edited books, i.e. \texttt{edpar} applies. +% \begin{macrocode} +\beginoptiongroup{EDITOR IN COLLECTIONS:}{} +\optdef{*}{}{Same as for edited book}{(names before booktitle)} +\optdef{b}{edby}{In booktitle, edited by .. }{(where .. is names)} +\optdef{p}{edby-par}{In booktitle (edited by ..)}{} +\optdef{c}{edby-parc}{In booktitle, (edited by ..)}{} +\optdef{e}{edby,edbyx}{In booktitle, editor ..}{} +\optdef{f}{edby,edbyw}{In booktitle, (editor) ..}{} +\optdef{k}{edby-par,edbyx}{In booktitle (editor..)}{} +\optdef{g}{edby-parc,edbyx}{In booktitle, (editor..)}{} +\optdef{j}{edby,edbyy}{In booktitle, .., editor}{} +\optdef{m}{edby-par,edbyy}{In booktitle (.., editor)}{} +\getans +\endoptiongroup +\mytempfalse +\if\ans p\mytemptrue\fi +\if\ans k\mytemptrue\fi +\if\ans c\mytemptrue\fi +\if\ans f\mytemptrue\fi +\beginoptiongroup{CAPITALIZE `EDITOR' OR `EDITED BY' + (if editor capitalizable)} + {\ifmytemp*\fi}% +\optdef{*}{}{`(editor,..)' or `(edited by..)'}{in lower case} +\optdef{c}{edcap}{`(Editor,..)' or `(Edited by..)'}{in upper case} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Block punctuation} +% Blocks are logical sections of the reference specification, such as the +% author block, the journal block, editor block, etc. These are normally +% separated by periods, but alternatively a comma may be used. Another +% choice is to use commas except after titles where a period is given. +% +% \LaTeX\ offers an \texttt{openbib} option, which means that the blocks +% are not only new sentences, but new lines as well. This can only +% function when the default option here is taken, for then the command +% |\newblock| is placed between the blocks. This command is normally +% defined to do nothing, but \LaTeX\ redefines it to issue a new line +% when open bibliographies are wanted. +% \begin{macrocode} +\beginoptiongroup{PUNCTUATION BETWEEN SECTIONS (BLOCKS):}{} +\optdef{*}{}{\string\newblock\space after blocks} + {(periods or new lines with openbib option)} +\optdef{c}{blk-com}{Comma between blocks}{} +\optdef{s}{blk-com,com-semi}{Semi-colon between blocks}{} +\optdef{b}{blk-com,com-blank}{Blanks between blocks}{} +\optdef{t}{blk-tit}{Period after titles of articles, books, etc}{else commas} +\optdef{u}{blk-tit,tit-col}{Colon after titles of articles, books, etc}{else commas} +\optdef{a}{blk-tita}{Period after titles of articles}{else commas} +\optdef{d}{blk-tita,tit-col}{Colon after titles of articles}{else commas} +\getans +\endoptiongroup +\mytempfalse +\if\ans c\mytemptrue\fi +\if\ans s\mytemptrue\fi +\if\ans b\mytemptrue\fi +\if\ans t\mytemptrue\fi +\if\ans a\mytemptrue\fi +\beginoptiongroup{PUNCTUATION BEFORE NOTES + (if not using \string\newblock)} + {\ifmytemp*\fi}% +\optdef{*}{}{Notes have regular punctuation}{like all other blocks} +\optdef{p}{blknt}{Notes preceded by period}{} +\getans +\endoptiongroup +\beginoptiongroup{PUNCTUATION AFTER AUTHORS:}{} +\optdef{*}{}{Author block normal}{with regular block punctuation} +\optdef{c}{au-col}{Author block with colon}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{\textsl{In} with colon} +% When referring to works in a collection, one begins the block describing +% that collection with \textsl{In}. Optionally, one may add a colon. +% \begin{macrocode} +\beginoptiongroup{PUNCTUATION AFTER `IN':}{} +\optdef{*}{}{Space after `in'}{for incollection or inproceedings} +\optdef{c}{in-col}{Colon after `in'}{(as `In: ...')} +\optdef{i}{in-it}{Italic `in'}{and space} +\optdef{d}{in-col,in-it}{Italic `in' and colon}{} +\optdef{x}{in-x}{No word `in'}{for edited works} +\getans +\endoptiongroup +\beginoptiongroup{`IN' WITH JOURNAL NAMES + (if using 'in' with collections)} + {\if\ans x\else*\fi} +\optdef{*}{}{No `in' before journal name}{} +\optdef{i}{injnl}{Add `in' before journal name}{in style for incollection} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Final punctuation} +% The punctuation at the end of the reference is normally a period. This +% may be suppressed. +% \begin{macrocode} +\beginoptiongroup{FINAL PUNCTUATION:}{} +\optdef{*}{}{Period at very end}{of the listed reference} +\optdef{x}{fin-bare}{No period at end}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Abbreviations} +% A number of words may be abbreviated: pages, editors, volume, chapter, +% and so on. The first two may be independently set to abbreviation, the +% rest with a single option. +% +% Additionally, the edition numbers may be +% output as words (first, second, etc.) or as numbers (1st, 2nd, etc.). +% (Recall that the input in the \texttt{.bib} file is always as English +% words.) +% \begin{macrocode} +\beginoptiongroup{ABBREVIATE WORD `PAGES' + (if not using external language file)} + {\if!\cfile!\relax*\fi}% +\optdef{*}{}{`Page(s)'}{(no abbreviation)} +\optdef{a}{pp}{`Page' abbreviated}{as p. or pp.} +\optdef{x}{ppx}{`Page' omitted}{} +\getans +\beginoptiongroup{ABBREVIATE WORD `EDITORS':}{} +\optdef{*}{}{`Editor(s)'}{(no abbreviation)} +\optdef{a}{ed}{`Editor' abbreviated}{as ed. or eds.} +\getans +\endoptiongroup + +\beginoptiongroup{OTHER ABBREVIATIONS:}{} +\optdef{*}{}{No abbreviations}{of volume, edition, chapter, etc} +\optdef{a}{abr}{Abbreviations}{of such words} +\getans +\endoptiongroup +\beginoptiongroup{ABBREVIATION FOR `EDITION' + (if abbreviating words)} + {\if\ans a*\fi}% +\optdef{*}{}{`Edition' abbreviated as `edn'}{} +\optdef{a}{ednx}{`Edition' abbreviated as `ed'}{} +\getans +\beginoptiongroup{MONTHS WITH DOTS:}{} +\optdef{*}{}{Months with dots}{as Jan.} +\optdef{x}{mth-bare}{Months without dots}{as Feb Mar} +\getans +\endoptiongroup +\endoptiongroup +\beginoptiongroup{EDITION NUMBERS:}{} +\optdef{*}{xedn}{Editions as in database}{saving much processing memory} +\optdef{w}{}{Write out editions}{as first, second, third, etc} +\optdef{n}{ord}{Numerical editions}{as 1st, 2nd, 3rd, etc} +\getans +\endoptiongroup +\endoptiongroup +% \end{macrocode} +% +% The above choices about abbreviations are made only if the internal +% languages are taken (English or \texttt{babel}). For an external language +% definition file, these choices, along with possible other ones, are made +% in the external file, which is read in at this point. +% \begin{macrocode} +\umes{Reading external language file \string\cfile=\cfile}% +\if!\cfile!\relax\else + \input\cfile +\fi +% \end{macrocode} +% +% This file contains the standard set of stored journal names present in +% the basic bibliography style files. If other files containing journal +% names are to be included, they may only contain the options \texttt{jabr} +% or \texttt{jaa} since these options are selected here. No option +% menus from the journal-name files will be read in. +% \begin{macrocode} +\beginoptiongroup{STORED JOURNAL NAMES:}{} +\optdef{*}{}{Full journal names}{for prestored journals} +\optdef{a}{jabr}{Abbreviated journal names}{} +\optdef{s}{jabr,jaa}{Abbreviated with astronomy shorthands}{like ApJ and AJ} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Variations on \textsl{and}} +% It is possible to replace the word \textsl{and} with an ampersand \&, and to +% specify whether a comma is to precede \textsl{and} in a list of more than two +% names. +% +% A variable \textsl{and} may be provided for with the command |\BIBand| +% in place of the word. In this case, the command must be defined in the +% document file or some other package called. (This is intended for situations +% where an ampersand is wanted in parenthetical citations, but the word in +% textual ones.) +% +% \begin{macrocode} +\beginoptiongroup{AMPERSAND:}{} +\optdef{*}{}{Use word `and'}{in author lists} +\optdef{a}{amper}{Use ampersand}{in place of `and'} +\optdef{v}{varand}{Use \string\BIBand}{in place of `and'} +\getans +\endoptiongroup + +\beginoptiongroup{COMMA BEFORE `AND':}{} +\optdef{*}{}{Comma before `and'}{as `Tom, Dick, and Harry'} +\optdef{n}{and-xcom}{No comma before `and'}{as `Tom, Dick and Harry'} +\optdef{c}{and-com}{Comma even with 2 authors}{as `Tom, and Harry'} +\getans +\endoptiongroup +\beginoptiongroup{COMMA BEFORE `AND' EVEN FOR COLLECTION EDITORS + (if using comma before `and' with authors)} + {\if\ans c*\fi}% +\optdef{*}{and-com-ed}{Comma with 2 editors}{in collections} +\optdef{x}{}{Two editors without comma}{as `Tom and Harry'} +\getans +\endoptiongroup +\beginoptiongroup{NO `AND' IN REFERENCE LIST:}{} +\optdef{*}{}{With `and'}{before last author in reference list} +\optdef{x}{xand}{No `and'}{as `Tom, Dick, Harry'} +\getans +\endoptiongroup + +\beginoptiongroup{COMMA BEFORE `ET AL':}{} +\optdef{*}{}{Comma before `et al'}{in reference list} +\optdef{x}{etal-xc}{No comma before `et al'}{} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Font of \textsl{et al}} +% One can chose that \textsl{et~al.}\ be put into italics. +% Or, if the authors are in a different font from the regular one, the +% \textsl{et~al.}\ can still be Roman. +% \begin{macrocode} +\beginoptiongroup{FONT OF `ET AL':}{} +\optdef{*}{}{Plain et al}{} +\optdef{i}{etal-it}{Italic et al}{} +\optdef{r}{etal-rm}{Roman et al}{even when authors something else} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Additional Data Fields}\label{sec:revtex} +% The American Physical Society's REV\TeX\ package contains \btx\ support +% with a \texttt{bst} file generated from a variant of +% \texttt{\filename}. The extra fields are also available here. +% \begin{itemize} +% \item \textbf{collaboration}: A collaboration name associated with a +% reference. +% \item \textbf{eprint}: The e-print citation for the reference (Los Alamos +% or otherwise). E-print numbers can be turned into hyperlinks to the +% online article. The output is\\ +% \hspace*{2em}|\eprint{|\textit{eprint-spec}|}| +% \item \textbf{archive}: is an optional argument for |\eprint|, as\\ +% \hspace*{2em}|\eprint[|\textit{archive-des}|]{|\textit{eprint-spec}|}|\\ +% The \textit{archive-des} is some code such as \texttt{arXiv} that is +% translated to a base URL by a class or package file. The default definition +% of |\eprint| ignores \textit{archive-des} and prints \textit{eprint-spec} +% as a URL. +% \item \textbf{url}: A URL associated with the reference. Can be turned +% into a hyperlink. +% \end{itemize} +% +% A collaboration appears as part of the author list and the other two +% appear at the end of the citaton. The URL field can be selected +% independently of this option. +% +% In addition there are new fields for journals like Phys.\ Rev.~D that +% no longer use page numbers. +% \begin{itemize} +% \item \textbf{eid}: Electronic article identifier. +% \item \textbf{numpages}: Number of pages in an article. For use in +% conjunction with the \textbf{eid} field when page counts are +% desired. Deprecated when submitting to Phys.\ Rev. +% +% The \texttt{eprint} (with \texttt{archive}) and \texttt{url} fields may be +% included independently of the other REV\TeX\ fields. +% +% The \texttt{eid} field is now always included, although it is optional for +% the bibliography entries. This electronic identifier is a replacement for the +% page number in electronic journals: it is the sequence number in the printed +% volume. If present, it will be used in place of the page number. +% +% \end{itemize} +% +% \begin{macrocode} +\beginoptiongroup{ADDITIONAL REVTeX DATA FIELDS:}{} +\optdef{*}{}{No additional fields}{for REVTeX} +\optdef{r}{revdata,eprint,url,url-blk}{Include REVTeX data fields} + {collaboration, eid, eprint, archive, numpages, url} +\getans +\mytemptrue +\if\ans r\mytempfalse\fi +\beginoptiongroup{E-PRINT DATA FIELD: +(without REVTeX fields)} +{\ifmytemp*\fi} +\optdef{*}{}{Do not include eprint field}{} +\optdef{e}{eprint}{Include eprint and archive fields}{for electronic publications} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{URL address} +% For electronic documents with an Internet address, add a URL entry. +% Harvard already has this, but here it is done for all styles. +% The URL text will be set with the \verb!\url! command in the \texttt{url} +% package by Donald Arseneau. This package must be loaded for the command +% to work right. It allows line breaks at punctuations. Otherwise, +% \verb!\texttt! is used instead, with no line breaks. The URL text is preceded +% by \verb!\urlprefix! which defaults to ``URL '' but may be redefined by the +% user to be whatever s/he wants. The final space must be included. +% +% Note: selecting the REV\TeX\ fields automatically includes this, so the +% offer only is made if REV\TeX\ has been rejected. +% +% \begin{macrocode} +\beginoptiongroup{URL ADDRESS: +(without REVTeX fields)}{\ifmytemp*\fi} +\optdef{*}{}{No URL}{for electronic (Internet) documents} +\optdef{u}{url,url-blk}{Include URL}{as regular item block} +\optdef{n}{url,url-nt}{URL as note}{} +\optdef{l}{url,url-nl}{URL on new line}{after rest of reference} +\getans +\endoptiongroup +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Reference Component Tagging} +% If reference component tagging is enabled, we +% apply tags like |\bibinfo| and |\eprint| to the fields of data +% in the content of the |\bibitem| statement. We also ensure that +% these commands have a default meaning within the scope of the |thebibliography| +% environment. The default definitions simply print the field and ignore the +% tag. However, other programs or packages might make use of the tag +% information to separate authors from title, for example. +% +% \begin{macrocode} +\beginoptiongroup{REFERENCE COMPONENT TAGS:}{} +\optdef{*}{}{No reference component tags} + {in the \string\bibitem\space entries} +\optdef{b}{bibinfo}{Reference component tags} + {like \string\bibinfo\space in the content of \string\bibitem} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Define emphasis} +% In everything that been mentioned so far, italicization should be +% understood to mean `emphasize' in the \LaTeX{} sense. This means that the +% command |\em| is used. This is not the same as |\it|, which is always +% italics. Rather, with |\em|, the font style switches between |\rm| and +% |\it| depending on the context. Here one may choose to true italics, or +% to switch off italics altogether. +% \begin{macrocode} +\beginoptiongroup{EMPHASIS: + (affects all so-called italics)}{} +\optdef{*}{}{Use emphasis}{ie, \string\em, allows font switching} +\optdef{i}{em-it}{Use true italics}{ie, \string\it, absolute italics} +\optdef{x}{em-x}{No italics}{at all} +\optdef{u}{em-ul}{Underlining}{in place of italics, best with ulem package} +\getans +\endoptiongroup +% \end{macrocode} +% +% \subsection*{Plain \TeX\ compatibility} +% Bold face, italics, and emphasis are made with the \LaTeXe\ commands, +% which makes them incompatible with the obsolete \LaTeX2.09, and with +% Plain \TeX. There are also some extra testing for existing commands +% that best work with \LaTeXe\ syntax. +% +% If the bibliography style file is to be fully compatible with Plain \TeX, +% do not select the option \texttt{nfss} but do take \texttt{plntx}. +% \begin{macrocode} +\beginoptiongroup{COMPATIBILITY WITH PLAIN TEX:}{} +\optdef{*}{nfss}{Use LaTeX commands}{which may not work with Plain TeX} +\optdef{t}{plntx}{Use only Plain TeX}{commands for fonts and testing} +\getans +\endoptiongroup +% \end{macrocode} +% +% Terminate the options list. If a language definition file has been called, +% then we have a closing brace too many, so add another dummy opening brace. +% \begin{macrocode} +\if!\cfile\jfile!\else +\begingroup\MBswitch +\wr(,{\pc) +\endgroup +\fi + +\endoptions +%</options> +% \end{macrocode} +% +% \section{The Bibliographic Coding} +% +% \begin{macrocode} +%<*!options&!driver&!bblbst> +%<*!tail> + % For use with BibTeX version 0.99a or later + % ------------------------------------------------------------------- +%<*(!nmft&(nmft-it|nmft-sc|nmft-bf|nmft-def))|(!lab&(lab-it|lab-bf|lab-sc|lab-def))> + % WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING + % The input dbj file contains one of the options +%<nmft-it|nmft-sc|nmft-bf|nmft-def> % nmft-it, nmft-bf, nmft-sc, or nmft-def +%<lab-it|lab-sc|lab-bf|lab-def> % lab-it, lab-bf, lab-sc, or lab-def + % without the corresponding general option(s): +%<nmft-it|nmft-sc|nmft-bf|nmft-def> % nmft +%<lab-it|lab-sc|lab-bf|lab-def> % lab + % (You may be using an older dbj with a newer version of merlin.mbs) + % Please edit your dbj file to add the general option(s) and reprocess. + % +%</(!nmft&(nmft-it|nmft-sc|nmft-bf|nmft-def))|(!lab&(lab-it|lab-bf|lab-sc|lab-def))> +%<*!exlang> +%<!babel> % This bibliography style file is intended for texts in ENGLISH +%<*babel> + % This bibliography style file requires a file named 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" write$ newline$ +"" write$ newline$ +"

Bibliography

" write$ newline$ +%"
" write$ newline$ +%"
    " write$ newline$ +} +% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +EXECUTE {begin.bib} +% \end{macrocode} +% +% \begin{macrocode} +EXECUTE {init.state.consts} +% \end{macrocode} +% +% \begin{macrocode} +ITERATE {call.type$} +% \end{macrocode} +% +% \begin{macro}{`end.bib'} +% \begin{macrocode} +FUNCTION {end.bib} +{ newline$ +% "\end{thebibliography}" write$ newline$ +% "
" write$ newline$ +} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +EXECUTE {end.bib} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \section{The File \texttt{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} +% +% \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 Binary files /dev/null and b/Master/texmf-dist/doc/latex/cjs-rcs-article/cjs-rcs-merlin.pdf 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[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 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 -- cgit v1.2.3