diff options
Diffstat (limited to 'Master/texmf-dist/bibtex/bst/jurabib')
-rw-r--r-- | Master/texmf-dist/bibtex/bst/jurabib/jox.bst | 2397 | ||||
-rw-r--r-- | Master/texmf-dist/bibtex/bst/jurabib/jurabib.bst | 2894 | ||||
-rw-r--r-- | Master/texmf-dist/bibtex/bst/jurabib/jureco.bst | 2809 | ||||
-rw-r--r-- | Master/texmf-dist/bibtex/bst/jurabib/jurunsrt.bst | 2835 |
4 files changed, 10935 insertions, 0 deletions
diff --git a/Master/texmf-dist/bibtex/bst/jurabib/jox.bst b/Master/texmf-dist/bibtex/bst/jurabib/jox.bst new file mode 100644 index 00000000000..c7842ef7c3c --- /dev/null +++ b/Master/texmf-dist/bibtex/bst/jurabib/jox.bst @@ -0,0 +1,2397 @@ +%% +%% This is file `jox.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% jurabib.dtx (with options: `joxbst') +%% ---------------------------------------- +%% BibTeX style for use with the jurabib package version v0.6 +%% Copyright (C) 1999-2004 Jens Berger (http://www.jurabib.org) +%% See jurabib.ins for the copyright details. +%% +FUNCTION {version} { " v0.1k" } + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + stitle + title + type + volume + year + url + urldate + volumetitle + juratitle + shorttitle + juraauthor + shortauthor + howcited + ssedition + language + titleaddon + booktitleaddon + editortype + sortkey + annote + gender + translator + flanguage + oyear + oaddress + opublisher + pseudonym + volformat + noed + } + { repeat-authors } + { label dummy.label extra.label sort.label short.list current-authors } + +INTEGERS { output.state before.all mid.sentence } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := +} + +STRINGS { s t u v w x } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { write$ 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 {format.endnote} +{ note empty$ + { "" } + { " \jbendnote {" note * "}" * } + if$ +} + +FUNCTION {format.howcited}{ before.all 'output.state := "} {\bibhowcited}" format.endnote * * } + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.name.sig} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff}{ vv}{ ll}{ jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { "sssss" * t * } + { t "others" = + { " et al." * } + { "" * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.snd.editors} +{ editor empty$ + { "" * } + { author empty$ + { editortype empty$ + { editor num.names$ #1 > + { "\snded {\sndeditorsname}" * } + { "\snded {\sndeditorname}" * } + if$ + } + { "\snded {(" editortype * ")}" * * } + if$ + } + 'skip$ + if$ + } + if$ +} + +FUNCTION {count.authors.or.editors} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { "" 't := + nameptr #1 > + { namesleft #1 > + { "" * } + { "s" * } % more than one author/editor, append `s' + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {set.after.author.sep} +{ before.all 'output.state := + author missing$ + { editor missing$ + { organization missing$ + { "} {empty} {} {" } + { "} {" organization "} {org} {" * * } + if$ + } + { "} {" editor format.name.sig * "} {ed" editor count.authors.or.editors "} {" * * * } + if$ + } + { "} {" author format.name.sig * "} {au" author count.authors.or.editors "} {" * * * } + if$ + author empty$ + { format.snd.editors } + 'skip$ + if$ + "" * +} + +FUNCTION {format.note} +{ note empty$ + 'skip$ + { output.state before.all = + { "\jbnote {}{" * note * "}" * } + { " \jbnote {1}{" * note * "}" * } + if$ + } + if$ +} + + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {non.stop} +{ duplicate$ + "}" * + #-1 #1 substring$ "." = +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {capitalize} +{ "u" change.case$ "t" change.case$ } + +FUNCTION {space.word} +{ " " swap$ * " " * } + +FUNCTION {bbl.edition} +{ "\editionname {} " } + +FUNCTION {bbl.vol} +{ "\volname {}" } + +FUNCTION {bbl.volume} +{ "\volumename {}" } + +FUNCTION {bbl.of} +{ " \volumeofname {} " } + +FUNCTION {bbl.number} +{ "\numbername" } + +FUNCTION {bbl.in} +{ "\incollinname {} " } + +FUNCTION {bbl.in.series} +{ "\inseriesname {}" } + +FUNCTION {bbl.chapter} +{ "\bibchaptername {}" } + +FUNCTION {bbl.techrep} +{ "\technicalreportname {}" } + +FUNCTION {bbl.mthesis} +{ "\mastersthesisname {}" } + +FUNCTION {bbl.phdthesis} +{ "\phdthesisname {}"} + +MACRO {jan} {"\janname"} +MACRO {feb} {"\febname"} +MACRO {mar} {"\marname"} +MACRO {apr} {"\aprname"} +MACRO {may} {"\mayname"} +MACRO {jun} {"\junname"} +MACRO {jul} {"\julname"} +MACRO {aug} {"\augname"} +MACRO {sep} {"\sepname"} +MACRO {oct} {"\octname"} +MACRO {nov} {"\novname"} +MACRO {dec} {"\decname"} + +FUNCTION {checked.emph.format} +{ type$ "book" = type$ "inbook" = type$ "proceedings" = type$ "inproceedings" = or or or + { "\bibtfont {" } + { "\bibapifont {" } + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { checked.emph.format swap$ * "}" * } + if$ +} + +FUNCTION {b.emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\bibbtfont {" swap$ * "}" * } + if$ +} + +FUNCTION {write.url} +{ url empty$ + { urldate empty$ + 'skip$ + { "there's an urldate, but no url in " cite$ * warning$ } + if$ + } + { type$ "www" = + 'skip$ + { ", " * } + if$ + title empty$ output.state before.all = and + { "" * mid.sentence 'output.state := } + { " " * } + if$ + urldate empty$ + { "\jburluse {" cite$ * "}" * * } + { "\jburluse {" cite$ * "}\bibbudcsep {}\urldatecomment " * urldate * * } + if$ + } + if$ +} + +FUNCTION {lastnamemarkup} +{ duplicate$ empty$ + { pop$ "" } + { "\bibnf {" swap$ * "}" * } + if$ +} + +FUNCTION {editorlastnamemarkup} +{ duplicate$ empty$ + { pop$ "" } + { author empty$ + { "\biblenf {" swap$ * "}" * } + { "\bibenf {" swap$ * "}" * } + if$ + } + if$ +} + +FUNCTION {othermarkup} +{ duplicate$ empty$ + { pop$ " {}" } + { " {" swap$ * "}" * } + if$ +} + +FUNCTION {indexmarkup} +{ duplicate$ empty$ + { pop$ "{}" } + { "{" swap$ * "}" * } + if$ +} + +FUNCTION {format.names.for.index} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ll}" format.name$ 't := t indexmarkup 't := + s nameptr "{ff}" format.name$ indexmarkup 'u := + s nameptr "{f.}" format.name$ indexmarkup 'v := + s nameptr "{vv}" format.name$ indexmarkup 'w := + s nameptr "{jj}" format.name$ indexmarkup 'x := + t u * v * w * x * 't := + t "{others}{}{}{}{}" = + 'skip$ + { nameptr #1 > + { namesleft #1 > + { "; " * t * } + { + t "others" = + 'skip$ + { "; " * t * } + if$ + } + if$ + } + 't + if$ + } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ll}" format.name$ 't := t lastnamemarkup 't := + s nameptr "{ff}" format.name$ othermarkup 'u := + s nameptr "{f.}" format.name$ othermarkup 'v := + s nameptr "{vv}" format.name$ othermarkup 'w := + s nameptr "{jj}" format.name$ othermarkup 'x := + t u * v * w * x * 't := + nameptr #1 > + { namesleft #1 > + { numnames #3 > + { "" * } + { numnames #3 < + { "\Bibbtasep " * t * } + { "\Bibbfsasep " * t * } + if$ + } + if$ + } + { t "\bibnf {others} {} {} {} {}" = + numnames #3 > or + { "\bibimfont {\Bibetal}" * } + { numnames #3 < + { "\Bibbtasep " * t * } + { "\Bibbstasep " * t * } + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.editor.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ll}" format.name$ 't := t editorlastnamemarkup 't := + s nameptr "{ff}" format.name$ othermarkup 'u := + s nameptr "{f.}" format.name$ othermarkup 'v := + s nameptr "{vv}" format.name$ othermarkup 'w := + s nameptr "{jj}" format.name$ othermarkup 'x := + t u * v * w * x * 't := + nameptr #1 > + { namesleft #1 > + { numnames #3 > + { "" * } + { numnames #3 < + { "\Bibbtasep " * t * } + { "\Bibbfsasep " * t * } + if$ + } + if$ + } + { t "\bibenf {others} {} {} {} {}" = + t "\biblenf {others} {} {} {} {}" = or + t "\bibenf {others} {} {} {} {} \editorsname" = or + t "\biblenf {others} {} {} {} {} \editorsname" = or + numnames #3 > or + { "\bibimfont {\Bibetal}" * } + { numnames #3 < + { "\Bibbtasep " * t * } + { "\Bibbstasep " * t * } + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { pseudonym empty$ + { "" } + { "[" pseudonym format.names * "]" * } + if$ + } + { author format.names + pseudonym empty$ + 'skip$ + { " [" * pseudonym format.names * "]" * } + if$ + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { pseudonym empty$ + { "" } + { "[" pseudonym format.editor.names * "]" * } + if$ + } + { editor format.editor.names + pseudonym empty$ + 'skip$ + { " [" * pseudonym format.editor.names * "]" * } + if$ + noed missing$ + { editor num.names$ #1 > + { editortype empty$ + { "\bibedformat {\editorsname}" * } + { "\bibedformat {" * editortype * "}" * } + if$ + } + { editortype empty$ + { "\bibedformat {\editorname}" * } + { "\bibedformat {" * editortype * "}" * } + if$ + } + if$ + } + { noed 's := + s "1" = + 'skip$ + { editor num.names$ #1 > + { editortype empty$ + { "\bibedformat {\editorsname}" * } + { "\bibedformat {" * editortype * "}" * } + if$ + } + { editortype empty$ + { "\bibedformat {\editorname}" * } + { "\bibedformat {" * editortype * "}" * } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.in.editors} +{ editor empty$ + { pseudonym empty$ + 'skip$ + { "[" pseudonym format.editor.names * "]" * } + if$ + } + { editor format.editor.names + pseudonym empty$ + 'skip$ + { " [" * pseudonym format.editor.names * "]" * } + if$ + noed missing$ + { editor num.names$ #1 > + { editortype empty$ + { " \bibedinformat {\editorsname}" * } + { " \bibedinformat {" * editortype * "}" * } + if$ + } + { editortype empty$ + { " \bibedinformat {\editorname}" * } + { " \bibedinformat {" * editortype * "}" * } + if$ + } + if$ + } + { noed 's := + s "1" = + 'skip$ + { editor num.names$ #1 > + { editortype empty$ + { " \bibedinformat {\editorsname}" * } + { " \bibedinformat {" * editortype * "}" * } + if$ + } + { editortype empty$ + { " \bibedinformat {\editorname}" * } + { " \bibedinformat {" * editortype * "}" * } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {fin.entry} +{ format.howcited + " \jbdoitem {" * + author empty$ + 'skip$ + { author format.names.for.index * } + if$ + "} {" + editor empty$ + 'skip$ + { editor format.names.for.index * } + if$ + "} {" * + organization empty$ + 'skip$ + { "{" organization * "}{}{}{}{}" * * } + if$ + "}" * * write$ + annote missing$ + { " \bibAnnoteFile {" cite$ * "}" * write$ newline$ } + { " \bibAnnote {" annote * "}" * write$ newline$ } + if$ +} + +FUNCTION {format.titleaddon} +{ title empty$ + 'skip$ + { titleaddon empty$ + 'skip$ + { ", " * titleaddon * } + if$ + } + if$ +} + +FUNCTION {format.booktitleaddon} +{ booktitle empty$ + 'skip$ + { booktitleaddon empty$ + 'skip$ + { ", " * booktitleaddon * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ before.all 'output.state := + title empty$ + { "" } + { title checked.emph.format swap$ * non.stop + { before.all 'output.state := "}" * } + { before.all 'output.state := "}" * } + if$ + } + if$ +} + +FUNCTION {journalnamemarkup} +{ duplicate$ empty$ + { pop$ "" } + { "\bibJTsep \bibjtfont {" swap$ * "}" * } + if$ +} + +FUNCTION {seriesformat} +{ duplicate$ empty$ + { pop$ "" } + { "\bibsnfont {" swap$ * "}" * } + 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.superscript} +{ edition extract.num "l" change.case$ 's := + s "first" = s "1" = or s "erste" = or + { "1" 't := } + { s "second" = s "2" = or s "zweite" = or + { "2" 't := } + { s "third" = s "3" = or s "dritte" = or + { "3" 't := } + { s "fourth" = s "4" = or s "vierte" = or + { "4" 't := } + { s "fifth" = s "5" = or s "fuenfte" = or + { "5" 't := } + { s "sixth" = s "6" = or s "sechste" = or + { "6" 't := } + { s "seventh" = s "7" = or s "siebte" = or s "siebente" = or + { "7" 't := } + { s "eighth" = s "8" = or s "achte" = or + { "8" 't := } + { s "nineth" = s "9" = or s "neunte" = or + { "9" 't := } + { s #1 #1 substring$ is.num + { s "" * 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +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 {output.bibitem.fst} +{ newline$ + "\bibitem[{" write$ + shortauthor empty$ + { juraauthor empty$ + { author empty$ + { editor empty$ + { organization empty$ + { "empty" write$ } + { organization write$ } + if$ + } + { label write$ } + if$ + } + { label write$ } + if$ + } + { juraauthor write$ } + if$ + } + { shortauthor write$ } + if$ + "}%" write$ + sortkey empty$ + 'skip$ + { newline$ "% SORTKEY: [" sortkey * "]" * write$ } + if$ + newline$ + shorttitle empty$ + { juratitle empty$ + { journal empty$ + { " {}%" write$ } + { title empty$ + { key empty$ + { " {}%" write$ } + { " {" key * "}%" * write$ } + if$ + } + { " {" title * "}%" * write$ } + if$ + } + if$ + } + { " {" juratitle * "}%" * write$ } + if$ + } + { " {" shorttitle * "}%" * write$ } + if$ + newline$ + repeat-authors + { " {{1}" write$ } + { " {{0}" write$ } + if$ + howcited empty$ + { "{}" write$ } + { "{" howcited * "}" * write$ } + if$ + type$ empty$ + { "{}" write$ } + { "{" type$ * "}" * write$ } + if$ + year empty$ + { "{}" write$ } + { "{" year * write$ + extra.label "" = + 'skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + "}" write$ + } + if$ + edition empty$ + { "{}" write$ } + { "{" convert.edition.superscript extract.num * "}" * write$ } + if$ + ssedition empty$ + { "{}" write$ } + { "{" ssedition * "}" * write$ } + if$ + language empty$ + { "{}" write$ } + { "{" language * "}" * write$ } + if$ + pages empty$ + { "{}%" write$ } + { "{" write$ pages n.dashify write$ "}%" write$ } + if$ + newline$ +} + +FUNCTION {output.bibitem.snd} +{ publisher empty$ + { address empty$ + { year empty$ + { " {" write$ } + { " {" write$ + year write$ + extra.label "" = + 'skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + } + if$ + } + { year empty$ + { " {" write$ address write$ } + { " {" write$ address write$ "\bibbdsep {} " write$ + year write$ + extra.label "" = + 'skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + } + if$ + } + if$ + } + { address empty$ + { year empty$ + { " {" write$ publisher write$ } + { " {" write$ publisher write$ "\bibbdsep {} " write$ + year write$ + extra.label "" = + 'skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + } + if$ + } + { year empty$ + { " {" write$ address write$ "\bpubaddr {} " write$ publisher write$ } + { " {" write$ address write$ "\bpubaddr {} " write$ publisher write$ "\bibbdsep {} " write$ + year write$ + extra.label "" = + 'skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + } + if$ + } + if$ + } + if$ + "}}%" write$ newline$ + " {" write$ + title empty$ + { "{}%" write$ newline$ } + { "{" title * "}%" * write$ newline$ } + if$ + gender empty$ + { " {}" write$ } + { " {" gender * "}" * write$ } + if$ + oyear empty$ + { "{}" write$ } + { "{" oyear * "}" * write$ } + if$ + author empty$ + { editor empty$ + { "{4}" write$ }% author and editor empty + { "{3}" write$ }% author empty, editor not + if$ + } + { editor empty$ + { "{2}" write$ }% editor empty, author not + { "{1}" write$ }% both author and editor given + if$ + } + if$ + "{}{}{}{}{}}%" write$ newline$ + " ]{" write$ + cite$ write$ + "}" write$ + url empty$ + 'skip$ + { newline$ " \jburldef {" write$ cite$ write$ "}{" write$ url write$ "}%" write$ } + if$ + newline$ + " \jbbibargs {" write$ + "" + before.all 'output.state := +} + +FUNCTION {output.bibitem}{ output.bibitem.fst output.bibitem.snd } + +FUNCTION {word.in} +{ bbl.in + " " * } + +FUNCTION {add.extra.label} +{extra.label "" = + 'skip$ + { "\bibel {" extra.label * "}" * * } + if$ +} + +FUNCTION {format.date} +{ year empty$ + 'skip$ + { output.state before.all = + { "" * mid.sentence 'output.state := } + { " " * } + if$ + "\dateldelim {}" * + month empty$ + 'skip$ + { month "{} " * * } + if$ + year * add.extra.label "\daterdelim {}" * + } + if$ +} + +FUNCTION {format.btitle} +{ before.all 'output.state := + title emphasize +} + +FUNCTION {format.booktitle} +{ before.all 'output.state := + booktitle b.emphasize +} + +FUNCTION {format.booklet.title} +{ before.all 'output.state := + title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { " " } + { + volumetitle empty$ + { crossref missing$ + { bbl.volume volume tie.or.space.connect } + { bbl.vol volume tie.or.space.connect } + if$ + } + { + crossref missing$ + { bbl.volume volume tie.or.space.connect } + { bbl.vol volume tie.or.space.connect } + if$ + ": \bibvtfont {" * volumetitle "}" * * + } + if$ + } + if$ +} + +FUNCTION {format.bvolume.btitle.reversed} +{ volume empty$ + { title empty$ + 'skip$ + { + before.all 'output.state := + title emphasize + } + if$ + } + { volumetitle empty$ + { title empty$ + 'skip$ + { + before.all 'output.state := + title emphasize + } + if$ + } + { "\bibvtfont {" volumetitle * "}" * * + bbl.volume volume tie.or.space.connect + title empty$ + 'skip$ + { bbl.of title emphasize * * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.bvolume.btitle} +{ volformat missing$ + { + format.btitle "title" output.check format.bvolume output + } + { volformat 's := + s "reversed" = + { volumetitle empty$ + { + "volformat given but no volumetitle in " cite$ * warning$ + format.bvolume.btitle.reversed output + } + { + volume empty$ + { "there's a volumetitle but no volume in " cite$ * warning$ * } + 'skip$ + if$ + title empty$ + { + "volformat given but no title in " cite$ * warning$ + } + { + format.bvolume.btitle.reversed output + } + if$ + } + if$ + } + { + format.btitle "title" output.check format.bvolume output + } + if$ + } + if$ +} + +FUNCTION {format.bvolume.booktitle.reversed} +{ volume empty$ + { booktitle empty$ + 'skip$ + { + before.all 'output.state := + booktitle b.emphasize + } + if$ + } + { volumetitle empty$ + { booktitle empty$ + 'skip$ + { + before.all 'output.state := + bbl.volume volume tie.or.space.connect + booktitle empty$ + 'skip$ + { bbl.of booktitle b.emphasize * * } + if$ + } + if$ + } + { "\bibvtfont {" volumetitle * "}" * * + bbl.volume volume tie.or.space.connect + booktitle empty$ + 'skip$ + { bbl.of booktitle b.emphasize * * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.in.editor.booktitle.volume.voltitle} +{ editor empty$ + { chapter empty$ + { ", " * } + { " " * } + if$ + word.in * + } + { chapter empty$ + { ", " * } + { " " * } + if$ + word.in format.in.editors * ", " * * + } + if$ + volformat missing$ + { + format.booktitle "booktitle" output.check + format.bvolume output + format.booktitleaddon + } + { volformat 's := + s "reversed" = + { volumetitle empty$ + { + "volformat given but no volumetitle in " cite$ * warning$ + format.bvolume.booktitle.reversed output + format.booktitleaddon + } + { + volume empty$ + { "there's a volumetitle but no volume in " cite$ * warning$ * } + 'skip$ + if$ + booktitle empty$ + { + "volformat given but no booktitle in " cite$ * warning$ + } + { + format.bvolume.booktitle.reversed output + format.booktitleaddon + } + if$ + } + if$ + } + { format.booktitle "booktitle" output.check + format.bvolume output + format.booktitleaddon + } + if$ + } + if$ +} + +FUNCTION {format.number.series.book.old} +{ number empty$ + { series seriesformat field.or.null } + { series empty$ + { "there's a number but no series in " cite$ * warning$ number } + { series seriesformat number tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.number.series.book} +{ volume empty$ + { number empty$ + { series empty$ + { "" } + { " \numberandseries {}{" series * "}" * } + if$ + } + { series empty$ + { " \numberandseries {" number * "}{}" * "There's a number but no series in " cite$ * warning$ } + { " \numberandseries {" number * "}{" * series "}" * * } + if$ + } + if$ + } + { series empty$ + { "" } + { type$ "proceedings" = + { " \numberandseries {}{" series * "}" * } % { " (" series * ")" * } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series seriesformat field.or.null } + { output.state mid.sentence = + { bbl.number } + { bbl.number capitalize } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { bbl.in.series space.word * series seriesformat * } + if$ + } + if$ + } + { type$ "incollection" = crossref missing$ and + { format.number.series.book } + { "" } + if$ + } + if$ +} + +FUNCTION {first.ed} { "\firstedname" } +FUNCTION {second.ed}{ "\secondedname" } +FUNCTION {third.ed} { "\thirdedname" } +FUNCTION {fourth.ed}{ "\fourthedname" } +FUNCTION {fifth.ed} { "\fifthedname" } +FUNCTION {th.ed} { "\thedname" } + +FUNCTION {convert.edition} +{ edition extract.num "l" change.case$ 's := + s "first" = s "1" = or + { first.ed 't := } + { s "second" = s "2" = or + { second.ed 't := } + { s "third" = s "3" = or + { third.ed 't := } + { s "fourth" = s "4" = or + { fourth.ed 't := } + { s "fifth" = s "5" = or + { fifth.ed 't := } + { s #1 #1 substring$ is.num + { s th.ed * 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { convert.edition "~\editionname {}" * } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { before.all 'output.state := + "\jbPages {" pages n.dashify * "}" * + } + if$ +} + +FUNCTION {format.journal.pages} +{ pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { " \jbartPages {" pages n.dashify * "}" * * } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ before.all 'output.state := + volume empty$ + { year empty$ not + { "there's a year but no volume in " cite$ * warning$ } + 'skip$ + if$ + number empty$ + { "" } + { "there's a number but no volume in " cite$ * warning$ + type$ "periodical" = + { "~\per" * } + { "~\art" * } + if$ + "volnumformat {}{" number * "}" * + } + if$ + } + { type$ "periodical" = + { "~\per" * } + { "~\art" * } + if$ + number empty$ + { "volnumformat {" volume * "}{}" * } + { "volnumformat {" volume * "}{" number * "}" * * } + if$ + } + if$ + year empty$ + { month empty$ not + { "there's a month but no year in " cite$ * warning$ } + 'skip$ + if$ + } + { type$ "periodical" = + { " \per" * } + { " \art" * } + if$ + month empty$ + { "yearformat {" year * add.extra.label "}" * * } + { "yearformat {" month * "{} " * year * add.extra.label "}" * * } + if$ + } + if$ +} + +FUNCTION {format.chapter.inbook.incoll} +{ chapter empty$ + { "" } + { before.all 'output.state := + type empty$ + { ", " bbl.chapter * } + { ", " type * "l" change.case$ } + if$ + chapter tie.or.space.connect + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { before.all 'output.state := ", " bbl.chapter * } + { ", " type * "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { word.in booktitle b.emphasize format.booktitleaddon * } + { word.in format.in.editors * ", " * booktitle b.emphasize format.booktitleaddon * } + if$ + } + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { bbl.techrep } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ " \protect\jbartcrossrefchecked {" crossref * "}" * } + +FUNCTION {format.book.crossref} +{ type$ "book" = + { volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "\protect\jbcrossrefchecked {" crossref * "}" * } + { "\protect\jbcrossrefchecked[" volume * "]{" * crossref "}" * * } + if$ + } + { "\protect\jbcrossrefchecked {" crossref * "}" * } + if$ +} + +FUNCTION {format.incoll.inproc.crossref} +{ " \protect\jbincollcrossref {" crossref * "}" * + editor empty$ + { "{}" * } + { "{1}" * } + if$ +} + +FUNCTION {oaddress.opublisher.oyear.format} +{ type$ "book" = + { oyear empty$ + { opublisher empty$ + { oaddress empty$ + 'skip$ + { oaddress "\osep {} " * * } + if$ + } + { oaddress empty$ + { opublisher "\osep {} " * * } + { oaddress "\bpubaddr {} " * opublisher "\osep {} " * * * } + if$ + } + if$ + } + { year empty$ + { "oyear without year in " cite$ * warning$ } + 'skip$ + if$ + opublisher empty$ + { oaddress empty$ + { oyear * "\osep {} \reprintname {}, " * } + { oaddress "\bibbdsep {} " * oyear "\osep {} " * * * } + if$ + } + { oaddress empty$ + { opublisher * "\bibbdsep {} " * oyear "\osep {} " * * } + { oaddress "\bpubaddr {} " * opublisher "\bibbdsep {} " * * oyear "\osep {} " * * * } + if$ + } + if$ + } + if$ + } + 'skip$ + if$ +} + +FUNCTION {format.publisher} +{ year empty$ month empty$ not and + { "there's a month but no year in " cite$ * warning$ } + 'skip$ + if$ + address empty$ publisher empty$ year empty$ and and + 'skip$ + { " \apyformat {" * } + if$ + oaddress.opublisher.oyear.format + address empty$ + { + publisher empty$ + { + year empty$ + 'skip$ + { month empty$ + { year * add.extra.label } + { month "{} " * year * * add.extra.label } + if$ + } + if$ + } + { + year empty$ + { month empty$ + { publisher * } + 'skip$ + if$ + } + { month empty$ + { publisher "\bibbdsep {} " * year * * add.extra.label } + { publisher "\bibbdsep {} " * month "{} " * year * * * add.extra.label } + if$ + } + if$ + } + if$ + } + { + publisher empty$ + { + year empty$ + { address * } + { month empty$ + { address "\bibbdsep {} " * year * * add.extra.label } + { address "\bibbdsep {} " * month "{} " * year * * * add.extra.label } + if$ + } + if$ + } + { + year empty$ + { month empty$ + { address "\bpubaddr {} " * publisher * * } + 'skip$ + if$ + } + { month empty$ + { address "\bpubaddr {} " * publisher "\bibbdsep {} " * year * * * add.extra.label } + { address "\bpubaddr {} " * publisher "\bibbdsep {} " * month "{} " * year * * * * add.extra.label } + if$ + } + if$ + } + if$ + } + if$ + address empty$ publisher empty$ year empty$ and and + 'skip$ + { "}" * } + if$ +} + +FUNCTION {format.publisher.manual} +{ year empty$ month empty$ not and + { "there's a month but no year in " cite$ * warning$ } + 'skip$ + if$ + address empty$ organization empty$ year empty$ and and + 'skip$ + { " \apyformat {" * } + if$ + address empty$ + { + organization empty$ + { + year empty$ + 'skip$ + { month empty$ + { year * add.extra.label } + { month "{} " * year * * add.extra.label } + if$ + } + if$ + } + { + year empty$ + { month empty$ + { organization * } + 'skip$ + if$ + } + { month empty$ + { organization "\bibbdsep {} " * year * * add.extra.label } + { organization "\bibbdsep {} " * month "{} " * year * * * add.extra.label } + if$ + } + if$ + } + if$ + } + { organization empty$ + { year empty$ + { address * } + { month empty$ + { address "\bibbdsep {} " * year * * add.extra.label } + { address "\bpubaddr {} " * month "{} " * year * * * add.extra.label } + if$ + } + if$ + } + { year empty$ + { month empty$ + { address "\bpubaddr {} " * organization * * } + 'skip$ + if$ + } + { month empty$ + { address "\bpubaddr {} " * organization "\bibbdsep {} " * year * * * add.extra.label } + { address "\bpubaddr {} " * organization "\bibbdsep {} " * month "{} " * year * * * * add.extra.label } + if$ + } + if$ + } + if$ + } + if$ + address empty$ organization empty$ year empty$ and and + 'skip$ + { "}" * } + if$ +} + +FUNCTION {format.publisher.techreport} +{ year empty$ month empty$ not and + { "there's a month but no year in " cite$ * warning$ } + 'skip$ + if$ + address empty$ institution empty$ year empty$ and and + 'skip$ + { " \apyformat {" * } + if$ + address empty$ + { + institution empty$ + { + year empty$ + 'skip$ + { month empty$ + { year * add.extra.label } + { month "{} " * year * * add.extra.label } + if$ + } + if$ + } + { + year empty$ + { month empty$ + { institution * } + 'skip$ + if$ + } + { month empty$ + { institution "\bibbdsep {} " * year * * add.extra.label } + { institution "\bibbdsep {} " * month "{} " * year * * * add.extra.label } + if$ + } + if$ + } + if$ + } + { institution empty$ + { year empty$ + { address * } + { month empty$ + { address "\bibbdsep {} " * year * * add.extra.label } + { address "\bpubaddr {} " * month "{} " * year * * * add.extra.label } + if$ + } + if$ + } + { year empty$ + { month empty$ + { address "\bpubaddr {} " * institution * * } + 'skip$ + if$ + } + { month empty$ + { address "\bpubaddr {} " * institution "\bibbdsep {} " * year * * * add.extra.label } + { address "\bpubaddr {} " * institution "\bibbdsep {} " * month "{} " * year * * * * add.extra.label } + if$ + } + if$ + } + if$ + } + if$ + address empty$ institution empty$ year empty$ and and + 'skip$ + { "}" * } + if$ +} + +FUNCTION {format.edby.editors} +{ author empty$ + 'skip$ + { editor empty$ + 'skip$ + { "\edbyname {} " editor format.editor.names * output } + if$ + } + if$ +} + +FUNCTION {make.translators} +{ translator empty$ + { flanguage empty$ + { "" } + { "\translator {}{" flanguage "l" change.case$ * "}{1}" * } + if$ + } + { "\translator {" translator * "}" * + flanguage empty$ + { "{}{1}" * } + { "{" * flanguage "l" change.case$ * "}{1}" * } + if$ + } + if$ +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.title "title" output.check + format.titleaddon + crossref missing$ + { journal journalnamemarkup + "journal" output.check + format.vol.num.pages output + write.url + format.journal.pages + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + format.note + fin.entry +} + +FUNCTION {periodical} {article} + +FUNCTION {review} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.title "title" output.check + format.titleaddon + crossref missing$ + { journal journalnamemarkup + "journal" output.check + format.vol.num.pages output + write.url + format.journal.pages + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + format.note + fin.entry +} + +FUNCTION {format.editors.last} +{ editor empty$ + { "" before.all 'output.state := } + { author empty$ not + { " \edbyname{} " editor format.editor.names * } + { "" before.all 'output.state := } + if$ + } + if$ +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { editor empty$ not + { format.editors output.nonnull } + { "neither author nor editor in " cite$ * warning$ } + if$ + } + { format.authors output.nonnull } + if$ + set.after.author.sep output + crossref missing$ + { format.bvolume.btitle + format.editors.last output.nonnull + make.translators output + format.titleaddon + format.number.series.book output + format.edition output + format.pages output + format.publisher + write.url + format.note + } + { format.btitle "title" output.check + format.book.crossref output.nonnull + } + if$ + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + set.after.author.sep output + format.btitle "title" output.check + format.titleaddon + howpublished output + format.publisher + format.pages output + write.url + format.note + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + crossref missing$ + { format.bvolume.btitle + format.titleaddon + make.translators output + format.number.series output + format.edition output + format.publisher + write.url + format.chapter.inbook.incoll output + format.pages output + format.note + } + { format.btitle "title" output.check + format.chapter.inbook.incoll output + format.incoll.inproc.crossref output.nonnull + format.bvolume output + format.pages output + } + if$ + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + crossref missing$ + { format.btitle "title" output.check + format.titleaddon + format.chapter.inbook.incoll output + format.in.editor.booktitle.volume.voltitle + make.translators output + format.number.series.book output + format.edition output + format.publisher + write.url + format.note + format.pages output + } + { format.title "title" output.check + format.chapter.inbook.incoll output + format.incoll.inproc.crossref output.nonnull + format.bvolume output + format.pages output + } + if$ + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.title "title" output.check + format.titleaddon + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + publisher empty$ + { organization output + format.publisher + } + { organization output + format.publisher + } + if$ + write.url + format.note + format.pages output + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + format.authors output + set.after.author.sep output + format.btitle "title" output.check + format.titleaddon + format.edition output + format.publisher.manual + write.url + format.note + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.btitle "title" output.check + format.titleaddon + bbl.mthesis format.thesis.type output.nonnull + school "school" output.check + format.publisher + write.url + format.note + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + set.after.author.sep output + format.btitle output + format.titleaddon + howpublished output + format.date + write.url + format.note + fin.entry +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.btitle "title" output.check + format.titleaddon + bbl.phdthesis format.thesis.type output.nonnull + school "school" output.check + format.publisher + write.url + format.note + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + format.editors output + set.after.author.sep output + format.btitle "title" output.check + format.titleaddon + format.number.series.book output + organization output + format.publisher + write.url + format.note + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.title "title" output.check + format.tr.number output.nonnull + format.publisher.techreport + write.url + format.note + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.title "title" output.check + format.titleaddon + format.date + write.url + format.note + fin.entry +} + +FUNCTION {www} +{ output.bibitem + format.authors output.nonnull + set.after.author.sep output + format.title output.nonnull + write.url + format.note + 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$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +INTEGERS { nextchar-ptr } % points just past 1st "text" char + +FUNCTION {get.nextchar.ptr} % set nextchar-ptr to be just past +{ #1 'nextchar-ptr := % the first "text" char---this will + { duplicate$ % be not quite trivial if + nextchar-ptr #1 substring$ % the first "text" char is a + "" = not % special characters like {\'E} + } + { nextchar-ptr #1 + 'nextchar-ptr := } + while$ + pop$ + nextchar-ptr +} + +STRINGS { first-char } % the to-be-capitalized character + +FUNCTION {capitalize.von.part} % capitalize 1st character of string +{ duplicate$ #1 text.prefix$ % get 1st character + duplicate$ get.nextchar.ptr + swap$ "u" change.case$ % capitalize it + 'first-char := + global.max$ substring$ % get rest of string + first-char swap$ * % append the two +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {format.lab.names} +{ 's := % for two: (Jones/de~Bruijn) + s #1 "{vv~}{ll}" format.name$ capitalize.von.part % for three: (Jones/de~Bruijn/Smith) + s num.names$ duplicate$ % for more: (Jones et~al.) + #2 < + 'pop$ % for just one person + { duplicate$ duplicate$ + #2 > + swap$ s swap$ "{ff }{vv }{ll}{ jj}" format.name$ "others" = + or + { pop$ "\Bibetal" * } % for 4 or more, or last is `others' + { #2 = + { "\jbbtasep " * s #2 "{vv~}{ll}" format.name$ capitalize.von.part * } % for (exactly) two + { "\jbbfsasep " * s #2 "{vv~}{ll}" format.name$ capitalize.von.part * % for three + "\jbbstasep " * s #3 "{vv~}{ll}" format.name$ capitalize.von.part * + } + if$ + } + if$ + } + if$ + year missing$ + 'skip$ + { "\jbdy {" year * "}" * * }% dummy year to prevent from `1993a' and `2001b' for works by the same author + 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.label} +{ type$ "book" = type$ "inbook" = or type$ "incollection" = or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'label := +} + +FUNCTION {calc.dummy.label} +{ type$ "book" = type$ "inbook" = or type$ "incollection" = or type$ "commented" = or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'dummy.label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{ll{ }}{ ff{ }}{ vv{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "\bibnf {others} {} {} {} {}" = and + { "\Bibetal" * } + { 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$ + { pseudonym empty$ + { key empty$ + { "to sort, need author, pseudonym or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { pseudonym sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { pseudonym empty$ + { key empty$ + { "to sort, need author, editor, pseudonym or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { pseudonym sort.format.names } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.sort} +{ editor empty$ + { pseudonym empty$ + { key empty$ + { "to sort, need author, editor, pseudonym or key in " cite$ * warning$ "" } + { key sortify } + if$ + } + { pseudonym sort.format.names } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ calc.label + calc.dummy.label + dummy.label sortify " " * + sortkey empty$ + { type$ "book" = + type$ "incollection" = or + type$ "inbook" = or + 'author.editor.sort + { type$ "proceedings" = + 'editor.sort + 'author.sort + if$ + } + if$ + } + { sortkey sort.format.names } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.label := + sort.label * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + + +SORT + + +STRINGS { last.dummy.label next.extra } + +INTEGERS { last.extra.num number.label } + +FUNCTION {forward.pass} +{ last.dummy.label dummy.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 := + dummy.label 'last.dummy.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$ + { "" swap$ * } + if$ + 'extra.label := + dummy.label extra.label * 'dummy.label := +} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +FUNCTION {bib.sort.order} { sort.label 'sort.key$ := } + +ITERATE {bib.sort.order} + +SORT + +FUNCTION {set.current.authors} +{ author empty$ + { editor empty$ + { organization empty$ + { cite$ 'current-authors := } + { organization 'current-authors := } + if$ + } + { editor format.names #1 entry.max$ substring$ 'current-authors := } + if$ + } + { author format.names #1 entry.max$ substring$ 'current-authors := } + if$ +} + +STRINGS { previous-authors } + +FUNCTION {initialize.previous.authors} { "" 'previous-authors := } + +FUNCTION {mark.repeat.authors} +{ current-authors previous-authors = + { #1 'repeat-authors := } + 'skip$ + if$ + current-authors 'previous-authors := +} + +ITERATE {set.current.authors} + +EXECUTE {initialize.previous.authors} + +ITERATE {mark.repeat.authors} + +EXECUTE {initialize.previous.authors} + +REVERSE {mark.repeat.authors} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "%" write$ newline$ + "% This bibliography was produced by using jox.bst" write$ version write$ newline$ + "%" write$ newline$ + "\begin{thebibliography}{}" 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 file `jox.bst'. diff --git a/Master/texmf-dist/bibtex/bst/jurabib/jurabib.bst b/Master/texmf-dist/bibtex/bst/jurabib/jurabib.bst new file mode 100644 index 00000000000..eda2dfbcdd1 --- /dev/null +++ b/Master/texmf-dist/bibtex/bst/jurabib/jurabib.bst @@ -0,0 +1,2894 @@ +%% +%% This is file `jurabib.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% jurabib.dtx (with options: `jurabst') +%% ---------------------------------------- +%% BibTeX style for use with the jurabib package version v0.6 +%% Copyright (C) 1999-2004 Jens Berger (http://www.jurabib.org) +%% See jurabib.ins for the copyright details. +%% +ENTRY{ + address + author + booktitle + chapter + edition + editor + howpublished + institution + isbn + issn + journal + key + language + month + note + number + organization + pages + publisher + school + series + title + type + volume + year +%% + url + urldate + volumetitle + dissyear + howcited + juratitle + juraauthor + shorttitle + shortauthor + ssedition + titleaddon + booktitleaddon + editortype + sortkey + annote + gender + translator + flanguage + oyear + oaddress + opublisher + updated + totalpages + founder + archive + subarchive + shortarchive + shortsubarchive + sig1 + sig2 + sig3 + sig4 + archname + } + { repeat-authors repeat-titles } + { label dummy.label extra.label sort.label current-authors } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +INTEGERS { colon.after period.dash } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'colon.after := + #5 'period.dash := +} + +STRINGS { s t u v w x } + +FUNCTION {output.nonnull} +{ 's := + output.state after.block = + { write$ } + { output.state before.all = + { write$ } + { output.state colon.after = + { "" * write$ } + { output.state period.dash = + { ", " * write$ } + { output.state mid.sentence = + { " " * write$ } + { write$ } + if$ + } + if$ + } + if$ + } + if$ + after.block '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 {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + 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.superscript} +{ edition extract.num "l" change.case$ 's := + s "first" = s "1" = or s "erste" = or + { "1" 't := } + { s "second" = s "2" = or s "zweite" = or + { "2" 't := } + { s "third" = s "3" = or s "dritte" = or + { "3" 't := } + { s "fourth" = s "4" = or s "vierte" = or + { "4" 't := } + { s "fifth" = s "5" = or s "fuenfte" = or + { "5" 't := } + { s "sixth" = s "6" = or s "sechste" = or + { "6" 't := } + { s "seventh" = s "7" = or s "siebte" = or s "siebente" = or + { "7" 't := } + { s "eighth" = s "8" = or s "achte" = or + { "8" 't := } + { s "nineth" = s "9" = or s "neunte" = or + { "9" 't := } + { s #1 #1 substring$ is.num + { s "" * 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +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 {output.bibitem.fst} +{ newline$ + "\bibitem[{" write$ + shortauthor empty$ + { juraauthor empty$ + { author empty$ + { editor empty$ + { organization empty$ + { archive empty$ + { "empty" write$ } + { archive write$ } + if$ + } + { organization write$ } + if$ + } + { label write$ } + if$ + } + { label write$ } + if$ + } + { juraauthor write$ } + if$ + } + { shortauthor write$ } + if$ + "}%" write$ + sortkey empty$ + 'skip$ + { newline$ "% SORTKEY: [" sortkey * "]" * write$ } + if$ + newline$ + shorttitle empty$ + { juratitle empty$ + { journal empty$ + { " {}%" write$ } + { volume empty$ + { year empty$ + { " {" journal * "}%" * write$ } + { " {" journal * "\jbsy {" * year * "}}%" * write$ } + if$ + } + { year empty$ + { " {" journal * "}%" * write$ } + { " {" journal * " " * volume * " " * " \peryearformat {" year * "}}%" * * write$ } + if$ + } + if$ + } + if$ + } + { " {" juratitle * "}%" * write$ } + if$ + } + { " {" shorttitle * "}%" * write$ } + if$ + newline$ + repeat-authors + { " {{1}" write$ } + { " {{0}" write$ } + if$ + howcited empty$ + { "{}" write$ } + { "{" howcited * "}" * write$ } + if$ + type$ empty$ + { "{}" write$ } + { "{" type$ * "}" * write$ } + if$ + year empty$ + { type$ "book" = dissyear empty$ not and + { "{" dissyear * write$ + extra.label "" = + skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + "}" write$ + } + { "{}" write$ } + if$ + } + { "{" year * write$ + extra.label "" = + 'skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + "}" write$ + } + if$ + edition empty$ + { "{}" write$ } + { "{" convert.edition.superscript extract.num * "}" * write$ } + if$ + ssedition empty$ + { "{}" write$ } + { "{" ssedition * "}" * write$ } + if$ + language empty$ + { "{}" write$ } + { "{" language * "}" * write$ } + if$ + pages empty$ + { "{}%" write$ } + { "{" write$ pages n.dashify write$ "}%" write$ } + if$ +} + +FUNCTION {output.bibitem.snd} +{ newline$ + publisher empty$ + { address empty$ + { year empty$ + { " {" write$ } + { " {" write$ + year write$ + extra.label "" = + 'skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + } + if$ + } + { year empty$ + { " {" write$ address write$ } + { " {" write$ address write$ "\bibbdsep {} " write$ + year write$ + extra.label "" = + 'skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + } + if$ + } + if$ + } + { address empty$ + { year empty$ + { " {" write$ publisher write$ } + { " {" write$ publisher write$ "\bibbdsep {} " write$ + year write$ + extra.label "" = + 'skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + } + if$ + } + { year empty$ + { " {" write$ address write$ "\bpubaddr {} " write$ publisher write$ } + { " {" write$ address write$ "\bpubaddr {} " write$ publisher write$ "\bibbdsep {} " write$ + year write$ + extra.label "" = + 'skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + } + if$ + } + if$ + } + if$ + "}}%" write$ newline$ + " {" write$ + title empty$ + { "{}%" write$ newline$ } + { "{" title * + type$ "archival" = + { shortarchive empty$ not + { ", In: " shortarchive * * } + { archive empty$ not + { ", In: " archive * * } + 'skip$ + if$ + } + if$ + shortsubarchive empty$ + 'skip$ + { ", " shortsubarchive * * } + if$ + sig1 empty$ + 'skip$ + { ", " sig1 * * + sig2 empty$ + 'skip$ + { ". " sig2 * * + sig3 empty$ + 'skip$ + { ". " sig3 * * + sig4 empty$ + 'skip$ + { ". " sig4 * * } + if$ + } + if$ + } + if$ + } + if$ + pages empty$ + 'skip$ + { " \jbArchPages {" pages n.dashify * "}" * * } + if$ + } + 'skip$ + if$ + "}%" * write$ newline$ } + if$ + gender empty$ + { " {}" write$ } + { " {" gender * "}" * write$ } + if$ + oyear empty$ + { "{}" write$ } + { "{" oyear * "}" * write$ } + if$ + author empty$ + { editor empty$ + { "{4}" write$ }% author and editor empty + { "{3}" write$ }% author empty, editor not + if$ + } + { editor empty$ + { "{2}" write$ }% editor empty, author not + { "{1}" write$ }% both author and editor given + if$ + } + if$ + "{}{}{}{}{}}%" write$ newline$ + " ]{" write$ + cite$ write$ + "}" write$ + url empty$ + 'skip$ + { newline$ " \jburldef {" write$ cite$ write$ "}{" write$ url write$ "}%" write$ } + if$ + newline$ + " \jbbibargs {" write$ + "" + before.all 'output.state := +} + +FUNCTION {output.bibitem} +{ output.bibitem.fst + output.bibitem.snd +} + +FUNCTION {format.note} +{ note empty$ + 'skip$ + { output.state before.all = + {" \jbnote {} {" * note * "} " * } + {" \jbnote {1} {" * note * "} " * } + if$ + } + if$ +} + +FUNCTION {format.endnote} +{ note empty$ + { "" } + { " \jbendnote {" note * "}" * } + if$ +} + + +FUNCTION {format.juradiss.book} +{ dissyear empty$ + { "" } + { type empty$ + { school empty$ + { "Dissyear but no school in " cite$ * warning$ + " (\alsothesisname {} \jurthesisname" * + year empty$ not year missing$ not and + { "\bibbdsep {} " dissyear * } + 'skip$ + if$ + ")" * + } + { " (\alsothesisname {} \jurthesisname, " school * + year empty$ not year missing$ not and + { "\bibbdsep {} " dissyear * * } + 'skip$ + if$ + ")" * + } + if$ + } + { school empty$ + { "Dissyear but no school in " cite$ * warning$ + " (\alsothesisname {} " type * + year empty$ not year missing$ not and + { "\bibbdsep {} " dissyear * } + 'skip$ + if$ + ")" * + } + { " (\alsothesisname {} " type * + ", " school * * + year empty$ not year missing$ not and + { "\bibbdsep {} " dissyear * * } + 'skip$ + if$ + ")" * + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.thesis} +{ year empty$ + { school empty$ + { "No universtiy in " cite$ * warning$ } + { "There's a university, but no year in " cite$ * warning$ } + if$ + "" + } + { type empty$ + { school empty$ + { "No university in " cite$ * warning$ + type$ "mastersthesis" = + { "\apyformat {\mastersthesisname" * address empty$ 'skip$ { ", " address * * } if$ "\bibbdsep {} " year * "}" * } + { type$ "jurthesis" = + { "\apyformat {\jurthesisname" * address empty$ 'skip$ { ", " address * * } if$ "\bibbdsep {} " year * "}" * } + { "\apyformat {\phdthesisname" * address empty$ 'skip$ { ", " address * * } if$ "\bibbdsep {} " year * "}" * } + if$ + } + if$ + } + { type$ "mastersthesis" = + { "\mastersthesisname, \apyformat {" school * address empty$ 'skip$ { ", " address * * } if$ "\bibbdsep {} " year * * "}" * } + { type$ "jurthesis" = + { "\jurthesisname, \apyformat {" school * address empty$ 'skip$ { ", " address * * } if$ "\bibbdsep {} " year * * "}" * } + { "\phdthesisname, \apyformat {" school * address empty$ 'skip$ { ", " address * * } if$ "\bibbdsep {} " year * * "}" * } + if$ + } + if$ + } + if$ + } + { school empty$ + { "No university in " cite$ * warning$ type + address empty$ 'skip$ { " \apyformat {" address * } if$ "\bibbdsep {} " * * year * "}" * } + { type " \apyformat {" * school * address empty$ 'skip$ { ", " address * * } if$ "\bibbdsep {} " year * * "}" * } + if$ + } + if$ + } + if$ +} + +FUNCTION {set.comma.pages.check} +{ year empty$ + 'skip$ + { pages empty$ + { url empty$ + 'skip$ + { ", " * } + if$ + } + { ", " * } + if$ + } + if$ +} + +FUNCTION {set.period.dash} +{ output.state before.all = + 'skip$ + { period.dash 'output.state := } + if$ +} + +FUNCTION {set.period.dash.check} +{ empty$ + 'skip$ + 'set.period.dash + if$ +} + +FUNCTION {new.sentence} +{ output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ +} + +FUNCTION {part.of.sentence} +{ output.state before.all = + 'skip$ + { mid.sentence 'output.state := } + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + + +FUNCTION {get.final.nonrightbrace.char} +{ { duplicate$ + #-1 #1 substring$ + duplicate$ + "}" = + } + { pop$ + #-2 global.max$ substring$ + } + while$ + swap$ pop$ +} + + +FUNCTION {check.punct.instead.of.add.period} +{ duplicate$ + get.final.nonrightbrace.char + duplicate$ "." = swap$ + duplicate$ "!" = swap$ + "?" = or or + { "} " * } + { "}\bibatsep\ " * } + if$ +} + +FUNCTION {check.punct.instead.of.add.period.art} +{ duplicate$ + get.final.nonrightbrace.char + duplicate$ "." = swap$ + duplicate$ "!" = swap$ + "?" = or or + { "} " * } + { pages empty$ note empty$ url empty$ and and + { "} " * } + { volume empty$ + { pages empty$ + { "}\ajtsep\ " * } + { crossref missing$ + { month empty$ + { "}\ajtsep\ " * } + { "}\ajtsep " * } + if$ + } + { "}\ajtsep " * } + if$ + } + if$ + } + { "}\ajtsep\ " * } + if$ + } + if$ + } + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\bibtfont {" swap$ check.punct.instead.of.add.period * } + if$ +} + +FUNCTION {journaltitlemarkup} +{ duplicate$ empty$ + { pop$ "" } + { "\bibJTsep \bibjtfont {" swap$ check.punct.instead.of.add.period.art * } + if$ +} + +FUNCTION {incollbooktitlemarkup} +{ duplicate$ empty$ + { pop$ "" } + { "\bibbtfont {" swap$ check.punct.instead.of.add.period * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION { lastnamemarkup } +{ duplicate$ empty$ + { pop$ "" } + { "\bibnf {" swap$ * "}" * } + if$ +} + +FUNCTION { editorlastnamemarkup } + { duplicate$ empty$ + { pop$ "" } + { author empty$ + { "\biblenf {" swap$ * "}" * } % lonely editor(s)! + { "\bibenf {" swap$ * "}" * } + if$ + } + if$ +} + +FUNCTION { othermarkup } + { duplicate$ empty$ + { pop$ " {}" } + { " {" swap$ * "}" * } + if$ +} + +FUNCTION {article.in.journal} +{ duplicate$ empty$ + { pop$ "" } + { author missing$ + { title missing$ + 'skip$ + { journaltitlemarkup "" swap$ * } + if$ + } + { journaltitlemarkup "" swap$ * } + if$ + } + if$ +} + +FUNCTION {format.names} % NEW v0.5 +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ll}" format.name$ 't := t lastnamemarkup 't := + s nameptr "{ff}" format.name$ othermarkup 'u := + s nameptr "{f.}" format.name$ othermarkup 'v := + s nameptr "{vv}" format.name$ othermarkup 'w := + s nameptr "{jj}" format.name$ othermarkup 'x := + t u * v * w * x * 't := + nameptr #1 > + { namesleft #1 > + { numnames #3 > + { "" * } + { numnames #3 < + { "\Bibbtasep " * t * } % between (exactly) two authors + { "\Bibbfsasep " * t * } % between first and second author (if more than two) + if$ + } + if$ + } + { t "\bibnf {others} {} {} {} {}" = + t "\bibnf {others} {} {} {} {} \edfont {\editorsname}" = or + numnames #3 > or + { "\bibIMfont {\Bibetal}" * } + { numnames #3 < + { "\Bibbtasep " * t * } % between (exactly) two authors + { "\Bibbstasep " * t * } % between second and third author + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.editor.names} % NEW v0.5 +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ll}" format.name$ 't := t editorlastnamemarkup 't := + s nameptr "{ff}" format.name$ othermarkup 'u := + s nameptr "{f.}" format.name$ othermarkup 'v := + s nameptr "{vv}" format.name$ othermarkup 'w := + s nameptr "{jj}" format.name$ othermarkup 'x := + t u * v * w * x * 't := + nameptr #1 > + { namesleft #1 > + { numnames #3 > + { "" * } + { numnames #3 < + { "\Bibbtesep " * t * } % between (exactly) two editors + { "\Bibbfsesep " * t * } % between first and second editor (if more than two) + if$ + } + if$ + } + { t "\bibenf {others} {} {} {} {}" = + t "\biblenf {others} {} {} {} {}" = or + t "\bibenf {others} {} {} {} {} \edfont {\editorsname}" = or + t "\biblenf {others} {} {} {} {} \edfont {\editorsname}" = or + numnames #3 > or + { "\bibIMfont {\Bibetal}" * } + { numnames #3 < + { "\Bibbtesep " * t * } % between (exactly) two editors + { "\Bibbstesep " * t * } % between second and third editor + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.name.sig} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff}{ vv}{ ll}{ jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { "" * t * } + { t "others" = + { " et al." * } + { "" * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {indexmarkup} +{ duplicate$ empty$ + { pop$ "{}" } + { "{" swap$ * "}" * } + if$ +} + +FUNCTION {format.names.for.index} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ll}" format.name$ 't := t indexmarkup 't := + s nameptr "{ff}" format.name$ indexmarkup 'u := + s nameptr "{f.}" format.name$ indexmarkup 'v := + s nameptr "{vv}" format.name$ indexmarkup 'w := + s nameptr "{jj}" format.name$ indexmarkup 'x := + t u * v * w * x * 't := + t "{others}{}{}{}{}" = + 'skip$ + { nameptr #1 > + { namesleft #1 > + { "; " * t * } + { + t "others" = + 'skip$ + { "; " * t * } + if$ + } + if$ + } + 't + if$ + } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.founders} +{ founder empty$ + 'skip$ + { author empty$ + 'skip$ + { " in: " * } + if$ + founder format.names "\foundername" * * + editor empty$ + 'skip$ + { author empty$ + { "\afterfoundersep {}" * } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { author empty$ + { editor format.editor.names + editortype empty$ + { editor num.names$ #1 > + { "\fsted {\editorsname}" * } + { "\fsted {\editorname}" * } + if$ + } + { "\fsted {(" editortype * ")}" * * } + if$ + } + { founder empty$ + { "\bibfnfont {;} " * } + { type$ "commented" = + { "\afterfoundersep {}" * } + { "\bibfnfont {;} " * } + if$ + } + if$ + editor format.editor.names * + editortype empty$ + { editor num.names$ #1 > + { " \edfont {\editorsname}" * } + { " \edfont {\editorname}" * } + if$ + } + { " \edfont {(" editortype * ")}" * * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.snd.editors} +{ editor empty$ + { "" * } + { author empty$ + { editortype empty$ + { editor num.names$ #1 > + { "\snded {\sndeditorsname}" * } + { "\snded {\sndeditorname}" * } + if$ + } + { "\snded {(" editortype * ")}" * * } + if$ + } + 'skip$ + if$ + } + if$ +} + +FUNCTION { format.howcited } +{ "} {\bibhowcited}" format.endnote * } + +FUNCTION {fin.entry.endnote} +{ " \jbdoitem {" * + author empty$ + 'skip$ + { author format.names.for.index * } + if$ + "} {" + editor empty$ + 'skip$ + { editor format.names.for.index * } + if$ + "} {" * + organization empty$ + 'skip$ + { "{" organization * "}{}{}{}{}" * * } + if$ + "}" * * write$ + annote missing$ + { " \bibAnnoteFile {" cite$ * "}" * write$ newline$ } + { " \bibAnnote {" annote * "}" * write$ newline$ } + if$ +} + +FUNCTION {count.authors.or.editors} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { "" 't := + nameptr #1 > + { namesleft #1 > + { "" * } + { "s" * } % more than one author/editor, append `s' + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION { set.after.author.sep } +{ author missing$ + { editor missing$ + { organization missing$ + { archive missing$ + { "} {empty} {} {" } + { "} {" archive format.name.sig * "} {} {" * } + if$ + } + { "} {" organization "} {org} {" * * } + if$ + } + { "} {" editor format.name.sig * "} {ed" editor count.authors.or.editors "} {" * * * } + if$ + } + { "} {" author format.name.sig * "} {au" author count.authors.or.editors "} {" * * * } + if$ + author empty$ + { format.snd.editors } + 'skip$ + if$ + "" * +} + + +FUNCTION {format.names.info} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff }{vv }{ll}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { " " * t * } + { t "others" = + { " et al." * } + { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION { format.howcited.comment } +{ edition empty$ + { "} {\bibcommenthowcited}" format.endnote * } + { "} {\bibcommenthowcited}" format.endnote * * + author empty$ editor empty$ not and + { " \jbauthorinfo {" editor format.names.info " " title * * * "}{" cite$ "}" * * * } + { author empty$ shortauthor empty$ not and + { " \jbauthorinfo {" shortauthor format.names.info " " title * * * "}{" cite$ "}" * * * } + { " \jbauthorinfo {" author format.names.info " " title * * * "}{" cite$ "}" * * * } + if$ + } + if$ + } + if$ +} + +FUNCTION { format.howcited.artperiod } +{ "} {\bibartperiodhowcited}" format.endnote * } + +FUNCTION {format.proceed.organization} +{ organization empty$ + { "" } + { organization " \organizationname {}" * } + if$ +} + +FUNCTION {format.titleaddon} +{ title empty$ + { "" } + { titleaddon empty$ + { "" } + { titleaddon "\bibatsep\ " * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { "\bibtfont {" title check.punct.instead.of.add.period * format.titleaddon * } + if$ +} + +FUNCTION {format.artperiodincoll.title} +{ title empty$ + { "" } + { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * } + if$ +} + +FUNCTION {format.volumetitle} +{ volumetitle empty$ + { "" } + { volume empty$ + { "There's a volumetitle but no volume in " cite$ * warning$ volumetitle ", " * } + { volumetitle ", " * } + if$ + } + if$ +} + +FUNCTION {add.extra.label} +{ extra.label "" = + 'skip$ + { "\bibel {" extra.label * "}" * * } + if$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "There's a month but no year in " cite$ * warning$ month } + if$ + } + { month empty$ + { edition empty$ + 'skip$ + { "\jbssedbd {" convert.edition.superscript extract.num * "}" * * } + if$ + year + add.extra.label + } + { month " " * + edition empty$ + 'skip$ + { "\jbssedbd {" convert.edition.superscript extract.num * "}" * * } + if$ + year * + add.extra.label + } + if$ + } + if$ +} + +FUNCTION {format.update} +{ updated missing$ not + { "\updatesep {} \updatename {} " * updated * } + 'skip$ + if$ +} + +FUNCTION {oaddress.opublisher.oyear.format} +{ type$ "book" = type$ "inbook" = type$ "incollection" = or or + { oyear empty$ + { opublisher empty$ + { oaddress empty$ + 'skip$ + { oaddress "\osep {} " * * } + if$ + } + { oaddress empty$ + { opublisher "\osep {} " * * } + { oaddress "\bpubaddr {} " * opublisher "\osep {} " * * * } + if$ + } + if$ + } + { year empty$ + { "oyear without year in " cite$ * warning$ } + 'skip$ + if$ + opublisher empty$ + { oaddress empty$ + { oyear * "\osep {} \reprintname {}, " * } + { oaddress "\bibbdsep {} " * oyear "\osep {} " * * * } + if$ + } + { oaddress empty$ + { opublisher * "\bibbdsep {} " * oyear "\osep {} " * * } + { oaddress "\bpubaddr {} " * opublisher "\bibbdsep {} " * * oyear "\osep {} " * * * } + if$ + } + if$ + } + if$ + } + 'skip$ + if$ +} + +FUNCTION {make.translators} +{ before.all 'output.state := + translator empty$ + { flanguage empty$ + { "" } + { "\translator {}{" flanguage "l" change.case$ * "}" * + type$ "incollection" = not + type$ "article" = not + and + { "{1} " * } + { type$ "incollection" = + { booktitle empty$ + { "{} " * } + { "{1} " * } + if$ + } + { type$ "article" = + { "{1}" * } + { series empty$ + { "{} " * } + { "{1} " * } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + { "\translator {" translator * "}" * + flanguage empty$ + { "{}" * } + { "{" * flanguage "l" change.case$ * "}" * } + if$ + type$ "incollection" = not + type$ "article" = not + and + { "{1} " * } + { + type$ "incollection" = + { booktitle empty$ + { "{} " * } + { "{1} " * } + if$ + } + { type$ "article" = + { "{1} " * } + { series empty$ + { "{} " * } + { "{1} " * } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + before.all 'output.state := +} + + +FUNCTION {checked.inst} +{ institution empty$ + { " \apyformat {" * + oaddress.opublisher.oyear.format + } + { address empty$ not + { " \apyformat {" * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.address.publisher.year} +{ publisher empty$ + { address empty$ + { year empty$ + { "Neither address nor year in " cite$ * warning$ "" } + { "No address in " cite$ * warning$ + institution empty$ + { " \apyformat {" oaddress.opublisher.oyear.format format.date * "}" * } + { " \apyformat {" institution * "\bibbdsep {} " * format.date "}" * * } + if$ + } + if$ + } + { year empty$ + { checked.inst address "}" * } + { checked.inst address "\bibbdsep {} " format.date * "}" * * } + if$ + } + if$ + } + { address empty$ + { year empty$ + { "There's only a publisher (no address, no year) in " cite$ * warning$ publisher } + { checked.inst publisher "\bibbdsep {} " * format.date "}" * * } + if$ + } + { year empty$ + { checked.inst address * "\bpubaddr {} " publisher "}" * * }% + { checked.inst address * "\bpubaddr {} " publisher "\bibbdsep {} " * format.date "}" * * * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.howpublished.address.year} +{ howpublished empty$ + { address empty$ + { year empty$ + { "Neither address nor year in " cite$ * warning$ "" } + { "No address in " cite$ * warning$ format.date } + if$ + } + { " \apyformat {" oaddress.opublisher.oyear.format address * "\bibbdsep {} " * format.date "}" * * } + if$ + } + { address empty$ + { year empty$ + { "There's only a howpublished (no address, no year) in " cite$ * warning$ howpublished } + { " \apyformat {" oaddress.opublisher.oyear.format howpublished * "\bibbdsep {} " * format.date "}" * * } + if$ + } + { year empty$ + { " \apyformat {" oaddress.opublisher.oyear.format address * "\bpubaddr {} " * howpublished "}" * * } + { " \apyformat {" oaddress.opublisher.oyear.format address * "\bpubaddr {} " * howpublished * "\bibbdsep {} " * format.date "}" * * } + if$ + } + if$ + } + if$ +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #4 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {bibvol.tie.or.space.connect} +{ duplicate$ text.length$ #4 < + { "~" } + { "{} " } + if$ + swap$ * * +} + +FUNCTION {format.btitle}{ title emphasize format.titleaddon * } + +FUNCTION {format.btitle.vol} +{ number empty$ + { series empty$ + { volume empty$ + { title emphasize format.titleaddon * } + { + title emphasize format.titleaddon * " \volumeformat {" volume * "} " * * + } + if$ + } + { volume empty$ + { title emphasize format.titleaddon * } + { + title emphasize format.titleaddon * "\volumeformat {" volume * "} " * * series "\bibatsep\ " * * + } + if$ + } + if$ + } + { title emphasize format.titleaddon * } + if$ +} + +FUNCTION {format.btitle.vol.inbook} +{ number empty$ + { series empty$ + { volume empty$ + { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * } + { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * + " \volumeformat {" volume * "} " * * + } + if$ + } + { volume empty$ + { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * } + { series emphasize + "\volumeformat {" volume * "} " * * + "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * * } + if$ + } + if$ + } + { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * } + if$ +} + +FUNCTION {format.url} +{ url empty$ + { "" } + { author empty$ title empty$ and + 'skip$ + { " " * } + if$ + urldate empty$ + {"\jburluse {" cite$ * "}" * } + {"\jburluse {" cite$ * "}\bibbudcsep {}\urldatecomment " * urldate * } + if$ + } + if$ +} + +FUNCTION {format.naked.url} +{ url empty$ + { "" } + { urldate empty$ + { title empty$ + 'skip$ + { title emphasize * } + if$ + "\jburluse {" cite$ * "}" * + } + { title empty$ + 'skip$ + { title emphasize * } + if$ + "\jburluse {" cite$ * "}\bibbudcsep {}\urldatecomment " * urldate * + } + if$ + } + if$ +} + +FUNCTION {format.series.number} +{ volume empty$ + { number empty$ + { series empty$ + { "" } + { " \numberandseries {}{" series * "}" * } + if$ + } + { series empty$ + { " \numberandseries {" number * "}{}" * "There's a number but no series in " cite$ * warning$ } + { " \numberandseries {" number * "}{" * series "}" * * } + if$ + } + if$ + } + { series empty$ + { "" } + { type$ "proceedings" = + { " \numberandseries {}{" series * "}" * } % { " (" series * ")" * } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {first.ed} { "\firstedname" } +FUNCTION {second.ed}{ "\secondedname" } +FUNCTION {third.ed} { "\thirdedname" } +FUNCTION {fourth.ed}{ "\fourthedname" } +FUNCTION {fifth.ed} { "\fifthedname" } +FUNCTION {th.ed} { "\thedname" } + +FUNCTION {convert.edition} +{ edition extract.num "l" change.case$ 's := + s "first" = s "1" = or + { first.ed 't := } + { s "second" = s "2" = or + { second.ed 't := } + { s "third" = s "3" = or + { third.ed 't := } + { s "fourth" = s "4" = or + { fourth.ed 't := } + { s "fifth" = s "5" = or + { fifth.ed 't := } + { s #1 #1 substring$ is.num + { s th.ed * 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { "\jbedition {" * convert.edition "~\editionname {}\jbaensep} " * }% dot or not ??????? + if$ +} + +FUNCTION { format.isbn.issn } +{ isbn empty$ + { issn empty$ + { "" } + { "\jbissn {" issn n.dashify * "}" * } + if$ + } + { "\jbisbn {" isbn n.dashify * "}" * } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { " \jbPages{" pages n.dashify * "}" * } + if$ +} + +FUNCTION {multi.pagerange.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "b" = + swap$ "/" = or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {check.missing.pages} +{ pages empty$ + { "Empty pages in " cite$ * warning$ } + { pages multi.pagerange.check + { "" * } + { type$ "article" = type$ "periodical" = or + { "There's only a starting page, no pagerange in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {format.pages.book} +{ pages empty$ + { "" } + { " \jbpages {" pages " \bibtotalpagesname}" *} + if$ +} + +FUNCTION {format.totalpages} +{ totalpages empty$ + { "" } + { + ", " totalpages "~\bibtotalpagesname" * * + } + if$ +} + +FUNCTION {format.vol.year.num.pages} +{ volume empty$ + { "" } + { " \artvolumeformat {" volume * "}" * + year empty$ + { "There's a volume but no year in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + month empty$ + 'skip$ + { "\ " month * * } + if$ + year empty$ + 'skip$ + { " \artyearformat {" year * add.extra.label "}" * * } + if$ + number empty$ + 'skip$ + { "\artnumberformat {" number * "}" * * } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { "" format.pages * * } + if$ + } + if$ +} + +FUNCTION {format.vol.bracedyear.num.pages} +{ volume empty$ + { "" } + { " \pervolumeformat {" volume * "}" * + year empty$ + { "There's a volume but no year in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + year empty$ + 'skip$ + { " \peryearformat {" year * add.extra.label "}" * * } + if$ + month empty$ + 'skip$ + { ", " month * * } + if$ + number empty$ + 'skip$ + { ", \pernumberformat {" number * "}" * * } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { "" format.pages * * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "\unskip.\,-- \bibchapterlongname" } + { "\unskip.\,-- " type * } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { format.pages * } + if$ + } + if$ +} + +FUNCTION {format.booktitleaddon} +{ booktitle empty$ + { "" } + { booktitleaddon empty$ + { "" } + { booktitleaddon } + if$ + } + if$ +} + +FUNCTION {format.incoll.editor.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { volume empty$ + { "\incolledformat {}{}{" booktitle incollbooktitlemarkup format.booktitleaddon * * "}{}" * + booktitleaddon empty$ + { "{} " * } + { "{1} " * } + if$ + } + { "\incolledformat {}{}{" booktitle incollbooktitlemarkup format.booktitleaddon * * "}{" * volume * "}" * + booktitleaddon empty$ + { "{} " * } + { "{1} " * } + if$ + } + if$ + } + { volume empty$ + { "\incolledformat {" + editor empty$ + { "" } + { editor format.editor.names "}" * * + editortype empty$ + { editor num.names$ #1 > + { "{\edfont {\editorsname}}{" * } + { "{\edfont {\editorname}}{" * } + if$ + } + { "{\edfont {(" * editortype * ")}}{" * } + if$ + } + if$ + booktitle incollbooktitlemarkup * format.booktitleaddon * "}{}" * + booktitleaddon empty$ + { "{} " * } + { "{1} " * } + if$ + } + { "\incolledformat {" * + editor empty$ + { "" } + { editor format.editor.names "}" * * + editortype empty$ + { editor num.names$ #1 > + { "{\edfont {\editorsname}}{" * } + { "{\edfont {\editorname}}{" * } + if$ + } + { "{\edfont {(" * editortype * ")}}{" * } + if$ + } + if$ + booktitle incollbooktitlemarkup * format.booktitleaddon * "}{" volume * "}" * + booktitleaddon empty$ + { "{} " * } + { "{1} " * } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.tr.number.jur} +{ type empty$ + { number empty$ + { " -- \technicalreportname {} " } + { "~(" number * ").\,-- \technicalreportname {} " * } + if$ + } + { number empty$ + { " -- " type * } + { "~(" number * ").\,-- " type * " " * * } + if$ + } + if$ +} + +FUNCTION {format.article.crossref.bracedyear} +{ key empty$ + { journal empty$ + { "Need key or journal for " cite$ * " to crossref " * crossref * warning$ "" } + { "\bibJTsep\bibjtfont {" journal * check.punct.instead.of.add.period.art * } + if$ + volume empty$ + { "No volume in " cite$ * warning$ } + { " \pervolumeformat {" volume * "} " * } + if$ + year empty$ + { "No year in " cite$ * warning$ } + { "\peryearformat {" year * add.extra.label "}" * * } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { format.pages * } + if$ + } + if$ + } + { "" key * } + if$ + "\ \protect\jbcrossrefchecked {" * crossref * "}\unskip" * +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "Need key or journal for " cite$ * " to crossref " * crossref * warning$ "" } + { "\bibJTsep\bibjtfont {" journal * check.punct.instead.of.add.period.art * } + if$ + } + { "" key * } + if$ + year empty$ + 'skip$ + { year * } + if$ + " \protect\jbcrossrefchecked {" crossref * "}" * +} + +FUNCTION {format.book.crossref} +{ 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$ "" * } + { "" * } + if$ + } + { key * } + if$ + } + { "" * } + if$ + volume empty$ + { "Empty volume in " cite$ * "'s crossref of " * crossref * warning$ "" + " \protect\jbcrossrefchecked {" * crossref * "}\unskip" * } + { " \protect\jbcrossrefchecked[" * volume * "]{" * crossref "}\unskip" * } + if$ +} + +FUNCTION {format.incoll.inproc.crossref} +{ " \protect\jbincollcrossref {" * crossref * "}" * + editor empty$ + { "{}" * } + { "{1}" * } + if$ + format.pages % *<== 0.5f removed too. +} + +FUNCTION { format.editors.organization } +{ organization empty$ + 'skip$ + { type$ "misc" = + { organization } + { author empty$ + { editor empty$ + { " " organization * " \organizationname {}" * } + { "; " organization * " \organizationname {}" * } + if$ + } + { "; " organization * " \organizationname {}" * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.address.organization.manual} +{ author empty$ + { organization empty$ + { address empty$ + 'skip$ + { address output part.of.sentence + year empty$ not { "\bibbdsep {}" *} 'skip$ if$ + } + if$ + } + 'skip$ + if$ + } + { address empty$ + { organization empty$ + 'skip$ + { organization output part.of.sentence + year empty$ not { "\bibbdsep {}" *} 'skip$ if$ + } + if$ + } + { organization empty$ + { address output part.of.sentence } + { address "\bpubaddr {} " * organization * output part.of.sentence } + if$ + year empty$ not { "\bibbdsep {}" *} 'skip$ if$ + } + if$ + } + if$ +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.artperiodincoll.title "title" output.check + crossref missing$ + { journal article.in.journal output.nonnull + new.sentence + format.vol.year.num.pages output + } + { format.article.crossref output.nonnull } + if$ + format.url output + format.note + format.isbn.issn output + format.howcited.artperiod output + check.missing.pages + fin.entry.endnote +} + +FUNCTION {commented} +{ output.bibitem + author empty$ + { editor empty$ + { format.founders } + { format.founders format.editors "editor" output.check } + if$ + } + { editor empty$ + { format.authors format.founders output.nonnull } + { format.authors format.founders format.editors output.nonnull } + if$ + } + if$ + set.after.author.sep output + crossref missing$ + { format.btitle.vol "title" output.check } + { format.btitle "title" output.check } + if$ + format.volumetitle output + format.edition output + format.address.publisher.year "publisher" output.check + format.update + new.sentence + crossref missing$ + { format.series.number output } + { format.book.crossref output.nonnull } + if$ + format.url output + format.pages output + format.note + format.howcited.comment output + fin.entry.endnote +} + +FUNCTION {periodical} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.artperiodincoll.title "title" output.check + crossref missing$ + { journal article.in.journal output.nonnull + new.sentence + format.vol.bracedyear.num.pages output + } + { new.sentence format.article.crossref.bracedyear output.nonnull } + if$ + format.url output + format.note + format.isbn.issn output + format.howcited.artperiod output + fin.entry.endnote +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { editor empty$ + { "" "author and editor" output.check } + { format.editors output.nonnull } + if$ + } + { editor empty$ + { format.authors output.nonnull } + { format.authors "\jbtiafed {" format.editors * "}" * output.nonnull } + if$ + } + if$ + set.after.author.sep output + crossref missing$ + { format.btitle.vol "title" output.check } + { format.btitle "title" output.check } + if$ + author empty$ not editor empty$ not and + { "\jbedafti {\edbyname {} " editor * "," * * "} " * } + 'skip$ + if$ + make.translators output + format.volumetitle output + format.edition output + format.address.publisher.year "publisher" output.check + new.sentence + format.juradiss.book output + crossref missing$ + { format.series.number output } + { format.book.crossref output.nonnull } + if$ + format.url output + format.pages output + format.totalpages output + format.note + format.isbn.issn output + format.howcited output + fin.entry.endnote +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { editor empty$ + { format.authors output.nonnull } + { format.authors format.editors output.nonnull } + if$ + } + if$ + set.after.author.sep output + crossref missing$ + { chapter empty$ + { "There's no chapter in " cite$ * warning$ "" * } + { type empty$ + { "\Bibchaptername{}" } + { type } + if$ + chapter tie.or.space.connect " In " * * + } + if$ + format.btitle.vol.inbook "title" output.check + make.translators output + format.volumetitle output + format.edition output + format.address.publisher.year "publisher" output.check + new.sentence + format.series.number output + format.url output + format.pages "pages" output.check + format.note + format.isbn.issn output + } + { chapter empty$ + { "There's no chapter in " cite$ * warning$ "" * + format.btitle.vol.inbook "title" output.check + } + { type empty$ + { "\Bibchaptername{}" } + { type } + if$ + chapter tie.or.space.connect "" * * + } + if$ + format.volumetitle output + format.book.crossref output.nonnull + format.url output + format.pages "pages" output.check + format.note + } + if$ + part.of.sentence + format.howcited output + fin.entry.endnote +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.artperiodincoll.title "title" output.check + make.translators output + crossref missing$ + { format.incoll.editor.booktitle "booktitle" output.check + format.volumetitle output + format.edition output + format.address.publisher.year "publisher" output.check + new.sentence + format.series.number output + format.url output + format.isbn.issn output + part.of.sentence + format.chapter.pages output + format.note + } + { format.volumetitle output + format.incoll.inproc.crossref output.nonnull + format.url output + format.note + } + if$ + format.howcited output + check.missing.pages + fin.entry.endnote +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.artperiodincoll.title "title" output.check + crossref missing$ + { format.incoll.editor.booktitle "booktitle" output.check + address empty$ + { organization new.sentence.checka + organization output + part.of.sentence + format.address.publisher.year output + } + { format.address.publisher.year "publisher" output.check } + if$ + new.sentence + series empty$ + 'skip$ + { format.series.number output } + if$ + format.url output + format.note + format.isbn.issn output + part.of.sentence + format.pages output + } + { format.incoll.inproc.crossref output.nonnull + format.url output + format.note + } + if$ + format.howcited output + fin.entry.endnote +} + +FUNCTION {conference}{inproceedings} + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { "\bibnf{" organization * "} {} {} {} {}" * output.nonnull } + if$ + } + { format.authors output.nonnull } + if$ + set.after.author.sep output + format.btitle "title" output.check + format.edition output + format.address.organization.manual + format.date output + pages set.period.dash.check + format.pages.book output + format.url output + format.note + format.howcited output + fin.entry.endnote +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.btitle "title" output.check + format.thesis output + set.comma.pages.check + pages new.sentence.checka + format.pages output + format.url output + format.note + format.howcited output + fin.entry.endnote +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.btitle "title" output.check + format.thesis output + set.comma.pages.check + pages new.sentence.checka + format.pages output + format.url output + format.note + format.howcited output + fin.entry.endnote +} + +FUNCTION {jurthesis} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.btitle "title" output.check + format.thesis output + set.comma.pages.check + pages new.sentence.checka + format.pages output + format.url output + format.note + format.howcited output + fin.entry.endnote +} + +FUNCTION {booklet} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.title "title" output.check + format.howpublished.address.year output + format.note + format.url output + format.howcited output + fin.entry.endnote +} + +FUNCTION {misc} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.title output + format.howpublished.address.year output + format.note + format.url output + format.howcited output + fin.entry.endnote +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization empty$ + 'skip$ + { "\biblnfont {" organization * " \organizationname}" * output } + if$ + } + { format.editors output.nonnull } + if$ + set.after.author.sep output + format.btitle "title" output.check + new.sentence + editor empty$ + 'skip$ + { format.proceed.organization output } + if$ + new.sentence + format.series.number output.nonnull + volume empty$ + { "" output.nonnull } + { "\volumeformat {" volume * "} " * "volume" output.check } + if$ + format.address.publisher.year "publisher" output.check + pages set.period.dash.check + format.pages.book output + format.url output + format.note + format.isbn.issn output + format.howcited output + fin.entry.endnote +} + +FUNCTION {techreport} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { editor empty$ + { format.authors output.nonnull } + { format.authors format.editors output.nonnull } + if$ + } + if$ + set.after.author.sep output + format.title "title" output.check + institution new.sentence.checka + format.address.publisher.year output + number new.sentence.checka + format.tr.number.jur "number" output.check + pages set.period.dash.check + format.pages.book output + format.url output + format.note + format.isbn.issn output + format.howcited output + fin.entry.endnote +} + +FUNCTION {www} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.naked.url output + format.howcited output + fin.entry.endnote +} + +FUNCTION {lexicon} +{ output.bibitem + set.after.author.sep output + crossref missing$ + { format.btitle.vol "title" output.check } + { format.btitle "title" output.check } + if$ + author empty$ + { editor empty$ + 'skip$ + { "\edbyname{} " * editor format.editor.names "," * * } + if$ + } + { "\byname{} " author format.names * "," * * } + if$ + make.translators output + format.volumetitle output + format.edition output + format.address.publisher.year "publisher" output.check + new.sentence + format.juradiss.book output + crossref missing$ + { format.series.number output } + { format.book.crossref output.nonnull } + if$ + format.url output + format.pages output + format.totalpages output + format.note + format.isbn.issn output + format.howcited output + fin.entry.endnote +} + +STRINGS { last.archive last.subarchive } + +FUNCTION {init.last.archive } +{ "" 'last.archive := + "" 'last.subarchive := } + +FUNCTION {archival} +{ output.bibitem + archive empty$ + { "" 'last.archive := } + { archive last.archive = + { "} {" archive format.name.sig * "} {} {\jbsamearch{} " * * } + { "\bibanfont{" archive * "archive" output.check + shortarchive empty$ + 'skip$ + { " \jbshortarchformat{" shortarchive * "}" * * } + if$ + "}" * + "} {" archive format.name.sig * "} {} {\jbnotsamearch{} " * * + } + if$ + archive 'last.archive := + } + if$ + subarchive empty$ + { "" 'last.subarchive := } + { subarchive last.subarchive = + 'skip$ + { subarchive output + shortsubarchive empty$ + 'skip$ + { " \jbshortsubarchformat{" shortsubarchive * "}" * * } + if$ + "\jbsubarchsep{} " * + } + if$ + subarchive 'last.subarchive := + } + if$ + sig1 empty$ + 'skip$ + { "\jbarchsig {" * + subarchive empty$ + 'skip$ + { "\jbsamesubarchindent{} " * } + if$ + sig1 * + sig2 empty$ + 'skip$ + { ". " sig2 * * + sig3 empty$ + 'skip$ + { ". " sig3 * * + sig4 empty$ + 'skip$ + { ". " sig4 * * } + if$ + } + if$ + } + if$ + "} {" * + } + if$ + archname missing$ + { "}" * } + { archname "}" * output } + if$ + format.howcited output + fin.entry.endnote +} + +FUNCTION {unpublished}{misc} + +FUNCTION {default.type}{misc} + +MACRO {jan} {"\janname\ "} +MACRO {feb} {"\febname\ "} +MACRO {mar} {"\marname\ "} +MACRO {apr} {"\aprname\ "} +MACRO {may} {"\mayname\ "} +MACRO {jun} {"\junname\ "} +MACRO {jul} {"\julname\ "} +MACRO {aug} {"\augname\ "} +MACRO {sep} {"\sepname\ "} +MACRO {oct} {"\octname\ "} +MACRO {nov} {"\novname\ "} +MACRO {dec} {"\decname\ "} + +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 := % for two: (Jones/de~Bruijn) + s #1 "{vv~}{ll}" format.name$ % for three: (Jones/de~Bruijn/Smith) + s num.names$ duplicate$ % for more: (Jones et\,al.) + #2 < + 'pop$ % for just one person + { duplicate$ duplicate$ + #3 > + swap$ s swap$ "{ff }{vv }{ll}{ jj}" format.name$ "others" = + or + { pop$ "\Bibetal" * } % for 4 or more, or last is `others' + { #2 = + { "\jbbtasep " * s #2 "{vv~}{ll}" format.name$ * } % for (exactly) two + { "\jbbfsasep " * s #2 "{vv~}{ll}" format.name$ * % for three + "\jbbstasep " * s #3 "{vv~}{ll}" format.name$ * + } + if$ + } + if$ + } + if$ + year missing$ + 'skip$ + { "\jbdy {" year * "}" * * }% dummy year to prevent from `1993a' and `2001b' for works by the same author + if$ +} + +FUNCTION {format.editor.lab.names} +{ 's := % for two: (Jones/de~Bruijn) + s #1 "{vv~}{ll}" format.name$ % for three: (Jones/de~Bruijn/Smith) + s num.names$ duplicate$ % for more: (Jones et\,al.) + #2 < + 'pop$ % for just one person + { duplicate$ duplicate$ + #3 > + swap$ s swap$ "{ff }{vv }{ll}{ jj}" format.name$ "others" = + or + { pop$ "\Bibetal" * } % for 4 or more, or last is `others' + { #2 = + { "\jbbtesep " * s #2 "{vv~}{ll}" format.name$ * } % for (exactly) two + { "\jbbfsesep " * s #2 "{vv~}{ll}" format.name$ * % for three + "\jbbstesep " * s #3 "{vv~}{ll}" format.name$ * + } + if$ + } + if$ + } + if$ + year missing$ + 'skip$ + { "\jbdy {" year * "}" * * }% dummy year to prevent from `1993a' and `2001b' for works by the same author + 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.editor.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.label} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.editor.lab.names } + if$ +} + +FUNCTION {calc.label} +{ type$ "book" = type$ "inbook" = or type$ "incollection" = or type$ "commented" = or type$ "lexicon" = or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'label := +} + +FUNCTION {calc.dummy.label} +{ type$ "book" = type$ "inbook" = or type$ "incollection" = or type$ "commented" = or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'dummy.label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{ll{ }}{ ff{ }}{ vv{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "\bibnf {others} {} {} {} {}" = and + { "\Bibetal" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "Der " #4 + "Die " #4 + "Das " #4 + "Ein " #4 + "Eine " #5 + "The " #4 t chop.word + chop.word + chop.word + chop.word + chop.word + 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 {archival.sort} +{ archive empty$ + { shortarchive empty$ + { "to sort, need archive or shortarchive in " cite$ * warning$ "" } + { shortarchive sortify } + if$ + } + { archive sortify } + if$ +} + +FUNCTION {presort} +{ calc.label + calc.dummy.label + dummy.label sortify " " * + sortkey empty$ + { type$ "book" = + type$ "incollection" = or + type$ "inbook" = or + type$ "commented" = or + 'author.editor.sort + { type$ "proceedings" = + 'editor.sort + { type$ "archival" = + 'archival.sort + 'author.sort + if$ + } + if$ + } + if$ + } + { sortkey sort.format.names } + if$ + type$ "archival" = not + { " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + } + { " " + * + subarchive field.or.null sortify + * + " " + * + sig1 field.or.null sortify + * + " " + * + sig2 field.or.null sortify + * + " " + * + sig3 field.or.null sortify + * + " " + * + sig4 field.or.null sortify + * + } + if$ + #1 entry.max$ substring$ + 'sort.label := + sort.label * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +%% FUNCTION {before.sort} { "BEFORE SORT:" top$ } +%% EXECUTE {before.sort} +%% FUNCTION {print.sort.keys} {sort.key$ top$} +%% ITERATE {print.sort.keys} + +SORT + +%% FUNCTION {after.sort} {"AFTER SORT:" top$} +%% EXECUTE {after.sort} +%% ITERATE {print.sort.keys} + + +INTEGERS { last.extra.num number.label extra.extra.num } + +FUNCTION {make.extra.label} +{ last.extra.num #122 < + { last.extra.num #1 + } + { extra.extra.num #0 = + { "a" chr.to.int$ } + { extra.extra.num #1 + } + if$ + 'extra.extra.num := + "a" chr.to.int$ } + if$ + 'last.extra.num := + extra.extra.num #0 = + { last.extra.num int.to.chr$ } + { extra.extra.num int.to.chr$ 'extra.label := + extra.label last.extra.num int.to.chr$ * } + if$ +} + +FUNCTION {forward.pass} +{ w dummy.label = + { make.extra.label 'extra.label := } + { "a" chr.to.int$ 'last.extra.num := + #0 'extra.extra.num := + "" 'extra.label := + dummy.label 'w := + } + if$ + number.label #1 + 'number.label := +} + +FUNCTION {reverse.pass} +{ x "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'x := + extra.label + duplicate$ empty$ + 'skip$ + { "" swap$ * } + if$ + 'extra.label := + dummy.label extra.label * 'dummy.label := +} + +ITERATE {forward.pass} +REVERSE {reverse.pass} + +FUNCTION {bib.sort.order} { sort.label 'sort.key$ := } + +ITERATE {bib.sort.order} + +SORT + +FUNCTION {set.current.authors} +{ author empty$ + { editor empty$ + { organization empty$ + { cite$ 'current-authors := } + { organization 'current-authors := } + if$ + } + { editor format.names #1 entry.max$ substring$ 'current-authors := } +%% ^^^^^^^^^^^^ NOT format.editor.names, otherwise \jb@@arg is always = 0!!! + if$ + } + { author format.names #1 entry.max$ substring$ 'current-authors := } + if$ +} + +STRINGS { previous-authors } + +FUNCTION {initialize.previous.authors} { "" 'previous-authors := } + +FUNCTION {mark.repeat.authors} +{ current-authors previous-authors = + { #1 'repeat-authors := } + 'skip$ + if$ + current-authors 'previous-authors := +} + +ITERATE {set.current.authors} + +EXECUTE {initialize.previous.authors} + +ITERATE {mark.repeat.authors} + +EXECUTE {initialize.previous.authors} + +REVERSE {mark.repeat.authors} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "%" write$ newline$ + "% This bibliography was produced by using jurabib.bst" write$ newline$ + "%" write$ newline$ + "\begin{thebibliography}{}" 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 file `jurabib.bst'. diff --git a/Master/texmf-dist/bibtex/bst/jurabib/jureco.bst b/Master/texmf-dist/bibtex/bst/jurabib/jureco.bst new file mode 100644 index 00000000000..3c8dcc60ca0 --- /dev/null +++ b/Master/texmf-dist/bibtex/bst/jurabib/jureco.bst @@ -0,0 +1,2809 @@ +%% +%% This is file `jureco.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% jurabib.dtx (with options: `jurecobst') +%% ---------------------------------------- +%% BibTeX style for use with the jurabib package version v0.6 +%% Copyright (C) 1999-2004 Jens Berger (http://www.jurabib.org) +%% See jurabib.ins for the copyright details. +%% +ENTRY{ + address + author + booktitle + chapter + edition + editor + howpublished + institution + isbn + issn + journal + key + language + month + note + number + organization + pages + publisher + school + series + title + type + volume + year +%% + url + urldate + volumetitle + dissyear + howcited + juratitle + juraauthor + shorttitle + shortauthor + ssedition + titleaddon + booktitleaddon + editortype + sortkey + annote + gender + translator + flanguage + oyear + oaddress + opublisher + updated + totalpages + founder + archive + subarchive + shortarchive + shortsubarchive + sig1 + sig2 + sig3 + sig4 + archname + } + { repeat-authors repeat-titles } + { label dummy.label extra.label sort.label current-authors } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +INTEGERS { colon.after period.dash } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'colon.after := + #5 'period.dash := +} + +STRINGS { s t u v w x } + +FUNCTION {output.nonnull} +{ 's := + output.state after.block = + { write$ } + { output.state before.all = + { write$ } + { output.state colon.after = + { "" * write$ } + { output.state period.dash = + { ", " * write$ } + { output.state mid.sentence = + { " " * write$ } + { write$ } + if$ + } + if$ + } + if$ + } + if$ + after.block '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 {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + 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.superscript} +{ edition extract.num "l" change.case$ 's := + s "first" = s "1" = or s "erste" = or + { "1" 't := } + { s "second" = s "2" = or s "zweite" = or + { "2" 't := } + { s "third" = s "3" = or s "dritte" = or + { "3" 't := } + { s "fourth" = s "4" = or s "vierte" = or + { "4" 't := } + { s "fifth" = s "5" = or s "fuenfte" = or + { "5" 't := } + { s "sixth" = s "6" = or s "sechste" = or + { "6" 't := } + { s "seventh" = s "7" = or s "siebte" = or s "siebente" = or + { "7" 't := } + { s "eighth" = s "8" = or s "achte" = or + { "8" 't := } + { s "nineth" = s "9" = or s "neunte" = or + { "9" 't := } + { s #1 #1 substring$ is.num + { s "" * 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +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 {output.bibitem.fst} +{ newline$ + "\bibitem[{" write$ + shortauthor empty$ + { juraauthor empty$ + { author empty$ + { editor empty$ + { organization empty$ + { archive empty$ + { "empty" write$ } + { archive write$ } + if$ + } + { organization write$ } + if$ + } + { label write$ } + if$ + } + { label write$ } + if$ + } + { juraauthor write$ } + if$ + } + { shortauthor write$ } + if$ + "}%" write$ + sortkey empty$ + 'skip$ + { newline$ "% SORTKEY: [" sortkey * "]" * write$ } + if$ + newline$ + shorttitle empty$ + { juratitle empty$ + { journal empty$ + { " {}%" write$ } + { " {" journal * "}%" * write$ } + if$ + } + { " {" juratitle * "}%" * write$ } + if$ + } + { " {" shorttitle * "}%" * write$ } + if$ + newline$ + repeat-authors + { " {{1}" write$ } + { " {{0}" write$ } + if$ + howcited empty$ + { "{}" write$ } + { "{" howcited * "}" * write$ } + if$ + type$ empty$ + { "{}" write$ } + { "{" type$ * "}" * write$ } + if$ + year empty$ + { type$ "book" = dissyear empty$ not and + { "{" dissyear * write$ + extra.label "" = + skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + "}" write$ + } + { "{}" write$ } + if$ + } + { "{" year * write$ + extra.label "" = + 'skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + "}" write$ + } + if$ + edition empty$ + { "{}" write$ } + { "{" convert.edition.superscript extract.num * "}" * write$ } + if$ + ssedition empty$ + { "{}" write$ } + { "{" ssedition * "}" * write$ } + if$ + language empty$ + { "{}" write$ } + { "{" language * "}" * write$ } + if$ + pages empty$ + { "{}%" write$ } + { "{" write$ pages n.dashify write$ "}%" write$ } + if$ +} + +FUNCTION {output.bibitem.snd} +{ newline$ + publisher empty$ + { address empty$ + { " {" write$ } + { " {" write$ address write$ } + if$ + } + { address empty$ + { " {" write$ } + { " {" write$ address write$ "\bpubaddr {} " write$ publisher write$ } + if$ + } + if$ + "}}%" write$ newline$ + " {" write$ + title empty$ + { "{}%" write$ newline$ } + { "{" title * + type$ "archival" = + { shortarchive empty$ not + { ", In: " shortarchive * * } + { archive empty$ not + { ", In: " archive * * } + 'skip$ + if$ + } + if$ + shortsubarchive empty$ + 'skip$ + { ", " shortsubarchive * * } + if$ + sig1 empty$ + 'skip$ + { ", " sig1 * * + sig2 empty$ + 'skip$ + { ". " sig2 * * + sig3 empty$ + 'skip$ + { ". " sig3 * * + sig4 empty$ + 'skip$ + { ". " sig4 * * } + if$ + } + if$ + } + if$ + } + if$ + pages empty$ + 'skip$ + { " \jbArchPages {" pages n.dashify * "}" * * } + if$ + } + 'skip$ + if$ + "}%" * write$ newline$ } + if$ + gender empty$ + { " {}" write$ } + { " {" gender * "}" * write$ } + if$ + oyear empty$ + { "{}" write$ } + { "{" oyear * "}" * write$ } + if$ + author empty$ + { editor empty$ + { "{4}" write$ }% author and editor empty + { "{3}" write$ }% author empty, editor not + if$ + } + { editor empty$ + { "{2}" write$ }% editor empty, author not + { "{1}" write$ }% both author and editor given + if$ + } + if$ + "{}{}{}{}{}}%" write$ newline$ + " ]{" write$ + cite$ write$ + "}" write$ + url empty$ + 'skip$ + { newline$ " \jburldef {" write$ cite$ write$ "}{" write$ url write$ "}%" write$ } + if$ + newline$ + " \jbbibargs {" write$ + "" + before.all 'output.state := +} + +FUNCTION {output.bibitem} +{ output.bibitem.fst + output.bibitem.snd +} + +FUNCTION {format.note} +{ note empty$ + 'skip$ + { output.state before.all = + {" \jbnote {} {" * note * "} " * } + {" \jbnote {1} {" * note * "} " * } + if$ + } + if$ +} + +FUNCTION {format.endnote} +{ note empty$ + { "" } + { " \jbendnote {" note * "}" * } + if$ +} + + +FUNCTION {format.juradiss.book} +{ dissyear empty$ + { "" } + { type empty$ + { school empty$ + { "Dissyear but no school in " cite$ * warning$ + " (\alsothesisname {} \jurthesisname" * + year empty$ not year missing$ not and + { "\bibbdsep {} " dissyear * } + 'skip$ + if$ + ")" * + } + { " (\alsothesisname {} \jurthesisname, " school * + year empty$ not year missing$ not and + { "\bibbdsep {} " dissyear * * } + 'skip$ + if$ + ")" * + } + if$ + } + { school empty$ + { "Dissyear but no school in " cite$ * warning$ + " (\alsothesisname {} " type * + year empty$ not year missing$ not and + { "\bibbdsep {} " dissyear * } + 'skip$ + if$ + ")" * + } + { " (\alsothesisname {} " type * + ", " school * * + year empty$ not year missing$ not and + { "\bibbdsep {} " dissyear * * } + 'skip$ + if$ + ")" * + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.thesis} +{ year empty$ + { school empty$ + { "No universtiy in " cite$ * warning$ } + { "There's a university, but no year in " cite$ * warning$ } + if$ + "" + } + { type empty$ + { school empty$ + { "No university in " cite$ * warning$ + type$ "mastersthesis" = + { "\apyformat {\mastersthesisname" address empty$ 'skip$ { ", " address * * } if$ "}" * } + { type$ "jurthesis" = + { "\apyformat {\jurthesisname" address empty$ 'skip$ { ", " address * * } if$ "}" * } + { "\apyformat {\phdthesisname" address empty$ 'skip$ { ", " address * * } if$ "}" * } + if$ + } + if$ + } + { type$ "mastersthesis" = + { "\mastersthesisname, \apyformat {" school * address empty$ 'skip$ { ", " address * * } if$ "}" * } + { type$ "jurthesis" = + { "\jurthesisname, \apyformat {" school * address empty$ 'skip$ { ", " address * * } if$ "}" * } + { "\phdthesisname, \apyformat {" school * address empty$ 'skip$ { ", " address * * } if$ "}" * } + if$ + } + if$ + } + if$ + } + { school empty$ + { "No university in " cite$ * warning$ type } + { type " \apyformat {" * school * address empty$ 'skip$ { ", " address * * } if$ "}" * } + if$ + } + if$ + } + if$ +} + +FUNCTION {set.comma.pages.check} +{ year empty$ + 'skip$ + { pages empty$ + { url empty$ + 'skip$ + { ", " * } + if$ + } + { ", " * } + if$ + } + if$ +} + +FUNCTION {set.period.dash} +{ output.state before.all = + 'skip$ + { period.dash 'output.state := } + if$ +} + +FUNCTION {set.period.dash.check} +{ empty$ + 'skip$ + 'set.period.dash + if$ +} + +FUNCTION {new.sentence} +{ output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ +} + +FUNCTION {part.of.sentence} +{ output.state before.all = + 'skip$ + { mid.sentence 'output.state := } + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + + +FUNCTION {get.final.nonrightbrace.char} +{ { duplicate$ + #-1 #1 substring$ + duplicate$ + "}" = + } + { pop$ + #-2 global.max$ substring$ + } + while$ + swap$ pop$ +} + + +FUNCTION {check.punct.instead.of.add.period} +{ duplicate$ + get.final.nonrightbrace.char + duplicate$ "." = swap$ + duplicate$ "!" = swap$ + "?" = or or + { "} " * } + { "}\bibatsep\ " * } + if$ +} + +FUNCTION {check.punct.instead.of.add.period.art} +{ duplicate$ + get.final.nonrightbrace.char + duplicate$ "." = swap$ + duplicate$ "!" = swap$ + "?" = or or + { "} " * } + { pages empty$ note empty$ url empty$ and and + { "} " * } + { volume empty$ + { pages empty$ + { "}\ajtsep\ " * } + { crossref missing$ + { month empty$ + { "}\ajtsep\ " * } + { "}\ajtsep " * } + if$ + } + { "}\ajtsep " * } + if$ + } + if$ + } + { "}\ajtsep\ " * } + if$ + } + if$ + } + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\bibtfont {" swap$ check.punct.instead.of.add.period * } + if$ +} + +FUNCTION {journaltitlemarkup} +{ duplicate$ empty$ + { pop$ "" } + { "\bibJTsep \bibjtfont {" swap$ check.punct.instead.of.add.period.art * } + if$ +} + +FUNCTION {incollbooktitlemarkup} +{ duplicate$ empty$ + { pop$ "" } + { "\bibbtfont {" swap$ check.punct.instead.of.add.period * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION { lastnamemarkup } +{ duplicate$ empty$ + { pop$ "" } + { "\bibnf {" swap$ * "}" * } + if$ +} + +FUNCTION { editorlastnamemarkup } + { duplicate$ empty$ + { pop$ "" } + { author empty$ + { "\biblenf {" swap$ * "}" * } % lonely editor(s)! + { "\bibenf {" swap$ * "}" * } + if$ + } + if$ +} + +FUNCTION { othermarkup } + { duplicate$ empty$ + { pop$ " {}" } + { " {" swap$ * "}" * } + if$ +} + +FUNCTION {article.in.journal} +{ duplicate$ empty$ + { pop$ "" } + { author missing$ + { title missing$ + 'skip$ + { journaltitlemarkup "" swap$ * } + if$ + } + { journaltitlemarkup "" swap$ * } + if$ + } + if$ +} + +FUNCTION {format.names} % NEW v0.5 +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ll}" format.name$ 't := t lastnamemarkup 't := + s nameptr "{ff}" format.name$ othermarkup 'u := + s nameptr "{f.}" format.name$ othermarkup 'v := + s nameptr "{vv}" format.name$ othermarkup 'w := + s nameptr "{jj}" format.name$ othermarkup 'x := + t u * v * w * x * 't := + nameptr #1 > + { namesleft #1 > + { numnames #3 > + { "" * } + { numnames #3 < + { "\Bibbtasep " * t * } % between (exactly) two authors + { "\Bibbfsasep " * t * } % between first and second author (if more than two) + if$ + } + if$ + } + { t "\bibnf {others} {} {} {} {}" = + t "\bibnf {others} {} {} {} {} \edfont {\editorsname}" = or + numnames #3 > or + { "\bibIMfont {\Bibetal}" * } + { numnames #3 < + { "\Bibbtasep " * t * } % between (exactly) two authors + { "\Bibbstasep " * t * } % between second and third author + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.editor.names} % NEW v0.5 +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ll}" format.name$ 't := t editorlastnamemarkup 't := + s nameptr "{ff}" format.name$ othermarkup 'u := + s nameptr "{f.}" format.name$ othermarkup 'v := + s nameptr "{vv}" format.name$ othermarkup 'w := + s nameptr "{jj}" format.name$ othermarkup 'x := + t u * v * w * x * 't := + nameptr #1 > + { namesleft #1 > + { numnames #3 > + { "" * } + { numnames #3 < + { "\Bibbtesep " * t * } % between (exactly) two editors + { "\Bibbfsesep " * t * } % between first and second editor (if more than two) + if$ + } + if$ + } + { t "\bibenf {others} {} {} {} {}" = + t "\biblenf {others} {} {} {} {}" = or + t "\bibenf {others} {} {} {} {} \edfont {\editorsname}" = or + t "\biblenf {others} {} {} {} {} \edfont {\editorsname}" = or + numnames #3 > or + { "\bibIMfont {\Bibetal}" * } + { numnames #3 < + { "\Bibbtesep " * t * } % between (exactly) two editors + { "\Bibbstesep " * t * } % between second and third editor + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.name.sig} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff}{ vv}{ ll}{ jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { "" * t * } + { t "others" = + { " et al." * } + { "" * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {indexmarkup} +{ duplicate$ empty$ + { pop$ "{}" } + { "{" swap$ * "}" * } + if$ +} + +FUNCTION {format.names.for.index} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ll}" format.name$ 't := t indexmarkup 't := + s nameptr "{ff}" format.name$ indexmarkup 'u := + s nameptr "{f.}" format.name$ indexmarkup 'v := + s nameptr "{vv}" format.name$ indexmarkup 'w := + s nameptr "{jj}" format.name$ indexmarkup 'x := + t u * v * w * x * 't := + t "{others}{}{}{}{}" = + 'skip$ + { nameptr #1 > + { namesleft #1 > + { "; " * t * } + { + t "others" = + 'skip$ + { "; " * t * } + if$ + } + if$ + } + 't + if$ + } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.founders} +{ founder empty$ + 'skip$ + { author empty$ + 'skip$ + { " in: " * } + if$ + founder format.names "\foundername" * * + editor empty$ + 'skip$ + { author empty$ + { "\afterfoundersep {}" * } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { author empty$ + { editor format.editor.names + editortype empty$ + { editor num.names$ #1 > + { "\fsted {\editorsname}" * } + { "\fsted {\editorname}" * } + if$ + } + { "\fsted {(" editortype * ")}" * * } + if$ + } + { founder empty$ + { "\bibfnfont {;} " * } + { type$ "commented" = + { "\afterfoundersep {}" * } + { "\bibfnfont {;} " * } + if$ + } + if$ + editor format.editor.names * + editortype empty$ + { editor num.names$ #1 > + { " \edfont {\editorsname}" * } + { " \edfont {\editorname}" * } + if$ + } + { " \edfont {(" editortype * ")}" * * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.snd.editors} +{ editor empty$ + { "" * } + { author empty$ + { editortype empty$ + { editor num.names$ #1 > + { "\snded {\sndeditorsname}" * } + { "\snded {\sndeditorname}" * } + if$ + } + { "\snded {(" editortype * ")}" * * } + if$ + } + 'skip$ + if$ + } + if$ +} + +FUNCTION { format.howcited } +{ "} {\bibhowcited}" format.endnote * } + +FUNCTION {fin.entry.endnote} +{ " \jbdoitem {" * + author empty$ + 'skip$ + { author format.names.for.index * } + if$ + "} {" + editor empty$ + 'skip$ + { editor format.names.for.index * } + if$ + "} {" * + organization empty$ + 'skip$ + { "{" organization * "}{}{}{}{}" * * } + if$ + "}" * * write$ + annote missing$ + { " \bibAnnoteFile {" cite$ * "}" * write$ newline$ } + { " \bibAnnote {" annote * "}" * write$ newline$ } + if$ +} + +FUNCTION {count.authors.or.editors} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { "" 't := + nameptr #1 > + { namesleft #1 > + { "" * } + { "s" * } % more than one author/editor, append `s' + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + + +FUNCTION { set.after.author.sep } +{ author empty$ editor empty$ and + { "}{jureco} {} {" "" * } + { year empty$ + { type$ "book" = dissyear empty$ not and + { "\bibYear {" dissyear * + extra.label "" = + 'skip$ + { "\el {" extra.label * "}" * * } + if$ + "}" * * + } + { year missing$ + { "\bibYear {}" * } + 'skip$ + if$ + } + if$ + } + { year missing$ + { "\bibYear {}" * } + { "\bibYear {" year * + extra.label "" = + 'skip$ + { "\el {" extra.label * "}" * * } + if$ + "}" * * + } + if$ + } + if$ + "}{jureco} {} {" "" * + } + if$ +} + +FUNCTION {format.names.info} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff }{vv }{ll}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { " " * t * } + { t "others" = + { " et al." * } + { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION { format.howcited.comment } +{ edition empty$ + { "} {\bibcommenthowcited}" format.endnote * } + { "} {\bibcommenthowcited}" format.endnote * * + author empty$ editor empty$ not and + { " \jbauthorinfo {" editor format.names.info " " title * * * "}{" cite$ "}" * * * } + { author empty$ shortauthor empty$ not and + { " \jbauthorinfo {" shortauthor format.names.info " " title * * * "}{" cite$ "}" * * * } + { " \jbauthorinfo {" author format.names.info " " title * * * "}{" cite$ "}" * * * } + if$ + } + if$ + } + if$ +} + +FUNCTION { format.howcited.artperiod } +{ "} {\bibartperiodhowcited}" format.endnote * } + +FUNCTION {format.proceed.organization} +{ organization empty$ + { "" } + { organization " \organizationname {}" * } + if$ +} + +FUNCTION {format.titleaddon} +{ title empty$ + { "" } + { titleaddon empty$ + { "" } + { titleaddon "\bibatsep\ " * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { "\bibtfont {" title check.punct.instead.of.add.period * format.titleaddon * } + if$ +} + +FUNCTION {format.artperiodincoll.title} +{ title empty$ + { "" } + { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * } + if$ +} + +FUNCTION {format.volumetitle} +{ volumetitle empty$ + { "" } + { volume empty$ + { "There's a volumetitle but no volume in " cite$ * warning$ volumetitle ", " * } + { volumetitle ", " * } + if$ + } + if$ +} + +FUNCTION {add.extra.label} +{ extra.label "" = + 'skip$ + { "\bibel {" extra.label * "}" * * } + if$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "There's a month but no year in " cite$ * warning$ month } + if$ + } + { month empty$ + { edition empty$ + 'skip$ + { "\jbssedbd {" convert.edition.superscript extract.num * "}" * * } + if$ + year + add.extra.label + } + { month " " * + edition empty$ + 'skip$ + { "\jbssedbd {" convert.edition.superscript extract.num * "}" * * } + if$ + year * + add.extra.label + } + if$ + } + if$ +} + +FUNCTION {format.update} +{ updated missing$ not + { "\updatesep {} \updatename {} " * updated * } + 'skip$ + if$ +} + +FUNCTION {oaddress.opublisher.oyear.format} +{ type$ "book" = type$ "inbook" = type$ "incollection" = or or + { oyear empty$ + { opublisher empty$ + { oaddress empty$ + 'skip$ + { oaddress "\osep {} " * * } + if$ + } + { oaddress empty$ + { opublisher "\osep {} " * * } + { oaddress "\bpubaddr {} " * opublisher "\osep {} " * * * } + if$ + } + if$ + } + { year empty$ + { "oyear without year in " cite$ * warning$ } + 'skip$ + if$ + opublisher empty$ + { oaddress empty$ + { oyear * "\osep {} \reprintname {}, " * } + { oaddress "\bibbdsep {} " * oyear "\osep {} " * * * } + if$ + } + { oaddress empty$ + { opublisher * "\bibbdsep {} " * oyear "\osep {} " * * } + { oaddress "\bpubaddr {} " * opublisher "\bibbdsep {} " * * oyear "\osep {} " * * * } + if$ + } + if$ + } + if$ + } + 'skip$ + if$ +} + +FUNCTION {make.translators} +{ before.all 'output.state := + translator empty$ + { flanguage empty$ + { "" } + { "\translator {}{" flanguage "l" change.case$ * "}" * + type$ "incollection" = not + type$ "article" = not + and + { "{1} " * } + { type$ "incollection" = + { booktitle empty$ + { "{} " * } + { "{1} " * } + if$ + } + { type$ "article" = + { "{1}" * } + { series empty$ + { "{} " * } + { "{1} " * } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + { "\translator {" translator * "}" * + flanguage empty$ + { "{}" * } + { "{" * flanguage "l" change.case$ * "}" * } + if$ + type$ "incollection" = not + type$ "article" = not + and + { "{1} " * } + { + type$ "incollection" = + { booktitle empty$ + { "{} " * } + { "{1} " * } + if$ + } + { type$ "article" = + { "{1} " * } + { series empty$ + { "{} " * } + { "{1} " * } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + before.all 'output.state := +} + +FUNCTION {format.address.publisher.year} +{ publisher empty$ + { address empty$ + { institution empty$ + { "" } + { " \apyformat {" oaddress.opublisher.oyear.format * institution "}" * } + if$ + } + { institution empty$ + { " \apyformat {" oaddress.opublisher.oyear.format * address "}" * } + { " \apyformat {" oaddress.opublisher.oyear.format * address "\bpubaddr {} " * institution "}" * * } + if$ + } + if$ + } + { address empty$ + { institution empty$ + { "There's only a publisher (no address) in " cite$ * warning$ + " \apyformat {" oaddress.opublisher.oyear.format * publisher "}" * } + { " \apyformat {" oaddress.opublisher.oyear.format * publisher ", " * institution "}" * * } + if$ + } + { institution empty$ + { " \apyformat {" oaddress.opublisher.oyear.format * address "\bpubaddr {} " * publisher "}" * * } + { " \apyformat {" oaddress.opublisher.oyear.format * address "\bpubaddr {} " * publisher ", " * institution "}" * * * } + if$ + } + if$ + } + if$ +} + + +FUNCTION {format.howpublished.address.year} +{ howpublished empty$ + { address empty$ + { "No address in " cite$ warning$ } + { " \apyformat {" oaddress.opublisher.oyear.format address * "}" * } + if$ + } + { address empty$ + { "There's only a howpublished (no address) in " cite$ * warning$ " \apyformat {" oaddress.opublisher.oyear.format howpublished * "}" * } + { " \apyformat {" oaddress.opublisher.oyear.format address * "\bpubaddr {} " * howpublished "}" * * } + if$ + } + if$ +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #4 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {bibvol.tie.or.space.connect} +{ duplicate$ text.length$ #4 < + { "~" } + { "{} " } + if$ + swap$ * * +} + +FUNCTION {format.btitle}{ title emphasize format.titleaddon * } + +FUNCTION {format.btitle.vol} +{ number empty$ + { series empty$ + { volume empty$ + { title emphasize format.titleaddon * } + { + title emphasize format.titleaddon * " \volumeformat {" volume * "} " * * + } + if$ + } + { volume empty$ + { title emphasize format.titleaddon * } + { + title emphasize format.titleaddon * "\volumeformat {" volume * "} " * * series "\bibatsep\ " * * + } + if$ + } + if$ + } + { title emphasize format.titleaddon * } + if$ +} + +FUNCTION {format.btitle.vol.inbook} +{ number empty$ + { series empty$ + { volume empty$ + { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * } + { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * + " \volumeformat {" volume * "} " * * + } + if$ + } + { volume empty$ + { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * } + { series emphasize + "\volumeformat {" volume * "} " * * + "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * * } + if$ + } + if$ + } + { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * } + if$ +} + +FUNCTION {format.url} +{ url empty$ + { "" } + { author empty$ title empty$ and + 'skip$ + { " " * } + if$ + urldate empty$ + {"\jburluse {" cite$ * "}" * } + {"\jburluse {" cite$ * "}\bibbudcsep {}\urldatecomment " * urldate * } + if$ + } + if$ +} + +FUNCTION {format.naked.url} +{ url empty$ + { "" } + { urldate empty$ + { title empty$ + 'skip$ + { title emphasize * } + if$ + "\jburluse {" cite$ * "}" * + } + { title empty$ + 'skip$ + { title emphasize * } + if$ + "\jburluse {" cite$ * "}\bibbudcsep {}\urldatecomment " * urldate * + } + if$ + } + if$ +} + +FUNCTION {format.series.number} +{ volume empty$ + { number empty$ + { series empty$ + { "" } + { " \numberandseries {}{" series * "}" * } + if$ + } + { series empty$ + { " \numberandseries {" number * "}{}" * "There's a number but no series in " cite$ * warning$ } + { " \numberandseries {" number * "}{" * series "}" * * } + if$ + } + if$ + } + { series empty$ + { "" } + { type$ "proceedings" = + { " \numberandseries {}{" series * "}" * } % { " (" series * ")" * } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {first.ed} { "\firstedname" } +FUNCTION {second.ed}{ "\secondedname" } +FUNCTION {third.ed} { "\thirdedname" } +FUNCTION {fourth.ed}{ "\fourthedname" } +FUNCTION {fifth.ed} { "\fifthedname" } +FUNCTION {th.ed} { "\thedname" } + +FUNCTION {convert.edition} +{ edition extract.num "l" change.case$ 's := + s "first" = s "1" = or + { first.ed 't := } + { s "second" = s "2" = or + { second.ed 't := } + { s "third" = s "3" = or + { third.ed 't := } + { s "fourth" = s "4" = or + { fourth.ed 't := } + { s "fifth" = s "5" = or + { fifth.ed 't := } + { s #1 #1 substring$ is.num + { s th.ed * 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { "\jbedition {" * convert.edition "~\editionname {}\jbaensep} " * }% dot or not ??????? + if$ +} + +FUNCTION { format.isbn.issn } +{ isbn empty$ + { issn empty$ + { "" } + { "\jbissn {" issn n.dashify * "}" * } + if$ + } + { "\jbisbn {" isbn n.dashify * "}" * } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { " \jbPages{" pages n.dashify * "}" * } + if$ +} + +FUNCTION {multi.pagerange.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "b" = + swap$ "/" = or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {check.missing.pages} +{ pages empty$ + { "Empty pages in " cite$ * warning$ } + { pages multi.pagerange.check + { "" * } + { type$ "article" = type$ "periodical" = or + { "There's only a starting page, no pagerange in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {format.pages.book} +{ pages empty$ + { "" } + { " \jbpages {" pages " \bibtotalpagesname}" *} + if$ +} + +FUNCTION {format.totalpages} +{ totalpages empty$ + { "" } + { + ", " totalpages "~\bibtotalpagesname" * * + } + if$ +} + +FUNCTION {format.vol.year.num.pages} +{ volume empty$ + { "" } + { " \artvolumeformat {" volume * "}" * + year empty$ + { "There's a volume but no year in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + number empty$ + 'skip$ + { "\artnumberformat {" number * "}" * * } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { "" format.pages * * } + if$ + } + if$ +} + +FUNCTION {format.vol.bracedyear.num.pages} +{ volume empty$ + { "" } + { " \pervolumeformat {" volume * "}" * + year empty$ + { "There's a volume but no year in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + number empty$ + 'skip$ + { volume empty$ + { "" * } + { ", " * } + if$ + "\pernumberformat {" number * "}" * * + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { "" format.pages * * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "\unskip.\,-- \bibchapterlongname" } + { "\unskip.\,-- " type * } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { format.pages * } + if$ + } + if$ +} + +FUNCTION {format.booktitleaddon} +{ booktitle empty$ + { "" } + { booktitleaddon empty$ + { "" } + { booktitleaddon } + if$ + } + if$ +} + +FUNCTION {format.incoll.editor.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { volume empty$ + { "\incolledformat {}{}{" booktitle incollbooktitlemarkup format.booktitleaddon * * "}{}" * + booktitleaddon empty$ + { "{} " * } + { "{1} " * } + if$ + } + { "\incolledformat {}{}{" booktitle incollbooktitlemarkup format.booktitleaddon * * "}{" * volume * "}" * + booktitleaddon empty$ + { "{} " * } + { "{1} " * } + if$ + } + if$ + } + { volume empty$ + { "\incolledformat {" + editor empty$ + { "" } + { editor format.editor.names "}" * * + editortype empty$ + { editor num.names$ #1 > + { "{\edfont {\editorsname}}{" * } + { "{\edfont {\editorname}}{" * } + if$ + } + { "{\edfont {(" * editortype * ")}}{" * } + if$ + } + if$ + booktitle incollbooktitlemarkup * format.booktitleaddon * "}{}" * + booktitleaddon empty$ + { "{} " * } + { "{1} " * } + if$ + } + { "\incolledformat {" * + editor empty$ + { "" } + { editor format.editor.names "}" * * + editortype empty$ + { editor num.names$ #1 > + { "{\edfont {\editorsname}}{" * } + { "{\edfont {\editorname}}{" * } + if$ + } + { "{\edfont {(" * editortype * ")}}{" * } + if$ + } + if$ + booktitle incollbooktitlemarkup * format.booktitleaddon * "}{" volume * "}" * + booktitleaddon empty$ + { "{} " * } + { "{1} " * } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.tr.number.jur} +{ type empty$ + { number empty$ + { " -- \technicalreportname {} " } + { "~(" number * ").\,-- \technicalreportname {} " * } + if$ + } + { number empty$ + { " -- " type * } + { "~(" number * ").\,-- " type * " " * * } + if$ + } + if$ +} + +FUNCTION {format.article.crossref.bracedyear} +{ key empty$ + { journal empty$ + { "Need key or journal for " cite$ * " to crossref " * crossref * warning$ "" } + { "\bibJTsep\bibjtfont {" journal * check.punct.instead.of.add.period.art * } + if$ + volume empty$ + { "No volume in " cite$ * warning$ } + { " \pervolumeformat {" volume * "} " * } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { format.pages * } + if$ + } + if$ + } + { "" key * } + if$ + "\ \protect\jbcrossrefchecked {" * crossref * "}\unskip" * +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "Need key or journal for " cite$ * " to crossref " * crossref * warning$ "" } + { "\bibJTsep\bibjtfont {" journal * check.punct.instead.of.add.period.art * } + if$ + } + { "" key * } + if$ + year empty$ + 'skip$ + { year * } + if$ + " \protect\jbcrossrefchecked {" crossref * "}" * +} + +FUNCTION {format.book.crossref} +{ 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$ "" * } + { "" * } + if$ + } + { key * } + if$ + } + { "" * } + if$ + volume empty$ + { "Empty volume in " cite$ * "'s crossref of " * crossref * warning$ "" + " \protect\jbcrossrefchecked {" * crossref * "}\unskip" * } + { " \protect\jbcrossrefchecked[" * volume * "]{" * crossref "}\unskip" * } + if$ +} + +FUNCTION {format.incoll.inproc.crossref} +{ " \protect\jbincollcrossref {" * crossref * "}" * + editor empty$ + { "{}" * } + { "{1}" * } + if$ + format.pages % *<== 0.5f removed too. +} + +FUNCTION { format.editors.organization } +{ organization empty$ + 'skip$ + { type$ "misc" = + { organization } + { author empty$ + { editor empty$ + { " " organization * " \organizationname {}" * } + { "; " organization * " \organizationname {}" * } + if$ + } + { "; " organization * " \organizationname {}" * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.address.organization.manual} +{ author empty$ + { organization empty$ + { address empty$ + 'skip$ + { address output part.of.sentence + year empty$ not { "\bibbdsep {}" *} 'skip$ if$ + } + if$ + } + 'skip$ + if$ + } + { address empty$ + { organization empty$ + 'skip$ + { organization output part.of.sentence + year empty$ not { "\bibbdsep {}" *} 'skip$ if$ + } + if$ + } + { organization empty$ + { address output part.of.sentence } + { address "\bpubaddr {} " * organization * output part.of.sentence } + if$ + year empty$ not { "\bibbdsep {}" *} 'skip$ if$ + } + if$ + } + if$ +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.artperiodincoll.title "title" output.check + crossref missing$ + { journal article.in.journal output.nonnull + new.sentence + format.vol.year.num.pages output + } + { format.article.crossref output.nonnull } + if$ + format.url output + format.note + format.isbn.issn output + format.howcited.artperiod output + check.missing.pages + fin.entry.endnote +} + +FUNCTION {commented} +{ output.bibitem + author empty$ + { editor empty$ + { format.founders } + { format.founders format.editors "editor" output.check } + if$ + } + { editor empty$ + { format.authors format.founders output.nonnull } + { format.authors format.founders format.editors output.nonnull } + if$ + } + if$ + set.after.author.sep output + crossref missing$ + { format.btitle.vol "title" output.check } + { format.btitle "title" output.check } + if$ + format.volumetitle output + format.edition output + format.address.publisher.year "publisher" output.check + format.update + new.sentence + crossref missing$ + { format.series.number output } + { format.book.crossref output.nonnull } + if$ + format.url output + format.pages output + format.note + format.howcited.comment output + fin.entry.endnote +} + +FUNCTION {periodical} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.artperiodincoll.title "title" output.check + crossref missing$ + { journal article.in.journal output.nonnull + new.sentence + format.vol.bracedyear.num.pages output + } + { new.sentence format.article.crossref.bracedyear output.nonnull } + if$ + format.url output + format.note + format.isbn.issn output + format.howcited.artperiod output + fin.entry.endnote +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { editor empty$ + { "" "author and editor" output.check } + { format.editors output.nonnull } + if$ + } + { editor empty$ + { format.authors output.nonnull } + { format.authors "\jbtiafed {" format.editors * "}" * output.nonnull } + if$ + } + if$ + set.after.author.sep output + crossref missing$ + { format.btitle.vol "title" output.check } + { format.btitle "title" output.check } + if$ + author empty$ not editor empty$ not and + { "\jbedafti {\edbyname {} " editor * "," * * "} " * } + 'skip$ + if$ + make.translators output + format.volumetitle output + format.edition output + format.address.publisher.year "publisher" output.check + new.sentence + format.juradiss.book output + crossref missing$ + { format.series.number output } + { format.book.crossref output.nonnull } + if$ + format.url output + format.pages output + format.totalpages output + format.note + format.isbn.issn output + format.howcited output + fin.entry.endnote +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { editor empty$ + { format.authors output.nonnull } + { format.authors format.editors output.nonnull } + if$ + } + if$ + set.after.author.sep output + crossref missing$ + { chapter empty$ + { "There's no chapter in " cite$ * warning$ "" * } + { type empty$ + { "\Bibchaptername{}" } + { type } + if$ + chapter tie.or.space.connect " In " * * + } + if$ + format.btitle.vol.inbook "title" output.check + make.translators output + format.volumetitle output + format.edition output + format.address.publisher.year "publisher" output.check + new.sentence + format.series.number output + format.url output + format.pages "pages" output.check + format.note + format.isbn.issn output + } + { chapter empty$ + { "There's no chapter in " cite$ * warning$ "" * + format.btitle.vol.inbook "title" output.check + } + { type empty$ + { "\Bibchaptername{}" } + { type } + if$ + chapter tie.or.space.connect "" * * + } + if$ + format.volumetitle output + format.book.crossref output.nonnull + format.url output + format.pages "pages" output.check + format.note + } + if$ + part.of.sentence + format.howcited output + fin.entry.endnote +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.artperiodincoll.title "title" output.check + make.translators output + crossref missing$ + { format.incoll.editor.booktitle "booktitle" output.check + format.volumetitle output + format.edition output + format.address.publisher.year "publisher" output.check + new.sentence + format.series.number output + format.url output + format.isbn.issn output + part.of.sentence + format.chapter.pages output + format.note + } + { format.volumetitle output + format.incoll.inproc.crossref output.nonnull + format.url output + format.note + } + if$ + format.howcited output + check.missing.pages + fin.entry.endnote +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.artperiodincoll.title "title" output.check + crossref missing$ + { format.incoll.editor.booktitle "booktitle" output.check + address empty$ + { organization new.sentence.checka + organization output + part.of.sentence + format.address.publisher.year output + } + { format.address.publisher.year "publisher" output.check } + if$ + new.sentence + series empty$ + 'skip$ + { format.series.number output } + if$ + format.url output + format.note + format.isbn.issn output + part.of.sentence + format.pages output + } + { format.incoll.inproc.crossref output.nonnull + format.url output + format.note + } + if$ + format.howcited output + fin.entry.endnote +} + +FUNCTION {conference}{inproceedings} + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { "\bibnf{" organization * "} {} {} {} {}" * output.nonnull } + if$ + } + { format.authors output.nonnull } + if$ + set.after.author.sep output + format.btitle "title" output.check + format.edition output + format.address.organization.manual + format.date output + pages set.period.dash.check + format.pages.book output + format.url output + format.note + format.howcited output + fin.entry.endnote +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.btitle "title" output.check + format.thesis output + set.comma.pages.check + pages new.sentence.checka + format.pages output + format.url output + format.note + format.howcited output + fin.entry.endnote +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.btitle "title" output.check + format.thesis output + set.comma.pages.check + pages new.sentence.checka + format.pages output + format.url output + format.note + format.howcited output + fin.entry.endnote +} + +FUNCTION {jurthesis} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.btitle "title" output.check + format.thesis output + set.comma.pages.check + pages new.sentence.checka + format.pages output + format.url output + format.note + format.howcited output + fin.entry.endnote +} + +FUNCTION {booklet} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.title "title" output.check + format.howpublished.address.year output + format.note + format.url output + format.howcited output + fin.entry.endnote +} + +FUNCTION {misc} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.title output + format.howpublished.address.year output + format.note + format.url output + format.howcited output + fin.entry.endnote +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization empty$ + 'skip$ + { "\biblnfont {" organization * " \organizationname}" * output } + if$ + } + { format.editors output.nonnull } + if$ + set.after.author.sep output + format.btitle "title" output.check + new.sentence + editor empty$ + 'skip$ + { format.proceed.organization output } + if$ + new.sentence + format.series.number output.nonnull + volume empty$ + { "" output.nonnull } + { "\volumeformat {" volume * "} " * "volume" output.check } + if$ + format.address.publisher.year "publisher" output.check + pages set.period.dash.check + format.pages.book output + format.url output + format.note + format.isbn.issn output + format.howcited output + fin.entry.endnote +} + +FUNCTION {techreport} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { editor empty$ + { format.authors output.nonnull } + { format.authors format.editors output.nonnull } + if$ + } + if$ + set.after.author.sep output + format.title "title" output.check + institution new.sentence.checka + format.address.publisher.year output + number new.sentence.checka + format.tr.number.jur "number" output.check + pages set.period.dash.check + format.pages.book output + format.url output + format.note + format.isbn.issn output + format.howcited output + fin.entry.endnote +} + +FUNCTION {www} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.naked.url output + format.howcited output + fin.entry.endnote +} + +FUNCTION {lexicon} +{ output.bibitem + set.after.author.sep output + crossref missing$ + { format.btitle.vol "title" output.check } + { format.btitle "title" output.check } + if$ + author empty$ + { editor empty$ + 'skip$ + { "\edbyname{} " * editor format.editor.names "," * * } + if$ + } + { "\byname{} " author format.names * "," * * } + if$ + make.translators output + format.volumetitle output + format.edition output + format.address.publisher.year "publisher" output.check + new.sentence + format.juradiss.book output + crossref missing$ + { format.series.number output } + { format.book.crossref output.nonnull } + if$ + format.url output + format.pages output + format.totalpages output + format.note + format.isbn.issn output + format.howcited output + fin.entry.endnote +} + +STRINGS { last.archive last.subarchive } + +FUNCTION {init.last.archive } +{ "" 'last.archive := + "" 'last.subarchive := } + +FUNCTION {archival} +{ output.bibitem + archive empty$ + { "" 'last.archive := } + { archive last.archive = + { "} {" archive format.name.sig * "} {} {\jbsamearch{} " * * } + { "\bibanfont{" archive * "archive" output.check + shortarchive empty$ + 'skip$ + { " \jbshortarchformat{" shortarchive * "}" * * } + if$ + "}" * + "} {" archive format.name.sig * "} {} {\jbnotsamearch{} " * * + } + if$ + archive 'last.archive := + } + if$ + subarchive empty$ + { "" 'last.subarchive := } + { subarchive last.subarchive = + 'skip$ + { subarchive output + shortsubarchive empty$ + 'skip$ + { " \jbshortsubarchformat{" shortsubarchive * "}" * * } + if$ + "\jbsubarchsep{} " * + } + if$ + subarchive 'last.subarchive := + } + if$ + sig1 empty$ + 'skip$ + { "\jbarchsig {" * + subarchive empty$ + 'skip$ + { "\jbsamesubarchindent{} " * } + if$ + sig1 * + sig2 empty$ + 'skip$ + { ". " sig2 * * + sig3 empty$ + 'skip$ + { ". " sig3 * * + sig4 empty$ + 'skip$ + { ". " sig4 * * } + if$ + } + if$ + } + if$ + "} {" * + } + if$ + archname missing$ + { "}" * } + { archname "}" * output } + if$ + format.howcited output + fin.entry.endnote +} + +FUNCTION {unpublished}{misc} + +FUNCTION {default.type}{misc} + +MACRO {jan} {"\janname\ "} +MACRO {feb} {"\febname\ "} +MACRO {mar} {"\marname\ "} +MACRO {apr} {"\aprname\ "} +MACRO {may} {"\mayname\ "} +MACRO {jun} {"\junname\ "} +MACRO {jul} {"\julname\ "} +MACRO {aug} {"\augname\ "} +MACRO {sep} {"\sepname\ "} +MACRO {oct} {"\octname\ "} +MACRO {nov} {"\novname\ "} +MACRO {dec} {"\decname\ "} + +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 := % for two: (Jones/de~Bruijn) + s #1 "{vv~}{ll}" format.name$ % for three: (Jones/de~Bruijn/Smith) + s num.names$ duplicate$ % for more: (Jones et\,al.) + #2 < + 'pop$ % for just one person + { duplicate$ duplicate$ + #3 > + swap$ s swap$ "{ff }{vv }{ll}{ jj}" format.name$ "others" = + or + { pop$ "\Bibetal" * } % for 4 or more, or last is `others' + { #2 = + { "\jbbtasep " * s #2 "{vv~}{ll}" format.name$ * } % for (exactly) two + { "\jbbfsasep " * s #2 "{vv~}{ll}" format.name$ * % for three + "\jbbstasep " * s #3 "{vv~}{ll}" format.name$ * + } + if$ + } + if$ + } + if$ + year missing$ + 'skip$ + { "\jbdy {" year * "}" * * }% dummy year to prevent from `1993a' and `2001b' for works by the same author + if$ +} + +FUNCTION {format.editor.lab.names} +{ 's := % for two: (Jones/de~Bruijn) + s #1 "{vv~}{ll}" format.name$ % for three: (Jones/de~Bruijn/Smith) + s num.names$ duplicate$ % for more: (Jones et\,al.) + #2 < + 'pop$ % for just one person + { duplicate$ duplicate$ + #3 > + swap$ s swap$ "{ff }{vv }{ll}{ jj}" format.name$ "others" = + or + { pop$ "\Bibetal" * } % for 4 or more, or last is `others' + { #2 = + { "\jbbtesep " * s #2 "{vv~}{ll}" format.name$ * } % for (exactly) two + { "\jbbfsesep " * s #2 "{vv~}{ll}" format.name$ * % for three + "\jbbstesep " * s #3 "{vv~}{ll}" format.name$ * + } + if$ + } + if$ + } + if$ + year missing$ + 'skip$ + { "\jbdy {" year * "}" * * }% dummy year to prevent from `1993a' and `2001b' for works by the same author + 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.editor.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.label} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.editor.lab.names } + if$ +} + +FUNCTION {calc.label} +{ type$ "book" = type$ "inbook" = or type$ "incollection" = or type$ "commented" = or type$ "lexicon" = or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'label := +} + +FUNCTION {calc.dummy.label} +{ type$ "book" = type$ "inbook" = or type$ "incollection" = or type$ "commented" = or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'dummy.label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{ll{ }}{ ff{ }}{ vv{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "\bibnf {others} {} {} {} {}" = and + { "\Bibetal" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "Der " #4 + "Die " #4 + "Das " #4 + "Ein " #4 + "Eine " #5 + "The " #4 t chop.word + chop.word + chop.word + chop.word + chop.word + 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 {archival.sort} +{ archive empty$ + { shortarchive empty$ + { "to sort, need archive or shortarchive in " cite$ * warning$ "" } + { shortarchive sortify } + if$ + } + { archive sortify } + if$ +} + +FUNCTION {presort} +{ calc.label + calc.dummy.label + dummy.label sortify " " * + sortkey empty$ + { type$ "book" = + type$ "incollection" = or + type$ "inbook" = or + type$ "commented" = or + 'author.editor.sort + { type$ "proceedings" = + 'editor.sort + { type$ "archival" = + 'archival.sort + 'author.sort + if$ + } + if$ + } + if$ + } + { sortkey sort.format.names } + if$ + type$ "archival" = not + { " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + } + { " " + * + subarchive field.or.null sortify + * + " " + * + sig1 field.or.null sortify + * + " " + * + sig2 field.or.null sortify + * + " " + * + sig3 field.or.null sortify + * + " " + * + sig4 field.or.null sortify + * + } + if$ + #1 entry.max$ substring$ + 'sort.label := + sort.label * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +%% FUNCTION {before.sort} { "BEFORE SORT:" top$ } +%% EXECUTE {before.sort} +%% FUNCTION {print.sort.keys} {sort.key$ top$} +%% ITERATE {print.sort.keys} + +SORT + +%% FUNCTION {after.sort} {"AFTER SORT:" top$} +%% EXECUTE {after.sort} +%% ITERATE {print.sort.keys} + + +INTEGERS { last.extra.num number.label extra.extra.num } + +FUNCTION {make.extra.label} +{ last.extra.num #122 < + { last.extra.num #1 + } + { extra.extra.num #0 = + { "a" chr.to.int$ } + { extra.extra.num #1 + } + if$ + 'extra.extra.num := + "a" chr.to.int$ } + if$ + 'last.extra.num := + extra.extra.num #0 = + { last.extra.num int.to.chr$ } + { extra.extra.num int.to.chr$ 'extra.label := + extra.label last.extra.num int.to.chr$ * } + if$ +} + +FUNCTION {forward.pass} +{ w dummy.label = + { make.extra.label 'extra.label := } + { "a" chr.to.int$ 'last.extra.num := + #0 'extra.extra.num := + "" 'extra.label := + dummy.label 'w := + } + if$ + number.label #1 + 'number.label := +} + +FUNCTION {reverse.pass} +{ x "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'x := + extra.label + duplicate$ empty$ + 'skip$ + { "" swap$ * } + if$ + 'extra.label := + dummy.label extra.label * 'dummy.label := +} + +ITERATE {forward.pass} +REVERSE {reverse.pass} + +FUNCTION {bib.sort.order} { sort.label 'sort.key$ := } + +ITERATE {bib.sort.order} + +SORT + +FUNCTION {set.current.authors} +{ author empty$ + { editor empty$ + { organization empty$ + { cite$ 'current-authors := } + { organization 'current-authors := } + if$ + } + { editor format.names #1 entry.max$ substring$ 'current-authors := } +%% ^^^^^^^^^^^^ NOT format.editor.names, otherwise \jb@@arg is always = 0!!! + if$ + } + { author format.names #1 entry.max$ substring$ 'current-authors := } + if$ +} + +STRINGS { previous-authors } + +FUNCTION {initialize.previous.authors} { "" 'previous-authors := } + +FUNCTION {mark.repeat.authors} +{ current-authors previous-authors = + { #1 'repeat-authors := } + 'skip$ + if$ + current-authors 'previous-authors := +} + +ITERATE {set.current.authors} + +EXECUTE {initialize.previous.authors} + +ITERATE {mark.repeat.authors} + +EXECUTE {initialize.previous.authors} + +REVERSE {mark.repeat.authors} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "%" write$ newline$ + "% This bibliography was produced by using jureco.bst" write$ newline$ + "%" write$ newline$ + "\begin{thebibliography}{}" 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 file `jureco.bst'. diff --git a/Master/texmf-dist/bibtex/bst/jurabib/jurunsrt.bst b/Master/texmf-dist/bibtex/bst/jurabib/jurunsrt.bst new file mode 100644 index 00000000000..071e1102b00 --- /dev/null +++ b/Master/texmf-dist/bibtex/bst/jurabib/jurunsrt.bst @@ -0,0 +1,2835 @@ +%% +%% This is file `jurunsrt.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% jurabib.dtx (with options: `jurunsrt') +%% ---------------------------------------- +%% BibTeX style for use with the jurabib package version v0.6 +%% Copyright (C) 1999-2004 Jens Berger (http://www.jurabib.org) +%% See jurabib.ins for the copyright details. +%% +ENTRY{ + address + author + booktitle + chapter + edition + editor + howpublished + institution + isbn + issn + journal + key + language + month + note + number + organization + pages + publisher + school + series + title + type + volume + year +%% + url + urldate + volumetitle + dissyear + howcited + juratitle + juraauthor + shorttitle + shortauthor + ssedition + titleaddon + booktitleaddon + editortype + sortkey + annote + gender + translator + flanguage + oyear + oaddress + opublisher + updated + totalpages + founder + archive + subarchive + shortarchive + shortsubarchive + sig1 + sig2 + sig3 + sig4 + archname + } + { repeat-authors repeat-titles } + { label dummy.label extra.label sort.label current-authors } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +INTEGERS { colon.after period.dash } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'colon.after := + #5 'period.dash := +} + +STRINGS { s t u v w x } + +FUNCTION {output.nonnull} +{ 's := + output.state after.block = + { write$ } + { output.state before.all = + { write$ } + { output.state colon.after = + { "" * write$ } + { output.state period.dash = + { ", " * write$ } + { output.state mid.sentence = + { " " * write$ } + { write$ } + if$ + } + if$ + } + if$ + } + if$ + after.block '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 {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + 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.superscript} +{ edition extract.num "l" change.case$ 's := + s "first" = s "1" = or s "erste" = or + { "1" 't := } + { s "second" = s "2" = or s "zweite" = or + { "2" 't := } + { s "third" = s "3" = or s "dritte" = or + { "3" 't := } + { s "fourth" = s "4" = or s "vierte" = or + { "4" 't := } + { s "fifth" = s "5" = or s "fuenfte" = or + { "5" 't := } + { s "sixth" = s "6" = or s "sechste" = or + { "6" 't := } + { s "seventh" = s "7" = or s "siebte" = or s "siebente" = or + { "7" 't := } + { s "eighth" = s "8" = or s "achte" = or + { "8" 't := } + { s "nineth" = s "9" = or s "neunte" = or + { "9" 't := } + { s #1 #1 substring$ is.num + { s "" * 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +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 {output.bibitem.fst} +{ newline$ + "\bibitem[{" write$ + shortauthor empty$ + { juraauthor empty$ + { author empty$ + { editor empty$ + { organization empty$ + { archive empty$ + { "empty" write$ } + { archive write$ } + if$ + } + { organization write$ } + if$ + } + { label write$ } + if$ + } + { label write$ } + if$ + } + { juraauthor write$ } + if$ + } + { shortauthor write$ } + if$ + "}%" write$ + sortkey empty$ + 'skip$ + { newline$ "% SORTKEY: [" sortkey * "]" * write$ } + if$ + newline$ + shorttitle empty$ + { juratitle empty$ + { journal empty$ + { " {}%" write$ } + { volume empty$ + { year empty$ + { " {" journal * "}%" * write$ } + { " {" journal * "\jbsy {" * year * "}}%" * write$ } + if$ + } + { year empty$ + { " {" journal * "}%" * write$ } + { " {" journal * " " * volume * " " * " \peryearformat {" year * "}}%" * * write$ } + if$ + } + if$ + } + if$ + } + { " {" juratitle * "}%" * write$ } + if$ + } + { " {" shorttitle * "}%" * write$ } + if$ + newline$ + repeat-authors + { " {{1}" write$ } + { " {{0}" write$ } + if$ + howcited empty$ + { "{}" write$ } + { "{" howcited * "}" * write$ } + if$ + type$ empty$ + { "{}" write$ } + { "{" type$ * "}" * write$ } + if$ + year empty$ + { type$ "book" = dissyear empty$ not and + { "{" dissyear * write$ + extra.label "" = + skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + "}" write$ + } + { "{}" write$ } + if$ + } + { "{" year * write$ + extra.label "" = + 'skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + "}" write$ + } + if$ + edition empty$ + { "{}" write$ } + { "{" convert.edition.superscript extract.num * "}" * write$ } + if$ + ssedition empty$ + { "{}" write$ } + { "{" ssedition * "}" * write$ } + if$ + language empty$ + { "{}" write$ } + { "{" language * "}" * write$ } + if$ + pages empty$ + { "{}%" write$ } + { "{" write$ pages n.dashify write$ "}%" write$ } + if$ +} + +FUNCTION {output.bibitem.snd} +{ newline$ + publisher empty$ + { address empty$ + { year empty$ + { " {" write$ } + { " {" write$ + year write$ + extra.label "" = + 'skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + } + if$ + } + { year empty$ + { " {" write$ address write$ } + { " {" write$ address write$ "\bibbdsep {} " write$ + year write$ + extra.label "" = + 'skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + } + if$ + } + if$ + } + { address empty$ + { year empty$ + { " {" write$ publisher write$ } + { " {" write$ publisher write$ "\bibbdsep {} " write$ + year write$ + extra.label "" = + 'skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + } + if$ + } + { year empty$ + { " {" write$ address write$ "\bpubaddr {} " write$ publisher write$ } + { " {" write$ address write$ "\bpubaddr {} " write$ publisher write$ "\bibbdsep {} " write$ + year write$ + extra.label "" = + 'skip$ + { "\el {" write$ extra.label write$ "}" write$ } + if$ + } + if$ + } + if$ + } + if$ + "}}%" write$ newline$ + " {" write$ + title empty$ + { "{}%" write$ newline$ } + { "{" title * + type$ "archival" = + { shortarchive empty$ not + { ", In: " shortarchive * * } + { archive empty$ not + { ", In: " archive * * } + 'skip$ + if$ + } + if$ + shortsubarchive empty$ + 'skip$ + { ", " shortsubarchive * * } + if$ + sig1 empty$ + 'skip$ + { ", " sig1 * * + sig2 empty$ + 'skip$ + { ". " sig2 * * + sig3 empty$ + 'skip$ + { ". " sig3 * * + sig4 empty$ + 'skip$ + { ". " sig4 * * } + if$ + } + if$ + } + if$ + } + if$ + pages empty$ + 'skip$ + { " \jbArchPages {" pages n.dashify * "}" * * } + if$ + } + 'skip$ + if$ + "}%" * write$ newline$ } + if$ + gender empty$ + { " {}" write$ } + { " {" gender * "}" * write$ } + if$ + oyear empty$ + { "{}" write$ } + { "{" oyear * "}" * write$ } + if$ + author empty$ + { editor empty$ + { "{4}" write$ }% author and editor empty + { "{3}" write$ }% author empty, editor not + if$ + } + { editor empty$ + { "{2}" write$ }% editor empty, author not + { "{1}" write$ }% both author and editor given + if$ + } + if$ + "{}{}{}{}{}}%" write$ newline$ + " ]{" write$ + cite$ write$ + "}" write$ + url empty$ + 'skip$ + { newline$ " \jburldef {" write$ cite$ write$ "}{" write$ url write$ "}%" write$ } + if$ + newline$ + " \jbbibargs {" write$ + "" + before.all 'output.state := +} + +FUNCTION {output.bibitem} +{ output.bibitem.fst + output.bibitem.snd +} + +FUNCTION {format.note} +{ note empty$ + 'skip$ + { output.state before.all = + {" \jbnote {} {" * note * "} " * } + {" \jbnote {1} {" * note * "} " * } + if$ + } + if$ +} + +FUNCTION {format.endnote} +{ note empty$ + { "" } + { " \jbendnote {" note * "}" * } + if$ +} + + +FUNCTION {format.juradiss.book} +{ dissyear empty$ + { "" } + { type empty$ + { school empty$ + { "Dissyear but no school in " cite$ * warning$ + " (\alsothesisname {} \jurthesisname" * + year empty$ not year missing$ not and + { "\bibbdsep {} " dissyear * } + 'skip$ + if$ + ")" * + } + { " (\alsothesisname {} \jurthesisname, " school * + year empty$ not year missing$ not and + { "\bibbdsep {} " dissyear * * } + 'skip$ + if$ + ")" * + } + if$ + } + { school empty$ + { "Dissyear but no school in " cite$ * warning$ + " (\alsothesisname {} " type * + year empty$ not year missing$ not and + { "\bibbdsep {} " dissyear * } + 'skip$ + if$ + ")" * + } + { " (\alsothesisname {} " type * + ", " school * * + year empty$ not year missing$ not and + { "\bibbdsep {} " dissyear * * } + 'skip$ + if$ + ")" * + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.thesis} +{ year empty$ + { school empty$ + { "No universtiy in " cite$ * warning$ } + { "There's a university, but no year in " cite$ * warning$ } + if$ + "" + } + { type empty$ + { school empty$ + { "No university in " cite$ * warning$ + type$ "mastersthesis" = + { "\apyformat {\mastersthesisname" * address empty$ 'skip$ { ", " address * * } if$ "\bibbdsep {} " year * "}" * } + { type$ "jurthesis" = + { "\apyformat {\jurthesisname" * address empty$ 'skip$ { ", " address * * } if$ "\bibbdsep {} " year * "}" * } + { "\apyformat {\phdthesisname" * address empty$ 'skip$ { ", " address * * } if$ "\bibbdsep {} " year * "}" * } + if$ + } + if$ + } + { type$ "mastersthesis" = + { "\mastersthesisname, \apyformat {" school * address empty$ 'skip$ { ", " address * * } if$ "\bibbdsep {} " year * * "}" * } + { type$ "jurthesis" = + { "\jurthesisname, \apyformat {" school * address empty$ 'skip$ { ", " address * * } if$ "\bibbdsep {} " year * * "}" * } + { "\phdthesisname, \apyformat {" school * address empty$ 'skip$ { ", " address * * } if$ "\bibbdsep {} " year * * "}" * } + if$ + } + if$ + } + if$ + } + { school empty$ + { "No university in " cite$ * warning$ type + address empty$ 'skip$ { " \apyformat {" address * } if$ "\bibbdsep {} " * * year * "}" * } + { type " \apyformat {" * school * address empty$ 'skip$ { ", " address * * } if$ "\bibbdsep {} " year * * "}" * } + if$ + } + if$ + } + if$ +} + +FUNCTION {set.comma.pages.check} +{ year empty$ + 'skip$ + { pages empty$ + { url empty$ + 'skip$ + { ", " * } + if$ + } + { ", " * } + if$ + } + if$ +} + +FUNCTION {set.period.dash} +{ output.state before.all = + 'skip$ + { period.dash 'output.state := } + if$ +} + +FUNCTION {set.period.dash.check} +{ empty$ + 'skip$ + 'set.period.dash + if$ +} + +FUNCTION {new.sentence} +{ output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ +} + +FUNCTION {part.of.sentence} +{ output.state before.all = + 'skip$ + { mid.sentence 'output.state := } + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + + +FUNCTION {get.final.nonrightbrace.char} +{ { duplicate$ + #-1 #1 substring$ + duplicate$ + "}" = + } + { pop$ + #-2 global.max$ substring$ + } + while$ + swap$ pop$ +} + + +FUNCTION {check.punct.instead.of.add.period} +{ duplicate$ + get.final.nonrightbrace.char + duplicate$ "." = swap$ + duplicate$ "!" = swap$ + "?" = or or + { "} " * } + { "}\bibatsep\ " * } + if$ +} + +FUNCTION {check.punct.instead.of.add.period.art} +{ duplicate$ + get.final.nonrightbrace.char + duplicate$ "." = swap$ + duplicate$ "!" = swap$ + "?" = or or + { "} " * } + { pages empty$ note empty$ url empty$ and and + { "} " * } + { volume empty$ + { pages empty$ + { "}\ajtsep\ " * } + { crossref missing$ + { month empty$ + { "}\ajtsep\ " * } + { "}\ajtsep " * } + if$ + } + { "}\ajtsep " * } + if$ + } + if$ + } + { "}\ajtsep\ " * } + if$ + } + if$ + } + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "\bibtfont {" swap$ check.punct.instead.of.add.period * } + if$ +} + +FUNCTION {journaltitlemarkup} +{ duplicate$ empty$ + { pop$ "" } + { "\bibJTsep \bibjtfont {" swap$ check.punct.instead.of.add.period.art * } + if$ +} + +FUNCTION {incollbooktitlemarkup} +{ duplicate$ empty$ + { pop$ "" } + { "\bibbtfont {" swap$ check.punct.instead.of.add.period * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION { lastnamemarkup } +{ duplicate$ empty$ + { pop$ "" } + { "\bibnf {" swap$ * "}" * } + if$ +} + +FUNCTION { editorlastnamemarkup } + { duplicate$ empty$ + { pop$ "" } + { author empty$ + { "\biblenf {" swap$ * "}" * } % lonely editor(s)! + { "\bibenf {" swap$ * "}" * } + if$ + } + if$ +} + +FUNCTION { othermarkup } + { duplicate$ empty$ + { pop$ " {}" } + { " {" swap$ * "}" * } + if$ +} + +FUNCTION {article.in.journal} +{ duplicate$ empty$ + { pop$ "" } + { author missing$ + { title missing$ + 'skip$ + { journaltitlemarkup "" swap$ * } + if$ + } + { journaltitlemarkup "" swap$ * } + if$ + } + if$ +} + +FUNCTION {format.names} % NEW v0.5 +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ll}" format.name$ 't := t lastnamemarkup 't := + s nameptr "{ff}" format.name$ othermarkup 'u := + s nameptr "{f.}" format.name$ othermarkup 'v := + s nameptr "{vv}" format.name$ othermarkup 'w := + s nameptr "{jj}" format.name$ othermarkup 'x := + t u * v * w * x * 't := + nameptr #1 > + { namesleft #1 > + { numnames #3 > + { "" * } + { numnames #3 < + { "\Bibbtasep " * t * } % between (exactly) two authors + { "\Bibbfsasep " * t * } % between first and second author (if more than two) + if$ + } + if$ + } + { t "\bibnf {others} {} {} {} {}" = + t "\bibnf {others} {} {} {} {} \edfont {\editorsname}" = or + numnames #3 > or + { "\bibIMfont {\Bibetal}" * } + { numnames #3 < + { "\Bibbtasep " * t * } % between (exactly) two authors + { "\Bibbstasep " * t * } % between second and third author + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.editor.names} % NEW v0.5 +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ll}" format.name$ 't := t editorlastnamemarkup 't := + s nameptr "{ff}" format.name$ othermarkup 'u := + s nameptr "{f.}" format.name$ othermarkup 'v := + s nameptr "{vv}" format.name$ othermarkup 'w := + s nameptr "{jj}" format.name$ othermarkup 'x := + t u * v * w * x * 't := + nameptr #1 > + { namesleft #1 > + { numnames #3 > + { "" * } + { numnames #3 < + { "\Bibbtesep " * t * } % between (exactly) two editors + { "\Bibbfsesep " * t * } % between first and second editor (if more than two) + if$ + } + if$ + } + { t "\bibenf {others} {} {} {} {}" = + t "\biblenf {others} {} {} {} {}" = or + t "\bibenf {others} {} {} {} {} \edfont {\editorsname}" = or + t "\biblenf {others} {} {} {} {} \edfont {\editorsname}" = or + numnames #3 > or + { "\bibIMfont {\Bibetal}" * } + { numnames #3 < + { "\Bibbtesep " * t * } % between (exactly) two editors + { "\Bibbstesep " * t * } % between second and third editor + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.name.sig} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff}{ vv}{ ll}{ jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { "" * t * } + { t "others" = + { " et al." * } + { "" * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {indexmarkup} +{ duplicate$ empty$ + { pop$ "{}" } + { "{" swap$ * "}" * } + if$ +} + +FUNCTION {format.names.for.index} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ll}" format.name$ 't := t indexmarkup 't := + s nameptr "{ff}" format.name$ indexmarkup 'u := + s nameptr "{f.}" format.name$ indexmarkup 'v := + s nameptr "{vv}" format.name$ indexmarkup 'w := + s nameptr "{jj}" format.name$ indexmarkup 'x := + t u * v * w * x * 't := + t "{others}{}{}{}{}" = + 'skip$ + { nameptr #1 > + { namesleft #1 > + { "; " * t * } + { + t "others" = + 'skip$ + { "; " * t * } + if$ + } + if$ + } + 't + if$ + } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.founders} +{ founder empty$ + 'skip$ + { author empty$ + 'skip$ + { " in: " * } + if$ + founder format.names "\foundername" * * + editor empty$ + 'skip$ + { author empty$ + { "\afterfoundersep {}" * } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { author empty$ + { editor format.editor.names + editortype empty$ + { editor num.names$ #1 > + { "\fsted {\editorsname}" * } + { "\fsted {\editorname}" * } + if$ + } + { "\fsted {(" editortype * ")}" * * } + if$ + } + { founder empty$ + { "\bibfnfont {;} " * } + { type$ "commented" = + { "\afterfoundersep {}" * } + { "\bibfnfont {;} " * } + if$ + } + if$ + editor format.editor.names * + editortype empty$ + { editor num.names$ #1 > + { " \edfont {\editorsname}" * } + { " \edfont {\editorname}" * } + if$ + } + { " \edfont {(" editortype * ")}" * * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.snd.editors} +{ editor empty$ + { "" * } + { author empty$ + { editortype empty$ + { editor num.names$ #1 > + { "\snded {\sndeditorsname}" * } + { "\snded {\sndeditorname}" * } + if$ + } + { "\snded {(" editortype * ")}" * * } + if$ + } + 'skip$ + if$ + } + if$ +} + +FUNCTION { format.howcited } +{ "} {\bibhowcited}" format.endnote * } + +FUNCTION {fin.entry.endnote} +{ " \jbdoitem {" * + author empty$ + 'skip$ + { author format.names.for.index * } + if$ + "} {" + editor empty$ + 'skip$ + { editor format.names.for.index * } + if$ + "} {" * + organization empty$ + 'skip$ + { "{" organization * "}{}{}{}{}" * * } + if$ + "}" * * write$ + annote missing$ + { " \bibAnnoteFile {" cite$ * "}" * write$ newline$ } + { " \bibAnnote {" annote * "}" * write$ newline$ } + if$ +} + +FUNCTION {count.authors.or.editors} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { "" 't := + nameptr #1 > + { namesleft #1 > + { "" * } + { "s" * } % more than one author/editor, append `s' + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION { set.after.author.sep } +{ author missing$ + { editor missing$ + { organization missing$ + { archive missing$ + { "} {empty} {} {" } + { "} {" archive format.name.sig * "} {} {" * } + if$ + } + { "} {" organization "} {org} {" * * } + if$ + } + { "} {" editor format.name.sig * "} {ed" editor count.authors.or.editors "} {" * * * } + if$ + } + { "} {" author format.name.sig * "} {au" author count.authors.or.editors "} {" * * * } + if$ + author empty$ + { format.snd.editors } + 'skip$ + if$ + "" * +} + + +FUNCTION {format.names.info} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff }{vv }{ll}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { " " * t * } + { t "others" = + { " et al." * } + { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION { format.howcited.comment } +{ edition empty$ + { "} {\bibcommenthowcited}" format.endnote * } + { "} {\bibcommenthowcited}" format.endnote * * + author empty$ editor empty$ not and + { " \jbauthorinfo {" editor format.names.info " " title * * * "}{" cite$ "}" * * * } + { author empty$ shortauthor empty$ not and + { " \jbauthorinfo {" shortauthor format.names.info " " title * * * "}{" cite$ "}" * * * } + { " \jbauthorinfo {" author format.names.info " " title * * * "}{" cite$ "}" * * * } + if$ + } + if$ + } + if$ +} + +FUNCTION { format.howcited.artperiod } +{ "} {\bibartperiodhowcited}" format.endnote * } + +FUNCTION {format.proceed.organization} +{ organization empty$ + { "" } + { organization " \organizationname {}" * } + if$ +} + +FUNCTION {format.titleaddon} +{ title empty$ + { "" } + { titleaddon empty$ + { "" } + { titleaddon "\bibatsep\ " * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { "\bibtfont {" title check.punct.instead.of.add.period * format.titleaddon * } + if$ +} + +FUNCTION {format.artperiodincoll.title} +{ title empty$ + { "" } + { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * } + if$ +} + +FUNCTION {format.volumetitle} +{ volumetitle empty$ + { "" } + { volume empty$ + { "There's a volumetitle but no volume in " cite$ * warning$ volumetitle ", " * } + { volumetitle ", " * } + if$ + } + if$ +} + +FUNCTION {add.extra.label} +{ extra.label "" = + 'skip$ + { "\bibel {" extra.label * "}" * * } + if$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "There's a month but no year in " cite$ * warning$ month } + if$ + } + { month empty$ + { edition empty$ + 'skip$ + { "\jbssedbd {" convert.edition.superscript extract.num * "}" * * } + if$ + year + add.extra.label + } + { month " " * + edition empty$ + 'skip$ + { "\jbssedbd {" convert.edition.superscript extract.num * "}" * * } + if$ + year * + add.extra.label + } + if$ + } + if$ +} + +FUNCTION {format.update} +{ updated missing$ not + { "\updatesep {} \updatename {} " * updated * } + 'skip$ + if$ +} + +FUNCTION {oaddress.opublisher.oyear.format} +{ type$ "book" = type$ "inbook" = type$ "incollection" = or or + { oyear empty$ + { opublisher empty$ + { oaddress empty$ + 'skip$ + { oaddress "\osep {} " * * } + if$ + } + { oaddress empty$ + { opublisher "\osep {} " * * } + { oaddress "\bpubaddr {} " * opublisher "\osep {} " * * * } + if$ + } + if$ + } + { year empty$ + { "oyear without year in " cite$ * warning$ } + 'skip$ + if$ + opublisher empty$ + { oaddress empty$ + { oyear * "\osep {} \reprintname {}, " * } + { oaddress "\bibbdsep {} " * oyear "\osep {} " * * * } + if$ + } + { oaddress empty$ + { opublisher * "\bibbdsep {} " * oyear "\osep {} " * * } + { oaddress "\bpubaddr {} " * opublisher "\bibbdsep {} " * * oyear "\osep {} " * * * } + if$ + } + if$ + } + if$ + } + 'skip$ + if$ +} + +FUNCTION {make.translators} +{ before.all 'output.state := + translator empty$ + { flanguage empty$ + { "" } + { "\translator {}{" flanguage "l" change.case$ * "}" * + type$ "incollection" = not + type$ "article" = not + and + { "{1} " * } + { type$ "incollection" = + { booktitle empty$ + { "{} " * } + { "{1} " * } + if$ + } + { type$ "article" = + { "{1}" * } + { series empty$ + { "{} " * } + { "{1} " * } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + { "\translator {" translator * "}" * + flanguage empty$ + { "{}" * } + { "{" * flanguage "l" change.case$ * "}" * } + if$ + type$ "incollection" = not + type$ "article" = not + and + { "{1} " * } + { + type$ "incollection" = + { booktitle empty$ + { "{} " * } + { "{1} " * } + if$ + } + { type$ "article" = + { "{1} " * } + { series empty$ + { "{} " * } + { "{1} " * } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + before.all 'output.state := +} + + +FUNCTION {checked.inst} +{ institution empty$ + { " \apyformat {" * + oaddress.opublisher.oyear.format + } + { address empty$ not + { " \apyformat {" * } + 'skip$ + if$ + } + if$ +} + +FUNCTION {format.address.publisher.year} +{ publisher empty$ + { address empty$ + { year empty$ + { "Neither address nor year in " cite$ * warning$ "" } + { "No address in " cite$ * warning$ + institution empty$ + { " \apyformat {" oaddress.opublisher.oyear.format format.date * "}" * } + { " \apyformat {" institution * "\bibbdsep {} " * format.date "}" * * } + if$ + } + if$ + } + { year empty$ + { checked.inst address "}" * } + { checked.inst address "\bibbdsep {} " format.date * "}" * * } + if$ + } + if$ + } + { address empty$ + { year empty$ + { "There's only a publisher (no address, no year) in " cite$ * warning$ publisher } + { checked.inst publisher "\bibbdsep {} " * format.date "}" * * } + if$ + } + { year empty$ + { checked.inst address * "\bpubaddr {} " publisher "}" * * }% + { checked.inst address * "\bpubaddr {} " publisher "\bibbdsep {} " * format.date "}" * * * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.howpublished.address.year} +{ howpublished empty$ + { address empty$ + { year empty$ + { "Neither address nor year in " cite$ * warning$ "" } + { "No address in " cite$ * warning$ format.date } + if$ + } + { " \apyformat {" oaddress.opublisher.oyear.format address * "\bibbdsep {} " * format.date "}" * * } + if$ + } + { address empty$ + { year empty$ + { "There's only a howpublished (no address, no year) in " cite$ * warning$ howpublished } + { " \apyformat {" oaddress.opublisher.oyear.format howpublished * "\bibbdsep {} " * format.date "}" * * } + if$ + } + { year empty$ + { " \apyformat {" oaddress.opublisher.oyear.format address * "\bpubaddr {} " * howpublished "}" * * } + { " \apyformat {" oaddress.opublisher.oyear.format address * "\bpubaddr {} " * howpublished * "\bibbdsep {} " * format.date "}" * * } + if$ + } + if$ + } + if$ +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #4 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {bibvol.tie.or.space.connect} +{ duplicate$ text.length$ #4 < + { "~" } + { "{} " } + if$ + swap$ * * +} + +FUNCTION {format.btitle}{ title emphasize format.titleaddon * } + +FUNCTION {format.btitle.vol} +{ number empty$ + { series empty$ + { volume empty$ + { title emphasize format.titleaddon * } + { + title emphasize format.titleaddon * " \volumeformat {" volume * "} " * * + } + if$ + } + { volume empty$ + { title emphasize format.titleaddon * } + { + title emphasize format.titleaddon * "\volumeformat {" volume * "} " * * series "\bibatsep\ " * * + } + if$ + } + if$ + } + { title emphasize format.titleaddon * } + if$ +} + +FUNCTION {format.btitle.vol.inbook} +{ number empty$ + { series empty$ + { volume empty$ + { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * } + { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * + " \volumeformat {" volume * "} " * * + } + if$ + } + { volume empty$ + { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * } + { series emphasize + "\volumeformat {" volume * "} " * * + "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * * } + if$ + } + if$ + } + { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * } + if$ +} + +FUNCTION {format.url} +{ url empty$ + { "" } + { author empty$ title empty$ and + 'skip$ + { " " * } + if$ + urldate empty$ + {"\jburluse {" cite$ * "}" * } + {"\jburluse {" cite$ * "}\bibbudcsep {}\urldatecomment " * urldate * } + if$ + } + if$ +} + +FUNCTION {format.naked.url} +{ url empty$ + { "" } + { urldate empty$ + { title empty$ + 'skip$ + { title emphasize * } + if$ + "\jburluse {" cite$ * "}" * + } + { title empty$ + 'skip$ + { title emphasize * } + if$ + "\jburluse {" cite$ * "}\bibbudcsep {}\urldatecomment " * urldate * + } + if$ + } + if$ +} + +FUNCTION {format.series.number} +{ volume empty$ + { number empty$ + { series empty$ + { "" } + { " \numberandseries {}{" series * "}" * } + if$ + } + { series empty$ + { " \numberandseries {" number * "}{}" * "There's a number but no series in " cite$ * warning$ } + { " \numberandseries {" number * "}{" * series "}" * * } + if$ + } + if$ + } + { series empty$ + { "" } + { type$ "proceedings" = + { " \numberandseries {}{" series * "}" * } % { " (" series * ")" * } + { "" } + if$ + } + if$ + } + if$ +} + +FUNCTION {first.ed} { "\firstedname" } +FUNCTION {second.ed}{ "\secondedname" } +FUNCTION {third.ed} { "\thirdedname" } +FUNCTION {fourth.ed}{ "\fourthedname" } +FUNCTION {fifth.ed} { "\fifthedname" } +FUNCTION {th.ed} { "\thedname" } + +FUNCTION {convert.edition} +{ edition extract.num "l" change.case$ 's := + s "first" = s "1" = or + { first.ed 't := } + { s "second" = s "2" = or + { second.ed 't := } + { s "third" = s "3" = or + { third.ed 't := } + { s "fourth" = s "4" = or + { fourth.ed 't := } + { s "fifth" = s "5" = or + { fifth.ed 't := } + { s #1 #1 substring$ is.num + { s th.ed * 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { "\jbedition {" * convert.edition "~\editionname {}\jbaensep} " * }% dot or not ??????? + if$ +} + +FUNCTION { format.isbn.issn } +{ isbn empty$ + { issn empty$ + { "" } + { "\jbissn {" issn n.dashify * "}" * } + if$ + } + { "\jbisbn {" isbn n.dashify * "}" * } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { " \jbPages{" pages n.dashify * "}" * } + if$ +} + +FUNCTION {multi.pagerange.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "b" = + swap$ "/" = or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {check.missing.pages} +{ pages empty$ + { "Empty pages in " cite$ * warning$ } + { pages multi.pagerange.check + { "" * } + { type$ "article" = type$ "periodical" = or + { "There's only a starting page, no pagerange in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + } + if$ +} + +FUNCTION {format.pages.book} +{ pages empty$ + { "" } + { " \jbpages {" pages " \bibtotalpagesname}" *} + if$ +} + +FUNCTION {format.totalpages} +{ totalpages empty$ + { "" } + { + ", " totalpages "~\bibtotalpagesname" * * + } + if$ +} + +FUNCTION {format.vol.year.num.pages} +{ volume empty$ + { "" } + { " \artvolumeformat {" volume * "}" * + year empty$ + { "There's a volume but no year in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + month empty$ + 'skip$ + { "\ " month * * } + if$ + year empty$ + 'skip$ + { " \artyearformat {" year * add.extra.label "}" * * } + if$ + number empty$ + 'skip$ + { "\artnumberformat {" number * "}" * * } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { "" format.pages * * } + if$ + } + if$ +} + +FUNCTION {format.vol.bracedyear.num.pages} +{ volume empty$ + { "" } + { " \pervolumeformat {" volume * "}" * + year empty$ + { "There's a volume but no year in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + year empty$ + 'skip$ + { " \peryearformat {" year * add.extra.label "}" * * } + if$ + month empty$ + 'skip$ + { ", " month * * } + if$ + number empty$ + 'skip$ + { ", \pernumberformat {" number * "}" * * } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { "" format.pages * * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "\unskip.\,-- \bibchapterlongname" } + { "\unskip.\,-- " type * } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { format.pages * } + if$ + } + if$ +} + +FUNCTION {format.booktitleaddon} +{ booktitle empty$ + { "" } + { booktitleaddon empty$ + { "" } + { booktitleaddon } + if$ + } + if$ +} + +FUNCTION {format.incoll.editor.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { volume empty$ + { "\incolledformat {}{}{" booktitle incollbooktitlemarkup format.booktitleaddon * * "}{}" * + booktitleaddon empty$ + { "{} " * } + { "{1} " * } + if$ + } + { "\incolledformat {}{}{" booktitle incollbooktitlemarkup format.booktitleaddon * * "}{" * volume * "}" * + booktitleaddon empty$ + { "{} " * } + { "{1} " * } + if$ + } + if$ + } + { volume empty$ + { "\incolledformat {" + editor empty$ + { "" } + { editor format.editor.names "}" * * + editortype empty$ + { editor num.names$ #1 > + { "{\edfont {\editorsname}}{" * } + { "{\edfont {\editorname}}{" * } + if$ + } + { "{\edfont {(" * editortype * ")}}{" * } + if$ + } + if$ + booktitle incollbooktitlemarkup * format.booktitleaddon * "}{}" * + booktitleaddon empty$ + { "{} " * } + { "{1} " * } + if$ + } + { "\incolledformat {" * + editor empty$ + { "" } + { editor format.editor.names "}" * * + editortype empty$ + { editor num.names$ #1 > + { "{\edfont {\editorsname}}{" * } + { "{\edfont {\editorname}}{" * } + if$ + } + { "{\edfont {(" * editortype * ")}}{" * } + if$ + } + if$ + booktitle incollbooktitlemarkup * format.booktitleaddon * "}{" volume * "}" * + booktitleaddon empty$ + { "{} " * } + { "{1} " * } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.tr.number.jur} +{ type empty$ + { number empty$ + { " -- \technicalreportname {} " } + { "~(" number * ").\,-- \technicalreportname {} " * } + if$ + } + { number empty$ + { " -- " type * } + { "~(" number * ").\,-- " type * " " * * } + if$ + } + if$ +} + +FUNCTION {format.article.crossref.bracedyear} +{ key empty$ + { journal empty$ + { "Need key or journal for " cite$ * " to crossref " * crossref * warning$ "" } + { "\bibJTsep\bibjtfont {" journal * check.punct.instead.of.add.period.art * } + if$ + volume empty$ + { "No volume in " cite$ * warning$ } + { " \pervolumeformat {" volume * "} " * } + if$ + year empty$ + { "No year in " cite$ * warning$ } + { "\peryearformat {" year * add.extra.label "}" * * } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { format.pages * } + if$ + } + if$ + } + { "" key * } + if$ + "\ \protect\jbcrossrefchecked {" * crossref * "}\unskip" * +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "Need key or journal for " cite$ * " to crossref " * crossref * warning$ "" } + { "\bibJTsep\bibjtfont {" journal * check.punct.instead.of.add.period.art * } + if$ + } + { "" key * } + if$ + year empty$ + 'skip$ + { year * } + if$ + " \protect\jbcrossrefchecked {" crossref * "}" * +} + +FUNCTION {format.book.crossref} +{ 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$ "" * } + { "" * } + if$ + } + { key * } + if$ + } + { "" * } + if$ + volume empty$ + { "Empty volume in " cite$ * "'s crossref of " * crossref * warning$ "" + " \protect\jbcrossrefchecked {" * crossref * "}\unskip" * } + { " \protect\jbcrossrefchecked[" * volume * "]{" * crossref "}\unskip" * } + if$ +} + +FUNCTION {format.incoll.inproc.crossref} +{ " \protect\jbincollcrossref {" * crossref * "}" * + editor empty$ + { "{}" * } + { "{1}" * } + if$ + format.pages % *<== 0.5f removed too. +} + +FUNCTION { format.editors.organization } +{ organization empty$ + 'skip$ + { type$ "misc" = + { organization } + { author empty$ + { editor empty$ + { " " organization * " \organizationname {}" * } + { "; " organization * " \organizationname {}" * } + if$ + } + { "; " organization * " \organizationname {}" * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.address.organization.manual} +{ author empty$ + { organization empty$ + { address empty$ + 'skip$ + { address output part.of.sentence + year empty$ not { "\bibbdsep {}" *} 'skip$ if$ + } + if$ + } + 'skip$ + if$ + } + { address empty$ + { organization empty$ + 'skip$ + { organization output part.of.sentence + year empty$ not { "\bibbdsep {}" *} 'skip$ if$ + } + if$ + } + { organization empty$ + { address output part.of.sentence } + { address "\bpubaddr {} " * organization * output part.of.sentence } + if$ + year empty$ not { "\bibbdsep {}" *} 'skip$ if$ + } + if$ + } + if$ +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.artperiodincoll.title "title" output.check + crossref missing$ + { journal article.in.journal output.nonnull + new.sentence + format.vol.year.num.pages output + } + { format.article.crossref output.nonnull } + if$ + format.url output + format.note + format.isbn.issn output + format.howcited.artperiod output + check.missing.pages + fin.entry.endnote +} + +FUNCTION {commented} +{ output.bibitem + author empty$ + { editor empty$ + { format.founders } + { format.founders format.editors "editor" output.check } + if$ + } + { editor empty$ + { format.authors format.founders output.nonnull } + { format.authors format.founders format.editors output.nonnull } + if$ + } + if$ + set.after.author.sep output + crossref missing$ + { format.btitle.vol "title" output.check } + { format.btitle "title" output.check } + if$ + format.volumetitle output + format.edition output + format.address.publisher.year "publisher" output.check + format.update + new.sentence + crossref missing$ + { format.series.number output } + { format.book.crossref output.nonnull } + if$ + format.url output + format.pages output + format.note + format.howcited.comment output + fin.entry.endnote +} + +FUNCTION {periodical} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.artperiodincoll.title "title" output.check + crossref missing$ + { journal article.in.journal output.nonnull + new.sentence + format.vol.bracedyear.num.pages output + } + { new.sentence format.article.crossref.bracedyear output.nonnull } + if$ + format.url output + format.note + format.isbn.issn output + format.howcited.artperiod output + fin.entry.endnote +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { editor empty$ + { "" "author and editor" output.check } + { format.editors output.nonnull } + if$ + } + { editor empty$ + { format.authors output.nonnull } + { format.authors "\jbtiafed {" format.editors * "}" * output.nonnull } + if$ + } + if$ + set.after.author.sep output + crossref missing$ + { format.btitle.vol "title" output.check } + { format.btitle "title" output.check } + if$ + author empty$ not editor empty$ not and + { "\jbedafti {\edbyname {} " editor * "," * * "} " * } + 'skip$ + if$ + make.translators output + format.volumetitle output + format.edition output + format.address.publisher.year "publisher" output.check + new.sentence + format.juradiss.book output + crossref missing$ + { format.series.number output } + { format.book.crossref output.nonnull } + if$ + format.url output + format.pages output + format.totalpages output + format.note + format.isbn.issn output + format.howcited output + fin.entry.endnote +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { editor empty$ + { format.authors output.nonnull } + { format.authors format.editors output.nonnull } + if$ + } + if$ + set.after.author.sep output + crossref missing$ + { chapter empty$ + { "There's no chapter in " cite$ * warning$ "" * } + { type empty$ + { "\Bibchaptername{}" } + { type } + if$ + chapter tie.or.space.connect " In " * * + } + if$ + format.btitle.vol.inbook "title" output.check + make.translators output + format.volumetitle output + format.edition output + format.address.publisher.year "publisher" output.check + new.sentence + format.series.number output + format.url output + format.pages "pages" output.check + format.note + format.isbn.issn output + } + { chapter empty$ + { "There's no chapter in " cite$ * warning$ "" * + format.btitle.vol.inbook "title" output.check + } + { type empty$ + { "\Bibchaptername{}" } + { type } + if$ + chapter tie.or.space.connect "" * * + } + if$ + format.volumetitle output + format.book.crossref output.nonnull + format.url output + format.pages "pages" output.check + format.note + } + if$ + part.of.sentence + format.howcited output + fin.entry.endnote +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.artperiodincoll.title "title" output.check + make.translators output + crossref missing$ + { format.incoll.editor.booktitle "booktitle" output.check + format.volumetitle output + format.edition output + format.address.publisher.year "publisher" output.check + new.sentence + format.series.number output + format.url output + format.isbn.issn output + part.of.sentence + format.chapter.pages output + format.note + } + { format.volumetitle output + format.incoll.inproc.crossref output.nonnull + format.url output + format.note + } + if$ + format.howcited output + check.missing.pages + fin.entry.endnote +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.artperiodincoll.title "title" output.check + crossref missing$ + { format.incoll.editor.booktitle "booktitle" output.check + address empty$ + { organization new.sentence.checka + organization output + part.of.sentence + format.address.publisher.year output + } + { format.address.publisher.year "publisher" output.check } + if$ + new.sentence + series empty$ + 'skip$ + { format.series.number output } + if$ + format.url output + format.note + format.isbn.issn output + part.of.sentence + format.pages output + } + { format.incoll.inproc.crossref output.nonnull + format.url output + format.note + } + if$ + format.howcited output + fin.entry.endnote +} + +FUNCTION {conference}{inproceedings} + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { "\bibnf{" organization * "} {} {} {} {}" * output.nonnull } + if$ + } + { format.authors output.nonnull } + if$ + set.after.author.sep output + format.btitle "title" output.check + format.edition output + format.address.organization.manual + format.date output + pages set.period.dash.check + format.pages.book output + format.url output + format.note + format.howcited output + fin.entry.endnote +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.btitle "title" output.check + format.thesis output + set.comma.pages.check + pages new.sentence.checka + format.pages output + format.url output + format.note + format.howcited output + fin.entry.endnote +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.btitle "title" output.check + format.thesis output + set.comma.pages.check + pages new.sentence.checka + format.pages output + format.url output + format.note + format.howcited output + fin.entry.endnote +} + +FUNCTION {jurthesis} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.btitle "title" output.check + format.thesis output + set.comma.pages.check + pages new.sentence.checka + format.pages output + format.url output + format.note + format.howcited output + fin.entry.endnote +} + +FUNCTION {booklet} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.title "title" output.check + format.howpublished.address.year output + format.note + format.url output + format.howcited output + fin.entry.endnote +} + +FUNCTION {misc} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.title output + format.howpublished.address.year output + format.note + format.url output + format.howcited output + fin.entry.endnote +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization empty$ + 'skip$ + { "\biblnfont {" organization * " \organizationname}" * output } + if$ + } + { format.editors output.nonnull } + if$ + set.after.author.sep output + format.btitle "title" output.check + new.sentence + editor empty$ + 'skip$ + { format.proceed.organization output } + if$ + new.sentence + format.series.number output.nonnull + volume empty$ + { "" output.nonnull } + { "\volumeformat {" volume * "} " * "volume" output.check } + if$ + format.address.publisher.year "publisher" output.check + pages set.period.dash.check + format.pages.book output + format.url output + format.note + format.isbn.issn output + format.howcited output + fin.entry.endnote +} + +FUNCTION {techreport} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { editor empty$ + { format.authors output.nonnull } + { format.authors format.editors output.nonnull } + if$ + } + if$ + set.after.author.sep output + format.title "title" output.check + institution new.sentence.checka + format.address.publisher.year output + number new.sentence.checka + format.tr.number.jur "number" output.check + pages set.period.dash.check + format.pages.book output + format.url output + format.note + format.isbn.issn output + format.howcited output + fin.entry.endnote +} + +FUNCTION {www} +{ output.bibitem + format.authors "author" output.check + set.after.author.sep output + format.naked.url output + format.howcited output + fin.entry.endnote +} + +FUNCTION {lexicon} +{ output.bibitem + set.after.author.sep output + crossref missing$ + { format.btitle.vol "title" output.check } + { format.btitle "title" output.check } + if$ + author empty$ + { editor empty$ + 'skip$ + { "\edbyname{} " * editor format.editor.names "," * * } + if$ + } + { "\byname{} " author format.names * "," * * } + if$ + make.translators output + format.volumetitle output + format.edition output + format.address.publisher.year "publisher" output.check + new.sentence + format.juradiss.book output + crossref missing$ + { format.series.number output } + { format.book.crossref output.nonnull } + if$ + format.url output + format.pages output + format.totalpages output + format.note + format.isbn.issn output + format.howcited output + fin.entry.endnote +} + +STRINGS { last.archive last.subarchive } + +FUNCTION {init.last.archive } +{ "" 'last.archive := + "" 'last.subarchive := } + +FUNCTION {archival} +{ output.bibitem + archive empty$ + { "" 'last.archive := } + { archive last.archive = + { "} {" archive format.name.sig * "} {} {\jbsamearch{} " * * } + { "\bibanfont{" archive * "archive" output.check + shortarchive empty$ + 'skip$ + { " \jbshortarchformat{" shortarchive * "}" * * } + if$ + "}" * + "} {" archive format.name.sig * "} {} {\jbnotsamearch{} " * * + } + if$ + archive 'last.archive := + } + if$ + subarchive empty$ + { "" 'last.subarchive := } + { subarchive last.subarchive = + 'skip$ + { subarchive output + shortsubarchive empty$ + 'skip$ + { " \jbshortsubarchformat{" shortsubarchive * "}" * * } + if$ + "\jbsubarchsep{} " * + } + if$ + subarchive 'last.subarchive := + } + if$ + sig1 empty$ + 'skip$ + { "\jbarchsig {" * + subarchive empty$ + 'skip$ + { "\jbsamesubarchindent{} " * } + if$ + sig1 * + sig2 empty$ + 'skip$ + { ". " sig2 * * + sig3 empty$ + 'skip$ + { ". " sig3 * * + sig4 empty$ + 'skip$ + { ". " sig4 * * } + if$ + } + if$ + } + if$ + "} {" * + } + if$ + archname missing$ + { "}" * } + { archname "}" * output } + if$ + format.howcited output + fin.entry.endnote +} + +FUNCTION {unpublished}{misc} + +FUNCTION {default.type}{misc} + +MACRO {jan} {"\janname\ "} +MACRO {feb} {"\febname\ "} +MACRO {mar} {"\marname\ "} +MACRO {apr} {"\aprname\ "} +MACRO {may} {"\mayname\ "} +MACRO {jun} {"\junname\ "} +MACRO {jul} {"\julname\ "} +MACRO {aug} {"\augname\ "} +MACRO {sep} {"\sepname\ "} +MACRO {oct} {"\octname\ "} +MACRO {nov} {"\novname\ "} +MACRO {dec} {"\decname\ "} + +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 := % for two: (Jones/de~Bruijn) + s #1 "{vv~}{ll}" format.name$ % for three: (Jones/de~Bruijn/Smith) + s num.names$ duplicate$ % for more: (Jones et\,al.) + #2 < + 'pop$ % for just one person + { duplicate$ duplicate$ + #3 > + swap$ s swap$ "{ff }{vv }{ll}{ jj}" format.name$ "others" = + or + { pop$ "\Bibetal" * } % for 4 or more, or last is `others' + { #2 = + { "\jbbtasep " * s #2 "{vv~}{ll}" format.name$ * } % for (exactly) two + { "\jbbfsasep " * s #2 "{vv~}{ll}" format.name$ * % for three + "\jbbstasep " * s #3 "{vv~}{ll}" format.name$ * + } + if$ + } + if$ + } + if$ + year missing$ + 'skip$ + { "\jbdy {" year * "}" * * }% dummy year to prevent from `1993a' and `2001b' for works by the same author + if$ +} + +FUNCTION {format.editor.lab.names} +{ 's := % for two: (Jones/de~Bruijn) + s #1 "{vv~}{ll}" format.name$ % for three: (Jones/de~Bruijn/Smith) + s num.names$ duplicate$ % for more: (Jones et\,al.) + #2 < + 'pop$ % for just one person + { duplicate$ duplicate$ + #3 > + swap$ s swap$ "{ff }{vv }{ll}{ jj}" format.name$ "others" = + or + { pop$ "\Bibetal" * } % for 4 or more, or last is `others' + { #2 = + { "\jbbtesep " * s #2 "{vv~}{ll}" format.name$ * } % for (exactly) two + { "\jbbfsesep " * s #2 "{vv~}{ll}" format.name$ * % for three + "\jbbstesep " * s #3 "{vv~}{ll}" format.name$ * + } + if$ + } + if$ + } + if$ + year missing$ + 'skip$ + { "\jbdy {" year * "}" * * }% dummy year to prevent from `1993a' and `2001b' for works by the same author + 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.editor.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.label} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.editor.lab.names } + if$ +} + +FUNCTION {calc.label} +{ type$ "book" = type$ "inbook" = or type$ "incollection" = or type$ "commented" = or type$ "lexicon" = or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'label := +} + +FUNCTION {calc.dummy.label} +{ type$ "book" = type$ "inbook" = or type$ "incollection" = or type$ "commented" = or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'dummy.label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{ll{ }}{ ff{ }}{ vv{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "\bibnf {others} {} {} {} {}" = and + { "\Bibetal" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "Der " #4 + "Die " #4 + "Das " #4 + "Ein " #4 + "Eine " #5 + "The " #4 t chop.word + chop.word + chop.word + chop.word + chop.word + 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 {archival.sort} +{ archive empty$ + { shortarchive empty$ + { "to sort, need archive or shortarchive in " cite$ * warning$ "" } + { shortarchive sortify } + if$ + } + { archive sortify } + if$ +} + +FUNCTION {presort} +{ calc.label + calc.dummy.label +} + +ITERATE {presort} + +%% FUNCTION {before.sort} { "BEFORE SORT:" top$ } +%% EXECUTE {before.sort} +%% FUNCTION {print.sort.keys} {sort.key$ top$} +%% ITERATE {print.sort.keys} + + +%% FUNCTION {after.sort} {"AFTER SORT:" top$} +%% EXECUTE {after.sort} +%% ITERATE {print.sort.keys} + + +INTEGERS { last.extra.num number.label extra.extra.num } + +FUNCTION {make.extra.label} +{ last.extra.num #122 < + { last.extra.num #1 + } + { extra.extra.num #0 = + { "a" chr.to.int$ } + { extra.extra.num #1 + } + if$ + 'extra.extra.num := + "a" chr.to.int$ } + if$ + 'last.extra.num := + extra.extra.num #0 = + { last.extra.num int.to.chr$ } + { extra.extra.num int.to.chr$ 'extra.label := + extra.label last.extra.num int.to.chr$ * } + if$ +} + +FUNCTION {forward.pass} +{ w dummy.label = + { make.extra.label 'extra.label := } + { "a" chr.to.int$ 'last.extra.num := + #0 'extra.extra.num := + "" 'extra.label := + dummy.label 'w := + } + if$ + number.label #1 + 'number.label := +} + +FUNCTION {reverse.pass} +{ x "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'x := + extra.label + duplicate$ empty$ + 'skip$ + { "" swap$ * } + if$ + 'extra.label := + dummy.label extra.label * 'dummy.label := +} + +ITERATE {forward.pass} +REVERSE {reverse.pass} + +FUNCTION {bib.sort.order} { sort.label 'sort.key$ := } + +ITERATE {bib.sort.order} + +SORT + +FUNCTION {set.current.authors} +{ author empty$ + { editor empty$ + { organization empty$ + { cite$ 'current-authors := } + { organization 'current-authors := } + if$ + } + { editor format.names #1 entry.max$ substring$ 'current-authors := } +%% ^^^^^^^^^^^^ NOT format.editor.names, otherwise \jb@@arg is always = 0!!! + if$ + } + { author format.names #1 entry.max$ substring$ 'current-authors := } + if$ +} + +STRINGS { previous-authors } + +FUNCTION {initialize.previous.authors} { "" 'previous-authors := } + +FUNCTION {mark.repeat.authors} +{ current-authors previous-authors = + { #1 'repeat-authors := } + 'skip$ + if$ + current-authors 'previous-authors := +} + +ITERATE {set.current.authors} + +EXECUTE {initialize.previous.authors} + +ITERATE {mark.repeat.authors} + +EXECUTE {initialize.previous.authors} + +REVERSE {mark.repeat.authors} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "%" write$ newline$ + "% This bibliography was produced by using jurabib.bst" write$ newline$ + "%" write$ newline$ + "\begin{thebibliography}{}" 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 file `jurunsrt.bst'. |