Chris@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% IEEE.bst %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Chris@0: % Bibliography Syle file for articles according to IEEE instructions Chris@0: % balemi@aut.ee.ethz.ch <22-JUN-93> Chris@0: % modified from unsrt.bib. Contributions by Richard H. Roy Chris@0: Chris@0: ENTRY Chris@0: { address Chris@0: author Chris@0: booktitle Chris@0: chapter Chris@0: edition Chris@0: editor Chris@0: howpublished Chris@0: institution Chris@0: journal Chris@0: key Chris@0: month Chris@0: note Chris@0: number Chris@0: organization Chris@0: pages Chris@0: publisher Chris@0: school Chris@0: series Chris@0: title Chris@0: type Chris@0: volume Chris@0: year Chris@0: } Chris@0: {} Chris@0: { label } Chris@0: Chris@0: INTEGERS { output.state before.all mid.sentence after.sentence after.block } Chris@0: Chris@0: FUNCTION {init.state.consts} Chris@0: { #0 'before.all := Chris@0: #1 'mid.sentence := Chris@0: #2 'after.sentence := Chris@0: #3 'after.block := Chris@0: } Chris@0: Chris@0: STRINGS { s t } Chris@0: Chris@0: FUNCTION {output.nonnull} Chris@0: { 's := Chris@0: output.state mid.sentence = Chris@0: { ", " * write$ } Chris@0: { output.state after.block = Chris@0: % next line commented out by rhr and changed to write comma Chris@0: % { add.period$ write$ Chris@0: { ", " * write$ Chris@0: newline$ Chris@0: "\newblock " write$ Chris@0: } Chris@0: { output.state before.all = Chris@0: 'write$ Chris@0: { add.period$ " " * write$ } Chris@0: if$ Chris@0: } Chris@0: if$ Chris@0: mid.sentence 'output.state := Chris@0: } Chris@0: if$ Chris@0: s Chris@0: } Chris@0: Chris@0: FUNCTION {output} Chris@0: { duplicate$ empty$ Chris@0: 'pop$ Chris@0: 'output.nonnull Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {output.check} Chris@0: { 't := Chris@0: duplicate$ empty$ Chris@0: { pop$ "empty " t * " in " * cite$ * warning$ } Chris@0: 'output.nonnull Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {output.bibitem} Chris@0: { newline$ Chris@0: "\bibitem{" write$ Chris@0: cite$ write$ Chris@0: "}" write$ Chris@0: newline$ Chris@0: "" Chris@0: before.all 'output.state := Chris@0: } Chris@0: Chris@0: FUNCTION {fin.entry} Chris@0: { add.period$ Chris@0: write$ Chris@0: newline$ Chris@0: } Chris@0: Chris@0: % 5/24/89 rhr Chris@0: % modified fin.entry function - prints note field after body of entry Chris@0: %FUNCTION {fin.entry} Chris@0: %{ add.period$ Chris@0: % note empty$ Chris@0: % 'write$ Chris@0: % { "\par\bgroup\parindent=0em " * annote * "\par\egroup " * write$ Chris@0: % } Chris@0: % if$ Chris@0: % newline$ Chris@0: %} Chris@0: Chris@0: FUNCTION {new.block} Chris@0: { output.state before.all = Chris@0: 'skip$ Chris@0: { after.block 'output.state := } Chris@0: if$ Chris@0: } Chris@0: Chris@0: % new block without terminating last block with a comma Chris@0: FUNCTION {new.ncblock} Chris@0: { Chris@0: write$ Chris@0: newline$ Chris@0: "\newblock " Chris@0: before.all 'output.state := Chris@0: } Chris@0: Chris@0: FUNCTION {new.nccont} Chris@0: { Chris@0: write$ Chris@0: " " Chris@0: before.all 'output.state := Chris@0: } Chris@0: Chris@0: FUNCTION {new.sentence} Chris@0: { output.state after.block = Chris@0: 'skip$ Chris@0: { output.state before.all = Chris@0: 'skip$ Chris@0: { after.sentence 'output.state := } Chris@0: if$ Chris@0: } Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {not} Chris@0: { { #0 } Chris@0: { #1 } Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {and} Chris@0: { 'skip$ Chris@0: { pop$ #0 } Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {or} Chris@0: { { pop$ #1 } Chris@0: 'skip$ Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {new.block.checka} Chris@0: { empty$ Chris@0: 'skip$ Chris@0: 'new.block Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {new.block.checkb} Chris@0: { empty$ Chris@0: swap$ empty$ Chris@0: and Chris@0: 'skip$ Chris@0: 'new.block Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {new.sentence.checka} Chris@0: { empty$ Chris@0: 'skip$ Chris@0: 'new.sentence Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {new.sentence.checkb} Chris@0: { empty$ Chris@0: swap$ empty$ Chris@0: and Chris@0: 'skip$ Chris@0: 'new.sentence Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {field.or.null} Chris@0: { duplicate$ empty$ Chris@0: { pop$ "" } Chris@0: 'skip$ Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {emphasize} Chris@0: { duplicate$ empty$ Chris@0: { pop$ "" } Chris@0: { "{\em " swap$ * "}" * } Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {boldface} Chris@0: { duplicate$ empty$ Chris@0: { pop$ "" } Chris@0: { "{\bf " swap$ * "}" * } Chris@0: if$ Chris@0: } Chris@0: Chris@0: %FUNCTION {boldface} Chris@0: %{ 's swap$ := Chris@0: % s "" = Chris@0: % { "" } Chris@0: % { "{\bf " s * "}" * } Chris@0: % if$ Chris@0: %} Chris@0: % Chris@0: INTEGERS { nameptr namesleft numnames } Chris@0: Chris@0: FUNCTION {format.names} Chris@0: { 's := Chris@0: #1 'nameptr := Chris@0: s num.names$ 'numnames := Chris@0: numnames 'namesleft := Chris@0: { namesleft #0 > } Chris@0: { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := Chris@0: nameptr #1 > Chris@0: { namesleft #1 > Chris@0: { ", " * t * } Chris@0: { numnames #2 > Chris@0: { "," * } Chris@0: 'skip$ Chris@0: if$ Chris@0: t "others" = Chris@0: { " et~al." * } Chris@0: { " and " * t * } Chris@0: if$ Chris@0: } Chris@0: if$ Chris@0: } Chris@0: 't Chris@0: if$ Chris@0: nameptr #1 + 'nameptr := Chris@0: namesleft #1 - 'namesleft := Chris@0: } Chris@0: while$ Chris@0: } Chris@0: Chris@0: FUNCTION {format.authors} Chris@0: { author empty$ Chris@0: { "" } Chris@0: { author format.names } Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {format.editors} Chris@0: { editor empty$ Chris@0: { "" } Chris@0: { editor format.names Chris@0: editor num.names$ #1 > Chris@0: { ", Eds." * } Chris@0: { ", Ed." * } Chris@0: if$ Chris@0: } Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {format.title} Chris@0: { title empty$ Chris@0: { "" } Chris@0: { "``" title "t" change.case$ * } Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {n.dashify} Chris@0: { 't := Chris@0: "" Chris@0: { t empty$ not } Chris@0: { t #1 #1 substring$ "-" = Chris@0: { t #1 #2 substring$ "--" = not Chris@0: { "--" * Chris@0: t #2 global.max$ substring$ 't := Chris@0: } Chris@0: { { t #1 #1 substring$ "-" = } Chris@0: { "-" * Chris@0: t #2 global.max$ substring$ 't := Chris@0: } Chris@0: while$ Chris@0: } Chris@0: if$ Chris@0: } Chris@0: { t #1 #1 substring$ * Chris@0: t #2 global.max$ substring$ 't := Chris@0: } Chris@0: if$ Chris@0: } Chris@0: while$ Chris@0: } Chris@0: Chris@0: FUNCTION {format.date} Chris@0: { year empty$ Chris@0: { month empty$ Chris@0: { "" } Chris@0: { "there's a month but no year in " cite$ * warning$ Chris@0: month Chris@0: } Chris@0: if$ Chris@0: } Chris@0: { month empty$ Chris@0: 'year Chris@0: { month " " * year * } Chris@0: if$ Chris@0: } Chris@0: if$ Chris@0: } Chris@0: Chris@0: % FUNCTION {format.date} Chris@0: % { year empty$ Chris@0: % 'year Chris@0: % { " " year * } Chris@0: % if$ Chris@0: % } Chris@0: Chris@0: FUNCTION {format.btitle} Chris@0: { title emphasize Chris@0: } Chris@0: Chris@0: FUNCTION {tie.or.space.connect} Chris@0: { duplicate$ text.length$ #3 < Chris@0: { "~" } Chris@0: { " " } Chris@0: if$ Chris@0: swap$ * * Chris@0: } Chris@0: Chris@0: FUNCTION {either.or.check} Chris@0: { empty$ Chris@0: 'pop$ Chris@0: { "can't use both " swap$ * " fields in " * cite$ * warning$ } Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {format.bvolume} Chris@0: { volume empty$ Chris@0: { "" } Chris@0: { "vol." volume tie.or.space.connect Chris@0: series empty$ Chris@0: 'skip$ Chris@0: { " of " * series emphasize * } Chris@0: if$ Chris@0: "volume and number" number either.or.check Chris@0: } Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {format.number.series} Chris@0: { volume empty$ Chris@0: { number empty$ Chris@0: { series field.or.null } Chris@0: { output.state mid.sentence = Chris@0: { "number" } Chris@0: { "Number" } Chris@0: if$ Chris@0: number tie.or.space.connect Chris@0: series empty$ Chris@0: { "there's a number but no series in " cite$ * warning$ } Chris@0: { " in " * series * } Chris@0: if$ Chris@0: } Chris@0: if$ Chris@0: } Chris@0: { "" } Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {format.edition} Chris@0: { edition empty$ Chris@0: { "" } Chris@0: { output.state mid.sentence = Chris@0: { edition "l" change.case$ " edition" * } Chris@0: { edition "t" change.case$ " edition" * } Chris@0: if$ Chris@0: } Chris@0: if$ Chris@0: } Chris@0: Chris@0: INTEGERS { multiresult } Chris@0: Chris@0: FUNCTION {multi.page.check} Chris@0: { 't := Chris@0: #0 'multiresult := Chris@0: { multiresult not Chris@0: t empty$ not Chris@0: and Chris@0: } Chris@0: { t #1 #1 substring$ Chris@0: duplicate$ "-" = Chris@0: swap$ duplicate$ "," = Chris@0: swap$ "+" = Chris@0: or or Chris@0: { #1 'multiresult := } Chris@0: { t #2 global.max$ substring$ 't := } Chris@0: if$ Chris@0: } Chris@0: while$ Chris@0: multiresult Chris@0: } Chris@0: Chris@0: FUNCTION {format.pages} Chris@0: { pages empty$ Chris@0: { "" } Chris@0: { pages multi.page.check Chris@0: { "pp." pages n.dashify tie.or.space.connect } Chris@0: { "p." pages tie.or.space.connect } Chris@0: if$ Chris@0: } Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {format.vol.num.pages} Chris@0: { Chris@0: volume empty$ Chris@0: {"" } Chris@0: {"vol. " volume *} Chris@0: if$ Chris@0: number empty$ Chris@0: 'skip$ Chris@0: {", no. " number * *} Chris@0: if$ Chris@0: pages empty$ Chris@0: 'skip$ Chris@0: { duplicate$ empty$ Chris@0: { pop$ format.pages } Chris@0: { ", pp. " * pages n.dashify * } Chris@0: if$ Chris@0: } Chris@0: if$ Chris@0: } Chris@0: Chris@0: %FUNCTION {format.vol.num.pages} Chris@0: %%boldface added 3/17/87 rhr Chris@0: %{ volume field.or.null boldface Chris@0: % number empty$ Chris@0: % 'skip$ Chris@0: % { "(" number * ")" * * Chris@0: % volume empty$ Chris@0: % { "there's a number but no volume in " cite$ * warning$ } Chris@0: % 'skip$ Chris@0: % if$ Chris@0: % } Chris@0: % if$ Chris@0: % pages empty$ Chris@0: % 'skip$ Chris@0: % { duplicate$ empty$ Chris@0: % { pop$ format.pages } Chris@0: % { ":" * pages n.dashify * } Chris@0: % if$ Chris@0: % } Chris@0: % if$ Chris@0: %} Chris@0: Chris@0: FUNCTION {format.chapter.pages} Chris@0: { chapter empty$ Chris@0: 'format.pages Chris@0: { type empty$ Chris@0: { "chapter" } Chris@0: { type "l" change.case$ } Chris@0: if$ Chris@0: chapter tie.or.space.connect Chris@0: pages empty$ Chris@0: 'skip$ Chris@0: { ", " * format.pages * } Chris@0: if$ Chris@0: } Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {format.in.ed.booktitle} Chris@0: { booktitle empty$ Chris@0: { "" } Chris@0: { editor empty$ Chris@0: { "in " booktitle emphasize * } Chris@0: { "in " booktitle emphasize * ", " * format.editors * } Chris@0: if$ Chris@0: } Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {empty.misc.check} Chris@0: { author empty$ title empty$ howpublished empty$ Chris@0: month empty$ year empty$ note empty$ Chris@0: and and and and and Chris@0: { "all relevant fields are empty in " cite$ * warning$ } Chris@0: 'skip$ Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {format.thesis.type} Chris@0: { type empty$ Chris@0: 'skip$ Chris@0: { pop$ Chris@0: type "t" change.case$ Chris@0: } Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {format.tr.number} Chris@0: { type empty$ Chris@0: { "Tech. {R}ep." } Chris@0: 'type Chris@0: if$ Chris@0: number empty$ Chris@0: { "t" change.case$ } Chris@0: { number tie.or.space.connect } Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {format.article.crossref} Chris@0: { key empty$ Chris@0: { journal empty$ Chris@0: { "need key or journal for " cite$ * " to crossref " * crossref * Chris@0: warning$ Chris@0: "" Chris@0: } Chris@0: { "In {\em " journal * "\/}" * } Chris@0: if$ Chris@0: } Chris@0: { "In " key * } Chris@0: if$ Chris@0: " \cite{" * crossref * "}" * Chris@0: } Chris@0: Chris@0: FUNCTION {format.crossref.editor} Chris@0: { editor #1 "{vv~}{ll}" format.name$ Chris@0: editor num.names$ duplicate$ Chris@0: #2 > Chris@0: { pop$ " et~al." * } Chris@0: { #2 < Chris@0: 'skip$ Chris@0: { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = Chris@0: { " et~al." * } Chris@0: { " and " * editor #2 "{vv~}{ll}" format.name$ * } Chris@0: if$ Chris@0: } Chris@0: if$ Chris@0: } Chris@0: if$ Chris@0: } Chris@0: Chris@0: FUNCTION {format.book.crossref} Chris@0: { volume empty$ Chris@0: { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ Chris@0: "In " Chris@0: } Chris@0: { "vol." volume tie.or.space.connect Chris@0: " of " * Chris@0: } Chris@0: if$ Chris@0: editor empty$ Chris@0: editor field.or.null author field.or.null = Chris@0: or Chris@0: { key empty$ Chris@0: { series empty$ Chris@0: { "need editor, key, or series for " cite$ * " to crossref " * Chris@0: crossref * warning$ Chris@0: "" * Chris@0: } Chris@0: { "{\em " * series * "\/}" * } Chris@0: if$ Chris@0: } Chris@0: { key * } Chris@0: if$ Chris@0: } Chris@0: { format.crossref.editor * } Chris@0: if$ Chris@0: " \cite{" * crossref * "}" * Chris@0: } Chris@0: Chris@0: FUNCTION {format.incoll.inproc.crossref} Chris@0: { editor empty$ Chris@0: editor field.or.null author field.or.null = Chris@0: or Chris@0: { key empty$ Chris@0: { booktitle empty$ Chris@0: { "need editor, key, or booktitle for " cite$ * " to crossref " * Chris@0: crossref * warning$ Chris@0: "" Chris@0: } Chris@0: { "In {\em " booktitle * "\/}" * } Chris@0: if$ Chris@0: } Chris@0: { "In " key * } Chris@0: if$ Chris@0: } Chris@0: { "In " format.crossref.editor * } Chris@0: if$ Chris@0: " \cite{" * crossref * "}" * Chris@0: } Chris@0: Chris@0: FUNCTION {article} Chris@0: { output.bibitem Chris@0: format.authors "author" output.check Chris@0: new.block Chris@0: format.title ",''" * "title" output.check Chris@0: new.ncblock Chris@0: crossref missing$ Chris@0: { journal emphasize "journal" output.check Chris@0: format.vol.num.pages output Chris@0: format.date "year" output.check Chris@0: } Chris@0: { format.article.crossref output.nonnull Chris@0: format.pages output Chris@0: } Chris@0: if$ Chris@0: new.block Chris@0: note output Chris@0: fin.entry Chris@0: } Chris@0: Chris@0: FUNCTION {book} Chris@0: { output.bibitem Chris@0: author empty$ Chris@0: { format.editors "author and editor" output.check } Chris@0: { format.authors output.nonnull Chris@0: crossref missing$ Chris@0: { "author and editor" editor either.or.check } Chris@0: 'skip$ Chris@0: if$ Chris@0: } Chris@0: if$ Chris@0: new.block Chris@0: format.btitle "title" output.check Chris@0: crossref missing$ Chris@0: { format.bvolume output Chris@0: new.block Chris@0: format.number.series output Chris@0: new.sentence Chris@0: publisher "publisher" output.check Chris@0: address output Chris@0: } Chris@0: { new.block Chris@0: format.book.crossref output.nonnull Chris@0: } Chris@0: if$ Chris@0: format.edition output Chris@0: format.date "year" output.check Chris@0: new.block Chris@0: note output Chris@0: fin.entry Chris@0: } Chris@0: Chris@0: FUNCTION {booklet} Chris@0: { output.bibitem Chris@0: format.authors output Chris@0: new.block Chris@0: format.title ",''" * "title" output.check Chris@0: new.nccont Chris@0: howpublished address new.block.checkb Chris@0: howpublished output Chris@0: address output Chris@0: format.date output Chris@0: new.block Chris@0: note output Chris@0: fin.entry Chris@0: } Chris@0: Chris@0: FUNCTION {inbook} Chris@0: { output.bibitem Chris@0: author empty$ Chris@0: { format.editors "author and editor" output.check } Chris@0: { format.authors output.nonnull Chris@0: crossref missing$ Chris@0: { "author and editor" editor either.or.check } Chris@0: 'skip$ Chris@0: if$ Chris@0: } Chris@0: if$ Chris@0: new.block Chris@0: format.btitle "title" output.check Chris@0: crossref missing$ Chris@0: { format.bvolume output Chris@0: format.chapter.pages "chapter and pages" output.check Chris@0: new.block Chris@0: format.number.series output Chris@0: new.sentence Chris@0: publisher "publisher" output.check Chris@0: address output Chris@0: } Chris@0: { format.chapter.pages "chapter and pages" output.check Chris@0: new.block Chris@0: format.book.crossref output.nonnull Chris@0: } Chris@0: if$ Chris@0: format.edition output Chris@0: format.date "year" output.check Chris@0: new.block Chris@0: note output Chris@0: fin.entry Chris@0: } Chris@0: Chris@0: FUNCTION {incollection} Chris@0: { output.bibitem Chris@0: format.authors "author" output.check Chris@0: new.block Chris@0: format.title ",''" * "title" output.check Chris@0: new.ncblock Chris@0: crossref missing$ Chris@0: { format.in.ed.booktitle "booktitle" output.check Chris@0: format.bvolume output Chris@0: format.number.series output Chris@0: format.chapter.pages output Chris@0: new.sentence Chris@0: publisher "publisher" output.check Chris@0: address output Chris@0: format.edition output Chris@0: format.date "year" output.check Chris@0: } Chris@0: { format.incoll.inproc.crossref output.nonnull Chris@0: format.chapter.pages output Chris@0: } Chris@0: if$ Chris@0: new.block Chris@0: note output Chris@0: fin.entry Chris@0: } Chris@0: Chris@0: FUNCTION {inproceedings} Chris@0: { output.bibitem Chris@0: format.authors "author" output.check Chris@0: new.block Chris@0: format.title ",''" * "title" output.check Chris@0: new.ncblock Chris@0: crossref missing$ Chris@0: { format.in.ed.booktitle "booktitle" output.check Chris@0: address empty$ Chris@0: { organization publisher new.sentence.checkb Chris@0: organization output Chris@0: format.date "year" output.check Chris@0: } Chris@0: { address output.nonnull Chris@0: format.date "year" output.check Chris@0: organization output Chris@0: } Chris@0: if$ Chris@0: format.bvolume output Chris@0: format.number.series output Chris@0: format.pages output Chris@0: publisher output Chris@0: } Chris@0: { format.incoll.inproc.crossref output.nonnull Chris@0: format.pages output Chris@0: } Chris@0: if$ Chris@0: new.block Chris@0: note output Chris@0: fin.entry Chris@0: } Chris@0: Chris@0: FUNCTION {conference} { inproceedings } Chris@0: Chris@0: FUNCTION {manual} Chris@0: { output.bibitem Chris@0: author empty$ Chris@0: { organization empty$ Chris@0: 'skip$ Chris@0: { organization output.nonnull Chris@0: address output Chris@0: } Chris@0: if$ Chris@0: } Chris@0: { format.authors output.nonnull } Chris@0: if$ Chris@0: new.block Chris@0: format.btitle "title" output.check Chris@0: author empty$ Chris@0: { organization empty$ Chris@0: { address new.block.checka Chris@0: address output Chris@0: } Chris@0: 'skip$ Chris@0: if$ Chris@0: } Chris@0: { organization address new.block.checkb Chris@0: organization output Chris@0: address output Chris@0: } Chris@0: if$ Chris@0: format.edition output Chris@0: format.date output Chris@0: new.block Chris@0: note output Chris@0: fin.entry Chris@0: } Chris@0: Chris@0: FUNCTION {mastersthesis} Chris@0: { output.bibitem Chris@0: format.authors "author" output.check Chris@0: new.block Chris@0: format.title ",''" * "title" output.check Chris@0: new.ncblock Chris@0: "M.S. thesis" format.thesis.type output.nonnull Chris@0: school "school" output.check Chris@0: address output Chris@0: format.date "year" output.check Chris@0: new.block Chris@0: note output Chris@0: fin.entry Chris@0: } Chris@0: Chris@0: FUNCTION {misc} Chris@0: { output.bibitem Chris@0: format.authors output Chris@0: title howpublished new.block.checkb Chris@0: format.title ",''" * output Chris@0: new.nccont Chris@0: howpublished new.block.checka Chris@0: howpublished output Chris@0: format.date output Chris@0: new.block Chris@0: note output Chris@0: fin.entry Chris@0: empty.misc.check Chris@0: } Chris@0: Chris@0: FUNCTION {phdthesis} Chris@0: { output.bibitem Chris@0: format.authors "author" output.check Chris@0: new.block Chris@0: format.btitle "title" output.check Chris@0: new.block Chris@0: "Ph.D. thesis" format.thesis.type output.nonnull Chris@0: school "school" output.check Chris@0: address output Chris@0: format.date "year" output.check Chris@0: new.block Chris@0: note output Chris@0: fin.entry Chris@0: } Chris@0: Chris@0: FUNCTION {proceedings} Chris@0: { output.bibitem Chris@0: editor empty$ Chris@0: { organization output } Chris@0: { format.editors output.nonnull } Chris@0: if$ Chris@0: new.block Chris@0: format.btitle "title" output.check Chris@0: format.bvolume output Chris@0: format.number.series output Chris@0: address empty$ Chris@0: { editor empty$ Chris@0: { publisher new.sentence.checka } Chris@0: { organization publisher new.sentence.checkb Chris@0: organization output Chris@0: } Chris@0: if$ Chris@0: publisher output Chris@0: format.date "year" output.check Chris@0: } Chris@0: { address output.nonnull Chris@0: format.date "year" output.check Chris@0: new.sentence Chris@0: editor empty$ Chris@0: 'skip$ Chris@0: { organization output } Chris@0: if$ Chris@0: publisher output Chris@0: } Chris@0: if$ Chris@0: new.block Chris@0: note output Chris@0: fin.entry Chris@0: } Chris@0: Chris@0: FUNCTION {techreport} Chris@0: { output.bibitem Chris@0: format.authors "author" output.check Chris@0: new.block Chris@0: format.title ",''" * "title" output.check Chris@0: new.ncblock Chris@0: format.tr.number output.nonnull Chris@0: institution "institution" output.check Chris@0: address output Chris@0: format.date "year" output.check Chris@0: new.block Chris@0: note output Chris@0: fin.entry Chris@0: } Chris@0: Chris@0: FUNCTION {unpublished} Chris@0: { output.bibitem Chris@0: format.authors "author" output.check Chris@0: new.block Chris@0: format.title ",''" * "title" output.check Chris@0: new.ncblock Chris@0: note "note" output.check Chris@0: format.date output Chris@0: fin.entry Chris@0: } Chris@0: Chris@0: FUNCTION {default.type} { misc } Chris@0: Chris@0: MACRO {jan} {"Jan."} Chris@0: Chris@0: MACRO {feb} {"Feb."} Chris@0: Chris@0: MACRO {mar} {"Mar."} Chris@0: Chris@0: MACRO {apr} {"Apr."} Chris@0: Chris@0: MACRO {may} {"May"} Chris@0: Chris@0: MACRO {jun} {"June"} Chris@0: Chris@0: MACRO {jul} {"July"} Chris@0: Chris@0: MACRO {aug} {"Aug."} Chris@0: Chris@0: MACRO {sep} {"Sept."} Chris@0: Chris@0: MACRO {oct} {"Oct."} Chris@0: Chris@0: MACRO {nov} {"Nov."} Chris@0: Chris@0: MACRO {dec} {"Dec."} Chris@0: Chris@0: MACRO {acmcs} {"ACM Computing Surveys"} Chris@0: Chris@0: MACRO {acta} {"Acta Informatica"} Chris@0: Chris@0: MACRO {cacm} {"Communications of the ACM"} Chris@0: Chris@0: MACRO {ibmjrd} {"IBM Journal of Research and Development"} Chris@0: Chris@0: MACRO {ibmsj} {"IBM Systems Journal"} Chris@0: Chris@0: MACRO {ieeese} {"IEEE Transactions on Software Engineering"} Chris@0: Chris@0: MACRO {ieeetc} {"IEEE Transactions on Computers"} Chris@0: Chris@0: MACRO {ieeetcad} Chris@0: {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} Chris@0: Chris@0: MACRO {ipl} {"Information Processing Letters"} Chris@0: Chris@0: MACRO {jacm} {"Journal of the ACM"} Chris@0: Chris@0: MACRO {jcss} {"Journal of Computer and System Sciences"} Chris@0: Chris@0: MACRO {scp} {"Science of Computer Programming"} Chris@0: Chris@0: MACRO {sicomp} {"SIAM Journal on Computing"} Chris@0: Chris@0: MACRO {tocs} {"ACM Transactions on Computer Systems"} Chris@0: Chris@0: MACRO {tods} {"ACM Transactions on Database Systems"} Chris@0: Chris@0: MACRO {tog} {"ACM Transactions on Graphics"} Chris@0: Chris@0: MACRO {toms} {"ACM Transactions on Mathematical Software"} Chris@0: Chris@0: MACRO {toois} {"ACM Transactions on Office Information Systems"} Chris@0: Chris@0: MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} Chris@0: Chris@0: MACRO {tcs} {"Theoretical Computer Science"} Chris@0: Chris@0: READ Chris@0: Chris@0: STRINGS { longest.label } Chris@0: Chris@0: INTEGERS { number.label longest.label.width } Chris@0: Chris@0: FUNCTION {initialize.longest.label} Chris@0: { "" 'longest.label := Chris@0: #1 'number.label := Chris@0: #0 'longest.label.width := Chris@0: } Chris@0: Chris@0: FUNCTION {longest.label.pass} Chris@0: { number.label int.to.str$ 'label := Chris@0: number.label #1 + 'number.label := Chris@0: label width$ longest.label.width > Chris@0: { label 'longest.label := Chris@0: label width$ 'longest.label.width := Chris@0: } Chris@0: 'skip$ Chris@0: if$ Chris@0: } Chris@0: Chris@0: EXECUTE {initialize.longest.label} Chris@0: Chris@0: ITERATE {longest.label.pass} Chris@0: Chris@0: FUNCTION {begin.bib} Chris@0: { preamble$ empty$ Chris@0: 'skip$ Chris@0: { preamble$ write$ newline$ } Chris@0: if$ Chris@0: "\begin{thebibliography}{" longest.label * "}" * write$ newline$ Chris@0: } Chris@0: Chris@0: EXECUTE {begin.bib} Chris@0: Chris@0: EXECUTE {init.state.consts} Chris@0: Chris@0: ITERATE {call.type$} Chris@0: Chris@0: FUNCTION {end.bib} Chris@0: { newline$ Chris@0: "\end{thebibliography}" write$ newline$ Chris@0: } Chris@0: Chris@0: EXECUTE {end.bib} Chris@0: Chris@0: %%%%%%%%%%%%%%%%%%%%%%%%%%%%% End of IEEE.bst %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%