9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett% BibTeX standard bibliography style `abbrv'
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett % Copyright (C) 1985, all rights reserved.
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett % Copying of this file is authorized only if either
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett % (1) you make absolutely no changes to your copy, including name, or
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett % (2) if you do make changes, you name it something other than
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett % This restriction helps ensure that all standard styles are identical.
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett % The file btxbst.doc has the documentation for this style.
34a4c8c6f861104cdc198282f30fae36cf3858adAndy GimblettINTEGERS { output.state before.all mid.sentence after.sentence after.block }
34a4c8c6f861104cdc198282f30fae36cf3858adAndy GimblettSTRINGS { s t }
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett { ", " * write$ }
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett "\newblock " write$
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett { add.period$ " " * write$ }
34a4c8c6f861104cdc198282f30fae36cf3858adAndy GimblettFUNCTION {output}
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett{ duplicate$ empty$
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett duplicate$ empty$
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett { pop$ "empty " t * " in " * cite$ * warning$ }
9ebbce450fb242e1a346f9f89367d8c46fcb2ec8Andy Gimblett "\bibitem{" write$
34a4c8c6f861104cdc198282f30fae36cf3858adAndy GimblettFUNCTION {not}
34a4c8c6f861104cdc198282f30fae36cf3858adAndy GimblettFUNCTION {and}
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett{ duplicate$ empty$
34a4c8c6f861104cdc198282f30fae36cf3858adAndy GimblettFUNCTION {emphasize}
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett{ duplicate$ empty$
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett { "{\em " swap$ * "}" * }
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy GimblettINTEGERS { nameptr namesleft numnames }
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett #1 'nameptr :=
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett s num.names$ 'numnames :=
d40dd10adffcf341489a1310092fcc99de75f225Andy Gimblett numnames 'namesleft :=
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett { namesleft #0 > }
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett { namesleft #1 >
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett { ", " * t * }
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett { numnames #2 >
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett { " et~al." * }
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett { " and " * t * }
b5301fa0ef9e88a488e5cfe8c395a05c2f6884d3Andy Gimblett nameptr #1 + 'nameptr :=
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett namesleft #1 - 'namesleft :=
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett{ author empty$
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett{ editor empty$
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett { ", eds." * }
b5301fa0ef9e88a488e5cfe8c395a05c2f6884d3Andy Gimblett { ", ed." * }
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett{ title empty$
34a4c8c6f861104cdc198282f30fae36cf3858adAndy Gimblett { title "t" change.case$ }
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett { t empty$ not }
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett { t #1 #1 substring$ "-" =
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett { t #1 #2 substring$ "--" = not
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett t #2 global.max$ substring$ 't :=
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett { { t #1 #1 substring$ "-" = }
ae6d8241c2ce8132a6e22d9f854edb612c2f637dAndy Gimblett t #2 global.max$ substring$ 't :=
b5301fa0ef9e88a488e5cfe8c395a05c2f6884d3Andy Gimblett { t #1 #1 substring$ *
b5301fa0ef9e88a488e5cfe8c395a05c2f6884d3Andy Gimblett t #2 global.max$ substring$ 't :=
b5301fa0ef9e88a488e5cfe8c395a05c2f6884d3Andy Gimblett { month empty$
FUNCTION {format.btitle}
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
FUNCTION {either.or.check}
FUNCTION {format.bvolume}
{ "vol." volume tie.or.space.connect
"volume and number" number either.or.check
FUNCTION {format.number.series}
{ series field.or.null }
number tie.or.space.connect
FUNCTION {format.edition}
{ edition "l" change.case$ " edition" * }
{ edition "t" change.case$ " edition" * }
FUNCTION {multi.page.check}
{ t #2 global.max$ substring$ 't := }
FUNCTION {format.pages}
{ pages multi.page.check
{ "page" pages tie.or.space.connect }
FUNCTION {format.vol.num.pages}
{ volume field.or.null
{ pop$ format.pages }
{ ":" * pages n.dashify * }
FUNCTION {format.chapter.pages}
{ type "l" change.case$ }
chapter tie.or.space.connect
{ ", " * format.pages * }
FUNCTION {format.in.ed.booktitle}
{ "In " format.editors * ", " * booktitle emphasize * }
FUNCTION {empty.misc.check}
FUNCTION {format.thesis.type}
type "t" change.case$
FUNCTION {format.tr.number}
{ "t" change.case$ }
{ number tie.or.space.connect }
FUNCTION {format.article.crossref}
FUNCTION {format.crossref.editor}
{ editor #1 "{vv~}{ll}" format.name$
editor num.names$ duplicate$
{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ " and " * editor #2 "{vv~}{ll}" format.name$ * }
FUNCTION {format.book.crossref}
{ "Vol." volume tie.or.space.connect
{ format.crossref.editor * }
FUNCTION {format.incoll.inproc.crossref}
{ "In " format.crossref.editor * }
{ journal emphasize "journal" output.check
format.vol.num.pages output
format.pages output
{ "author and editor" editor either.or.check }
{ format.bvolume output
format.number.series output
publisher "publisher" output.check
format.edition output
format.authors output
howpublished address new.block.checkb
format.date output
{ "author and editor" editor either.or.check }
{ format.bvolume output
format.number.series output
publisher "publisher" output.check
format.edition output
format.bvolume output
format.number.series output
format.chapter.pages output
publisher "publisher" output.check
format.edition output
format.chapter.pages output
format.bvolume output
format.number.series output
format.pages output
{ organization publisher new.sentence.checkb
{ address output.nonnull
format.pages output
{ organization output.nonnull
{ address new.block.checka
{ organization address new.block.checkb
format.edition output
format.date output
school "school" output.check
format.authors output
title howpublished new.block.checkb
format.title output
howpublished new.block.checka
format.date output
school "school" output.check
format.bvolume output
format.number.series output
{ publisher new.sentence.checka }
{ organization publisher new.sentence.checkb
{ address output.nonnull
institution "institution" output.check
note "note" output.check
format.date output
FUNCTION {default.type} { misc }
"l" change.case$
FUNCTION {chop.word}
{ s len #1 + global.max$ substring$ }
FUNCTION {sort.format.names}
s num.names$ 'numnames :=
s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
FUNCTION {sort.format.title}
"The " #4 t chop.word
#1 global.max$ substring$
FUNCTION {author.sort}
{ author sort.format.names }
FUNCTION {author.editor.sort}
{ editor sort.format.names }
{ author sort.format.names }
FUNCTION {author.organization.sort}
{ "The " #4 organization chop.word sortify }
{ author sort.format.names }
FUNCTION {editor.organization.sort}
{ "The " #4 organization chop.word sortify }
{ editor sort.format.names }
year field.or.null sortify
title field.or.null
#1 entry.max$ substring$
'sort.key$ :=
STRINGS { longest.label }
FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
#1 'number.label :=
#0 'longest.label.width :=
FUNCTION {longest.label.pass}
label width$ longest.label.width >
{ label 'longest.label :=
label width$ 'longest.label.width :=
EXECUTE {initialize.longest.label}
ITERATE {longest.label.pass}
FUNCTION {begin.bib}
"\begin{thebibliography}{" longest.label * "}" * write$ newline$
EXECUTE {begin.bib}
EXECUTE {init.state.consts}
ITERATE {call.type$}
FUNCTION {end.bib}
EXECUTE {end.bib}