summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/bibtex
diff options
context:
space:
mode:
authorManuel Pégourié-Gonnard <mpg@elzevir.fr>2010-06-30 11:31:25 +0000
committerManuel Pégourié-Gonnard <mpg@elzevir.fr>2010-06-30 11:31:25 +0000
commit40aaa8f302d7f1607e42350428364f78251bbd75 (patch)
tree7c9534e44ec30bb80b5cb2fa5a424bd6580bf29c /Master/texmf-dist/bibtex
parent13161f10a858f81d2221d2aa657e4a3fbfe8f488 (diff)
achemso update {v3.5}{2010/06/25}
git-svn-id: svn://tug.org/texlive/trunk@19190 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/bibtex')
-rw-r--r--Master/texmf-dist/bibtex/bst/achemso/achemso.bst2502
-rw-r--r--Master/texmf-dist/bibtex/bst/achemso/biochem.bst2511
2 files changed, 2526 insertions, 2487 deletions
diff --git a/Master/texmf-dist/bibtex/bst/achemso/achemso.bst b/Master/texmf-dist/bibtex/bst/achemso/achemso.bst
index 857bbc639c8..5b79334b429 100644
--- a/Master/texmf-dist/bibtex/bst/achemso/achemso.bst
+++ b/Master/texmf-dist/bibtex/bst/achemso/achemso.bst
@@ -14,14 +14,16 @@
%% ----------------------------------------------------------------
%%
+
ENTRY
- { address
+ {
+ address
author
booktitle
chapter
- ctrl-use-title
+ ctrl-etal-firstonly
ctrl-etal-number
- ctrl-etal-truncate
+ ctrl-use-title
doi
edition
editor
@@ -29,6 +31,7 @@ ENTRY
institution
journal
key
+ maintitle
note
number
organization
@@ -39,1596 +42,1613 @@ ENTRY
title
type
url
+ version
volume
year
}
- {}
- { label
- extra.label
- short.list
+ { }
+ {
+ label
+ short.names
}
-INTEGERS {
- before.all
- mid.sentence
- after.sentence
- after.block
- after.item
-}
-FUNCTION { init.state.consts } {
- #0 'before.all :=
- #1 'mid.sentence :=
- #2 'after.sentence :=
- #3 'after.block :=
- #4 'after.item :=
+FUNCTION { and } {
+ { }
+ {
+ pop$
+ #0
+ }
+ if$
}
-%% For true/false settings, #1 is regarded as true and #0 as false.
-INTEGERS {
- etal.number
- etal.truncate
- is.use.title
+FUNCTION { not } {
+ { #0 }
+ { #1 }
+ if$
}
-FUNCTION { default.etal.number } { #15 }
-
-FUNCTION { default.etal.truncate } { #0 }
-
-FUNCTION { default.is.use.title } { #0 }
-
-FUNCTION { add.comma } { ", " * }
-
-FUNCTION { add.colon } { ": " * }
-
-FUNCTION { add.semicolon } { "; " * }
-
-INTEGERS { separate.by.semicolon }
-
-FUNCTION { init.separate.by.semicolon }
- { #1 'separate.by.semicolon := }
+FUNCTION { or } {
+ {
+ pop$
+ #1
+ }
+ { }
+ if$
+}
-FUNCTION { add.comma.or.semicolon } {
- #1 separate.by.semicolon = {
- add.semicolon
- }{
- add.comma
- }
+FUNCTION { xor } {
+ { not }
+ { }
if$
}
-STRINGS { s t }
-INTEGERS { output.state }
+FUNCTION { chr.to.value.error } {
+ #48 +
+ int.to.chr$
+ "'" swap$ *
+ "'" *
+ " is not a number: treated as zero." *
+ warning$
+ #0
+}
-FUNCTION { output.nonnull } {
- 's :=
- output.state mid.sentence = {
- add.comma write$
- }{
- output.state after.block = {
- add.semicolon write$
- newline$
- "\newblock " write$
- }{
- output.state before.all = {
- write$
- }{
- output.state after.item = {
- " " * write$
- }{
- add.period$ " " * write$
- }
- if$
- }
+FUNCTION { chr.to.value } {
+ chr.to.int$ #48 -
+ duplicate$
+ #0 <
+ { chr.to.value.error }
+ {
+ duplicate$
+ #9 >
+ { chr.to.value.error }
+ { }
if$
}
- if$
- mid.sentence 'output.state :=
- }
if$
- s
}
-FUNCTION { output } {
- duplicate$ empty$ {
- pop$
- }{
- output.nonnull
- }
- if$
+STRINGS {
+ extract.input.str
+ extract.output.str
}
-FUNCTION { output.check } {
- 't :=
- duplicate$ empty$ {
- pop$ "Empty " t * " in " * cite$ * warning$
- }{
- output.nonnull
- }
+FUNCTION { is.a.digit } {
+ duplicate$
+ "" =
+ {
+ pop$
+ #0
+ }
+ {
+ chr.to.int$
+ #48 -
+ duplicate$
+ #0 < swap$ #9 > or not
+ }
if$
}
-FUNCTION { new.block } {
- output.state before.all = {
- skip$
- }{
- after.block 'output.state :=
+FUNCTION{ is.a.number } {
+ {
+ duplicate$
+ #1 #1 substring$
+ is.a.digit
}
- if$
+ { #2 global.max$ substring$ }
+ while$
+ "" =
}
-FUNCTION {new.sentence}
-{ output.state after.block =
- 'skip$
- { output.state before.all =
- 'skip$
- { after.sentence 'output.state := }
+FUNCTION { extract.number } {
+ duplicate$
+ 'extract.input.str :=
+ "" 'extract.output.str :=
+ { extract.input.str empty$ not }
+ {
+ extract.input.str #1 #1 substring$
+ extract.input.str #2 global.max$ substring$ 'extract.input.str :=
+ duplicate$
+ is.a.number
+ { extract.output.str swap$ * 'extract.output.str := }
+ {
+ pop$
+ "" 'extract.input.str :=
+ }
if$
}
+ while$
+ extract.output.str empty$
+ { }
+ {
+ pop$
+ extract.output.str
+ }
if$
}
-INTEGERS { would.add.period.textlen }
-
-FUNCTION {would.add.period}
-{ duplicate$
- add.period$
- text.length$
- 'would.add.period.textlen :=
+FUNCTION { field.or.null } {
duplicate$
- text.length$
- would.add.period.textlen =
- { #0 }
- { #1 }
+ empty$
+ {
+ pop$
+ ""
+ }
+ { }
if$
}
-FUNCTION {fin.entry}
-{ would.add.period
- { "\relax" * write$ newline$
- "\mciteBstWouldAddEndPuncttrue" write$ newline$
- "\mciteSetBstMidEndSepPunct{\mcitedefaultmidpunct}"
- write$ newline$
- "{\mcitedefaultendpunct}{\mcitedefaultseppunct}\relax"
+INTEGERS {
+ multiply.a.int
+ multiply.b.int
+}
+
+FUNCTION { multiply } {
+ 'multiply.a.int :=
+ 'multiply.b.int :=
+ multiply.b.int #0 <
+ {
+ #-1
+ #0 multiply.b.int - 'multiply.b.int :=
}
- { "\relax" * write$ newline$
- "\mciteBstWouldAddEndPunctfalse" write$ newline$
- "\mciteSetBstMidEndSepPunct{\mcitedefaultmidpunct}"
- write$ newline$
- "{}{\mcitedefaultseppunct}\relax"
+ { #1 }
+ if$
+ #0
+ { multiply.b.int #0 > }
+ {
+ multiply.a.int +
+ multiply.b.int #1 - 'multiply.b.int :=
}
+ while$
+ swap$
+ { }
+ { #0 swap$ - }
if$
- write$
- newline$
- "\EndOfBibitem" write$
}
-FUNCTION {not}
-{ { #0 }
- { #1 }
- if$
+INTEGERS { str.conversion.int }
+
+FUNCTION { str.to.int.aux.ii } {
+ {
+ duplicate$
+ empty$ not
+ }
+ {
+ swap$
+ #10 multiply 'str.conversion.int :=
+ duplicate$
+ #1 #1 substring$
+ chr.to.value
+ str.conversion.int +
+ swap$
+ #2 global.max$ substring$
+ }
+ while$
+ pop$
}
-FUNCTION {and}
-{ 'skip$
- { pop$ #0 }
+FUNCTION { str.to.int.aux.i } {
+ duplicate$
+ #1 #1 substring$
+ "-" =
+ {
+ #1 swap$
+ #2 global.max$ substring$
+ }
+ {
+ #0 swap$
+ }
+ if$
+ #0
+ swap$
+ str.to.int.aux.ii
+ swap$
+ { #0 swap$ - }
+ { }
if$
}
-FUNCTION {or}
-{ { pop$ #1 }
- 'skip$
+FUNCTION { str.to.int } {
+ duplicate$
+ empty$
+ {
+ pop$
+ #0
+ }
+ { str.to.int.aux.i }
if$
}
-FUNCTION {field.or.null}
-{ duplicate$ empty$
- { pop$ "" }
- 'skip$
+FUNCTION { tie.or.space.connect } {
+ duplicate$
+ text.length$ #3 <
+ { "~" }
+ { " " }
if$
+ swap$ * *
}
-FUNCTION {emphasize}
-{ duplicate$ empty$
- { pop$ "" }
- { "\emph{" swap$ * "}" * }
+FUNCTION { yes.no.to.bool } {
+ duplicate$
+ empty$
+ {
+ pop$
+ #0
+ }
+ {
+ "l" change.case$
+ "yes" =
+ { #1 }
+ { #0 }
+ if$
+ }
if$
}
-FUNCTION {boldface}
-{ duplicate$ empty$
- { pop$ "" }
+
+FUNCTION { bold } {
+ duplicate$
+ empty$
+ {
+ pop$
+ ""
+ }
{ "\textbf{" swap$ * "}" * }
if$
}
-FUNCTION {paren}
-{ duplicate$ empty$
- { pop$ "" }
+FUNCTION { emph } {
+ duplicate$
+ empty$
+ {
+ pop$
+ ""
+ }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+FUNCTION { paren } {
+ duplicate$
+ empty$
+ {
+ pop$
+ ""
+ }
{ "(" swap$ * ")" * }
if$
}
-FUNCTION {bbl.and}
-{ "and" }
-FUNCTION {bbl.chapter}
-{ "Chapter" }
+FUNCTION { add.comma } { ", " * }
-FUNCTION {bbl.editor}
-{ "Ed." }
+FUNCTION { add.colon } { ": " * }
-FUNCTION {bbl.editors}
-{ "Eds." }
+FUNCTION { add.period } { add.period$ " " * }
-FUNCTION {bbl.edition}
-{ "ed." }
+FUNCTION { add.semicolon } { "; " * }
-FUNCTION {bbl.etal}
-{ "et~al." }
+FUNCTION { add.space } { " " * }
-FUNCTION {bbl.in}
-{ "In" }
-FUNCTION {bbl.inpress}
-{ "in press" }
+FUNCTION { bbl.and } { "and" }
-FUNCTION {bbl.msc}
-{ "M.Sc.\ thesis" }
+FUNCTION { bbl.chapter } { "Chapter" }
-FUNCTION {bbl.page}
-{ "p" }
+FUNCTION { bbl.doi } { "DOI:" }
-FUNCTION {bbl.pages}
-{ "pp" }
+FUNCTION { bbl.editor } { "Ed." }
-FUNCTION {bbl.phd}
-{ "Ph.D.\ thesis" }
+FUNCTION { bbl.editors } { "Eds." }
-FUNCTION {bbl.submitted}
-{ "submitted for publication" }
+FUNCTION { bbl.edition } { "ed." }
-FUNCTION {bbl.version}
-{ "version" }
+FUNCTION { bbl.etal } { "et~al." }
-FUNCTION {bbl.volume}
-{ "Vol." }
+FUNCTION { bbl.in } { "In" }
-FUNCTION {bbl.first}
-{ "1st" }
+FUNCTION { bbl.inpress } { "in press" }
-FUNCTION {bbl.second}
-{ "2nd" }
+FUNCTION { bbl.msc } { "M.Sc.\ thesis" }
-FUNCTION {bbl.third}
-{ "3rd" }
+FUNCTION { bbl.page } { "p" }
-FUNCTION {bbl.fourth}
-{ "4th" }
+FUNCTION { bbl.pages } { "pp" }
-FUNCTION {bbl.fifth}
-{ "5th" }
+FUNCTION { bbl.phd } { "Ph.D.\ thesis" }
-FUNCTION {bbl.st}
-{ "st" }
+FUNCTION { bbl.version } { "version" }
-FUNCTION {bbl.nd}
-{ "nd" }
+FUNCTION { bbl.volume } { "Vol." }
-FUNCTION {bbl.rd}
-{ "rd" }
-FUNCTION {bbl.th}
-{ "th" }
+STRINGS { pages.str }
-FUNCTION {eng.ord}
-{ duplicate$ "1" swap$ *
- #-2 #1 substring$ "1" =
- { bbl.th * }
- { duplicate$ #-1 #1 substring$
- duplicate$ "1" =
- { pop$ bbl.st * }
- { duplicate$ "2" =
- { pop$ bbl.nd * }
- { "3" =
- { bbl.rd * }
- { bbl.th * }
- if$
- }
- if$
+FUNCTION { hyphen.to.dash } {
+ 'pages.str :=
+ ""
+ { pages.str empty$ not }
+ {
+ pages.str #1 #1 substring$
+ "-" =
+ {
+ "--" *
+ {
+ pages.str #1 #1 substring$
+ "-" =
}
- if$
- }
- if$
+ { pages.str #2 global.max$ substring$ 'pages.str := }
+ while$
+ }
+ {
+ pages.str #1 #1 substring$
+ *
+ pages.str #2 global.max$ substring$ 'pages.str :=
+ }
+ if$
+ }
+ while$
}
-FUNCTION{is.a.digit}
-{ duplicate$ "" =
- {pop$ #0}
- {chr.to.int$ #48 - duplicate$
- #0 < swap$ #9 > or not}
- if$
-}
+INTEGERS { multiresult.bool }
-FUNCTION{is.a.number}
-{
- { duplicate$ #1 #1 substring$ is.a.digit }
- {#2 global.max$ substring$}
+FUNCTION { multi.page.check } {
+ 'pages.str :=
+ #0 'multiresult.bool :=
+ {
+ multiresult.bool not
+ pages.str empty$ not
+ and
+ }
+ {
+ pages.str #1 #1 substring$
+ duplicate$
+ "-" = swap$ duplicate$
+ "," = swap$
+ "+" =
+ or or
+ { #1 'multiresult.bool := }
+ { pages.str #2 global.max$ substring$ 'pages.str := }
+ if$
+ }
while$
- "" =
+ multiresult.bool
}
-FUNCTION {extract.num}
-{ duplicate$ 't :=
- "" 's :=
- { t empty$ not }
- { t #1 #1 substring$
- t #2 global.max$ substring$ 't :=
- duplicate$ is.a.number
- { s swap$ * 's := }
- { pop$ "" 't := }
- if$
- }
+
+INTEGERS {
+ current.name.int
+ names.separate.comma
+ names.separate.semicolon
+ names.separate.comma.bool
+ remaining.names.int
+ total.names.int
+}
+
+STRINGS {
+ current.name.str
+ names.str
+}
+
+FUNCTION { full.format.names } {
+ 'names.str :=
+ #1 'current.name.int :=
+ names.str num.names$ 'remaining.names.int :=
+ { remaining.names.int #0 > }
+ {
+ names.str current.name.int "{vv~}{ll}" format.name$
+ current.name.int #1 >
+ {
+ swap$ add.comma swap$
+ remaining.names.int #1 >
+ { }
+ {
+ duplicate$
+ "others" =
+ { bbl.etal }
+ { bbl.and }
+ if$
+ add.space swap$ *
+ }
+ if$
+ *
+ }
+ { }
+ if$
+ remaining.names.int #1 - 'remaining.names.int :=
+ current.name.int #1 + 'current.name.int :=
+ }
while$
- s empty$
- 'skip$
- { pop$ s }
+}
+
+FUNCTION { full.author } {
+ author empty$
+ { "" }
+ { author full.format.names }
if$
}
-FUNCTION {chr.to.value}
-{ chr.to.int$ #48 -
- duplicate$ duplicate$
- #0 < swap$ #9 > or
- { #48 + int.to.chr$
- " is not a number..." *
- warning$
- pop$ #0
+FUNCTION { full.author.editor } {
+ author empty$
+ {
+ editor empty$
+ { "" }
+ { editor full.format.names }
+ if$
}
- {}
+ { author full.format.names }
if$
}
-%% Some tricks from "Tame the BeaST" to convert a string
-%% to a number
-INTEGERS { a b }
-
-FUNCTION {mult}
-{ 'a :=
- 'b :=
- b #0 <
- {#-1 #0 b - 'b :=}
- {#1}
+FUNCTION { full.editor } {
+ editor empty$
+ { "" }
+ { editor full.format.names }
if$
- #0
- {b #0 >}
- { a +
- b #1 - 'b :=
- }
- while$
- swap$
- 'skip$
- {#0 swap$ -}
- if$
}
-FUNCTION {str.to.int.aux}
-{ {duplicate$ empty$ not}
- { swap$ #10 mult 'a :=
- duplicate$ #1 #1 substring$
- chr.to.value a +
- swap$
- #2 global.max$ substring$
+FUNCTION { short.format.names } {
+ 'names.str :=
+ names.str #1 "{vv~}{ll}" format.name$
+ names.str num.names$
+ duplicate$
+ #2 >
+ {
+ pop$
+ add.space bbl.etal *
}
- while$
- pop$
+ {
+ #2 <
+ { }
+ {
+ names.str #2 "{ff }{vv }{ll}{ jj}" format.name$
+ "others" =
+ { add.space bbl.etal * }
+ {
+ add.space
+ bbl.and add.space
+ *
+ names.str #2 "{vv~}{ll}" format.name$
+ *
+ }
+ if$
+ }
+ if$
+ }
+ if$
}
-FUNCTION {str.to.int}
-{ duplicate$ #1 #1 substring$ "-" =
- {#1 swap$ #2 global.max$ substring$}
- {#0 swap$}
- if$
- #0 swap$ str.to.int.aux
- swap$
- {#0 swap$ -}
- {}
+FUNCTION { short.author.key } {
+ author empty$
+ {
+ key empty$
+ { cite$ #1 #3 substring$ }
+ { key }
+ if$
+ }
+ { author short.format.names }
if$
}
-FUNCTION {bibinfo.check}
-{ swap$
- duplicate$ missing$
- { pop$ pop$
- ""
- }
- { duplicate$ empty$
+FUNCTION { short.author.editor.key } {
+ author empty$
+ {
+ editor empty$
{
- swap$ pop$
- }
- { swap$
- pop$
+ key empty$
+ { cite$ #1 #3 substring$ }
+ { key }
+ if$
}
+ { editor short.format.names }
if$
}
+ { author short.format.names }
if$
}
-FUNCTION {convert.edition}
-{ extract.num "l" change.case$ 's :=
- s "first" = s "1" = or
- { bbl.first 't := }
- { s "second" = s "2" = or
- { bbl.second 't := }
- { s "third" = s "3" = or
- { bbl.third 't := }
- { s "fourth" = s "4" = or
- { bbl.fourth 't := }
- { s "fifth" = s "5" = or
- { bbl.fifth 't := }
- { s #1 #1 substring$ is.a.number
- { s eng.ord 't := }
- { edition 't := }
- if$
- }
- if$
- }
+FUNCTION { short.author.key.organization } {
+ author empty$
+ {
+ key empty$
+ {
+ organization empty$
+ { cite$ #1 #3 substring$ }
+ {
+ organization #1 #4 substring$
+ "The " =
+ { organization }
+ { organization #5 global.max$ substring$ }
if$
+ #3 text.prefix$
}
if$
}
+ { key }
if$
}
+ { author short.format.names }
if$
- t
}
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
- { "~" }
- { " " }
+FUNCTION { short.editor.key.organization } {
+ editor empty$
+ {
+ key empty$
+ {
+ organization empty$
+ { cite$ #1 #3 substring$ }
+ {
+ organization #1 #4 substring$
+ "The " =
+ { organization }
+ { organization #5 global.max$ substring$ }
+ if$
+ #3 text.prefix$
+ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { editor short.format.names }
if$
- swap$ * *
-}
-
-FUNCTION {space.connect}
-{ " " swap$ * * }
-
-INTEGERS {
- current.name
- remaining.names
- total.names
-}
-
-STRINGS {
- formatted.name
- names.list
}
-FUNCTION { format.names.loop } {
- { remaining.names #0 > } {
- names.list current.name "{vv~}{ll,}{~f.}{,~jj}" format.name$
- 'formatted.name :=
- current.name #1 > {
- formatted.name "others," = {
- bbl.etal space.connect
- remaining.names #1 'remaining.names :=
- }{
- add.comma.or.semicolon formatted.name *
- }
+FUNCTION { calculate.full.names } {
+ type$ "book" =
+ type$ "inbook" =
+ or
+ { full.author.editor }
+ {
+ type$ "proceedings" =
+ { full.editor }
+ { full.author }
if$
- }{
- formatted.name
}
- if$
- current.name #1 + 'current.name :=
- remaining.names #1 - 'remaining.names :=
- }
- while$
-}
-
-FUNCTION { format.names.all } {
- total.names 'remaining.names :=
- format.names.loop
+ if$
}
-FUNCTION { format.names.etal } {
- etal.truncate #1 = {
- etal.number 'remaining.names :=
- }{
- #1 'remaining.names :=
- }
- if$
- format.names.loop
- formatted.name "others," = {
- }{
- bbl.etal space.connect
- }
+FUNCTION { calculate.short.names } {
+ type$ "book" =
+ type$ "inbook" =
+ or
+ { short.author.editor.key }
+ {
+ type$ "proceedings" =
+ { short.editor.key.organization }
+ {
+ type$ "manual" =
+ { short.author.key.organization }
+ { short.author.key }
+ if$
+ }
+ if$
+ }
if$
+ 'short.names :=
}
-FUNCTION { format.names } {
- 'names.list :=
- #1 'current.name :=
- names.list num.names$ 'total.names :=
- etal.number #0 = {
- format.names.all
- }{
- total.names etal.number > {
- format.names.etal
- }{
- format.names.all
- }
- if$
- }
+FUNCTION { calculate.names } {
+ calculate.short.names
+ short.names
+ year empty$
+ { "()" }
+ { "(" year * ")" * }
if$
+ *
+ 'label :=
}
-INTEGERS { author.or.editor }
-FUNCTION {format.authors}
-{ author empty$
- { "" }
- { #1 'author.or.editor :=
- #1 'separate.by.semicolon :=
- author format.names
- }
- if$
+INTEGERS { entries.int }
+
+FUNCTION { initialize.count.entries } {
+ #0 'entries.int :=
}
-FUNCTION {format.editors}
-{ editor empty$
- { "" }
- { #2 'author.or.editor :=
- #0 'separate.by.semicolon :=
- editor format.names
- add.comma
- editor num.names$ #1 >
- { bbl.editors }
- { bbl.editor }
- if$
- *
- }
- if$
+FUNCTION { count.entries } {
+ entries.int #1 + 'entries.int :=
}
-INTEGERS { nameptr numnames namesleft }
-FUNCTION {n.separate.multi}
-{ 't :=
- ""
- #0 'numnames :=
- t text.length$ #4 > t is.a.number and
- {
- { t empty$ not }
- { t #-1 #1 substring$ is.a.number
- { numnames #1 + 'numnames := }
- { #0 'numnames := }
- if$
- t #-1 #1 substring$ swap$ *
- t #-2 global.max$ substring$ 't :=
- numnames #4 =
- { duplicate$ #1 #1 substring$ swap$
- #2 global.max$ substring$
- "," swap$ * *
- #1 'numnames :=
- }
- 'skip$
- if$
- }
- while$
+FUNCTION { begin.bib } {
+ preamble$ empty$
+ { }
+ {
+ preamble$ write$
+ newline$
}
- { t swap$ * }
if$
+ "\providecommand*\mcitethebibliography{\thebibliography}" write$
+ newline$
+ "\csname @ifundefined\endcsname{endmcitethebibliography}" write$
+ " {\let\endmcitethebibliography\endthebibliography}{}" write$
+ newline$
+ "\begin{mcitethebibliography}{"
+ entries.int int.to.str$ * "}" * write$
+ newline$
+ "\providecommand*\natexlab[1]{#1}" write$
+ newline$
+ "\providecommand*\mciteSetBstSublistMode[1]{}" write$
+ newline$
+ "\providecommand*\mciteSetBstMaxWidthForm[2]{}" write$
+ newline$
+ "\providecommand*\mciteBstWouldAddEndPuncttrue" write$
+ newline$
+ " {\def\EndOfBibitem{\unskip.}}" write$
+ newline$
+ "\providecommand*\mciteBstWouldAddEndPunctfalse" write$
+ newline$
+ " {\let\EndOfBibitem\relax}" write$
+ newline$
+ "\providecommand*\mciteSetBstMidEndSepPunct[3]{}" write$
+ newline$
+ "\providecommand*\mciteSetBstSublistLabelBeginEnd[3]{}" write$
+ newline$
+ "\providecommand*\EndOfBibitem{}" write$
+ newline$
+ "\mciteSetBstSublistMode{f}" write$
+ newline$
+ "\mciteSetBstMaxWidthForm{subitem}{(\alph{mcitesubitemcount})}" write$
+ newline$
+ "\mciteSetBstSublistLabelBeginEnd" write$
+ newline$
+ " {\mcitemaxwidthsubitemform\space}" write$
+ newline$
+ " {\relax}" write$
+ newline$
+ " {\relax}" write$
+ newline$
}
-FUNCTION {format.bvolume}
-{ volume empty$
- { "" }
- { bbl.volume volume tie.or.space.connect }
- if$
+FUNCTION { end.bib } {
+ newline$
+ "\end{mcitethebibliography}" write$
+ newline$
}
-FUNCTION {format.title.noemph}
-{ 't :=
- t empty$
- { "" }
- { t }
- if$
+
+INTEGERS {
+ ctrl.use.title.bool
+ ctrl.etal.firstonly.bool
+ ctrl.etal.number.int
}
-FUNCTION {format.title}
-{ 't :=
- t empty$
- { "" }
- { t emphasize }
- if$
+FUNCTION { initialize.control.values } {
+ #0 'ctrl.use.title.bool :=
+ #1 'ctrl.etal.firstonly.bool :=
+ #15 'ctrl.etal.number.int :=
}
-%% The add.title function only does anything if the appropriate
-%% flag is set.
-FUNCTION {add.title}
-{ is.use.title
- { title format.title.noemph "title" output.check
- new.sentence }
- 'skip$
- if$
+FUNCTION { control } {
+ ctrl-use-title yes.no.to.bool 'ctrl.use.title.bool :=
+ ctrl-etal-firstonly yes.no.to.bool 'ctrl.etal.firstonly.bool :=
+ ctrl-etal-number str.to.int 'ctrl.etal.number.int :=
}
-FUNCTION {format.number.series}
-{ volume empty$
- { number empty$
- { series field.or.null }
- { series empty$
- { "There is a number but no series in " cite$ * warning$ }
- { series number space.connect }
- if$
- }
- if$
- }
- { "" }
- if$
+
+INTEGERS {
+ next.punct.comma
+ next.punct.period
+ next.punct.semicolon
+ next.punct.space
}
-FUNCTION {format.url}
-{ url empty$
- { "" }
- { new.sentence "\url{" url * "}" * }
- if$
+FUNCTION { initialize.tracker } {
+ #0 'next.punct.comma :=
+ #1 'next.punct.period :=
+ #2 'next.punct.semicolon :=
+ #3 'next.punct.space :=
}
-FUNCTION {format.full.names}
-{'s :=
- #1 'nameptr :=
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { s nameptr
- "{vv~}{ll}" format.name$ 't :=
- nameptr #1 >
+INTEGERS { next.punct.int }
+
+FUNCTION { output } {
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ {
+ next.punct.int next.punct.space =
+ { add.space }
{
- namesleft #1 >
- { ", " * t * }
+ next.punct.int next.punct.comma =
+ { add.comma }
{
- numnames #2 >
- { "," * }
- 'skip$
- if$
- t "others" =
- { bbl.etal * }
- { bbl.and space.connect t space.connect }
+ next.punct.int next.punct.semicolon =
+ { add.semicolon }
+ { add.period }
if$
}
if$
}
- 't
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-
-FUNCTION {author.editor.full}
-{ author empty$
- { editor empty$
- { "" }
- { editor format.full.names }
if$
+ write$
}
- { author format.full.names }
if$
+ next.punct.comma 'next.punct.int :=
}
-FUNCTION {author.full}
-{ author empty$
- { "" }
- { author format.full.names }
+
+FUNCTION { begin.bibitem } {
+ newline$
+ "\bibitem" write$
+ label
+ calculate.full.names
+ duplicate$
+ short.names =
+ { pop$ }
+ { * }
if$
+ "[" swap$ * "]" * write$
+ "{" cite$ * "}" * write$
+ newline$
+ ""
+ next.punct.comma 'next.punct.int :=
}
-FUNCTION {editor.full}
-{ editor empty$
- { "" }
- { editor format.full.names }
+INTEGERS { add.period.length.int }
+
+FUNCTION { would.add.period } {
+ duplicate$
+ add.period$
+ text.length$ 'add.period.length.int :=
+ duplicate$
+ text.length$
+ add.period.length.int =
+ { #0 }
+ { #1 }
if$
}
-FUNCTION {make.full.names}
-{ type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.full
- { type$ "proceedings" =
- 'editor.full
- 'author.full
- if$
+FUNCTION { end.bibitem } {
+ would.add.period
+ {
+ "\relax" * write$
+ newline$
+ "\mciteBstWouldAddEndPuncttrue" write$
+ newline$
+ "\mciteSetBstMidEndSepPunct{\mcitedefaultmidpunct}" write$
+ newline$
+ "{\mcitedefaultendpunct}{\mcitedefaultseppunct}\relax"
+ }
+ {
+ "\relax" * write$
+ newline$
+ "\mciteBstWouldAddEndPunctfalse" write$
+ newline$
+ "\mciteSetBstMidEndSepPunct{\mcitedefaultmidpunct}" write$
+ newline$
+ "{}{\mcitedefaultseppunct}\relax"
}
if$
+ write$
+ newline$
+ "\EndOfBibitem" write$
}
-FUNCTION {output.bibitem}
-{ newline$
- "\bibitem[" write$
- label write$
- ")" make.full.names duplicate$ short.list =
- { pop$ }
- { * }
- if$
- "]{" * write$
- cite$ write$
- "}" write$
- newline$
- ""
- before.all 'output.state :=
+
+FUNCTION { initialize.name.separator } {
+ #1 'names.separate.comma :=
+ #0 'names.separate.semicolon :=
}
-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$
+FUNCTION { format.names.loop } {
+ { remaining.names.int #0 > }
+ {
+ names.str current.name.int "{vv~}{ll,}{~f.}{,~jj}" format.name$
+ duplicate$
+ 'current.name.str :=
+ current.name.int #1 >
+ {
+ duplicate$
+ "others," =
+ {
+ bbl.etal
+ add.space
+ remaining.names.int #1 'remaining.names.int :=
+ }
+ {
+ swap$
+ names.separate.comma.bool
+ { add.comma }
+ { add.semicolon }
+ if$
+ swap$
+ *
+ }
+ if$
}
+ { }
if$
- }
- { t #1 #1 substring$ *
- t #2 global.max$ substring$ 't :=
- }
- if$
+ remaining.names.int #1 - 'remaining.names.int :=
+ current.name.int #1 + 'current.name.int :=
}
while$
}
-FUNCTION {format.date}
-{ year empty$
- { "" }
- { year boldface }
- if$
+FUNCTION { format.names.all } {
+ total.names.int 'remaining.names.int :=
+ format.names.loop
}
-
-FUNCTION {format.bdate}
-{ year empty$
- { "There's no year in " cite$ * warning$ }
- 'year
+FUNCTION { format.names.etal } {
+ ctrl.etal.firstonly.bool
+ { #1 'remaining.names.int := }
+ { ctrl.etal.number.int 'remaining.names.int := }
if$
-}
-
-FUNCTION {either.or.check}
-{ empty$
- 'pop$
- { "Can't use both " swap$ * " fields in " * cite$ * warning$ }
+ format.names.loop
+ current.name.str "others," =
+ { }
+ {
+ add.space
+ bbl.etal
+ add.space
+ *
+ }
if$
}
-FUNCTION {format.edition}
-{ edition duplicate$ empty$
- 'skip$
- { convert.edition
- bbl.edition bibinfo.check
- " " * bbl.edition *
+FUNCTION { format.names } {
+ 'names.separate.comma.bool :=
+ 'names.str :=
+ #1 'current.name.int :=
+ names.str num.names$ 'total.names.int :=
+ total.names.int ctrl.etal.number.int >
+ {
+ ctrl.etal.number.int #0 =
+ { format.names.all }
+ { format.names.etal }
+ if$
}
+ { format.names.all }
if$
}
-INTEGERS { multiresult }
-FUNCTION {multi.page.check}
-{ 't :=
- #0 'multiresult :=
- { multiresult not
- t empty$ not
- and
+FUNCTION { bbl.first } { "1st" }
+
+FUNCTION { bbl.second } { "2nd" }
+
+FUNCTION { bbl.third } { "3rd" }
+
+FUNCTION { bbl.fourth } { "4th" }
+
+FUNCTION { bbl.fifth } { "5th" }
+
+FUNCTION { bbl.st } { "st" }
+
+FUNCTION { bbl.nd } { "nd" }
+
+FUNCTION { bbl.rd } { "rd" }
+
+FUNCTION { bbl.th } { "th" }
+
+STRINGS {
+ ord.input.str
+ ord.output.str
+}
+
+FUNCTION { make.ordinal } {
+ duplicate$
+ "1" swap$
+ *
+ #-2 #1 substring$
+ "1" =
+ {
+ bbl.th *
}
- { t #1 #1 substring$
- duplicate$ "-" =
- swap$ duplicate$ "," =
- swap$ "+" =
- or or
- { #1 'multiresult := }
- { t #2 global.max$ substring$ 't := }
+ {
+ duplicate$
+ #-1 #1 substring$
+ duplicate$
+ "1" =
+ {
+ pop$
+ bbl.st *
+ }
+ {
+ duplicate$
+ "2" =
+ {
+ pop$
+ bbl.nd *
+ }
+ {
+ "3" =
+ { bbl.rd * }
+ { bbl.th * }
+ }
+ if$
+ }
if$
}
- while$
- multiresult
+ if$
}
-FUNCTION {format.pages}
-{ pages empty$
- { "" }
- { pages multi.page.check
- { bbl.pages pages n.dashify tie.or.space.connect }
- { bbl.page pages tie.or.space.connect }
- if$
+FUNCTION { convert.to.ordinal } {
+ extract.number
+ "l" change.case$ 'ord.input.str :=
+ ord.input.str "first" = ord.input.str "1" = or
+ { bbl.first 'ord.output.str := }
+ {
+ ord.input.str "second" = ord.input.str "2" = or
+ { bbl.second 'ord.output.str := }
+ {
+ ord.input.str "third" = ord.input.str "3" = or
+ { bbl.third 'ord.output.str := }
+ {
+ ord.input.str "fourth" = ord.input.str "4" = or
+ { bbl.fourth 'ord.output.str := }
+ {
+ ord.input.str "fifth" = ord.input.str "5" = or
+ { bbl.fifth 'ord.output.str := }
+ {
+ ord.input.str #1 #1 substring$
+ is.a.number
+ { ord.input.str make.ordinal }
+ { ord.input.str }
+ if$
+ 'ord.output.str :=
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
}
if$
+ ord.output.str
}
-FUNCTION {format.pages.required}
-{ pages empty$
- { ""
- "There are no page numbers for " cite$ * warning$
+
+FUNCTION { format.address } {
+ address empty$
+ { }
+ {
+ address
output
}
- { pages multi.page.check
- { bbl.pages pages n.dashify tie.or.space.connect }
- { bbl.page pages tie.or.space.connect }
- if$
- }
if$
}
-FUNCTION {format.pages.nopp}
-{ pages empty$
- { ""
- "There are no page numbers for " cite$ * warning$
+FUNCTION { format.authors } {
+ author empty$
+ { }
+ {
+ author names.separate.semicolon format.names
output
- }
- { pages multi.page.check
- { pages n.dashify space.connect }
- { pages space.connect }
- if$
+ next.punct.space 'next.punct.int :=
}
if$
}
-FUNCTION {format.pages.patent}
-{ pages empty$
- { "There is no patent number for " cite$ * warning$ }
- { pages multi.page.check
- { pages n.dashify }
- { pages n.separate.multi }
+FUNCTION { format.editors } {
+ editor empty$
+ { }
+ {
+ editor names.separate.comma format.names
+ add.comma
+ editor num.names$ #1 >
+ { bbl.editors }
+ { bbl.editor }
if$
+ *
+ output
+ next.punct.semicolon 'next.punct.int :=
}
if$
}
-FUNCTION {format.vol.pages}
-{ volume emphasize field.or.null
- duplicate$ empty$
- { pop$ format.pages.required }
- { add.comma pages n.dashify * }
+FUNCTION { format.authors.or.editors } {
+ author empty$
+ { format.editors }
+ { format.authors }
if$
+ next.punct.space 'next.punct.int :=
}
-FUNCTION {format.chapter.pages}
-{ chapter empty$
- 'format.pages
- { type empty$
- { bbl.chapter }
- { type "l" change.case$ }
- if$
- chapter tie.or.space.connect
- pages empty$
- 'skip$
- { add.comma format.pages * }
- if$
+FUNCTION { format.chapter } {
+ chapter empty$
+ { }
+ {
+ bbl.chapter add.space
+ chapter
+ *
+ output
}
if$
}
-FUNCTION {format.title.in}
-{ 's :=
- s empty$
- { "" }
- { editor empty$
- { bbl.in s format.title space.connect }
- { bbl.in s format.title space.connect
- add.semicolon format.editors *
- }
- if$
- }
- if$
+FUNCTION { format.doi } {
+ bbl.doi add.space *
+ doi *
+ output
}
-FUNCTION {format.org.address}
-{ organization empty$
- { "" }
- { address empty$
- { organization }
- { organization add.colon address *}
- if$
+FUNCTION { format.edition } {
+ edition empty$
+ { }
+ {
+ edition convert.to.ordinal
+ add.space bbl.edition *
+ output
}
if$
+ next.punct.semicolon 'next.punct.int :=
}
-FUNCTION {format.pub.address}
-{ publisher empty$
- { "" }
- { address empty$
- { publisher }
- { publisher add.colon address *}
+FUNCTION { format.group.address } {
+ duplicate$
+ empty$
+ { pop$ }
+ {
+ address empty$
+ { }
+ {
+ add.colon
+ address
+ *
+ }
if$
+ output
}
if$
}
-FUNCTION {format.school.address}
-{ school empty$
- { "" }
- { address empty$
- { school }
- { school add.colon address *}
- if$
+FUNCTION { format.howpublished } {
+ howpublished empty$
+ { }
+ {
+ howpublished
+ output
}
if$
}
-FUNCTION {format.organization.address}
-{ organization empty$
- { "" }
- { address empty$
- { organization }
- { organization add.colon address *}
- if$
- }
- if$
+FUNCTION { format.journal } {
+ journal emph
+ output
+ next.punct.space 'next.punct.int :=
}
-FUNCTION {format.version}
-{ edition empty$
- { "" }
- { bbl.version edition tie.or.space.connect }
- if$
+FUNCTION { format.journal.unpub } {
+ journal emph
+ output
}
-FUNCTION {empty.misc.check}
-{ author empty$ title empty$ howpublished empty$
- year empty$ note empty$ url empty$
- and and and and and
- { "all relevant fields are empty in " cite$ * warning$ }
- 'skip$
+FUNCTION { format.note } {
+ note empty$
+ { }
+ {
+ note
+ output
+ }
if$
}
-FUNCTION {empty.doi.note}
-{ doi empty$ note empty$ and
- { "Need either a note or DOI for " cite$ * warning$ }
- 'skip$
+FUNCTION { format.number.series } {
+ series empty$
+ { }
+ {
+ series
+ number empty$
+ { }
+ {
+ add.space
+ number *
+ }
+ if$
+ output
+ next.punct.semicolon 'next.punct.int :=
+ }
if$
}
-FUNCTION {format.thesis.type}
-{ type empty$
- 'skip$
- { pop$
- type emphasize
+FUNCTION { format.organization } {
+ organization empty$
+ { }
+ {
+ organization paren
+ output
+ next.punct.period 'next.punct.int :=
}
if$
}
-FUNCTION {article}
-{ output.bibitem
- format.authors "author" output.check
- after.item 'output.state :=
- add.title
- journal emphasize "journal" output.check
- after.item 'output.state :=
- format.date "year" output.check
- volume empty$
- { ""
- format.pages.nopp output
- }
- { format.vol.pages output }
- if$
- note output
- fin.entry
+FUNCTION { format.organization.address } {
+ organization format.group.address
}
-FUNCTION {book}
-{ output.bibitem
- author empty$
- { booktitle empty$
- { title format.title "title" output.check }
- { booktitle format.title "booktitle" output.check }
- if$
- format.edition output
- new.block
- editor empty$
- { "Need either an author or editor for " cite$ * warning$ }
- { "" format.editors * "editor" output.check }
- if$
- }
- { format.authors output
- after.item 'output.state :=
- "author and editor" editor either.or.check
- booktitle empty$
- { title format.title "title" output.check }
- { booktitle format.title "booktitle" output.check }
+FUNCTION { format.pages } {
+ pages empty$
+ { }
+ {
+ pages multi.page.check
+ {
+ bbl.pages
+ pages hyphen.to.dash
+ }
+ { bbl.page pages }
if$
- format.edition output
+ tie.or.space.connect
+ output
}
if$
- new.block
- format.number.series output
- new.block
- format.pub.address "publisher" output.check
- format.bdate "year" output.check
- new.block
- format.bvolume output
+}
+
+FUNCTION { format.pages.article } {
pages empty$
- 'skip$
- { format.pages output }
+ { }
+ {
+ pages hyphen.to.dash
+ output
+ }
if$
- note output
- fin.entry
}
-FUNCTION {booklet}
-{ output.bibitem
- format.authors output
- after.item 'output.state :=
- title format.title "title" output.check
- howpublished output
- address output
- format.date output
- note output
- fin.entry
+FUNCTION { format.publisher.address } {
+ publisher format.group.address
}
-FUNCTION {inbook}
-{ output.bibitem
- author empty$
- { title format.title "title" output.check
- format.edition output
- new.block
- editor empty$
- { "Need at least an author or an editor for " cite$ * warning$ }
- { "" format.editors * "editor" output.check }
- if$
- }
- { format.authors output
- after.item 'output.state :=
- title format.title.in "title" output.check
- format.edition output
- }
- if$
- new.block
- format.number.series output
- new.block
- format.pub.address "publisher" output.check
- format.bdate "year" output.check
- new.block
- format.bvolume output
- format.chapter.pages "chapter and pages" output.check
- note output
- fin.entry
-}
-
-FUNCTION {incollection}
-{ output.bibitem
- author empty$
- { booktitle format.title "booktitle" output.check
- format.edition output
- new.block
- editor empty$
- { "Need at least an author or an editor for " cite$ * warning$ }
- { "" format.editors * "editor" output.check }
- if$
- }
- { format.authors output
- after.item 'output.state :=
- title empty$
- 'skip$
- { title format.title.noemph output }
+FUNCTION { format.school.address } {
+ school
+ duplicate$
+ empty$
+ { pop$ }
+ {
+ address empty$
+ { }
+ {
+ add.comma
+ address
+ *
+ }
if$
- after.sentence 'output.state :=
- booktitle format.title.in "booktitle" output.check
- format.edition output
- }
- if$
- new.block
- format.number.series output
- new.block
- format.pub.address "publisher" output.check
- format.bdate "year" output.check
- new.block
- format.bvolume output
- format.chapter.pages "chapter and pages" output.check
- note output
- fin.entry
-}
-
-FUNCTION {inpress}
-{ output.bibitem
- format.authors "author" output.check
- after.item 'output.state :=
- journal emphasize "journal" output.check
- doi empty$
- { bbl.inpress output }
- { after.item 'output.state :=
- format.date output
- "DOI:" doi tie.or.space.connect output
+ output
}
if$
- note output
- fin.entry
}
-FUNCTION {inproceedings}
-{ output.bibitem
- format.authors "author" output.check
- after.item 'output.state :=
+FUNCTION { format.title } {
title empty$
- 'skip$
- { title format.title.noemph output
- after.sentence 'output.state :=
+ { }
+ {
+ title
+ output
+ next.punct.period 'next.punct.int :=
}
if$
- booktitle format.title output
- address output
- format.bdate "year" output.check
- pages empty$
- 'skip$
- { new.block
- format.pages output }
- if$
- note output
- fin.entry
-}
-
-FUNCTION {manual}
-{ output.bibitem
- format.authors output
- after.item 'output.state :=
- title format.title "title" output.check
- format.version output
- new.block
- format.organization.address output
- format.bdate output
- note output
- fin.entry
-}
-
-FUNCTION {mastersthesis}
-{ output.bibitem
- format.authors "author" output.check
- after.item 'output.state :=
- bbl.msc format.thesis.type output
- format.school.address "school" output.check
- format.bdate "year" output.check
- note output
- fin.entry
-}
-
-FUNCTION {misc}
-{ output.bibitem
- format.authors output
- after.item 'output.state :=
- title empty$
- 'skip$
- { title format.title output }
- if$
- howpublished output
- year output
- format.url output
- note output
- fin.entry
- empty.misc.check
-}
-
-FUNCTION {patent}
-{ output.bibitem
- format.authors "author" output.check
- after.item 'output.state :=
- journal "journal" output.check
- after.item 'output.state :=
- format.pages.patent "pages" output.check
- format.bdate "year" output.check
- note output
- fin.entry
-}
-
-FUNCTION {phdthesis}
-{ output.bibitem
- format.authors "author" output.check
- after.item 'output.state :=
- bbl.phd format.thesis.type output
- format.school.address "school" output.check
- format.bdate "year" output.check
- note output
- fin.entry
-}
-
-FUNCTION {proceedings}
-{ output.bibitem
- title format.title.noemph "title" output.check
- address output
- format.bdate "year" output.check
- pages empty$
- 'skip$
- { new.block
- format.pages output }
- if$
- note output
- fin.entry
}
-FUNCTION {techreport}
-{ output.bibitem
- format.authors "author" output.check
- after.item 'output.state :=
- title format.title "title" output.check
- new.block
- type empty$
- 'skip$
+FUNCTION { format.title.article } {
+ ctrl.use.title.bool
{
- type
- number empty$
- 'skip$
- { number tie.or.space.connect }
+ title empty$
+ { }
+ {
+ title
+ output
+ next.punct.period 'next.punct.int :=
+ }
if$
- output
}
+ { }
if$
- format.org.address output
- format.bdate "year" output.check
- pages empty$
- 'skip$
- { new.block
- format.pages output }
- if$
- note output
- fin.entry
}
-FUNCTION {unpublished}
-{ output.bibitem
- format.authors "author" output.check
- after.item 'output.state :=
- journal empty$
- 'skip$
- { journal emphasize "journal" output.check }
- if$
- doi empty$
- { note output }
- { after.item 'output.state :=
- format.date output
- "DOI:" doi tie.or.space.connect output
- }
- if$
- fin.entry
- empty.doi.note
-}
-
-%% Convert the strings "yes" or "no" to #1 or #0 respectively
-FUNCTION {yes.no.to.int}
-{ "l" change.case$ duplicate$
- "yes" =
- { pop$ #1 }
- { duplicate$ "no" =
- { pop$ #0 }
- { "unknown Boolean " quote$ * swap$ * quote$ *
- " in " * cite$ * warning$
- #0
- }
- if$
+FUNCTION { format.title.techreport } {
+ title empty$
+ { }
+ {
+ title emph
+ output
+ next.punct.semicolon 'next.punct.int :=
}
if$
}
-%% Using the same mechanism as in IEEEtrans, control of
-%% output can be achieved using a special entry type.
-FUNCTION { Control } {
- ctrl-use-title
- empty$ {
- skip$
- }{
- ctrl-use-title
- yes.no.to.int
- 'is.use.title :=
- }
- if$
- ctrl-etal-number
- empty$ {
- skip$
- }{
- ctrl-etal-number
- str.to.int
- 'etal.number :=
- }
+FUNCTION { format.title.booktitle } {
+ title empty$
+ { }
+ {
+ title
+ output
+ next.punct.period 'next.punct.int :=
+ }
if$
- ctrl-etal-truncate
- empty$ {
- skip$
- }{
- ctrl-etal-truncate
- yes.no.to.int
- 'etal.truncate :=
- }
+ booktitle empty$
+ { }
+ {
+ booktitle
+ output
+ next.punct.period 'next.punct.int :=
+ }
if$
}
-FUNCTION {conference} {inproceedings}
-
-FUNCTION {other} {patent}
-
-FUNCTION {default.type} {misc}
-
-MACRO {jan} {"Jan."}
-MACRO {feb} {"Feb."}
-MACRO {mar} {"Mar."}
-MACRO {apr} {"Apr."}
-MACRO {may} {"May"}
-MACRO {jun} {"June"}
-MACRO {jul} {"July"}
-MACRO {aug} {"Aug."}
-MACRO {sep} {"Sept."}
-MACRO {oct} {"Oct."}
-MACRO {nov} {"Nov."}
-MACRO {dec} {"Dec."}
-
-%% The ACS journals by CODEN
-MACRO {achre4} {"Acc.\ Chem.\ Res."}
-MACRO {acbcct} {"ACS Chem.\ Biol."}
-MACRO {ancac3} {"ACS Nano"}
-MACRO {ancham} {"Anal.\ Chem."}
-MACRO {bichaw} {"Biochemistry"}
-MACRO {bcches} {"Bioconjugate Chem."}
-MACRO {bomaf6} {"Biomacromolecules"}
-MACRO {bipret} {"Biotechnol.\ Prog."}
-MACRO {crtoec} {"Chem.\ Res.\ Toxicol."}
-MACRO {chreay} {"Chem.\ Rev."}
-MACRO {cmatex} {"Chem.\ Mater."}
-MACRO {cgdefu} {"Cryst.\ Growth Des."}
-MACRO {enfuem} {"Energy Fuels"}
-MACRO {esthag} {"Environ.\ Sci.\ Technol."}
-MACRO {iechad} {"Ind.\ Eng.\ Chem.\ Res."}
-MACRO {inoraj} {"Inorg.\ Chem."}
-MACRO {jafcau} {"J.~Agric.\ Food Chem."}
-MACRO {jceaax} {"J.~Chem.\ Eng.\ Data"}
-MACRO {jcisd8} {"J.~Chem.\ Inf.\ Model."}
-MACRO {jctcce} {"J.~Chem.\ Theory Comput."}
-MACRO {jcchff} {"J. Comb. Chem."}
-MACRO {jmcmar} {"J. Med. Chem."}
-MACRO {jnprdf} {"J. Nat. Prod."}
-MACRO {joceah} {"J.~Org.\ Chem."}
-MACRO {jpcafh} {"J.~Phys.\ Chem.~A"}
-MACRO {jpcbfk} {"J.~Phys.\ Chem.~B"}
-MACRO {jpccck} {"J.~Phys.\ Chem.~C"}
-MACRO {jprobs} {"J.~Proteome Res."}
-MACRO {jacsat} {"J.~Am.\ Chem.\ Soc."}
-MACRO {langd5} {"Langmuir"}
-MACRO {mamobx} {"Macromolecules"}
-MACRO {mpohbp} {"Mol.\ Pharm."}
-MACRO {nalefd} {"Nano Lett."}
-MACRO {orlef7} {"Org.\ Lett."}
-MACRO {oprdfk} {"Org.\ Proc.\ Res.\ Dev."}
-MACRO {orgnd7} {"Organometallics"}
-
-READ
-
-FUNCTION {initialize.controls}
-{ default.is.use.title 'is.use.title :=
- default.etal.number 'etal.number :=
+FUNCTION { format.chapter.title } {
}
-EXECUTE {initialize.controls}
-
-INTEGERS { len }
-
-FUNCTION {chop.word}
-{ 's :=
- 'len :=
- s #1 len substring$ =
- { s len #1 + global.max$ substring$ }
- 's
- if$
+STRINGS {
+ book.title
+ chapter.title
}
-FUNCTION {format.lab.names}
-{ 's :=
- s #1 "{vv~}{ll}" format.name$
- s num.names$ duplicate$
- #2 >
- { pop$ bbl.etal space.connect }
- { #2 <
- 'skip$
- { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- { bbl.etal space.connect }
- { bbl.and space.connect s #2 "{vv~}{ll}" format.name$ space.connect }
+FUNCTION { format.title.booktitle.book } {
+ "" 'chapter.title :=
+ booktitle empty$
+ {
+ "" 'chapter.title :=
+ title 'book.title :=
+ }
+ {
+ maintitle empty$
+ { booktitle 'book.title := }
+ { maintitle add.period booktitle * 'book.title := }
+ if$
+ }
+ if$
+ chapter.title empty$
+ { }
+ {
+ chapter.title
+ output
+ next.punct.period 'next.punct.int :=
+ }
+ if$
+ book.title emph
+ chapter.title empty$
+ {
+ author empty$
+ { }
+ {
+ editor empty$
+ { }
+ { bbl.in add.space swap$ * }
if$
}
if$
}
+ { bbl.in add.space swap$ * }
if$
+ output
}
-FUNCTION {author.key.label}
-{ author empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
+FUNCTION { format.type } {
+ type empty$
+ { }
+ {
+ pop$
+ type
}
- { author format.lab.names }
if$
+ output
}
-FUNCTION {author.editor.key.label}
-{ author empty$
- { editor empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { editor format.lab.names }
+FUNCTION { format.type.number } {
+ type empty$
+ { }
+ {
+ type
+ number empty$
+ { }
+ { number tie.or.space.connect }
if$
+ output
}
- { author format.lab.names }
if$
}
-FUNCTION {author.key.organization.label}
-{ author empty$
- { key empty$
- { organization empty$
- { cite$ #1 #3 substring$ }
- { "The " #4 organization chop.word #3 text.prefix$ }
- if$
- }
- 'key
- if$
+FUNCTION { format.url } {
+ url empty$
+ { }
+ {
+ "\url{" url * "}" *
+ output
}
- { author format.lab.names }
if$
}
-FUNCTION {editor.key.organization.label}
-{ editor empty$
- { key empty$
- { organization empty$
- { cite$ #1 #3 substring$ }
- { "The " #4 organization chop.word #3 text.prefix$ }
- if$
- }
- 'key
- if$
+FUNCTION { format.year } {
+ year empty$
+ { }
+ {
+ year
+ output
+ next.punct.semicolon 'next.punct.int :=
}
- { editor format.lab.names }
if$
}
-FUNCTION {calc.short.authors}
-{ type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.key.label
- { type$ "proceedings" =
- 'editor.key.organization.label
- { type$ "manual" =
- 'author.key.organization.label
- 'author.key.label
- if$
- }
- if$
+FUNCTION { format.year.article } {
+ year empty$
+ { }
+ {
+ year bold
+ output
}
if$
- 'short.list :=
}
-FUNCTION { calc.label } {
- calc.short.authors
- short.list
- "("
- *
- year duplicate$ empty$
- short.list key field.or.null = or
- { pop$ "" }
- 'skip$
+FUNCTION { format.version } {
+ version empty$
+ { }
+ {
+ bbl.version add.space
+ version
+ *
+ output
+ }
if$
- *
- 'label :=
}
-ITERATE { calc.label }
+FUNCTION { format.volume.article } {
+ volume emph
+ output
+}
-STRINGS {
- longest.label
- last.label
- next.extra
+FUNCTION { format.volume } {
+ volume empty$
+ { }
+ {
+ bbl.volume
+ volume
+ tie.or.space.connect
+ output
+ next.punct.semicolon 'next.punct.int :=
+ }
+ if$
}
-INTEGERS {
- longest.label.width
- last.extra.num
- number.label
+
+FUNCTION { article } {
+ begin.bibitem
+ format.authors
+ format.title.article
+ format.journal
+ format.year.article
+ format.volume.article
+ format.pages.article
+ format.note
+ end.bibitem
}
-FUNCTION { initialize.longest.label } {
- "" 'longest.label :=
- #0 int.to.chr$ 'last.label :=
- "" 'next.extra :=
- #0 'longest.label.width :=
- #0 'last.extra.num :=
- #0 'number.label :=
+FUNCTION { book } {
+ begin.bibitem
+ format.authors.or.editors
+ format.title.booktitle.book
+ format.edition
+ author empty$
+ { }
+ { format.editors }
+ if$
+ format.number.series
+ format.publisher.address
+ format.year
+ format.volume
+ format.chapter
+ format.pages
+ format.note
+ end.bibitem
+}
+
+FUNCTION { inbook } { book }
+
+FUNCTION { booklet } {
+ begin.bibitem
+ format.authors
+ format.title
+ format.howpublished
+ format.address
+ format.year
+ format.note
+ end.bibitem
}
-FUNCTION {forward.pass}
-{ last.label label =
- { last.extra.num #1 + 'last.extra.num :=
- last.extra.num int.to.chr$ 'extra.label :=
+FUNCTION { collection } { book }
+
+FUNCTION { incollection } { book }
+
+FUNCTION { inpress } {
+ begin.bibitem
+ format.authors
+ format.journal.unpub
+ doi empty$
+ {
+ bbl.inpress
+ output
}
- { "a" chr.to.int$ 'last.extra.num :=
- "" 'extra.label :=
- label 'last.label :=
+ {
+ format.year
+ format.doi
}
if$
- number.label #1 + 'number.label :=
-}
+ format.note
+ end.bibitem
+}
+
+FUNCTION { inproceeding } {
+ begin.bibitem
+ format.authors
+ format.title.booktitle
+ format.address
+ format.year
+ format.pages
+ format.note
+ end.bibitem
+}
+
+FUNCTION { manual } {
+ begin.bibitem
+ format.authors
+ format.title
+ format.version
+ format.organization.address
+ format.year
+ format.note
+ end.bibitem
+}
+
+FUNCTION { mastersthesis } {
+ begin.bibitem
+ format.authors
+ format.title
+ bbl.msc format.type
+ format.school.address
+ format.year
+ format.note
+ end.bibitem
+}
+
+FUNCTION { misc } {
+ begin.bibitem
+ format.authors
+ format.title
+ format.howpublished
+ format.year
+ format.url
+ format.note
+ end.bibitem
+}
+
+FUNCTION { patent } {
+ begin.bibitem
+ format.authors
+ format.organization
+ format.title
+ format.type.number
+ format.year
+ format.note
+ end.bibitem
+}
+
+FUNCTION { phdthesis } {
+ begin.bibitem
+ format.authors
+ format.title
+ bbl.phd format.type
+ format.school.address
+ format.year
+ format.note
+ end.bibitem
+}
+
+FUNCTION { proceeding } {
+ begin.bibitem
+ format.title
+ format.address
+ format.year
+ format.pages
+ format.note
+ end.bibitem
+}
+
+FUNCTION { techreport } {
+ begin.bibitem
+ format.authors.or.editors
+ format.title.techreport
+ format.type.number
+ format.organization.address
+ format.year
+ format.volume
+ format.pages
+ format.note
+ end.bibitem
+}
+
+FUNCTION { unpublished } {
+ begin.bibitem
+ format.authors
+ format.journal.unpub
+ doi empty$
+ { format.howpublished }
+ {
+ format.year
+ format.doi
+ }
+ if$
+ format.note
+ end.bibitem
+}
+
+FUNCTION { default.type } { misc }
+
+
+MACRO { jan } { "Jan." }
+MACRO { feb } { "Feb." }
+MACRO { mar } { "Mar." }
+MACRO { apr } { "Apr." }
+MACRO { may } { "May" }
+MACRO { jun } { "June" }
+MACRO { jul } { "July" }
+MACRO { aug } { "Aug." }
+MACRO { sep } { "Sept." }
+MACRO { oct } { "Oct." }
+MACRO { nov } { "Nov." }
+MACRO { dec } { "Dec." }
+
+MACRO { acbcct } { "ACS Chem.\ Biol." }
+MACRO { achre4 } { "Acc.\ Chem.\ Res." }
+MACRO { acncdm } { "ACS Chem.\ Neurosci." }
+MACRO { ancac3 } { "ACS Nano" }
+MACRO { ancham } { "Anal.\ Chem." }
+MACRO { bichaw } { "Biochemistry" }
+MACRO { bcches } { "Bioconjugate Chem." }
+MACRO { bomaf6 } { "Biomacromolecules" }
+MACRO { bipret } { "Biotechnol.\ Prog." }
+MACRO { crtoec } { "Chem.\ Res.\ Toxicol." }
+MACRO { chreay } { "Chem.\ Rev." }
+MACRO { cmatex } { "Chem.\ Mater." }
+MACRO { cgdefu } { "Cryst.\ Growth Des." }
+MACRO { enfuem } { "Energy Fuels" }
+MACRO { esthag } { "Environ.\ Sci.\ Technol." }
+MACRO { iechad } { "Ind.\ Eng.\ Chem.\ Res." }
+MACRO { inoraj } { "Inorg.\ Chem." }
+MACRO { jafcau } { "J.~Agric.\ Food Chem." }
+MACRO { jceaax } { "J.~Chem.\ Eng.\ Data" }
+MACRO { jceda8 } { "J.~Chem.\ Ed." }
+MACRO { jcisd8 } { "J.~Chem.\ Inf.\ Model." }
+MACRO { jctcce } { "J.~Chem.\ Theory Comput." }
+MACRO { jcchff } { "J. Comb. Chem." }
+MACRO { jmcmar } { "J. Med. Chem." }
+MACRO { jnprdf } { "J. Nat. Prod." }
+MACRO { joceah } { "J.~Org.\ Chem." }
+MACRO { jpcafh } { "J.~Phys.\ Chem.~A" }
+MACRO { jpcbfk } { "J.~Phys.\ Chem.~B" }
+MACRO { jpccck } { "J.~Phys.\ Chem.~C" }
+MACRO { jpclcd } { "J.~Phys.\ Chem.\ Lett." }
+MACRO { jprobs } { "J.~Proteome Res." }
+MACRO { jacsat } { "J.~Am.\ Chem.\ Soc." }
+MACRO { langd5 } { "Langmuir" }
+MACRO { mamobx } { "Macromolecules" }
+MACRO { mpohbp } { "Mol.\ Pharm." }
+MACRO { nalefd } { "Nano Lett." }
+MACRO { orlef7 } { "Org.\ Lett." }
+MACRO { oprdfk } { "Org.\ Proc.\ Res.\ Dev." }
+MACRO { orgnd7 } { "Organometallics" }
-EXECUTE { initialize.longest.label }
-ITERATE { forward.pass }
+READ
-FUNCTION { begin.bib } {
- preamble$ empty$ {
- skip$
- }{
- preamble$ write$ newline$
- }
- if$
- "\providecommand*{\mcitethebibliography}{\thebibliography}"
- write$ newline$
- "\csname @ifundefined\endcsname{endmcitethebibliography}"
- write$ newline$
- "{\let\endmcitethebibliography\endthebibliography}{}"
- write$ newline$
- "\begin{mcitethebibliography}{" number.label int.to.str$ * "}" *
- write$ newline$
- "\providecommand*{\natexlab}[1]{#1}"
- write$ newline$
- "\providecommand*{\mciteSetBstSublistMode}[1]{}"
- write$ newline$
- "\providecommand*{\mciteSetBstMaxWidthForm}[2]{}"
- write$ newline$
- "\providecommand*{\mciteBstWouldAddEndPuncttrue}"
- write$ newline$
- " {\def\EndOfBibitem{\unskip.}}"
- write$ newline$
- "\providecommand*{\mciteBstWouldAddEndPunctfalse}"
- write$ newline$
- " {\let\EndOfBibitem\relax}"
- write$ newline$
- "\providecommand*{\mciteSetBstMidEndSepPunct}[3]{}"
- write$ newline$
- "\providecommand*{\mciteSetBstSublistLabelBeginEnd}[3]{}"
- write$ newline$
- "\providecommand*{\EndOfBibitem}{}"
- write$ newline$
- "\mciteSetBstSublistMode{f}"
- write$ newline$
- "\mciteSetBstMaxWidthForm{subitem}{(\alph{mcitesubitemcount})}"
- write$ newline$
- "\mciteSetBstSublistLabelBeginEnd{\mcitemaxwidthsubitemform\space}"
- write$ newline$
- "{\relax}{\relax}"
- write$ newline$
-}
+EXECUTE { initialize.control.values }
-EXECUTE { begin.bib }
+EXECUTE { initialize.count.entries }
-EXECUTE { init.state.consts }
+EXECUTE { initialize.name.separator }
-EXECUTE { init.separate.by.semicolon }
+EXECUTE { initialize.tracker }
-ITERATE { call.type$ }
+ITERATE { calculate.names }
-FUNCTION { end.bib } {
- newline$
- "\end{mcitethebibliography}" write$ newline$
-}
+ITERATE { count.entries }
+
+EXECUTE { begin.bib }
+
+ITERATE { call.type$ }
EXECUTE { end.bib }
%%
diff --git a/Master/texmf-dist/bibtex/bst/achemso/biochem.bst b/Master/texmf-dist/bibtex/bst/achemso/biochem.bst
index de07e4cb6fa..c1ca5fd224f 100644
--- a/Master/texmf-dist/bibtex/bst/achemso/biochem.bst
+++ b/Master/texmf-dist/bibtex/bst/achemso/biochem.bst
@@ -14,14 +14,16 @@
%% ----------------------------------------------------------------
%%
+
ENTRY
- { address
+ {
+ address
author
booktitle
chapter
- ctrl-use-title
+ ctrl-etal-firstonly
ctrl-etal-number
- ctrl-etal-truncate
+ ctrl-use-title
doi
edition
editor
@@ -29,6 +31,7 @@ ENTRY
institution
journal
key
+ maintitle
note
number
organization
@@ -39,1602 +42,1618 @@ ENTRY
title
type
url
+ version
volume
year
}
- {}
- { label
- extra.label
- short.list
+ { }
+ {
+ label
+ short.names
}
-INTEGERS {
- before.all
- mid.sentence
- after.sentence
- after.block
- after.item
-}
-FUNCTION { init.state.consts } {
- #0 'before.all :=
- #1 'mid.sentence :=
- #2 'after.sentence :=
- #3 'after.block :=
- #4 'after.item :=
+FUNCTION { and } {
+ { }
+ {
+ pop$
+ #0
+ }
+ if$
}
-%% For true/false settings, #1 is regarded as true and #0 as false.
-INTEGERS {
- etal.number
- etal.truncate
- is.use.title
+FUNCTION { not } {
+ { #0 }
+ { #1 }
+ if$
}
-FUNCTION { default.etal.number } { #15 }
-
-FUNCTION { default.etal.truncate } { #0 }
-
-FUNCTION { default.is.use.title } { #1 }
-
-FUNCTION { add.comma } { ", " * }
-
-FUNCTION { add.colon } { ": " * }
-
-FUNCTION { add.semicolon } { "; " * }
-
-INTEGERS { separate.by.semicolon }
-
-FUNCTION { init.separate.by.semicolon }
- { #0 'separate.by.semicolon := }
+FUNCTION { or } {
+ {
+ pop$
+ #1
+ }
+ { }
+ if$
+}
-FUNCTION { add.comma.or.semicolon } {
- #1 separate.by.semicolon = {
- add.semicolon
- }{
- add.comma
- }
+FUNCTION { xor } {
+ { not }
+ { }
if$
}
-STRINGS { s t }
-INTEGERS { output.state }
+FUNCTION { chr.to.value.error } {
+ #48 +
+ int.to.chr$
+ "'" swap$ *
+ "'" *
+ " is not a number: treated as zero." *
+ warning$
+ #0
+}
-FUNCTION { output.nonnull } {
- 's :=
- output.state mid.sentence = {
- add.comma write$
- }{
- output.state after.block = {
- add.semicolon write$
- newline$
- "\newblock " write$
- }{
- output.state before.all = {
- write$
- }{
- output.state after.item = {
- " " * write$
- }{
- add.period$ " " * write$
- }
- if$
- }
+FUNCTION { chr.to.value } {
+ chr.to.int$ #48 -
+ duplicate$
+ #0 <
+ { chr.to.value.error }
+ {
+ duplicate$
+ #9 >
+ { chr.to.value.error }
+ { }
if$
}
- if$
- mid.sentence 'output.state :=
- }
if$
- s
}
-FUNCTION { output } {
- duplicate$ empty$ {
- pop$
- }{
- output.nonnull
- }
- if$
+STRINGS {
+ extract.input.str
+ extract.output.str
}
-FUNCTION { output.check } {
- 't :=
- duplicate$ empty$ {
- pop$ "Empty " t * " in " * cite$ * warning$
- }{
- output.nonnull
- }
+FUNCTION { is.a.digit } {
+ duplicate$
+ "" =
+ {
+ pop$
+ #0
+ }
+ {
+ chr.to.int$
+ #48 -
+ duplicate$
+ #0 < swap$ #9 > or not
+ }
if$
}
-FUNCTION { new.block } {
- output.state before.all = {
- skip$
- }{
- after.block 'output.state :=
+FUNCTION{ is.a.number } {
+ {
+ duplicate$
+ #1 #1 substring$
+ is.a.digit
}
- if$
+ { #2 global.max$ substring$ }
+ while$
+ "" =
}
-FUNCTION {new.sentence}
-{ output.state after.block =
- 'skip$
- { output.state before.all =
- 'skip$
- { after.sentence 'output.state := }
+FUNCTION { extract.number } {
+ duplicate$
+ 'extract.input.str :=
+ "" 'extract.output.str :=
+ { extract.input.str empty$ not }
+ {
+ extract.input.str #1 #1 substring$
+ extract.input.str #2 global.max$ substring$ 'extract.input.str :=
+ duplicate$
+ is.a.number
+ { extract.output.str swap$ * 'extract.output.str := }
+ {
+ pop$
+ "" 'extract.input.str :=
+ }
if$
}
+ while$
+ extract.output.str empty$
+ { }
+ {
+ pop$
+ extract.output.str
+ }
if$
}
-INTEGERS { would.add.period.textlen }
-
-FUNCTION {would.add.period}
-{ duplicate$
- add.period$
- text.length$
- 'would.add.period.textlen :=
+FUNCTION { field.or.null } {
duplicate$
- text.length$
- would.add.period.textlen =
- { #0 }
- { #1 }
+ empty$
+ {
+ pop$
+ ""
+ }
+ { }
if$
}
-FUNCTION {fin.entry}
-{ would.add.period
- { "\relax" * write$ newline$
- "\mciteBstWouldAddEndPuncttrue" write$ newline$
- "\mciteSetBstMidEndSepPunct{\mcitedefaultmidpunct}"
- write$ newline$
- "{\mcitedefaultendpunct}{\mcitedefaultseppunct}\relax"
+INTEGERS {
+ multiply.a.int
+ multiply.b.int
+}
+
+FUNCTION { multiply } {
+ 'multiply.a.int :=
+ 'multiply.b.int :=
+ multiply.b.int #0 <
+ {
+ #-1
+ #0 multiply.b.int - 'multiply.b.int :=
}
- { "\relax" * write$ newline$
- "\mciteBstWouldAddEndPunctfalse" write$ newline$
- "\mciteSetBstMidEndSepPunct{\mcitedefaultmidpunct}"
- write$ newline$
- "{}{\mcitedefaultseppunct}\relax"
+ { #1 }
+ if$
+ #0
+ { multiply.b.int #0 > }
+ {
+ multiply.a.int +
+ multiply.b.int #1 - 'multiply.b.int :=
}
+ while$
+ swap$
+ { }
+ { #0 swap$ - }
if$
- write$
- newline$
- "\EndOfBibitem" write$
}
-FUNCTION {not}
-{ { #0 }
- { #1 }
- if$
+INTEGERS { str.conversion.int }
+
+FUNCTION { str.to.int.aux.ii } {
+ {
+ duplicate$
+ empty$ not
+ }
+ {
+ swap$
+ #10 multiply 'str.conversion.int :=
+ duplicate$
+ #1 #1 substring$
+ chr.to.value
+ str.conversion.int +
+ swap$
+ #2 global.max$ substring$
+ }
+ while$
+ pop$
}
-FUNCTION {and}
-{ 'skip$
- { pop$ #0 }
+FUNCTION { str.to.int.aux.i } {
+ duplicate$
+ #1 #1 substring$
+ "-" =
+ {
+ #1 swap$
+ #2 global.max$ substring$
+ }
+ {
+ #0 swap$
+ }
+ if$
+ #0
+ swap$
+ str.to.int.aux.ii
+ swap$
+ { #0 swap$ - }
+ { }
if$
}
-FUNCTION {or}
-{ { pop$ #1 }
- 'skip$
+FUNCTION { str.to.int } {
+ duplicate$
+ empty$
+ {
+ pop$
+ #0
+ }
+ { str.to.int.aux.i }
if$
}
-FUNCTION {field.or.null}
-{ duplicate$ empty$
- { pop$ "" }
- 'skip$
+FUNCTION { tie.or.space.connect } {
+ duplicate$
+ text.length$ #3 <
+ { "~" }
+ { " " }
if$
+ swap$ * *
}
-FUNCTION {emphasize}
-{ duplicate$ empty$
- { pop$ "" }
- { "\emph{" swap$ * "}" * }
+FUNCTION { yes.no.to.bool } {
+ duplicate$
+ empty$
+ {
+ pop$
+ #0
+ }
+ {
+ "l" change.case$
+ "yes" =
+ { #1 }
+ { #0 }
+ if$
+ }
if$
}
-FUNCTION {boldface}
-{ duplicate$ empty$
- { pop$ "" }
+
+FUNCTION { bold } {
+ duplicate$
+ empty$
+ {
+ pop$
+ ""
+ }
{ "\textbf{" swap$ * "}" * }
if$
}
-FUNCTION {paren}
-{ duplicate$ empty$
- { pop$ "" }
+FUNCTION { emph } {
+ duplicate$
+ empty$
+ {
+ pop$
+ ""
+ }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+
+FUNCTION { paren } {
+ duplicate$
+ empty$
+ {
+ pop$
+ ""
+ }
{ "(" swap$ * ")" * }
if$
}
-FUNCTION {bbl.and}
-{ "and" }
-FUNCTION {bbl.chapter}
-{ "Chapter" }
+FUNCTION { add.comma } { ", " * }
-FUNCTION {bbl.editor}
-{ "Ed." }
+FUNCTION { add.colon } { ": " * }
-FUNCTION {bbl.editors}
-{ "Eds." }
+FUNCTION { add.period } { add.period$ " " * }
-FUNCTION {bbl.edition}
-{ "ed." }
+FUNCTION { add.semicolon } { "; " * }
-FUNCTION {bbl.etal}
-{ "et~al." }
+FUNCTION { add.space } { " " * }
-FUNCTION {bbl.in}
-{ "In" }
-FUNCTION {bbl.inpress}
-{ "in press" }
+FUNCTION { bbl.and } { "and" }
-FUNCTION {bbl.msc}
-{ "M.Sc.\ thesis" }
+FUNCTION { bbl.chapter } { "Chapter" }
-FUNCTION {bbl.page}
-{ "p" }
+FUNCTION { bbl.doi } { "DOI:" }
-FUNCTION {bbl.pages}
-{ "pp" }
+FUNCTION { bbl.editor } { "Ed." }
-FUNCTION {bbl.phd}
-{ "Ph.D.\ thesis" }
+FUNCTION { bbl.editors } { "Eds." }
-FUNCTION {bbl.submitted}
-{ "submitted for publication" }
+FUNCTION { bbl.edition } { "ed." }
-FUNCTION {bbl.version}
-{ "version" }
+FUNCTION { bbl.etal } { "et~al." }
-FUNCTION {bbl.volume}
-{ "Vol." }
+FUNCTION { bbl.in } { "In" }
-FUNCTION {bbl.first}
-{ "1st" }
+FUNCTION { bbl.inpress } { "in press" }
-FUNCTION {bbl.second}
-{ "2nd" }
+FUNCTION { bbl.msc } { "M.Sc.\ thesis" }
-FUNCTION {bbl.third}
-{ "3rd" }
+FUNCTION { bbl.page } { "p" }
-FUNCTION {bbl.fourth}
-{ "4th" }
+FUNCTION { bbl.pages } { "pp" }
-FUNCTION {bbl.fifth}
-{ "5th" }
+FUNCTION { bbl.phd } { "Ph.D.\ thesis" }
-FUNCTION {bbl.st}
-{ "st" }
+FUNCTION { bbl.version } { "version" }
-FUNCTION {bbl.nd}
-{ "nd" }
+FUNCTION { bbl.volume } { "Vol." }
-FUNCTION {bbl.rd}
-{ "rd" }
-FUNCTION {bbl.th}
-{ "th" }
+STRINGS { pages.str }
-FUNCTION {eng.ord}
-{ duplicate$ "1" swap$ *
- #-2 #1 substring$ "1" =
- { bbl.th * }
- { duplicate$ #-1 #1 substring$
- duplicate$ "1" =
- { pop$ bbl.st * }
- { duplicate$ "2" =
- { pop$ bbl.nd * }
- { "3" =
- { bbl.rd * }
- { bbl.th * }
- if$
- }
- if$
+FUNCTION { hyphen.to.dash } {
+ 'pages.str :=
+ ""
+ { pages.str empty$ not }
+ {
+ pages.str #1 #1 substring$
+ "-" =
+ {
+ "--" *
+ {
+ pages.str #1 #1 substring$
+ "-" =
}
- if$
- }
- if$
+ { pages.str #2 global.max$ substring$ 'pages.str := }
+ while$
+ }
+ {
+ pages.str #1 #1 substring$
+ *
+ pages.str #2 global.max$ substring$ 'pages.str :=
+ }
+ if$
+ }
+ while$
}
-FUNCTION{is.a.digit}
-{ duplicate$ "" =
- {pop$ #0}
- {chr.to.int$ #48 - duplicate$
- #0 < swap$ #9 > or not}
- if$
-}
+INTEGERS { multiresult.bool }
-FUNCTION{is.a.number}
-{
- { duplicate$ #1 #1 substring$ is.a.digit }
- {#2 global.max$ substring$}
+FUNCTION { multi.page.check } {
+ 'pages.str :=
+ #0 'multiresult.bool :=
+ {
+ multiresult.bool not
+ pages.str empty$ not
+ and
+ }
+ {
+ pages.str #1 #1 substring$
+ duplicate$
+ "-" = swap$ duplicate$
+ "," = swap$
+ "+" =
+ or or
+ { #1 'multiresult.bool := }
+ { pages.str #2 global.max$ substring$ 'pages.str := }
+ if$
+ }
while$
- "" =
+ multiresult.bool
}
-FUNCTION {extract.num}
-{ duplicate$ 't :=
- "" 's :=
- { t empty$ not }
- { t #1 #1 substring$
- t #2 global.max$ substring$ 't :=
- duplicate$ is.a.number
- { s swap$ * 's := }
- { pop$ "" 't := }
- if$
- }
+
+INTEGERS {
+ current.name.int
+ names.separate.comma
+ names.separate.semicolon
+ names.separate.comma.bool
+ remaining.names.int
+ total.names.int
+}
+
+STRINGS {
+ current.name.str
+ names.str
+}
+
+FUNCTION { full.format.names } {
+ 'names.str :=
+ #1 'current.name.int :=
+ names.str num.names$ 'remaining.names.int :=
+ { remaining.names.int #0 > }
+ {
+ names.str current.name.int "{vv~}{ll}" format.name$
+ current.name.int #1 >
+ {
+ swap$ add.comma swap$
+ remaining.names.int #1 >
+ { }
+ {
+ duplicate$
+ "others" =
+ { bbl.etal }
+ { bbl.and }
+ if$
+ add.space swap$ *
+ }
+ if$
+ *
+ }
+ { }
+ if$
+ remaining.names.int #1 - 'remaining.names.int :=
+ current.name.int #1 + 'current.name.int :=
+ }
while$
- s empty$
- 'skip$
- { pop$ s }
+}
+
+FUNCTION { full.author } {
+ author empty$
+ { "" }
+ { author full.format.names }
if$
}
-FUNCTION {chr.to.value}
-{ chr.to.int$ #48 -
- duplicate$ duplicate$
- #0 < swap$ #9 > or
- { #48 + int.to.chr$
- " is not a number..." *
- warning$
- pop$ #0
+FUNCTION { full.author.editor } {
+ author empty$
+ {
+ editor empty$
+ { "" }
+ { editor full.format.names }
+ if$
}
- {}
+ { author full.format.names }
if$
}
-%% Some tricks from "Tame the BeaST" to convert a string
-%% to a number
-INTEGERS { a b }
-
-FUNCTION {mult}
-{ 'a :=
- 'b :=
- b #0 <
- {#-1 #0 b - 'b :=}
- {#1}
+FUNCTION { full.editor } {
+ editor empty$
+ { "" }
+ { editor full.format.names }
if$
- #0
- {b #0 >}
- { a +
- b #1 - 'b :=
- }
- while$
- swap$
- 'skip$
- {#0 swap$ -}
- if$
}
-FUNCTION {str.to.int.aux}
-{ {duplicate$ empty$ not}
- { swap$ #10 mult 'a :=
- duplicate$ #1 #1 substring$
- chr.to.value a +
- swap$
- #2 global.max$ substring$
+FUNCTION { short.format.names } {
+ 'names.str :=
+ names.str #1 "{vv~}{ll}" format.name$
+ names.str num.names$
+ duplicate$
+ #2 >
+ {
+ pop$
+ add.space bbl.etal *
}
- while$
- pop$
+ {
+ #2 <
+ { }
+ {
+ names.str #2 "{ff }{vv }{ll}{ jj}" format.name$
+ "others" =
+ { add.space bbl.etal * }
+ {
+ add.space
+ bbl.and add.space
+ *
+ names.str #2 "{vv~}{ll}" format.name$
+ *
+ }
+ if$
+ }
+ if$
+ }
+ if$
}
-FUNCTION {str.to.int}
-{ duplicate$ #1 #1 substring$ "-" =
- {#1 swap$ #2 global.max$ substring$}
- {#0 swap$}
- if$
- #0 swap$ str.to.int.aux
- swap$
- {#0 swap$ -}
- {}
+FUNCTION { short.author.key } {
+ author empty$
+ {
+ key empty$
+ { cite$ #1 #3 substring$ }
+ { key }
+ if$
+ }
+ { author short.format.names }
if$
}
-FUNCTION {bibinfo.check}
-{ swap$
- duplicate$ missing$
- { pop$ pop$
- ""
- }
- { duplicate$ empty$
+FUNCTION { short.author.editor.key } {
+ author empty$
+ {
+ editor empty$
{
- swap$ pop$
- }
- { swap$
- pop$
+ key empty$
+ { cite$ #1 #3 substring$ }
+ { key }
+ if$
}
+ { editor short.format.names }
if$
}
+ { author short.format.names }
if$
}
-FUNCTION {convert.edition}
-{ extract.num "l" change.case$ 's :=
- s "first" = s "1" = or
- { bbl.first 't := }
- { s "second" = s "2" = or
- { bbl.second 't := }
- { s "third" = s "3" = or
- { bbl.third 't := }
- { s "fourth" = s "4" = or
- { bbl.fourth 't := }
- { s "fifth" = s "5" = or
- { bbl.fifth 't := }
- { s #1 #1 substring$ is.a.number
- { s eng.ord 't := }
- { edition 't := }
- if$
- }
- if$
- }
+FUNCTION { short.author.key.organization } {
+ author empty$
+ {
+ key empty$
+ {
+ organization empty$
+ { cite$ #1 #3 substring$ }
+ {
+ organization #1 #4 substring$
+ "The " =
+ { organization }
+ { organization #5 global.max$ substring$ }
if$
+ #3 text.prefix$
}
if$
}
+ { key }
if$
}
+ { author short.format.names }
if$
- t
}
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
- { "~" }
- { " " }
+FUNCTION { short.editor.key.organization } {
+ editor empty$
+ {
+ key empty$
+ {
+ organization empty$
+ { cite$ #1 #3 substring$ }
+ {
+ organization #1 #4 substring$
+ "The " =
+ { organization }
+ { organization #5 global.max$ substring$ }
+ if$
+ #3 text.prefix$
+ }
+ if$
+ }
+ { key }
+ if$
+ }
+ { editor short.format.names }
if$
- swap$ * *
-}
-
-FUNCTION {space.connect}
-{ " " swap$ * * }
-
-INTEGERS {
- current.name
- remaining.names
- total.names
}
-STRINGS {
- formatted.name
- names.list
+FUNCTION { calculate.full.names } {
+ type$ "book" =
+ type$ "inbook" =
+ or
+ { full.author.editor }
+ {
+ type$ "proceedings" =
+ { full.editor }
+ { full.author }
+ if$
+ }
+ if$
}
-FUNCTION { format.names.loop } {
- { remaining.names #0 > } {
- names.list current.name "{vv~}{ll,}{~f.}{,~jj}" format.name$
- 'formatted.name :=
- current.name #1 > {
- formatted.name "others," = {
- bbl.etal space.connect
- remaining.names #1 'remaining.names :=
- }{
- add.comma
- remaining.names #1 > {
- formatted.name *
- }{
- bbl.and space.connect
- formatted.name space.connect
+FUNCTION { calculate.short.names } {
+ type$ "book" =
+ type$ "inbook" =
+ or
+ { short.author.editor.key }
+ {
+ type$ "proceedings" =
+ { short.editor.key.organization }
+ {
+ type$ "manual" =
+ { short.author.key.organization }
+ { short.author.key }
+ if$
}
- if$
- }
if$
- }{
- formatted.name
}
- if$
- current.name #1 + 'current.name :=
- remaining.names #1 - 'remaining.names :=
- }
- while$
-}
-
-FUNCTION { format.names.all } {
- total.names 'remaining.names :=
- format.names.loop
-}
-
-FUNCTION { format.names.etal } {
- etal.truncate #1 = {
- etal.number 'remaining.names :=
- }{
- #1 'remaining.names :=
- }
- if$
- format.names.loop
- formatted.name "others," = {
- }{
- bbl.etal space.connect
- }
if$
+ 'short.names :=
}
-FUNCTION { format.names } {
- 'names.list :=
- #1 'current.name :=
- names.list num.names$ 'total.names :=
- etal.number #0 = {
- format.names.all
- }{
- total.names etal.number > {
- format.names.etal
- }{
- format.names.all
- }
- if$
- }
+FUNCTION { calculate.names } {
+ calculate.short.names
+ short.names
+ year empty$
+ { "()" }
+ { "(" year * ")" * }
if$
+ *
+ 'label :=
}
-INTEGERS { author.or.editor }
-FUNCTION {format.authors}
-{ author empty$
- { "" }
- { #1 'author.or.editor :=
- author format.names
- }
- if$
+INTEGERS { entries.int }
+
+FUNCTION { initialize.count.entries } {
+ #0 'entries.int :=
}
-FUNCTION {format.editors}
-{ editor empty$
- { "" }
- { #2 'author.or.editor :=
- editor format.names
- add.comma
- editor num.names$ #1 >
- { bbl.editors }
- { bbl.editor }
- if$
- *
- }
- if$
+FUNCTION { count.entries } {
+ entries.int #1 + 'entries.int :=
}
-INTEGERS { nameptr numnames namesleft }
-FUNCTION {n.separate.multi}
-{ 't :=
- ""
- #0 'numnames :=
- t text.length$ #4 > t is.a.number and
- {
- { t empty$ not }
- { t #-1 #1 substring$ is.a.number
- { numnames #1 + 'numnames := }
- { #0 'numnames := }
- if$
- t #-1 #1 substring$ swap$ *
- t #-2 global.max$ substring$ 't :=
- numnames #4 =
- { duplicate$ #1 #1 substring$ swap$
- #2 global.max$ substring$
- "," swap$ * *
- #1 'numnames :=
- }
- 'skip$
- if$
- }
- while$
+FUNCTION { begin.bib } {
+ preamble$ empty$
+ { }
+ {
+ preamble$ write$
+ newline$
}
- { t swap$ * }
if$
+ "\providecommand*\mcitethebibliography{\thebibliography}" write$
+ newline$
+ "\csname @ifundefined\endcsname{endmcitethebibliography}" write$
+ " {\let\endmcitethebibliography\endthebibliography}{}" write$
+ newline$
+ "\begin{mcitethebibliography}{"
+ entries.int int.to.str$ * "}" * write$
+ newline$
+ "\providecommand*\natexlab[1]{#1}" write$
+ newline$
+ "\providecommand*\mciteSetBstSublistMode[1]{}" write$
+ newline$
+ "\providecommand*\mciteSetBstMaxWidthForm[2]{}" write$
+ newline$
+ "\providecommand*\mciteBstWouldAddEndPuncttrue" write$
+ newline$
+ " {\def\EndOfBibitem{\unskip.}}" write$
+ newline$
+ "\providecommand*\mciteBstWouldAddEndPunctfalse" write$
+ newline$
+ " {\let\EndOfBibitem\relax}" write$
+ newline$
+ "\providecommand*\mciteSetBstMidEndSepPunct[3]{}" write$
+ newline$
+ "\providecommand*\mciteSetBstSublistLabelBeginEnd[3]{}" write$
+ newline$
+ "\providecommand*\EndOfBibitem{}" write$
+ newline$
+ "\mciteSetBstSublistMode{f}" write$
+ newline$
+ "\mciteSetBstMaxWidthForm{subitem}{(\alph{mcitesubitemcount})}" write$
+ newline$
+ "\mciteSetBstSublistLabelBeginEnd" write$
+ newline$
+ " {\mcitemaxwidthsubitemform\space}" write$
+ newline$
+ " {\relax}" write$
+ newline$
+ " {\relax}" write$
+ newline$
}
-FUNCTION {format.bvolume}
-{ volume empty$
- { "" }
- { bbl.volume volume tie.or.space.connect }
- if$
+FUNCTION { end.bib } {
+ newline$
+ "\end{mcitethebibliography}" write$
+ newline$
}
-FUNCTION {format.title.noemph}
-{ 't :=
- t empty$
- { "" }
- { t }
- if$
+
+INTEGERS {
+ ctrl.use.title.bool
+ ctrl.etal.firstonly.bool
+ ctrl.etal.number.int
}
-FUNCTION {format.title}
-{ 't :=
- t empty$
- { "" }
- { t emphasize }
- if$
+FUNCTION { initialize.control.values } {
+ #1 'ctrl.use.title.bool :=
+ #1 'ctrl.etal.firstonly.bool :=
+ #15 'ctrl.etal.number.int :=
}
-%% The add.title function only does anything if the appropriate
-%% flag is set.
-FUNCTION {add.title}
-{ is.use.title
- { title format.title.noemph "title" output.check
- new.sentence }
- 'skip$
- if$
+FUNCTION { control } {
+ ctrl-use-title yes.no.to.bool 'ctrl.use.title.bool :=
+ ctrl-etal-firstonly yes.no.to.bool 'ctrl.etal.firstonly.bool :=
+ ctrl-etal-number str.to.int 'ctrl.etal.number.int :=
}
-FUNCTION {format.number.series}
-{ volume empty$
- { number empty$
- { series field.or.null }
- { series empty$
- { "There is a number but no series in " cite$ * warning$ }
- { series number space.connect }
- if$
- }
- if$
- }
- { "" }
- if$
+
+INTEGERS {
+ next.punct.comma
+ next.punct.period
+ next.punct.semicolon
+ next.punct.space
}
-FUNCTION {format.url}
-{ url empty$
- { "" }
- { new.sentence "\url{" url * "}" * }
- if$
+FUNCTION { initialize.tracker } {
+ #0 'next.punct.comma :=
+ #1 'next.punct.period :=
+ #2 'next.punct.semicolon :=
+ #3 'next.punct.space :=
}
-FUNCTION {format.full.names}
-{'s :=
- #1 'nameptr :=
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { s nameptr
- "{vv~}{ll}" format.name$ 't :=
- nameptr #1 >
+INTEGERS { next.punct.int }
+
+FUNCTION { output } {
+ swap$
+ duplicate$ empty$
+ { pop$ }
+ {
+ next.punct.int next.punct.space =
+ { add.space }
{
- namesleft #1 >
- { ", " * t * }
+ next.punct.int next.punct.comma =
+ { add.comma }
{
- numnames #2 >
- { "," * }
- 'skip$
- if$
- t "others" =
- { bbl.etal * }
- { bbl.and space.connect t space.connect }
+ next.punct.int next.punct.semicolon =
+ { add.semicolon }
+ { add.period }
if$
}
if$
}
- 't
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-
-FUNCTION {author.editor.full}
-{ author empty$
- { editor empty$
- { "" }
- { editor format.full.names }
if$
+ write$
}
- { author format.full.names }
if$
+ next.punct.comma 'next.punct.int :=
}
-FUNCTION {author.full}
-{ author empty$
- { "" }
- { author format.full.names }
+
+FUNCTION { begin.bibitem } {
+ newline$
+ "\bibitem" write$
+ label
+ calculate.full.names
+ duplicate$
+ short.names =
+ { pop$ }
+ { * }
if$
+ "[" swap$ * "]" * write$
+ "{" cite$ * "}" * write$
+ newline$
+ ""
+ next.punct.comma 'next.punct.int :=
}
-FUNCTION {editor.full}
-{ editor empty$
- { "" }
- { editor format.full.names }
+INTEGERS { add.period.length.int }
+
+FUNCTION { would.add.period } {
+ duplicate$
+ add.period$
+ text.length$ 'add.period.length.int :=
+ duplicate$
+ text.length$
+ add.period.length.int =
+ { #0 }
+ { #1 }
if$
}
-FUNCTION {make.full.names}
-{ type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.full
- { type$ "proceedings" =
- 'editor.full
- 'author.full
- if$
+FUNCTION { end.bibitem } {
+ would.add.period
+ {
+ "\relax" * write$
+ newline$
+ "\mciteBstWouldAddEndPuncttrue" write$
+ newline$
+ "\mciteSetBstMidEndSepPunct{\mcitedefaultmidpunct}" write$
+ newline$
+ "{\mcitedefaultendpunct}{\mcitedefaultseppunct}\relax"
+ }
+ {
+ "\relax" * write$
+ newline$
+ "\mciteBstWouldAddEndPunctfalse" write$
+ newline$
+ "\mciteSetBstMidEndSepPunct{\mcitedefaultmidpunct}" write$
+ newline$
+ "{}{\mcitedefaultseppunct}\relax"
}
if$
+ write$
+ newline$
+ "\EndOfBibitem" write$
}
-FUNCTION {output.bibitem}
-{ newline$
- "\bibitem[" write$
- label write$
- ")" make.full.names duplicate$ short.list =
- { pop$ }
- { * }
- if$
- "]{" * write$
- cite$ write$
- "}" write$
- newline$
- ""
- before.all 'output.state :=
+
+FUNCTION { initialize.name.separator } {
+ #1 'names.separate.comma :=
+ #0 'names.separate.semicolon :=
}
-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$
+FUNCTION { format.names.loop } {
+ { remaining.names.int #0 > }
+ {
+ names.str current.name.int "{vv~}{ll,}{~f.}{,~jj}" format.name$
+ duplicate$
+ 'current.name.str :=
+ current.name.int #1 >
+ {
+ duplicate$
+ "others," =
+ {
+ bbl.etal
+ add.space
+ remaining.names.int #1 'remaining.names.int :=
+ }
+ {
+ swap$
+ names.separate.comma.bool
+ { add.comma }
+ { add.semicolon }
+ if$
+ remaining.names.int #1 >
+ { }
+ { bbl.and add.space * }
+ if$
+ swap$
+ *
+ }
+ if$
}
+ { }
if$
- }
- { t #1 #1 substring$ *
- t #2 global.max$ substring$ 't :=
- }
- if$
+ remaining.names.int #1 - 'remaining.names.int :=
+ current.name.int #1 + 'current.name.int :=
}
while$
}
-FUNCTION {format.date}
-{ year empty$
- { "" }
- { "(" year ")" * * }
- if$
+FUNCTION { format.names.all } {
+ total.names.int 'remaining.names.int :=
+ format.names.loop
}
-
-FUNCTION {format.bdate}
-{ year empty$
- { "There's no year in " cite$ * warning$ }
- 'year
+FUNCTION { format.names.etal } {
+ ctrl.etal.firstonly.bool
+ { #1 'remaining.names.int := }
+ { ctrl.etal.number.int 'remaining.names.int := }
if$
-}
-
-FUNCTION {either.or.check}
-{ empty$
- 'pop$
- { "Can't use both " swap$ * " fields in " * cite$ * warning$ }
+ format.names.loop
+ current.name.str "others," =
+ { }
+ {
+ add.space
+ bbl.etal
+ add.space
+ *
+ }
if$
}
-FUNCTION {format.edition}
-{ edition duplicate$ empty$
- 'skip$
- { convert.edition
- bbl.edition bibinfo.check
- " " * bbl.edition *
+FUNCTION { format.names } {
+ 'names.separate.comma.bool :=
+ 'names.str :=
+ #1 'current.name.int :=
+ names.str num.names$ 'total.names.int :=
+ total.names.int ctrl.etal.number.int >
+ {
+ ctrl.etal.number.int #0 =
+ { format.names.all }
+ { format.names.etal }
+ if$
}
+ { format.names.all }
if$
}
-INTEGERS { multiresult }
-FUNCTION {multi.page.check}
-{ 't :=
- #0 'multiresult :=
- { multiresult not
- t empty$ not
- and
+FUNCTION { bbl.first } { "1st" }
+
+FUNCTION { bbl.second } { "2nd" }
+
+FUNCTION { bbl.third } { "3rd" }
+
+FUNCTION { bbl.fourth } { "4th" }
+
+FUNCTION { bbl.fifth } { "5th" }
+
+FUNCTION { bbl.st } { "st" }
+
+FUNCTION { bbl.nd } { "nd" }
+
+FUNCTION { bbl.rd } { "rd" }
+
+FUNCTION { bbl.th } { "th" }
+
+STRINGS {
+ ord.input.str
+ ord.output.str
+}
+
+FUNCTION { make.ordinal } {
+ duplicate$
+ "1" swap$
+ *
+ #-2 #1 substring$
+ "1" =
+ {
+ bbl.th *
}
- { t #1 #1 substring$
- duplicate$ "-" =
- swap$ duplicate$ "," =
- swap$ "+" =
- or or
- { #1 'multiresult := }
- { t #2 global.max$ substring$ 't := }
+ {
+ duplicate$
+ #-1 #1 substring$
+ duplicate$
+ "1" =
+ {
+ pop$
+ bbl.st *
+ }
+ {
+ duplicate$
+ "2" =
+ {
+ pop$
+ bbl.nd *
+ }
+ {
+ "3" =
+ { bbl.rd * }
+ { bbl.th * }
+ }
+ if$
+ }
if$
}
- while$
- multiresult
+ if$
}
-FUNCTION {format.pages}
-{ pages empty$
- { "" }
- { pages multi.page.check
- { bbl.pages pages n.dashify tie.or.space.connect }
- { bbl.page pages tie.or.space.connect }
- if$
+FUNCTION { convert.to.ordinal } {
+ extract.number
+ "l" change.case$ 'ord.input.str :=
+ ord.input.str "first" = ord.input.str "1" = or
+ { bbl.first 'ord.output.str := }
+ {
+ ord.input.str "second" = ord.input.str "2" = or
+ { bbl.second 'ord.output.str := }
+ {
+ ord.input.str "third" = ord.input.str "3" = or
+ { bbl.third 'ord.output.str := }
+ {
+ ord.input.str "fourth" = ord.input.str "4" = or
+ { bbl.fourth 'ord.output.str := }
+ {
+ ord.input.str "fifth" = ord.input.str "5" = or
+ { bbl.fifth 'ord.output.str := }
+ {
+ ord.input.str #1 #1 substring$
+ is.a.number
+ { ord.input.str make.ordinal }
+ { ord.input.str }
+ if$
+ 'ord.output.str :=
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
}
if$
+ ord.output.str
}
-FUNCTION {format.pages.required}
-{ pages empty$
- { ""
- "There are no page numbers for " cite$ * warning$
+
+FUNCTION { format.address } {
+ address empty$
+ { }
+ {
+ address
output
}
- { pages multi.page.check
- { bbl.pages pages n.dashify tie.or.space.connect }
- { bbl.page pages tie.or.space.connect }
- if$
- }
if$
}
-FUNCTION {format.pages.nopp}
-{ pages empty$
- { ""
- "There are no page numbers for " cite$ * warning$
+FUNCTION { format.authors } {
+ author empty$
+ { }
+ {
+ author names.separate.comma format.names
output
- }
- { pages multi.page.check
- { pages n.dashify space.connect }
- { pages space.connect }
- if$
+ next.punct.space 'next.punct.int :=
}
if$
}
-FUNCTION {format.pages.patent}
-{ pages empty$
- { "There is no patent number for " cite$ * warning$ }
- { pages multi.page.check
- { pages n.dashify }
- { pages n.separate.multi }
+FUNCTION { format.editors } {
+ editor empty$
+ { }
+ {
+ editor names.separate.comma format.names
+ add.comma
+ editor num.names$ #1 >
+ { bbl.editors }
+ { bbl.editor }
if$
+ *
+ output
+ next.punct.semicolon 'next.punct.int :=
}
if$
}
-FUNCTION {format.vol.pages}
-{ volume emphasize field.or.null
- duplicate$ empty$
- { pop$ format.pages.required }
- { add.comma pages n.dashify * }
+FUNCTION { format.authors.or.editors } {
+ author empty$
+ { format.editors }
+ { format.authors }
if$
+ next.punct.space 'next.punct.int :=
}
-FUNCTION {format.chapter.pages}
-{ chapter empty$
- 'format.pages
- { type empty$
- { bbl.chapter }
- { type "l" change.case$ }
- if$
- chapter tie.or.space.connect
- pages empty$
- 'skip$
- { add.comma format.pages * }
- if$
+FUNCTION { format.chapter } {
+ chapter empty$
+ { }
+ {
+ bbl.chapter add.space
+ chapter
+ *
+ output
}
if$
}
-FUNCTION {format.title.in}
-{ 's :=
- s empty$
- { "" }
- { editor empty$
- { bbl.in s format.title space.connect }
- { bbl.in s format.title space.connect
- add.semicolon format.editors *
- }
- if$
- }
- if$
+FUNCTION { format.doi } {
+ bbl.doi add.space *
+ doi *
+ output
}
-FUNCTION {format.org.address}
-{ organization empty$
- { "" }
- { address empty$
- { organization }
- { organization add.colon address *}
- if$
+FUNCTION { format.edition } {
+ edition empty$
+ { }
+ {
+ edition convert.to.ordinal
+ add.space bbl.edition *
+ output
}
if$
+ next.punct.semicolon 'next.punct.int :=
}
-FUNCTION {format.pub.address}
-{ publisher empty$
- { "" }
- { address empty$
- { publisher }
- { publisher add.colon address *}
+FUNCTION { format.group.address } {
+ duplicate$
+ empty$
+ { pop$ }
+ {
+ address empty$
+ { }
+ {
+ add.colon
+ address
+ *
+ }
if$
+ output
}
if$
}
-FUNCTION {format.school.address}
-{ school empty$
- { "" }
- { address empty$
- { school }
- { school add.colon address *}
- if$
+FUNCTION { format.howpublished } {
+ howpublished empty$
+ { }
+ {
+ howpublished
+ output
}
if$
}
-FUNCTION {format.organization.address}
-{ organization empty$
- { "" }
- { address empty$
- { organization }
- { organization add.colon address *}
- if$
- }
- if$
+FUNCTION { format.journal } {
+ journal emph
+ output
+ next.punct.space 'next.punct.int :=
}
-FUNCTION {format.version}
-{ edition empty$
- { "" }
- { bbl.version edition tie.or.space.connect }
- if$
+FUNCTION { format.journal.unpub } {
+ journal emph
+ output
}
-FUNCTION {empty.misc.check}
-{ author empty$ title empty$ howpublished empty$
- year empty$ note empty$ url empty$
- and and and and and
- { "all relevant fields are empty in " cite$ * warning$ }
- 'skip$
+FUNCTION { format.note } {
+ note empty$
+ { }
+ {
+ note
+ output
+ }
if$
}
-FUNCTION {empty.doi.note}
-{ doi empty$ note empty$ and
- { "Need either a note or DOI for " cite$ * warning$ }
- 'skip$
+FUNCTION { format.number.series } {
+ series empty$
+ { }
+ {
+ series
+ number empty$
+ { }
+ {
+ add.space
+ number *
+ }
+ if$
+ output
+ next.punct.semicolon 'next.punct.int :=
+ }
if$
}
-FUNCTION {format.thesis.type}
-{ type empty$
- 'skip$
- { pop$
- type emphasize
+FUNCTION { format.organization } {
+ organization empty$
+ { }
+ {
+ organization paren
+ output
+ next.punct.period 'next.punct.int :=
}
if$
}
-FUNCTION {article}
-{ output.bibitem
- format.authors "author" output.check
- after.item 'output.state :=
- format.date "year" output.check
- after.item 'output.state :=
- add.title
- journal emphasize "journal" output.check
- after.item 'output.state :=
- volume empty$
- { ""
- format.pages.nopp output
- }
- { format.vol.pages output }
- if$
- note output
- fin.entry
+FUNCTION { format.organization.address } {
+ organization format.group.address
}
-FUNCTION {book}
-{ output.bibitem
- author empty$
- { booktitle empty$
- { title format.title "title" output.check }
- { booktitle format.title "booktitle" output.check }
- if$
- format.edition output
- new.block
- editor empty$
- { "Need either an author or editor for " cite$ * warning$ }
- { "" format.editors * "editor" output.check }
- if$
- }
- { format.authors output
- after.item 'output.state :=
- "author and editor" editor either.or.check
- booktitle empty$
- { title format.title "title" output.check }
- { booktitle format.title "booktitle" output.check }
+FUNCTION { format.pages } {
+ pages empty$
+ { }
+ {
+ pages multi.page.check
+ {
+ bbl.pages
+ pages hyphen.to.dash
+ }
+ { bbl.page pages }
if$
- format.edition output
+ tie.or.space.connect
+ output
}
if$
- new.block
- format.number.series output
- new.block
- format.pub.address "publisher" output.check
- format.bdate "year" output.check
- new.block
- format.bvolume output
+}
+
+FUNCTION { format.pages.article } {
pages empty$
- 'skip$
- { format.pages output }
+ { }
+ {
+ pages hyphen.to.dash
+ output
+ }
if$
- note output
- fin.entry
}
-FUNCTION {booklet}
-{ output.bibitem
- format.authors output
- after.item 'output.state :=
- title format.title "title" output.check
- howpublished output
- address output
- format.date output
- note output
- fin.entry
+FUNCTION { format.publisher.address } {
+ publisher format.group.address
}
-FUNCTION {inbook}
-{ output.bibitem
- author empty$
- { title format.title "title" output.check
- format.edition output
- new.block
- editor empty$
- { "Need at least an author or an editor for " cite$ * warning$ }
- { "" format.editors * "editor" output.check }
- if$
- }
- { format.authors output
- after.item 'output.state :=
- title format.title.in "title" output.check
- format.edition output
- }
- if$
- new.block
- format.number.series output
- new.block
- format.pub.address "publisher" output.check
- format.bdate "year" output.check
- new.block
- format.bvolume output
- format.chapter.pages "chapter and pages" output.check
- note output
- fin.entry
-}
-
-FUNCTION {incollection}
-{ output.bibitem
- author empty$
- { booktitle format.title "booktitle" output.check
- format.edition output
- new.block
- editor empty$
- { "Need at least an author or an editor for " cite$ * warning$ }
- { "" format.editors * "editor" output.check }
- if$
- }
- { format.authors output
- after.item 'output.state :=
- title empty$
- 'skip$
- { title format.title.noemph output }
+FUNCTION { format.school.address } {
+ school
+ duplicate$
+ empty$
+ { pop$ }
+ {
+ address empty$
+ { }
+ {
+ add.comma
+ address
+ *
+ }
if$
- after.sentence 'output.state :=
- booktitle format.title.in "booktitle" output.check
- format.edition output
- }
- if$
- new.block
- format.number.series output
- new.block
- format.pub.address "publisher" output.check
- format.bdate "year" output.check
- new.block
- format.bvolume output
- format.chapter.pages "chapter and pages" output.check
- note output
- fin.entry
-}
-
-FUNCTION {inpress}
-{ output.bibitem
- format.authors "author" output.check
- after.item 'output.state :=
- journal emphasize "journal" output.check
- doi empty$
- { bbl.inpress output }
- { after.item 'output.state :=
- format.date output
- "DOI:" doi tie.or.space.connect output
+ output
}
if$
- note output
- fin.entry
}
-FUNCTION {inproceedings}
-{ output.bibitem
- format.authors "author" output.check
- after.item 'output.state :=
+FUNCTION { format.title } {
title empty$
- 'skip$
- { title format.title.noemph output
- after.sentence 'output.state :=
+ { }
+ {
+ title
+ output
+ next.punct.period 'next.punct.int :=
}
if$
- booktitle format.title output
- address output
- format.bdate "year" output.check
- pages empty$
- 'skip$
- { new.block
- format.pages output }
- if$
- note output
- fin.entry
-}
-
-FUNCTION {manual}
-{ output.bibitem
- format.authors output
- after.item 'output.state :=
- title format.title "title" output.check
- format.version output
- new.block
- format.organization.address output
- format.bdate output
- note output
- fin.entry
-}
-
-FUNCTION {mastersthesis}
-{ output.bibitem
- format.authors "author" output.check
- after.item 'output.state :=
- bbl.msc format.thesis.type output
- format.school.address "school" output.check
- format.bdate "year" output.check
- note output
- fin.entry
-}
-
-FUNCTION {misc}
-{ output.bibitem
- format.authors output
- after.item 'output.state :=
- title empty$
- 'skip$
- { title format.title output }
- if$
- howpublished output
- year output
- format.url output
- note output
- fin.entry
- empty.misc.check
-}
-
-FUNCTION {patent}
-{ output.bibitem
- format.authors "author" output.check
- after.item 'output.state :=
- journal "journal" output.check
- after.item 'output.state :=
- format.pages.patent "pages" output.check
- format.bdate "year" output.check
- note output
- fin.entry
-}
-
-FUNCTION {phdthesis}
-{ output.bibitem
- format.authors "author" output.check
- after.item 'output.state :=
- bbl.phd format.thesis.type output
- format.school.address "school" output.check
- format.bdate "year" output.check
- note output
- fin.entry
-}
-
-FUNCTION {proceedings}
-{ output.bibitem
- title format.title.noemph "title" output.check
- address output
- format.bdate "year" output.check
- pages empty$
- 'skip$
- { new.block
- format.pages output }
- if$
- note output
- fin.entry
}
-FUNCTION {techreport}
-{ output.bibitem
- format.authors "author" output.check
- after.item 'output.state :=
- title format.title "title" output.check
- new.block
- type empty$
- 'skip$
+FUNCTION { format.title.article } {
+ ctrl.use.title.bool
{
- type
- number empty$
- 'skip$
- { number tie.or.space.connect }
+ title empty$
+ { }
+ {
+ title
+ output
+ next.punct.period 'next.punct.int :=
+ }
if$
- output
}
+ { }
if$
- format.org.address output
- format.bdate "year" output.check
- pages empty$
- 'skip$
- { new.block
- format.pages output }
- if$
- note output
- fin.entry
}
-FUNCTION {unpublished}
-{ output.bibitem
- format.authors "author" output.check
- after.item 'output.state :=
- journal empty$
- 'skip$
- { journal emphasize "journal" output.check }
- if$
- doi empty$
- { note output }
- { after.item 'output.state :=
- format.date output
- "DOI:" doi tie.or.space.connect output
- }
- if$
- fin.entry
- empty.doi.note
-}
-
-%% Convert the strings "yes" or "no" to #1 or #0 respectively
-FUNCTION {yes.no.to.int}
-{ "l" change.case$ duplicate$
- "yes" =
- { pop$ #1 }
- { duplicate$ "no" =
- { pop$ #0 }
- { "unknown Boolean " quote$ * swap$ * quote$ *
- " in " * cite$ * warning$
- #0
- }
- if$
+FUNCTION { format.title.techreport } {
+ title empty$
+ { }
+ {
+ title emph
+ output
+ next.punct.semicolon 'next.punct.int :=
}
if$
}
-%% Using the same mechanism as in IEEEtrans, control of
-%% output can be achieved using a special entry type.
-FUNCTION { Control } {
- ctrl-use-title
- empty$ {
- skip$
- }{
- ctrl-use-title
- yes.no.to.int
- 'is.use.title :=
- }
- if$
- ctrl-etal-number
- empty$ {
- skip$
- }{
- ctrl-etal-number
- str.to.int
- 'etal.number :=
- }
+FUNCTION { format.title.booktitle } {
+ title empty$
+ { }
+ {
+ title
+ output
+ next.punct.period 'next.punct.int :=
+ }
if$
- ctrl-etal-truncate
- empty$ {
- skip$
- }{
- ctrl-etal-truncate
- yes.no.to.int
- 'etal.truncate :=
- }
+ booktitle empty$
+ { }
+ {
+ booktitle
+ output
+ next.punct.period 'next.punct.int :=
+ }
if$
}
-FUNCTION {conference} {inproceedings}
-
-FUNCTION {other} {patent}
-
-FUNCTION {default.type} {misc}
-
-MACRO {jan} {"Jan."}
-MACRO {feb} {"Feb."}
-MACRO {mar} {"Mar."}
-MACRO {apr} {"Apr."}
-MACRO {may} {"May"}
-MACRO {jun} {"June"}
-MACRO {jul} {"July"}
-MACRO {aug} {"Aug."}
-MACRO {sep} {"Sept."}
-MACRO {oct} {"Oct."}
-MACRO {nov} {"Nov."}
-MACRO {dec} {"Dec."}
-
-%% The ACS journals by CODEN
-MACRO {achre4} {"Acc.\ Chem.\ Res."}
-MACRO {acbcct} {"ACS Chem.\ Biol."}
-MACRO {ancac3} {"ACS Nano"}
-MACRO {ancham} {"Anal.\ Chem."}
-MACRO {bichaw} {"Biochemistry"}
-MACRO {bcches} {"Bioconjugate Chem."}
-MACRO {bomaf6} {"Biomacromolecules"}
-MACRO {bipret} {"Biotechnol.\ Prog."}
-MACRO {crtoec} {"Chem.\ Res.\ Toxicol."}
-MACRO {chreay} {"Chem.\ Rev."}
-MACRO {cmatex} {"Chem.\ Mater."}
-MACRO {cgdefu} {"Cryst.\ Growth Des."}
-MACRO {enfuem} {"Energy Fuels"}
-MACRO {esthag} {"Environ.\ Sci.\ Technol."}
-MACRO {iechad} {"Ind.\ Eng.\ Chem.\ Res."}
-MACRO {inoraj} {"Inorg.\ Chem."}
-MACRO {jafcau} {"J.~Agric.\ Food Chem."}
-MACRO {jceaax} {"J.~Chem.\ Eng.\ Data"}
-MACRO {jcisd8} {"J.~Chem.\ Inf.\ Model."}
-MACRO {jctcce} {"J.~Chem.\ Theory Comput."}
-MACRO {jcchff} {"J. Comb. Chem."}
-MACRO {jmcmar} {"J. Med. Chem."}
-MACRO {jnprdf} {"J. Nat. Prod."}
-MACRO {joceah} {"J.~Org.\ Chem."}
-MACRO {jpcafh} {"J.~Phys.\ Chem.~A"}
-MACRO {jpcbfk} {"J.~Phys.\ Chem.~B"}
-MACRO {jpccck} {"J.~Phys.\ Chem.~C"}
-MACRO {jprobs} {"J.~Proteome Res."}
-MACRO {jacsat} {"J.~Am.\ Chem.\ Soc."}
-MACRO {langd5} {"Langmuir"}
-MACRO {mamobx} {"Macromolecules"}
-MACRO {mpohbp} {"Mol.\ Pharm."}
-MACRO {nalefd} {"Nano Lett."}
-MACRO {orlef7} {"Org.\ Lett."}
-MACRO {oprdfk} {"Org.\ Proc.\ Res.\ Dev."}
-MACRO {orgnd7} {"Organometallics"}
-
-READ
-
-FUNCTION {initialize.controls}
-{ default.is.use.title 'is.use.title :=
- default.etal.number 'etal.number :=
+FUNCTION { format.chapter.title } {
}
-EXECUTE {initialize.controls}
-
-INTEGERS { len }
-
-FUNCTION {chop.word}
-{ 's :=
- 'len :=
- s #1 len substring$ =
- { s len #1 + global.max$ substring$ }
- 's
- if$
+STRINGS {
+ book.title
+ chapter.title
}
-FUNCTION {format.lab.names}
-{ 's :=
- s #1 "{vv~}{ll}" format.name$
- s num.names$ duplicate$
- #2 >
- { pop$ bbl.etal space.connect }
- { #2 <
- 'skip$
- { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- { bbl.etal space.connect }
- { bbl.and space.connect s #2 "{vv~}{ll}" format.name$ space.connect }
+FUNCTION { format.title.booktitle.book } {
+ "" 'chapter.title :=
+ booktitle empty$
+ {
+ "" 'chapter.title :=
+ title 'book.title :=
+ }
+ {
+ maintitle empty$
+ { booktitle 'book.title := }
+ { maintitle add.period booktitle * 'book.title := }
+ if$
+ }
+ if$
+ chapter.title empty$
+ { }
+ {
+ chapter.title
+ output
+ next.punct.period 'next.punct.int :=
+ }
+ if$
+ book.title emph
+ chapter.title empty$
+ {
+ author empty$
+ { }
+ {
+ editor empty$
+ { }
+ { bbl.in add.space swap$ * }
if$
}
if$
}
+ { bbl.in add.space swap$ * }
if$
+ output
}
-FUNCTION {author.key.label}
-{ author empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
+FUNCTION { format.type } {
+ type empty$
+ { }
+ {
+ pop$
+ type
}
- { author format.lab.names }
if$
+ output
}
-FUNCTION {author.editor.key.label}
-{ author empty$
- { editor empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { editor format.lab.names }
+FUNCTION { format.type.number } {
+ type empty$
+ { }
+ {
+ type
+ number empty$
+ { }
+ { number tie.or.space.connect }
if$
+ output
}
- { author format.lab.names }
if$
}
-FUNCTION {author.key.organization.label}
-{ author empty$
- { key empty$
- { organization empty$
- { cite$ #1 #3 substring$ }
- { "The " #4 organization chop.word #3 text.prefix$ }
- if$
- }
- 'key
- if$
+FUNCTION { format.url } {
+ url empty$
+ { }
+ {
+ "\url{" url * "}" *
+ output
}
- { author format.lab.names }
if$
}
-FUNCTION {editor.key.organization.label}
-{ editor empty$
- { key empty$
- { organization empty$
- { cite$ #1 #3 substring$ }
- { "The " #4 organization chop.word #3 text.prefix$ }
- if$
- }
- 'key
- if$
+FUNCTION { format.year } {
+ year empty$
+ { }
+ {
+ year
+ output
+ next.punct.semicolon 'next.punct.int :=
}
- { editor format.lab.names }
if$
}
-FUNCTION {calc.short.authors}
-{ type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.key.label
- { type$ "proceedings" =
- 'editor.key.organization.label
- { type$ "manual" =
- 'author.key.organization.label
- 'author.key.label
- if$
- }
- if$
+FUNCTION { format.year.article } {
+ year empty$
+ { }
+ {
+ year paren
+ output
+ next.punct.space 'next.punct.int :=
}
if$
- 'short.list :=
}
-FUNCTION { calc.label } {
- calc.short.authors
- short.list
- "("
- *
- year duplicate$ empty$
- short.list key field.or.null = or
- { pop$ "" }
- 'skip$
+FUNCTION { format.version } {
+ version empty$
+ { }
+ {
+ bbl.version add.space
+ version
+ *
+ output
+ }
if$
- *
- 'label :=
}
-ITERATE { calc.label }
+FUNCTION { format.volume.article } {
+ volume emph
+ output
+}
-STRINGS {
- longest.label
- last.label
- next.extra
+FUNCTION { format.volume } {
+ volume empty$
+ { }
+ {
+ bbl.volume
+ volume
+ tie.or.space.connect
+ output
+ next.punct.semicolon 'next.punct.int :=
+ }
+ if$
}
-INTEGERS {
- longest.label.width
- last.extra.num
- number.label
+
+FUNCTION { article } {
+ begin.bibitem
+ format.authors
+ format.year.article
+ format.title.article
+ format.journal
+ format.volume.article
+ format.pages.article
+ format.note
+ end.bibitem
}
-FUNCTION { initialize.longest.label } {
- "" 'longest.label :=
- #0 int.to.chr$ 'last.label :=
- "" 'next.extra :=
- #0 'longest.label.width :=
- #0 'last.extra.num :=
- #0 'number.label :=
+FUNCTION { book } {
+ begin.bibitem
+ format.authors.or.editors
+ format.title.booktitle.book
+ format.edition
+ author empty$
+ { }
+ { format.editors }
+ if$
+ format.number.series
+ format.publisher.address
+ format.year
+ format.volume
+ format.chapter
+ format.pages
+ format.note
+ end.bibitem
+}
+
+FUNCTION { inbook } { book }
+
+FUNCTION { booklet } {
+ begin.bibitem
+ format.authors
+ format.title
+ format.howpublished
+ format.address
+ format.year
+ format.note
+ end.bibitem
}
-FUNCTION {forward.pass}
-{ last.label label =
- { last.extra.num #1 + 'last.extra.num :=
- last.extra.num int.to.chr$ 'extra.label :=
+FUNCTION { collection } { book }
+
+FUNCTION { incollection } { book }
+
+FUNCTION { inpress } {
+ begin.bibitem
+ format.authors
+ format.journal.unpub
+ doi empty$
+ {
+ bbl.inpress
+ output
}
- { "a" chr.to.int$ 'last.extra.num :=
- "" 'extra.label :=
- label 'last.label :=
+ {
+ format.year
+ format.doi
}
if$
- number.label #1 + 'number.label :=
-}
+ format.note
+ end.bibitem
+}
+
+FUNCTION { inproceeding } {
+ begin.bibitem
+ format.authors
+ format.title.booktitle
+ format.address
+ format.year
+ format.pages
+ format.note
+ end.bibitem
+}
+
+FUNCTION { manual } {
+ begin.bibitem
+ format.authors
+ format.title
+ format.version
+ format.organization.address
+ format.year
+ format.note
+ end.bibitem
+}
+
+FUNCTION { mastersthesis } {
+ begin.bibitem
+ format.authors
+ format.title
+ bbl.msc format.type
+ format.school.address
+ format.year
+ format.note
+ end.bibitem
+}
+
+FUNCTION { misc } {
+ begin.bibitem
+ format.authors
+ format.title
+ format.howpublished
+ format.year
+ format.url
+ format.note
+ end.bibitem
+}
+
+FUNCTION { patent } {
+ begin.bibitem
+ format.authors
+ format.organization
+ format.title
+ format.type.number
+ format.year
+ format.note
+ end.bibitem
+}
+
+FUNCTION { phdthesis } {
+ begin.bibitem
+ format.authors
+ format.title
+ bbl.phd format.type
+ format.school.address
+ format.year
+ format.note
+ end.bibitem
+}
+
+FUNCTION { proceeding } {
+ begin.bibitem
+ format.title
+ format.address
+ format.year
+ format.pages
+ format.note
+ end.bibitem
+}
+
+FUNCTION { techreport } {
+ begin.bibitem
+ format.authors.or.editors
+ format.title.techreport
+ format.type.number
+ format.organization.address
+ format.year
+ format.volume
+ format.pages
+ format.note
+ end.bibitem
+}
+
+FUNCTION { unpublished } {
+ begin.bibitem
+ format.authors
+ format.journal.unpub
+ doi empty$
+ { format.howpublished }
+ {
+ format.year
+ format.doi
+ }
+ if$
+ format.note
+ end.bibitem
+}
+
+FUNCTION { default.type } { misc }
+
+
+MACRO { jan } { "Jan." }
+MACRO { feb } { "Feb." }
+MACRO { mar } { "Mar." }
+MACRO { apr } { "Apr." }
+MACRO { may } { "May" }
+MACRO { jun } { "June" }
+MACRO { jul } { "July" }
+MACRO { aug } { "Aug." }
+MACRO { sep } { "Sept." }
+MACRO { oct } { "Oct." }
+MACRO { nov } { "Nov." }
+MACRO { dec } { "Dec." }
+
+MACRO { acbcct } { "ACS Chem.\ Biol." }
+MACRO { achre4 } { "Acc.\ Chem.\ Res." }
+MACRO { acncdm } { "ACS Chem.\ Neurosci." }
+MACRO { ancac3 } { "ACS Nano" }
+MACRO { ancham } { "Anal.\ Chem." }
+MACRO { bichaw } { "Biochemistry" }
+MACRO { bcches } { "Bioconjugate Chem." }
+MACRO { bomaf6 } { "Biomacromolecules" }
+MACRO { bipret } { "Biotechnol.\ Prog." }
+MACRO { crtoec } { "Chem.\ Res.\ Toxicol." }
+MACRO { chreay } { "Chem.\ Rev." }
+MACRO { cmatex } { "Chem.\ Mater." }
+MACRO { cgdefu } { "Cryst.\ Growth Des." }
+MACRO { enfuem } { "Energy Fuels" }
+MACRO { esthag } { "Environ.\ Sci.\ Technol." }
+MACRO { iechad } { "Ind.\ Eng.\ Chem.\ Res." }
+MACRO { inoraj } { "Inorg.\ Chem." }
+MACRO { jafcau } { "J.~Agric.\ Food Chem." }
+MACRO { jceaax } { "J.~Chem.\ Eng.\ Data" }
+MACRO { jceda8 } { "J.~Chem.\ Ed." }
+MACRO { jcisd8 } { "J.~Chem.\ Inf.\ Model." }
+MACRO { jctcce } { "J.~Chem.\ Theory Comput." }
+MACRO { jcchff } { "J. Comb. Chem." }
+MACRO { jmcmar } { "J. Med. Chem." }
+MACRO { jnprdf } { "J. Nat. Prod." }
+MACRO { joceah } { "J.~Org.\ Chem." }
+MACRO { jpcafh } { "J.~Phys.\ Chem.~A" }
+MACRO { jpcbfk } { "J.~Phys.\ Chem.~B" }
+MACRO { jpccck } { "J.~Phys.\ Chem.~C" }
+MACRO { jpclcd } { "J.~Phys.\ Chem.\ Lett." }
+MACRO { jprobs } { "J.~Proteome Res." }
+MACRO { jacsat } { "J.~Am.\ Chem.\ Soc." }
+MACRO { langd5 } { "Langmuir" }
+MACRO { mamobx } { "Macromolecules" }
+MACRO { mpohbp } { "Mol.\ Pharm." }
+MACRO { nalefd } { "Nano Lett." }
+MACRO { orlef7 } { "Org.\ Lett." }
+MACRO { oprdfk } { "Org.\ Proc.\ Res.\ Dev." }
+MACRO { orgnd7 } { "Organometallics" }
-EXECUTE { initialize.longest.label }
-ITERATE { forward.pass }
+READ
-FUNCTION { begin.bib } {
- preamble$ empty$ {
- skip$
- }{
- preamble$ write$ newline$
- }
- if$
- "\providecommand*{\mcitethebibliography}{\thebibliography}"
- write$ newline$
- "\csname @ifundefined\endcsname{endmcitethebibliography}"
- write$ newline$
- "{\let\endmcitethebibliography\endthebibliography}{}"
- write$ newline$
- "\begin{mcitethebibliography}{" number.label int.to.str$ * "}" *
- write$ newline$
- "\providecommand*{\natexlab}[1]{#1}"
- write$ newline$
- "\providecommand*{\mciteSetBstSublistMode}[1]{}"
- write$ newline$
- "\providecommand*{\mciteSetBstMaxWidthForm}[2]{}"
- write$ newline$
- "\providecommand*{\mciteBstWouldAddEndPuncttrue}"
- write$ newline$
- " {\def\EndOfBibitem{\unskip.}}"
- write$ newline$
- "\providecommand*{\mciteBstWouldAddEndPunctfalse}"
- write$ newline$
- " {\let\EndOfBibitem\relax}"
- write$ newline$
- "\providecommand*{\mciteSetBstMidEndSepPunct}[3]{}"
- write$ newline$
- "\providecommand*{\mciteSetBstSublistLabelBeginEnd}[3]{}"
- write$ newline$
- "\providecommand*{\EndOfBibitem}{}"
- write$ newline$
- "\mciteSetBstSublistMode{f}"
- write$ newline$
- "\mciteSetBstMaxWidthForm{subitem}{(\alph{mcitesubitemcount})}"
- write$ newline$
- "\mciteSetBstSublistLabelBeginEnd{\mcitemaxwidthsubitemform\space}"
- write$ newline$
- "{\relax}{\relax}"
- write$ newline$
-}
+EXECUTE { initialize.control.values }
-EXECUTE { begin.bib }
+EXECUTE { initialize.count.entries }
-EXECUTE { init.state.consts }
+EXECUTE { initialize.name.separator }
-EXECUTE { init.separate.by.semicolon }
+EXECUTE { initialize.tracker }
-ITERATE { call.type$ }
+ITERATE { calculate.names }
-FUNCTION { end.bib } {
- newline$
- "\end{mcitethebibliography}" write$ newline$
-}
+ITERATE { count.entries }
+
+EXECUTE { begin.bib }
+
+ITERATE { call.type$ }
EXECUTE { end.bib }
%%