% BibTeX refdbms family % THIS FILE WAS AUTOMATICALLY GENERATED FROM: % $Header: /cvsroot/dict/dictd1/libmaa/doc/refalpha.bst,v 1.1 1996/02/25 22:04:10 faith Exp $ % Modifications copyright (C) 1989 John Wilkes, % Hewlett-Packard Company. % For BibTeX versions 0.99a or later, LaTeX version 2.09. % alpha style (sorted alphabetics) ENTRY { author booktitle conference conflocation edition editor journal key note number pages publisher reportnumber series title volume date } {} { label extra.label sort.label } INTEGERS { output.state before.all mid.sentence after.sentence after.block } INTEGERS {editor.used} FUNCTION {init.state.consts} { #0 'before.all := #1 'mid.sentence := #2 'after.sentence := #3 'after.block := } STRINGS { s t } FUNCTION {output.nonnull} { 's := output.state mid.sentence = { ", " * write$ } { output.state after.block = { add.period$ write$ newline$ "\newblock " write$ } { output.state before.all = 'write$ { add.period$ " " * write$ } if$ } if$ mid.sentence 'output.state := } if$ s } FUNCTION {output} { duplicate$ empty$ 'pop$ 'output.nonnull if$ } FUNCTION {output.check} { 't := duplicate$ empty$ { pop$ "empty " t * " in " * cite$ * warning$ } 'output.nonnull if$ } FUNCTION {output.bibitem} { newline$ "\bibitem[" write$ label write$ "]{" write$ cite$ write$ "}" write$ newline$ "" before.all 'output.state := #0 'editor.used := } FUNCTION {fin.entry} { add.period$ write$ newline$ } FUNCTION {new.block} { output.state before.all = 'skip$ { after.block 'output.state := } if$ } FUNCTION {new.sentence} { output.state after.block = 'skip$ { output.state before.all = 'skip$ { after.sentence 'output.state := } if$ } if$ } FUNCTION {not} { { #0 } { #1 } if$ } FUNCTION {and} { 'skip$ { pop$ #0 } if$ } FUNCTION {or} { { pop$ #1 } 'skip$ if$ } FUNCTION {new.block.checka} { empty$ 'skip$ 'new.block if$ } FUNCTION {new.block.checkb} { empty$ swap$ empty$ and 'skip$ 'new.block if$ } FUNCTION {new.sentence.checka} { empty$ 'skip$ 'new.sentence if$ } FUNCTION {new.sentence.checkb} { empty$ swap$ empty$ and 'skip$ 'new.sentence if$ } FUNCTION {either.or.check} { empty$ 'pop$ { "can't use both " swap$ * " fields in " * cite$ * warning$ } if$ } FUNCTION {empty.misc.check} { author empty$ title empty$ date empty$ note empty$ and and and key empty$ not and { "all relevant fields are empty in " cite$ * warning$ } 'skip$ if$ } FUNCTION {ignoring} { empty$ 'pop$ { "ignoring " swap$ * " in " * cite$ * warning$ } if$ } FUNCTION {field.or.null} { duplicate$ empty$ { pop$ "" } 'skip$ if$ } FUNCTION {emphasize} { duplicate$ empty$ { pop$ "" } { "{\em " swap$ * "}" * } if$ } FUNCTION {embolden} { duplicate$ empty$ { pop$ "" } { "{\bf " swap$ * "}" * } if$ } FUNCTION {tie.or.space.connect} { duplicate$ text.length$ #3 < { "~" } { " " } if$ swap$ * * } INTEGERS { nameptr namesleft numnames } FUNCTION {format.names} { 's := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := nameptr #1 > { namesleft #1 > { ", " * t * } { numnames #2 > { "," * } 'skip$ if$ t "others" = { " et~al." * } { " and " * t * } if$ } if$ } 't if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } FUNCTION {format.authors} { author empty$ { "" } { author format.names } if$ } FUNCTION {format.editors} { editor empty$ editor.used or { "" } { editor format.names editor #-1 #1 substring$ ")" = 'skip$ { editor num.names$ #1 > { ", editors" * } { ", editor" * } if$ } if$ #1 'editor.used := } if$ } FUNCTION {format.date} { date empty$ { "" } { date } if$ } FUNCTION {format.title} { title empty$ { "" } 'title if$ } FUNCTION {format.btitle} { title emphasize } FUNCTION {format.bvolume} { volume empty$ { "" } { "volume" volume tie.or.space.connect number empty$ 'skip$ { ", number" number tie.or.space.connect * "volume+number and series+number" series either.or.check } if$ series empty$ 'skip$ { " of " * series * } if$ } if$ } FUNCTION {format.number.series} { volume empty$ { number empty$ { series field.or.null } { output.state mid.sentence = { "number" } { "Number" } if$ number tie.or.space.connect series empty$ { "there's a number but no series in " cite$ * warning$ } { " in " * series * } if$ } if$ } { "" } if$ } FUNCTION {format.edition} { edition empty$ { "" } { output.state mid.sentence = { edition #1 #1 substring$ "l" change.case$ edition #2 global.max$ substring$ * } 'skip$ if$ } if$ } INTEGERS { multiresult } FUNCTION {multi.page.check} { 't := #0 'multiresult := { multiresult not t empty$ not and } { t #1 #1 substring$ duplicate$ "-" = swap$ duplicate$ "," = swap$ "+" = or or { #1 'multiresult := } { t #2 global.max$ substring$ 't := } if$ } while$ multiresult } FUNCTION {format.pages} { pages empty$ { "" } { output.state mid.sentence = { "p" } { "P" } if$ pages multi.page.check { "ages" * pages tie.or.space.connect } { "age" * pages tie.or.space.connect } if$ } if$ } FUNCTION {format.vol.num.pages} { volume field.or.null embolden number empty$ 'skip$ { volume empty$ { number * } { "(" number * ")" * * } if$ } if$ pages empty$ 'skip$ { duplicate$ empty$ { pop$ format.pages } { ":" * pages * } if$ } if$ } FUNCTION {format.in.ed.title} { field.or.null editor empty$ { "In " } { duplicate$ empty$ { "In " format.editors * } { "In " format.editors * ", " * } if$ } if$ swap$ * } FUNCTION {format.conference} { conference field.or.null emphasize conflocation empty$ 'skip$ { " (" conflocation * ")" * * } if$ } FUNCTION {format.journal} { journal empty$ { "empty journal in " cite$ * warning$ } 'skip$ if$ format.editors output journal emphasize output format.vol.num.pages } FUNCTION {article} { output.bibitem format.authors "author" output.check new.block format.title "title" output.check new.block format.journal output publisher conference new.block.checkb format.conference output publisher output format.date "date" output.check new.block note output fin.entry "booktitle" booktitle ignoring "edition" edition ignoring "reportnumber" reportnumber ignoring "series" series ignoring } FUNCTION {book} { output.bibitem author empty$ { format.editors "author and editor" output.check } { format.authors output.nonnull series empty$ { "author and editor" editor either.or.check } 'skip$ if$ } if$ new.block format.btitle "title" output.check format.bvolume output format.number.series output format.editors output format.edition output publisher reportnumber new.block.checkb publisher "publisher" output.check reportnumber output format.date "date" output.check new.block note output fin.entry "booktitle" booktitle ignoring "conference" conference ignoring "conflocation" conflocation ignoring "journal" journal ignoring "pages" pages ignoring } FUNCTION {inbook} { output.bibitem format.authors "author" output.check new.block format.title "title" output.check new.block booktitle emphasize format.in.ed.title "booktitle" output.check format.bvolume output format.number.series output format.pages "pages" output.check format.edition output publisher reportnumber new.block.checkb publisher "publisher" output.check reportnumber output format.date "date" output.check new.block note output fin.entry "conference" conference ignoring "conflocation" conflocation ignoring "journal" journal ignoring } FUNCTION {inproceedings} { output.bibitem format.authors "author" output.check new.block format.title "title" output.check new.block format.conference "conference and location" output.check journal empty$ { format.bvolume output format.number.series output format.pages output format.editors output format.edition output } { new.block "Published as " output before.all 'output.state := format.journal output "series" series ignoring "edition" edition ignoring } if$ publisher reportnumber new.block.checkb publisher output reportnumber output format.date "date" output.check new.block note output fin.entry "booktitle" booktitle ignoring } FUNCTION {manual} { output.bibitem author empty$ editor empty$ and { publisher empty$ { "no author, editor or publisher in " cite$ * warning$ } { publisher output.nonnull } if$ } { author empty$ { format.editors output.nonnull } { format.authors output.nonnull } if$ } if$ new.block format.btitle "title" output.check reportnumber output format.edition output author empty$ editor empty$ and 'skip$ { publisher new.block.checka publisher output } if$ format.date "date" output.check new.block note output fin.entry "booktitle" booktitle ignoring "conference" conference ignoring "conflocation" conflocation ignoring "journal" journal ignoring "number" number ignoring "pages" pages ignoring "series" series ignoring } FUNCTION {misc} { output.bibitem format.authors output title new.block.checka format.title "title" output.check format.editors output format.edition output publisher reportnumber new.block.checkb publisher output reportnumber output format.date "date" output.check new.block note "public note" output.check fin.entry empty.misc.check "booktitle" booktitle ignoring "conference" conference ignoring "conflocation" conflocation ignoring "journal" journal ignoring "number" number ignoring "pages" pages ignoring "reportnumber" reportnumber ignoring "series" series ignoring "volume" volume ignoring } FUNCTION {phdthesis} { output.bibitem format.authors "author" output.check new.block format.btitle "title" output.check new.block reportnumber empty$ { "PhD thesis" output.nonnull } { "PhD thesis, published as " reportnumber * output.nonnull } if$ new.block publisher "publisher" output.check format.date "date" output.check new.block note output fin.entry "booktitle" booktitle ignoring "conference" conference ignoring "conflocation" conflocation ignoring "edition" edition ignoring "editor" editor ignoring "journal" journal ignoring "number" number ignoring "pages" pages ignoring "series" series ignoring "volume" volume ignoring } FUNCTION {proceedings} { output.bibitem author empty$ { format.editors "author and editor" output.check } { "author and editor" editor either.or.check format.authors output.nonnull } if$ format.btitle "title" output.check format.conference output journal empty$ { format.bvolume output format.number.series output "pages" pages ignoring } { new.block "Published as " output.nonnull before.all 'output.state := format.journal output "series" series ignoring } if$ publisher reportnumber new.block.checkb publisher output reportnumber output format.date "date" output.check new.block note output fin.entry "booktitle" booktitle ignoring "edition" edition ignoring } FUNCTION {techreport} { output.bibitem author empty$ { format.editors "author and editor" output.check } { format.authors output.nonnull "author and editor" editor either.or.check } if$ new.block format.title "title" output.check new.block reportnumber empty$ { "Technical report" } { reportnumber } if$ output.nonnull format.edition output new.block publisher "publisher" output.check format.date "date" output.check new.block note output fin.entry "booktitle" booktitle ignoring "conference" conference ignoring "conflocation" conflocation ignoring "journal" journal ignoring "number" number ignoring "pages" pages ignoring "series" series ignoring "volume" volume ignoring } FUNCTION {unpublished} { output.bibitem format.authors "author" output.check new.block format.title "title" output.check publisher reportnumber new.block.checkb publisher output reportnumber output format.date "date" output.check new.block note "note" output.check fin.entry "booktitle" booktitle ignoring "conference" conference ignoring "conflocation" conflocation ignoring "edition" edition ignoring "editor" editor ignoring "journal" journal ignoring "number" number ignoring "pages" pages ignoring "series" series ignoring "volume" volume ignoring } FUNCTION {default.type} { misc } READ FUNCTION {sortify} { purify$ "l" change.case$ } INTEGERS { len } FUNCTION {chop.word} { 's := 'len := s #1 len substring$ = { s len #1 + global.max$ substring$ } 's if$ } FUNCTION {calc.label} { key 'label := key sortify 'sort.label := } FUNCTION {sort.format.names} { 's := #1 'nameptr := "" s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { nameptr #1 > { " " * } 'skip$ if$ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := nameptr numnames = t "others" = and { "et al" * } { t sortify * } if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } FUNCTION {sort.format.title} { 't := "A " #2 "An " #3 "The " #4 t chop.word chop.word chop.word sortify #1 global.max$ substring$ } FUNCTION {author.sort} { author empty$ { key empty$ { "to sort, need author or key in " cite$ * warning$ "" } { key sortify } if$ } { author sort.format.names } if$ } FUNCTION {author.editor.sort} { author empty$ { editor empty$ { key empty$ { "to sort, need author, editor, or key in " cite$ * warning$ "" } { key sortify } if$ } { editor sort.format.names } if$ } { author sort.format.names } if$ } FUNCTION {author.publisher.sort} { author empty$ { publisher empty$ { key empty$ { "to sort, need author, publisher, or key in " cite$ * warning$ "" } { key sortify } if$ } { "The " #4 publisher chop.word sortify } if$ } { author sort.format.names } if$ } FUNCTION {editor.publisher.sort} { editor empty$ { publisher empty$ { key empty$ { "to sort, need editor, publisher, or key in " cite$ * warning$ "" } { key sortify } if$ } { "The " #4 publisher chop.word sortify } if$ } { editor sort.format.names } if$ } FUNCTION {presort} { calc.label sort.label " " * type$ "book" = type$ "inbook" = or 'author.editor.sort { type$ "proceedings" = 'editor.publisher.sort { type$ "manual" = 'author.publisher.sort 'author.sort if$ } if$ } if$ * " " * date field.or.null sortify * " " * title field.or.null sort.format.title * #1 entry.max$ substring$ 'sort.key$ := } ITERATE {presort} SORT STRINGS { longest.label last.sort.label next.extra } INTEGERS { longest.label.width last.extra.num } FUNCTION {initialize.longest.label} { "" 'longest.label := #0 int.to.chr$ 'last.sort.label := "" 'next.extra := #0 'longest.label.width := #0 'last.extra.num := } FUNCTION {forward.pass} { last.sort.label sort.label = { last.extra.num #1 + 'last.extra.num := last.extra.num int.to.chr$ 'extra.label := } { "a" chr.to.int$ 'last.extra.num := "" 'extra.label := sort.label 'last.sort.label := } if$ } FUNCTION {reverse.pass} { next.extra "b" = { "a" 'extra.label := } 'skip$ if$ label extra.label * 'label := label width$ longest.label.width > { label 'longest.label := label width$ 'longest.label.width := } 'skip$ if$ extra.label 'next.extra := } EXECUTE {initialize.longest.label} ITERATE {forward.pass} REVERSE {reverse.pass} FUNCTION {begin.bib} { preamble$ empty$ 'skip$ { preamble$ write$ newline$ } if$ longest.label width$ #0 > % Original had "9" for "0", { "12" 'longest.label := } % and used "123456789" here 'skip$ if$ "\begin{thebibliography}{" longest.label * "}" * write$ newline$ } EXECUTE {begin.bib} EXECUTE {init.state.consts} ITERATE {call.type$} FUNCTION {end.bib} { newline$ "\end{thebibliography}" write$ newline$ } EXECUTE {end.bib}