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