From dd5347d453541300a1195d59f647c2760c44cf56 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 10 Jul 2019 20:27:00 +0000 Subject: bath-bst (10jul19) git-svn-id: svn://tug.org/texlive/trunk@51595 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/bibtex/bst/bath-bst/bath.bst | 416 ++++++++++++++---------- Master/texmf-dist/bibtex/bst/bath-bst/bathx.bst | 416 ++++++++++++++---------- 2 files changed, 478 insertions(+), 354 deletions(-) (limited to 'Master/texmf-dist/bibtex') diff --git a/Master/texmf-dist/bibtex/bst/bath-bst/bath.bst b/Master/texmf-dist/bibtex/bst/bath-bst/bath.bst index 253d236913e..e42be4ff86a 100644 --- a/Master/texmf-dist/bibtex/bst/bath-bst/bath.bst +++ b/Master/texmf-dist/bibtex/bst/bath-bst/bath.bst @@ -41,6 +41,7 @@ ENTRY organization pages publisher + pubstate school series sortyear @@ -144,19 +145,16 @@ FUNCTION {continue.clause} if$ } FUNCTION {date.block} -{ - new.block +{ new.block } FUNCTION {bibinfo.check} { swap$ duplicate$ missing$ - { - pop$ pop$ + { pop$ pop$ "" } { duplicate$ empty$ - { - swap$ pop$ + { swap$ pop$ } { swap$ "\bibinfo{" swap$ * "}{" * swap$ * "}" * @@ -168,13 +166,11 @@ FUNCTION {bibinfo.check} FUNCTION {bibinfo.warn} { swap$ duplicate$ missing$ - { - swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ + { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" } { duplicate$ empty$ - { - swap$ "empty " swap$ * " in " * cite$ * warning$ + { swap$ "empty " swap$ * " in " * cite$ * warning$ } { swap$ "\bibinfo{" swap$ * "}{" * swap$ * "}" * @@ -262,7 +258,7 @@ FUNCTION {bbl.etal} { "et~al." } FUNCTION {bbl.editors} -{ "eds." } +{ "eds" } FUNCTION {bbl.editor} { "ed." } @@ -345,6 +341,18 @@ FUNCTION {bbl.online} FUNCTION {bbl.nodate} { "n.d." } +FUNCTION {bbl.inpreparation} +{ "preprint" } + +FUNCTION {bbl.submitted} +{ "preprint" } + +FUNCTION {bbl.inpress} +{ "in press" } + +FUNCTION {bbl.unpublished} +{ "Unpublished" } + MACRO {jan} {"January"} MACRO {feb} {"February"} @@ -394,90 +402,85 @@ INTEGERS { nameptr namesleft numnames } STRINGS { bibinfo } FUNCTION {format.names} { 'bibinfo := - duplicate$ empty$ 'skip$ { - 's := - "" 't := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr - "{ll}{, jj}{, f{.}.}{~vv}" - format.name$ - bibinfo bibinfo.check - 't := - nameptr #1 > - { - namesleft #1 > - { ", " * t * } - { - s nameptr "{ll}" format.name$ duplicate$ "others" = - { 't := } - { pop$ } - if$ - t "others" = - { - " " * bbl.etal * - } - { - bbl.and - space.word * t * + duplicate$ empty$ + 'skip$ + { 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{ll}{, jj}{, f{.}.}{~vv}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { " " * bbl.etal * + } + { bbl.and + space.word * t * + } + if$ } if$ } + 't if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := + while$ } - while$ - } if$ + if$ } FUNCTION {format.names.ed} { 'bibinfo := - duplicate$ empty$ 'skip$ { - 's := - "" 't := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr - "{f{.}.~}{vv~}{ll}{ jj}" - format.name$ - bibinfo bibinfo.check - 't := - nameptr #1 > - { - namesleft #1 > - { ", " * t * } - { - s nameptr "{ll}" format.name$ duplicate$ "others" = - { 't := } - { pop$ } - if$ - t "others" = - { - - " " * bbl.etal * - } - { - bbl.and - space.word * t * + duplicate$ empty$ + 'skip$ + { 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{f{.}.~}{vv~}{ll}{ jj}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { " " * bbl.etal * + } + { bbl.and + space.word * t * + } + if$ } if$ } + 't if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := + while$ } - while$ - } if$ + if$ } FUNCTION {format.authors} { author "author" format.names @@ -486,8 +489,7 @@ FUNCTION {get.bbl.editor} { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } FUNCTION {format.editors} { editor "editor" format.names duplicate$ empty$ 'skip$ - { - "," * + { "," * " " * get.bbl.editor * @@ -496,8 +498,7 @@ FUNCTION {format.editors} } FUNCTION {format.translators} { translator "translator" format.names.ed duplicate$ empty$ 'skip$ - { - "." * + { "," * " " * bbl.translator * "(" swap$ * @@ -516,20 +517,16 @@ FUNCTION {format.full.names} "{vv~}{ll}" format.name$ 't := nameptr #1 > - { - namesleft #1 > + { namesleft #1 > { ", " * t * } - { - s nameptr "{ll}" format.name$ duplicate$ "others" = + { s nameptr "{ll}" format.name$ duplicate$ "others" = { 't := } { pop$ } if$ t "others" = - { - " " * bbl.etal * + { " " * bbl.etal * } - { - bbl.and + { bbl.and space.word * t * } if$ @@ -638,8 +635,7 @@ FUNCTION {format.btitle} if$ "title" bibinfo.check duplicate$ empty$ 'skip$ - { - emphasize + { emphasize select.language } if$ @@ -681,12 +677,10 @@ FUNCTION {format.booktitle} } FUNCTION {format.in.ed.booktitle} { format.booktitle duplicate$ empty$ 'skip$ - { - editor "editor" format.names.ed duplicate$ empty$ 'pop$ - { - "," * + { editor "editor" format.names.ed duplicate$ empty$ 'pop$ + { "," * " " * - get.bbl.editor + get.bbl.editor add.period$ " " * * swap$ * @@ -837,8 +831,7 @@ FUNCTION {convert.edition} } FUNCTION {format.edition} { edition duplicate$ empty$ 'skip$ - { - convert.edition + { convert.edition output.state mid.sentence = { "l" } { "t" } @@ -863,8 +856,7 @@ FUNCTION {format.booklet.type} if$ } FUNCTION {add.cmd.number} -{ - ". " swap$ "number" bibinfo.check * +{ ". " swap$ "number" bibinfo.check * } FUNCTION {format.legr.number} { series field.or.null 's := @@ -999,26 +991,65 @@ FUNCTION {format.chapter} } if$ } -FUNCTION {format.series.chapter.number} +FUNCTION {format.series.number.chapter} { series duplicate$ empty$ - { pop$ "" } + { pop$ "(" } { "series" bibinfo.check "(" swap$ * + } + if$ + type duplicate$ empty$ + { pop$ + number duplicate$ empty$ + 'pop$ + { "number" bibinfo.check + swap$ duplicate$ "(" = + { swap$ * } + { ", " * swap$ * } + if$ + } + if$ chapter duplicate$ empty$ 'pop$ { "chapter" bibinfo.check - ", c." swap$ * * + swap$ duplicate$ "(" = + { swap$ * } + { ", c." * swap$ * } + if$ } if$ + } + { "type" bibinfo.check + swap$ duplicate$ "(" = + { swap$ * } + { ", " * swap$ * } + if$ number duplicate$ empty$ - 'pop$ + { pop$ + chapter duplicate$ empty$ + 'pop$ + { "chapter" bibinfo.check + " c." swap$ * * + } + if$ + } { "number" bibinfo.check - ", " swap$ * * + " " swap$ * * + chapter duplicate$ empty$ + 'pop$ + { "chapter" bibinfo.check + ", c." swap$ * * + } + if$ } if$ - ")" * } if$ + ")" * + duplicate$ "()" = + { pop$ "" } + 'skip$ + if$ } FUNCTION {format.case.number} { casenumber duplicate$ empty$ @@ -1086,8 +1117,7 @@ FUNCTION {format.org.or.pub} "" address empty$ t empty$ and 'skip$ - { - address "address" bibinfo.check * + { address "address" bibinfo.check * t empty$ 'skip$ { address empty$ @@ -1106,13 +1136,23 @@ FUNCTION {format.publisher.address} FUNCTION {format.organization.address} { publisher empty$ { organization "organization" bibinfo.check format.org.or.pub } - { publisher "publisher" bibinfo.warn format.org.or.pub } + { publisher "publisher" bibinfo.warn format.org.or.pub + organization duplicate$ empty$ + 'pop$ + { "organization" bibinfo.check ". " * swap$ * } + if$ + } if$ } FUNCTION {format.institution.address} { publisher empty$ { institution "institution" bibinfo.check format.org.or.pub } - { publisher "publisher" bibinfo.warn format.org.or.pub } + { publisher "publisher" bibinfo.warn format.org.or.pub + institution duplicate$ empty$ + 'pop$ + { "institution" bibinfo.check ". " * swap$ * } + if$ + } if$ } FUNCTION {format.library} @@ -1201,8 +1241,7 @@ FUNCTION {multi.page.check} multiresult } FUNCTION {n.dashify} -{ - 't := +{ 't := "" { t empty$ not } { t #1 #1 substring$ "-" = @@ -1228,12 +1267,10 @@ FUNCTION {n.dashify} FUNCTION {format.pages} { pages duplicate$ empty$ 'skip$ { duplicate$ multi.page.check - { - bbl.pages swap$ + { bbl.pages swap$ n.dashify } - { - bbl.page swap$ + { bbl.page swap$ } if$ "pages" bibinfo.check @@ -1245,8 +1282,7 @@ FUNCTION {format.journal.pages} { pages duplicate$ empty$ 'pop$ { swap$ duplicate$ empty$ { pop$ pop$ format.pages } - { - ", " * + { ", " * swap$ n.dashify pages multi.page.check @@ -1265,8 +1301,7 @@ FUNCTION {format.journal.eid} { eid "eid" bibinfo.check duplicate$ empty$ 'pop$ { swap$ duplicate$ empty$ 'skip$ - { - ", " * + { ", " * } if$ swap$ * @@ -1274,25 +1309,41 @@ FUNCTION {format.journal.eid} if$ } FUNCTION {format.vol.num.pages} -{ volume field.or.null - duplicate$ empty$ 'skip$ - { - "volume" bibinfo.check +{ pubstate field.or.null + duplicate$ "inpress" = + { pop$ bbl.inpress } + { duplicate$ "submitted" = + { pop$ bbl.submitted } + { duplicate$ "inpreparation" = + { pop$ bbl.inpreparation } + { pop$ "" } + if$ + } + if$ } if$ - number "number" bibinfo.check duplicate$ empty$ 'skip$ - { - swap$ duplicate$ empty$ - { "there's a number but no volume in " cite$ * warning$ } - 'skip$ + duplicate$ empty$ + { pop$ + volume field.or.null + duplicate$ empty$ 'skip$ + { "volume" bibinfo.check + } + if$ + number "number" bibinfo.check duplicate$ empty$ 'skip$ + { swap$ duplicate$ empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + swap$ + "(" swap$ * ")" * + } + if$ * + eid empty$ + { format.journal.pages } + { format.journal.eid } if$ - swap$ - "(" swap$ * ")" * } - if$ * - eid empty$ - { format.journal.pages } - { format.journal.eid } + 'skip$ if$ } FUNCTION {format.chapter.pages} @@ -1323,17 +1374,20 @@ FUNCTION {format.journal.series.vol.pages} volume empty$ and pages empty$ - and - eid empty$ and 'skip$ { " " * } if$ series "series" bibinfo.check volume "volume" bibinfo.check * - duplicate$ empty$ pages empty$ and + duplicate$ empty$ 'skip$ - { "/" * } + { pages field.or.null duplicate$ empty$ + 'skip$ + { "/" swap$ * + } + if$ * + } if$ * } { duplicate$ "ECR" = @@ -1396,13 +1450,11 @@ FUNCTION {format.url} if$ } FUNCTION {format.article.crossref} -{ - word.in +{ word.in " \cite{" * crossref * "}" * } FUNCTION {format.incoll.inproc.crossref} -{ - word.in +{ word.in " \cite{" * crossref * "}" * } FUNCTION {format.book.crossref} @@ -1428,8 +1480,7 @@ FUNCTION {article} get.title.addenda new.block crossref missing$ - { - journal + { journal "t" change.case$ "journal" bibinfo.check emphasize "journal" output.check @@ -1483,8 +1534,7 @@ FUNCTION {book} { new.sentence format.publisher.address output } - { - new.block + { new.block format.book.crossref output.nonnull } if$ @@ -1544,16 +1594,14 @@ FUNCTION {inbook} format.btitle "title" output.check get.title.addenda crossref missing$ - { - format.publisher.address output + { format.publisher.address output format.bvolume output format.chapter.pages "chapter and pages" output.check new.block format.number.series output new.sentence } - { - format.chapter.pages "chapter and pages" output.check + { format.chapter.pages "chapter and pages" output.check new.block format.book.crossref output.nonnull } @@ -1608,7 +1656,6 @@ FUNCTION {inproceedings} crossref missing$ { format.in.ed.booktitle "booktitle" output.check eventyear output - continue.clause venue output new.sentence publisher empty$ @@ -1696,13 +1743,30 @@ FUNCTION {uklegislation} if$ entrysubtype field.or.null "secondary" = { number "number" bibinfo.check output } - 'skip$ + { series empty$ type empty$ and + { number empty$ + { format.chapter output } + { continue.clause + format.series.number.chapter output + } + if$ + } + { chapter empty$ + { new.block } + { continue.clause } + if$ + format.series.number.chapter output + } + if$ + } if$ - series empty$ - { format.chapter output } + note empty$ 'skip$ + { new.block + format.note output + new.block + } if$ - format.note output publisher empty$ 'skip$ { entrysubtype field.or.null "secondary" = 'skip$ @@ -1711,8 +1775,6 @@ FUNCTION {uklegislation} format.publisher.address output } if$ - continue.clause - format.series.chapter.number output new.block format.eprint output format.url output @@ -1932,13 +1994,14 @@ FUNCTION {techreport} } if$ new.block + format.tr.number output + new.block publisher empty$ { format.institution.address output } { institution "institution" bibinfo.check output format.publisher.address output } if$ - format.tr.number output new.block format.library output new.block @@ -1951,7 +2014,7 @@ FUNCTION {techreport} FUNCTION {unpublished} { output.bibitem author empty$ - { format.btitle "title" output.check + { booktitle empty$ 'format.btitle 'format.title if$ "title" output.check format.date "year" output.check year empty$ 'skip$ { date.block } if$ get.title.addenda @@ -1960,13 +2023,17 @@ FUNCTION {unpublished} author format.key output format.date "year" output.check date.block - format.btitle "title" output.check + booktitle empty$ 'format.btitle 'format.title if$ "title" output.check get.title.addenda } if$ new.block + format.in.ed.booktitle output + new.block howpublished "howpublished" bibinfo.check output new.block + bbl.unpublished output + new.block format.note output new.block format.eprint output @@ -1974,8 +2041,8 @@ FUNCTION {unpublished} fin.entry } -FUNCTION {letter} { - journal empty$ +FUNCTION {letter} +{ journal empty$ 'unpublished 'article if$ @@ -2020,8 +2087,7 @@ FUNCTION {format.lab.names} "{vv~}{ll}" format.name$ 't := nameptr #1 > - { - nameptr #2 = + { nameptr #2 = numnames #3 > and { "others" 't := #1 'namesleft := } @@ -2029,17 +2095,14 @@ FUNCTION {format.lab.names} if$ namesleft #1 > { ", " * t * } - { - s nameptr "{ll}" format.name$ duplicate$ "others" = + { s nameptr "{ll}" format.name$ duplicate$ "others" = { 't := } { pop$ } if$ t "others" = - { - " " * bbl.etal * + { " " * bbl.etal * } - { - bbl.and + { bbl.and space.word * t * } if$ @@ -2151,8 +2214,7 @@ FUNCTION {sort.format.names} "{ll{ }}{ f{ }}{ jj{ }}{ vv{}}" format.name$ 't := nameptr #1 > - { - " " * + { " " * namesleft #1 = t "others" = and @@ -2358,6 +2420,6 @@ FUNCTION {end.bib} } EXECUTE {end.bib} %% -%% Copyright (C) 2018 by University of Bath +%% Copyright (C) 2019 by University of Bath %% %% End of file `bath.bst'. diff --git a/Master/texmf-dist/bibtex/bst/bath-bst/bathx.bst b/Master/texmf-dist/bibtex/bst/bath-bst/bathx.bst index 3af2a995630..61da24f5ecb 100644 --- a/Master/texmf-dist/bibtex/bst/bath-bst/bathx.bst +++ b/Master/texmf-dist/bibtex/bst/bath-bst/bathx.bst @@ -41,6 +41,7 @@ ENTRY organization pages publisher + pubstate school series sortyear @@ -144,19 +145,16 @@ FUNCTION {continue.clause} if$ } FUNCTION {date.block} -{ - new.block +{ new.block } FUNCTION {bibinfo.check} { swap$ duplicate$ missing$ - { - pop$ pop$ + { pop$ pop$ "" } { duplicate$ empty$ - { - swap$ pop$ + { swap$ pop$ } { swap$ "\bibinfo{" swap$ * "}{" * swap$ * "}" * @@ -168,13 +166,11 @@ FUNCTION {bibinfo.check} FUNCTION {bibinfo.warn} { swap$ duplicate$ missing$ - { - swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ + { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" } { duplicate$ empty$ - { - swap$ "empty " swap$ * " in " * cite$ * warning$ + { swap$ "empty " swap$ * " in " * cite$ * warning$ } { swap$ "\bibinfo{" swap$ * "}{" * swap$ * "}" * @@ -262,7 +258,7 @@ FUNCTION {bbl.etal} { "et~al." } FUNCTION {bbl.editors} -{ "eds." } +{ "eds" } FUNCTION {bbl.editor} { "ed." } @@ -345,6 +341,18 @@ FUNCTION {bbl.online} FUNCTION {bbl.nodate} { "n.d." } +FUNCTION {bbl.inpreparation} +{ "preprint" } + +FUNCTION {bbl.submitted} +{ "preprint" } + +FUNCTION {bbl.inpress} +{ "in press" } + +FUNCTION {bbl.unpublished} +{ "Unpublished" } + MACRO {jan} {"January"} MACRO {feb} {"February"} @@ -394,90 +402,85 @@ INTEGERS { nameptr namesleft numnames } STRINGS { bibinfo } FUNCTION {format.names} { 'bibinfo := - duplicate$ empty$ 'skip$ { - 's := - "" 't := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr - "{ll}{, jj}{, f{.}.}{~vv}" - format.name$ - bibinfo bibinfo.check - 't := - nameptr #1 > - { - namesleft #1 > - { ", " * t * } - { - s nameptr "{ll}" format.name$ duplicate$ "others" = - { 't := } - { pop$ } - if$ - t "others" = - { - " " * bbl.etal * - } - { - bbl.and - space.word * t * + duplicate$ empty$ + 'skip$ + { 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{ll}{, jj}{, f{.}.}{~vv}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { " " * bbl.etal * + } + { bbl.and + space.word * t * + } + if$ } if$ } + 't if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := + while$ } - while$ - } if$ + if$ } FUNCTION {format.names.ed} { 'bibinfo := - duplicate$ empty$ 'skip$ { - 's := - "" 't := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr - "{f{.}.~}{vv~}{ll}{ jj}" - format.name$ - bibinfo bibinfo.check - 't := - nameptr #1 > - { - namesleft #1 > - { ", " * t * } - { - s nameptr "{ll}" format.name$ duplicate$ "others" = - { 't := } - { pop$ } - if$ - t "others" = - { - - " " * bbl.etal * - } - { - bbl.and - space.word * t * + duplicate$ empty$ + 'skip$ + { 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{f{.}.~}{vv~}{ll}{ jj}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { " " * bbl.etal * + } + { bbl.and + space.word * t * + } + if$ } if$ } + 't if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := + while$ } - while$ - } if$ + if$ } FUNCTION {format.authors} { author "author" format.names @@ -486,8 +489,7 @@ FUNCTION {get.bbl.editor} { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } FUNCTION {format.editors} { editor "editor" format.names duplicate$ empty$ 'skip$ - { - "," * + { "," * " " * get.bbl.editor * @@ -496,8 +498,7 @@ FUNCTION {format.editors} } FUNCTION {format.translators} { translator "translator" format.names.ed duplicate$ empty$ 'skip$ - { - "." * + { "," * " " * bbl.translator * "(" swap$ * @@ -516,20 +517,16 @@ FUNCTION {format.full.names} "{vv~}{ll}" format.name$ 't := nameptr #1 > - { - namesleft #1 > + { namesleft #1 > { ", " * t * } - { - s nameptr "{ll}" format.name$ duplicate$ "others" = + { s nameptr "{ll}" format.name$ duplicate$ "others" = { 't := } { pop$ } if$ t "others" = - { - " " * bbl.etal * + { " " * bbl.etal * } - { - bbl.and + { bbl.and space.word * t * } if$ @@ -638,8 +635,7 @@ FUNCTION {format.btitle} if$ "title" bibinfo.check duplicate$ empty$ 'skip$ - { - emphasize + { emphasize select.language } if$ @@ -692,12 +688,10 @@ FUNCTION {format.booktitle} } FUNCTION {format.in.ed.booktitle} { format.booktitle duplicate$ empty$ 'skip$ - { - editor "editor" format.names.ed duplicate$ empty$ 'pop$ - { - "," * + { editor "editor" format.names.ed duplicate$ empty$ 'pop$ + { "," * " " * - get.bbl.editor + get.bbl.editor add.period$ " " * * swap$ * @@ -857,8 +851,7 @@ FUNCTION {convert.edition} } FUNCTION {format.edition} { edition duplicate$ empty$ 'skip$ - { - convert.edition + { convert.edition output.state mid.sentence = { "l" } { "t" } @@ -883,8 +876,7 @@ FUNCTION {format.booklet.type} if$ } FUNCTION {add.cmd.number} -{ - ". " swap$ "number" bibinfo.check * +{ ". " swap$ "number" bibinfo.check * } FUNCTION {format.legr.number} { series field.or.null 's := @@ -1019,26 +1011,65 @@ FUNCTION {format.chapter} } if$ } -FUNCTION {format.series.chapter.number} +FUNCTION {format.series.number.chapter} { series duplicate$ empty$ - { pop$ "" } + { pop$ "(" } { "series" bibinfo.check "(" swap$ * + } + if$ + type duplicate$ empty$ + { pop$ + number duplicate$ empty$ + 'pop$ + { "number" bibinfo.check + swap$ duplicate$ "(" = + { swap$ * } + { ", " * swap$ * } + if$ + } + if$ chapter duplicate$ empty$ 'pop$ { "chapter" bibinfo.check - ", c." swap$ * * + swap$ duplicate$ "(" = + { swap$ * } + { ", c." * swap$ * } + if$ } if$ + } + { "type" bibinfo.check + swap$ duplicate$ "(" = + { swap$ * } + { ", " * swap$ * } + if$ number duplicate$ empty$ - 'pop$ + { pop$ + chapter duplicate$ empty$ + 'pop$ + { "chapter" bibinfo.check + " c." swap$ * * + } + if$ + } { "number" bibinfo.check - ", " swap$ * * + " " swap$ * * + chapter duplicate$ empty$ + 'pop$ + { "chapter" bibinfo.check + ", c." swap$ * * + } + if$ } if$ - ")" * } if$ + ")" * + duplicate$ "()" = + { pop$ "" } + 'skip$ + if$ } FUNCTION {format.case.number} { casenumber duplicate$ empty$ @@ -1106,8 +1137,7 @@ FUNCTION {format.org.or.pub} "" address empty$ t empty$ and 'skip$ - { - address "address" bibinfo.check * + { address "address" bibinfo.check * t empty$ 'skip$ { address empty$ @@ -1126,13 +1156,23 @@ FUNCTION {format.publisher.address} FUNCTION {format.organization.address} { publisher empty$ { organization "organization" bibinfo.check format.org.or.pub } - { publisher "publisher" bibinfo.warn format.org.or.pub } + { publisher "publisher" bibinfo.warn format.org.or.pub + organization duplicate$ empty$ + 'pop$ + { "organization" bibinfo.check ". " * swap$ * } + if$ + } if$ } FUNCTION {format.institution.address} { publisher empty$ { institution "institution" bibinfo.check format.org.or.pub } - { publisher "publisher" bibinfo.warn format.org.or.pub } + { publisher "publisher" bibinfo.warn format.org.or.pub + institution duplicate$ empty$ + 'pop$ + { "institution" bibinfo.check ". " * swap$ * } + if$ + } if$ } FUNCTION {format.library} @@ -1229,8 +1269,7 @@ FUNCTION {multi.page.check} multiresult } FUNCTION {n.dashify} -{ - 't := +{ 't := "" { t empty$ not } { t #1 #1 substring$ "-" = @@ -1256,12 +1295,10 @@ FUNCTION {n.dashify} FUNCTION {format.pages} { pages duplicate$ empty$ 'skip$ { duplicate$ multi.page.check - { - bbl.pages swap$ + { bbl.pages swap$ n.dashify } - { - bbl.page swap$ + { bbl.page swap$ } if$ "pages" bibinfo.check @@ -1273,8 +1310,7 @@ FUNCTION {format.journal.pages} { pages duplicate$ empty$ 'pop$ { swap$ duplicate$ empty$ { pop$ pop$ format.pages } - { - ", " * + { ", " * swap$ n.dashify pages multi.page.check @@ -1293,8 +1329,7 @@ FUNCTION {format.journal.eid} { eid "eid" bibinfo.check duplicate$ empty$ 'pop$ { swap$ duplicate$ empty$ 'skip$ - { - ", " * + { ", " * } if$ swap$ * @@ -1302,25 +1337,41 @@ FUNCTION {format.journal.eid} if$ } FUNCTION {format.vol.num.pages} -{ volume field.or.null - duplicate$ empty$ 'skip$ - { - "volume" bibinfo.check +{ pubstate field.or.null + duplicate$ "inpress" = + { pop$ bbl.inpress } + { duplicate$ "submitted" = + { pop$ bbl.submitted } + { duplicate$ "inpreparation" = + { pop$ bbl.inpreparation } + { pop$ "" } + if$ + } + if$ } if$ - number "number" bibinfo.check duplicate$ empty$ 'skip$ - { - swap$ duplicate$ empty$ - { "there's a number but no volume in " cite$ * warning$ } - 'skip$ + duplicate$ empty$ + { pop$ + volume field.or.null + duplicate$ empty$ 'skip$ + { "volume" bibinfo.check + } + if$ + number "number" bibinfo.check duplicate$ empty$ 'skip$ + { swap$ duplicate$ empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + swap$ + "(" swap$ * ")" * + } + if$ * + eid empty$ + { format.journal.pages } + { format.journal.eid } if$ - swap$ - "(" swap$ * ")" * } - if$ * - eid empty$ - { format.journal.pages } - { format.journal.eid } + 'skip$ if$ } FUNCTION {format.chapter.pages} @@ -1351,17 +1402,20 @@ FUNCTION {format.journal.series.vol.pages} volume empty$ and pages empty$ - and - eid empty$ and 'skip$ { " " * } if$ series "series" bibinfo.check volume "volume" bibinfo.check * - duplicate$ empty$ pages empty$ and + duplicate$ empty$ 'skip$ - { "/" * } + { pages field.or.null duplicate$ empty$ + 'skip$ + { "/" swap$ * + } + if$ * + } if$ * } { duplicate$ "ECR" = @@ -1428,13 +1482,11 @@ FUNCTION {format.url} if$ } FUNCTION {format.article.crossref} -{ - word.in +{ word.in " \cite{" * crossref * "}" * } FUNCTION {format.incoll.inproc.crossref} -{ - word.in +{ word.in " \cite{" * crossref * "}" * } FUNCTION {format.book.crossref} @@ -1460,8 +1512,7 @@ FUNCTION {article} get.title.addenda new.block crossref missing$ - { - journal + { journal "t" change.case$ "journal" bibinfo.check emphasize "journal" output.check @@ -1521,8 +1572,7 @@ FUNCTION {book} { new.sentence format.publisher.address output } - { - new.block + { new.block format.book.crossref output.nonnull } if$ @@ -1582,16 +1632,14 @@ FUNCTION {inbook} format.btitle "title" output.check get.title.addenda crossref missing$ - { - format.publisher.address output + { format.publisher.address output format.bvolume output format.chapter.pages "chapter and pages" output.check new.block format.number.series output new.sentence } - { - format.chapter.pages "chapter and pages" output.check + { format.chapter.pages "chapter and pages" output.check new.block format.book.crossref output.nonnull } @@ -1646,7 +1694,6 @@ FUNCTION {inproceedings} crossref missing$ { format.in.ed.booktitle "booktitle" output.check eventyear output - continue.clause venue output new.sentence publisher empty$ @@ -1734,13 +1781,30 @@ FUNCTION {uklegislation} if$ entrysubtype field.or.null "secondary" = { number "number" bibinfo.check output } - 'skip$ + { series empty$ type empty$ and + { number empty$ + { format.chapter output } + { continue.clause + format.series.number.chapter output + } + if$ + } + { chapter empty$ + { new.block } + { continue.clause } + if$ + format.series.number.chapter output + } + if$ + } if$ - series empty$ - { format.chapter output } + note empty$ 'skip$ + { new.block + format.note output + new.block + } if$ - format.note output publisher empty$ 'skip$ { entrysubtype field.or.null "secondary" = 'skip$ @@ -1749,8 +1813,6 @@ FUNCTION {uklegislation} format.publisher.address output } if$ - continue.clause - format.series.chapter.number output new.block format.eprint output format.url output @@ -1970,13 +2032,14 @@ FUNCTION {techreport} } if$ new.block + format.tr.number output + new.block publisher empty$ { format.institution.address output } { institution "institution" bibinfo.check output format.publisher.address output } if$ - format.tr.number output new.block format.library output new.block @@ -1989,7 +2052,7 @@ FUNCTION {techreport} FUNCTION {unpublished} { output.bibitem author empty$ - { format.btitle "title" output.check + { booktitle empty$ 'format.btitle 'format.title if$ "title" output.check format.date "year" output.check year empty$ 'skip$ { date.block } if$ get.title.addenda @@ -1998,13 +2061,17 @@ FUNCTION {unpublished} author format.key output format.date "year" output.check date.block - format.btitle "title" output.check + booktitle empty$ 'format.btitle 'format.title if$ "title" output.check get.title.addenda } if$ new.block + format.in.ed.booktitle output + new.block howpublished "howpublished" bibinfo.check output new.block + bbl.unpublished output + new.block format.note output new.block format.eprint output @@ -2012,8 +2079,8 @@ FUNCTION {unpublished} fin.entry } -FUNCTION {letter} { - journal empty$ +FUNCTION {letter} +{ journal empty$ 'unpublished 'article if$ @@ -2058,8 +2125,7 @@ FUNCTION {format.lab.names} "{vv~}{ll}" format.name$ 't := nameptr #1 > - { - nameptr #2 = + { nameptr #2 = numnames #3 > and { "others" 't := #1 'namesleft := } @@ -2067,17 +2133,14 @@ FUNCTION {format.lab.names} if$ namesleft #1 > { ", " * t * } - { - s nameptr "{ll}" format.name$ duplicate$ "others" = + { s nameptr "{ll}" format.name$ duplicate$ "others" = { 't := } { pop$ } if$ t "others" = - { - " " * bbl.etal * + { " " * bbl.etal * } - { - bbl.and + { bbl.and space.word * t * } if$ @@ -2189,8 +2252,7 @@ FUNCTION {sort.format.names} "{ll{ }}{ f{ }}{ jj{ }}{ vv{}}" format.name$ 't := nameptr #1 > - { - " " * + { " " * namesleft #1 = t "others" = and @@ -2396,6 +2458,6 @@ FUNCTION {end.bib} } EXECUTE {end.bib} %% -%% Copyright (C) 2018 by University of Bath +%% Copyright (C) 2019 by University of Bath %% %% End of file `bathx.bst'. -- cgit v1.2.3