% BibTeX bibliography style `bibhtml' % Outputs mostly html, post-process it with accompanying perl filter % % Designed to make a nice html index to electronic copies of papers % - relevant fields: filename filediz url % filename and filediz (file description) are for local copies % url is for url % if filediz is blank, defaults to [pdf] % for multiple files, and ENTRY { address author booktitle chapter edition editor howpublished institution journal key month number organization pages publisher school series title type volume year filename filediz url abstract } { } { label } STRINGS { s t } % Useful logical functions FUNCTION {not} { { #0 } { #1 } if$ } FUNCTION {and} { 'skip$ { pop$ #0 } if$ } FUNCTION {or} { { pop$ #1 } 'skip$ if$ } FUNCTION {output.bibitem} { "
  • [" cite$ * "]
    " * write$ newline$ } FUNCTION {fin.entry} { "

    " write$ newline$ newline$ } FUNCTION {emphasize} { duplicate$ empty$ { pop$ "" } { "" swap$ * "" * } if$ } FUNCTION {boldtext} { duplicate$ empty$ { pop$ "" } { "" swap$ * "" * } if$ } FUNCTION {quotetext} { duplicate$ empty$ { pop$ "" } { quote$ swap$ * quote$ * } if$ } FUNCTION {add.br} { duplicate$ empty$ { pop$ "
    " } { "
    " * } if$ } FUNCTION {n.dashify} { 't := "" { t empty$ #0 = } { t #1 #2 substring$ "--" = { "–" * t #3 global.max$ substring$ 't := } { t #1 #1 substring$ "-" = { "–" * } % "–" doesn't work with Netscape 4.7X { t #1 #1 substring$ * } if$ t #2 global.max$ substring$ 't := } if$ } while$ } 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 {output.authors} { author missing$ { "author missing in " cite$ * warning$ } { author empty$ { "author empty in " cite$ * warning$ } { author format.names "
    " * write$ newline$ } if$ } if$ } FUNCTION {output.editors} { editor empty$ { "editor empty in " cite$ * warning$ } { editor format.names editor num.names$ #1 > { " (editors)
    " * } { " (editor)
    " * } if$ write$ newline$ } if$ } FUNCTION {output.title} { title missing$ { "title missing in " cite$ * warning$ } { title empty$ { "title empty in " cite$ * warning$ } { title "t" change.case$ quotetext "
    " * write$ newline$ } if$ } if$ } FUNCTION {output.btitle} { title missing$ { "title missing in " cite$ * warning$ } { title empty$ { "title empty in " cite$ * warning$ } { title emphasize "
    " * write$ newline$ } if$ } if$ } FUNCTION {output.ctitle} { booktitle missing$ { "booktitle missing in " cite$ * warning$ } { booktitle empty$ { "booktitle empty in " cite$ * warning$ } { booktitle emphasize "
    " * write$ newline$ } if$ } if$ } FUNCTION {output.journal} { journal missing$ { "journal missing in " cite$ * warning$ } { journal empty$ { "journal empty in " cite$ * warning$ } { journal emphasize write$ } if$ } if$ } FUNCTION {output.volume} { volume missing$ { month missing$ { "volume missing in " cite$ * warning$ } { } if$ } { volume empty$ { "volume empty in " cite$ * warning$ } { " " volume boldtext * write$ } if$ } if$ } FUNCTION {output.number} { number missing$ { } { number empty$ { } { number "(" swap$ * ")" * write$ } if$ } if$ } FUNCTION {output.year} { year missing$ { "year missing in " cite$ * warning$ } { year empty$ { "year empty in " cite$ * warning$ } { volume missing$ { " (" month * " " * year * ")
    " * write$ newline$ } { year " (" swap$ * ")
    " * write$ newline$ } if$ } if$ } if$ } FUNCTION {output.byear} { year missing$ { "year missing in " cite$ * warning$ } { year empty$ { "year empty in " cite$ * warning$ } { year "
    " * write$ newline$ } if$ } if$ } FUNCTION {output.school} { school missing$ { "school missing in " cite$ * warning$ } { school empty$ { "school empty in " cite$ * warning$ } { school ", " * write$ } if$ } if$ } FUNCTION {output.institution} { institution missing$ { "institution missing in " cite$ * warning$ } { institution empty$ { "institution empty in " cite$ * warning$ } { institution ", " * write$ } if$ } if$ } FUNCTION {output.type} { type missing$ { } { type empty$ { "type empty in " cite$ * warning$ } { type write$ } if$ } if$ } FUNCTION {output.rnumber} { number missing$ { type missing$ { } { ", " write$ } if$ } { number empty$ { ", " write$ "number empty in " cite$ * warning$ } { " " number * ", " * write$ } if$ } if$ } FUNCTION {output.publisher} { publisher missing$ { } { publisher empty$ { } { publisher ", " * write$ } if$ } if$ } FUNCTION {output.address} { address missing$ { } { address empty$ { } { address ", " * write$ } if$ } if$ } FUNCTION {format.date} { year empty$ { month empty$ { "" } { "there's a month but no year in " cite$ * warning$ month } if$ } { month empty$ { "(" year * ")" * } { month " " * year * } if$ } if$ } FUNCTION {output.url} { url missing$ { } { url empty$ { } { url "online" * write$ newline$ } if$ } if$ } INTEGERS { filenameptr filenamesleft numfilenames filedizleft numfilediz } STRINGS { defaultdiz f d } FUNCTION {output.filename} { "[pdf]" 'defaultdiz := #1 'filenameptr := filename empty$ { #0 'numfilenames := } { filename num.names$ 'numfilenames := } if$ filediz missing$ { #0 'numfilediz := } { filediz num.names$ 'numfilediz := } if$ numfilenames 'filenamesleft := numfilediz 'filedizleft := { filenamesleft #0 > } { filename filenameptr "{ff{}}{vv{}}{ll{}}{jj}" format.name$ 'f := filedizleft #0 > { filediz filenameptr "{ff{}}{vv{}}{ll{}}{jj}" format.name$ 'd := } { "" 'd := } if$ d empty$ { defaultdiz 'd := } 'skip$ if$ "" * d * "" * write$ newline$ filenameptr #1 + 'filenameptr := filenamesleft #1 - 'filenamesleft := filedizleft #1 - 'filedizleft := } while$ { filedizleft #0 > } { filediz filenameptr "{ff{}}{vv{}}{ll{}}{jj}" format.name$ 'd := d write$ newline$ filenameptr #1 + 'filenameptr := filedizleft #1 - 'filedizleft := } while$ filename empty$ { filediz empty$ { } { "
    " write$ newline$ } if$ } { "
    " write$ newline$ } if$ } FUNCTION {tie.or.space.connect} { duplicate$ text.length$ #3 < { " " } { " " } if$ swap$ * * } FUNCTION {either.or.check} { empty$ 'pop$ { "can't use both " swap$ * " fields in " * cite$ * warning$ } if$ } FUNCTION {format.bvolume} { volume empty$ { "" } { "volume" volume tie.or.space.connect series empty$ 'skip$ { " of " * series emphasize * } if$ "volume and number" number either.or.check } 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 "l" change.case$ " edition" * } { edition "t" change.case$ " edition" * } 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 {output.pages} { pages missing$ { "pages missing in " cite$ * warning$ } { pages empty$ { "pages empty in " cite$ * warning$ } { ", " pages n.dashify * write$ } if$ } if$ } FUNCTION {format.chapter.pages} { chapter empty$ 'format.pages { type empty$ { "chapter" } { type "l" change.case$ } if$ chapter tie.or.space.connect pages empty$ 'skip$ { ", " * format.pages * } if$ } if$ } FUNCTION {format.in.ed.booktitle} { booktitle empty$ { "" } { editor empty$ { "In " booktitle emphasize * } { "In " format.editors * ", " * booktitle emphasize * } if$ } if$ } FUNCTION {empty.misc.check} { author empty$ title empty$ howpublished empty$ month empty$ year empty$ noTeX empty$ and and and and and key empty$ not and { "all relevant fields are empty in " cite$ * warning$ } 'skip$ if$ } FUNCTION {format.thesis.type} { type empty$ 'skip$ { pop$ type "t" change.case$ } if$ } FUNCTION {format.tr.number} { type empty$ { "Technical Report" } 'type if$ number empty$ { "t" change.case$ } { number tie.or.space.connect } if$ } FUNCTION {format.article.crossref} { key empty$ { journal empty$ { "need key or journal for " cite$ * " to crossref " * crossref * warning$ "" } { "In {\em " journal * "\/}" * } if$ } { "In " key * } if$ " \cite{" * crossref * "}" * } FUNCTION {format.crossref.editor} { editor #1 "{vv{ } }{ll{ }}" format.name$ editor num.names$ duplicate$ #2 > { pop$ " et al." * } { #2 < 'skip$ { editor #2 "{ff{ } }{vv{ } }{ll{ }}{ jj{ }}" format.name$ "others" = { " et al." * } { " and " * editor #2 "{vv{ } }{ll{ }}" format.name$ * } if$ } if$ } if$ } FUNCTION {format.book.crossref} { volume empty$ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ "In " } { "Volume" volume tie.or.space.connect " of " * } if$ editor empty$ editor field.or.null author field.or.null = or { key empty$ { series empty$ { "need editor, key, or series for " cite$ * " to crossref " * crossref * warning$ "" * } { "{\em " * series * "\/}" * } if$ } { key * } if$ } { format.crossref.editor * } if$ " \cite{" * crossref * "}" * } FUNCTION {format.incoll.inproc.crossref} { editor empty$ author field.or.null = % TEMP HACK % editor field.or.null author field.or.null = % or { key empty$ { booktitle empty$ { "need editor, key, or booktitle for " cite$ * " to crossref " * crossref * warning$ "" } { "In {\em " booktitle * "\/}" * } if$ } { "In " key * } if$ } { "In " format.crossref.editor * } if$ " \cite{" * crossref * "}" * } FUNCTION {article} { output.bibitem output.authors output.title output.journal output.volume output.number output.pages output.year output.filename output.url fin.entry } FUNCTION {book} { output.bibitem author empty$ { output.editors } { output.authors } if$ output.btitle output.publisher output.address output.byear output.filename output.url fin.entry } FUNCTION {booklet} { output.bibitem output.authors output.btitle howpublished write$ output.address output.byear fin.entry } FUNCTION {inbook} { output.bibitem author empty$ { output.editors } { output.authors } if$ output.title format.chapter.pages write$ crossref missing$ { format.bvolume write$ format.number.series write$ output.publisher output.address output.byear } { format.book.crossref write$ } if$ output.filename output.url fin.entry } FUNCTION {incollection} { output.bibitem output.authors output.title crossref missing$ { output.editors output.ctitle output.publisher output.address output.byear } { format.incoll.inproc.crossref write$ format.chapter.pages write$ } if$ output.filename output.url fin.entry } FUNCTION {inproceedings} { output.bibitem output.authors output.title crossref missing$ { output.editors output.ctitle output.publisher output.address output.byear } { format.incoll.inproc.crossref write$ format.chapter.pages write$ } if$ output.filename output.url fin.entry } FUNCTION {conference} { inproceedings } FUNCTION {manual} { output.bibitem author empty$ { organization empty$ 'skip$ { organization write$ output.address } if$ } { output.authors } if$ output.btitle author empty$ { organization empty$ { output.address } 'skip$ if$ } { organization write$ output.address } if$ format.edition write$ output.byear output.filename output.url fin.entry } FUNCTION {mastersthesis} { output.bibitem output.authors output.btitle "Master's thesis, " write$ output.school output.address output.byear output.filename output.url fin.entry } FUNCTION {misc} { output.bibitem output.authors output.title howpublished write$ ", " write$ output.byear output.filename output.url fin.entry } FUNCTION {phdthesis} { output.bibitem output.authors output.btitle "PhD thesis, " write$ output.school output.address output.byear output.filename output.url fin.entry } FUNCTION {proceedings} { output.bibitem editor empty$ { organization write$ } { output.editors } if$ output.btitle format.bvolume write$ format.number.series write$ address empty$ { editor empty$ { publisher write$ } { organization publisher * write$ organization write$ } if$ publisher write$ output.byear } { output.address output.byear editor empty$ 'skip$ { organization write$ } if$ publisher write$ } if$ fin.entry } FUNCTION {techreport} { output.bibitem output.authors output.btitle output.type output.rnumber output.institution output.address output.byear output.filename output.url fin.entry } FUNCTION {unpublished} { output.bibitem output.authors output.title format.date write$ fin.entry } FUNCTION {default.type} { misc } MACRO {jan} {"January"} MACRO {feb} {"February"} MACRO {mar} {"March"} MACRO {apr} {"April"} MACRO {may} {"May"} MACRO {jun} {"June"} MACRO {jul} {"July"} MACRO {aug} {"August"} MACRO {sep} {"September"} MACRO {oct} {"October"} MACRO {nov} {"November"} MACRO {dec} {"December"} READ ITERATE {call.type$}