2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann% BibTeX standard bibliography style `abbrv'
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann % Copyright (C) 1985, all rights reserved.
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann % Copying of this file is authorized only if either
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann % (1) you make absolutely no changes to your copy, including name, or
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann % (2) if you do make changes, you name it something other than
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann % This restriction helps ensure that all standard styles are identical.
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann % The file btxbst.doc has the documentation for this style.
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannENTRY
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { address
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann author
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann booktitle
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann chapter
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann edition
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann editor
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann howpublished
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann institution
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann journal
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann key
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann month
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann note
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann number
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann organization
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann pages
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann publisher
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann school
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann series
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann title
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann type
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann volume
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann year
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann {}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { label }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannINTEGERS { output.state before.all mid.sentence after.sentence after.block }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {init.state.consts}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ #0 'before.all :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann #1 'mid.sentence :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann #2 'after.sentence :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann #3 'after.block :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannSTRINGS { s t }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {output.nonnull}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ 's :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann output.state mid.sentence =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { ", " * write$ }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { output.state after.block =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { add.period$ write$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann newline$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann "\newblock " write$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { output.state before.all =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'write$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { add.period$ " " * write$ }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann mid.sentence 'output.state :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann s
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {output}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ duplicate$ empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'pop$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'output.nonnull
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {output.check}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ 't :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann duplicate$ empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { pop$ "empty " t * " in " * cite$ * warning$ }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'output.nonnull
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {output.bibitem}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ newline$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann "\bibitem{" write$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann cite$ write$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann "}" write$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann newline$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann ""
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann before.all 'output.state :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {fin.entry}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ add.period$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann write$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann newline$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {new.block}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ output.state before.all =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { after.block 'output.state := }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {new.sentence}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ output.state after.block =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { output.state before.all =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { after.sentence 'output.state := }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {not}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ { #0 }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { #1 }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {and}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { pop$ #0 }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {or}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ { pop$ #1 }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {new.block.checka}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {new.block.checkb}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann swap$ empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann and
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {new.sentence.checka}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'new.sentence
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {new.sentence.checkb}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann swap$ empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann and
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'new.sentence
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {field.or.null}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ duplicate$ empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { pop$ "" }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {emphasize}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ duplicate$ empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { pop$ "" }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "{\em " swap$ * "}" * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannINTEGERS { nameptr namesleft numnames }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.names}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ 's :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann #1 'nameptr :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann s num.names$ 'numnames :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann numnames 'namesleft :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { namesleft #0 > }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann nameptr #1 >
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { namesleft #1 >
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { ", " * t * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { numnames #2 >
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "," * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann t "others" =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { " et~al." * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { " and " * t * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 't
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann nameptr #1 + 'nameptr :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann namesleft #1 - 'namesleft :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann while$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.authors}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ author empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "" }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { author format.names }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.editors}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ editor empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "" }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { editor format.names
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann editor num.names$ #1 >
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { ", eds." * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { ", ed." * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.title}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ title empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "" }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { title "t" change.case$ }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {n.dashify}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ 't :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann ""
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { t empty$ not }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { t #1 #1 substring$ "-" =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { t #1 #2 substring$ "--" = not
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "--" *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann t #2 global.max$ substring$ 't :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { { t #1 #1 substring$ "-" = }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "-" *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann t #2 global.max$ substring$ 't :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann while$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { t #1 #1 substring$ *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann t #2 global.max$ substring$ 't :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann while$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.date}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ year empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { month empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "" }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "there's a month but no year in " cite$ * warning$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann month
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { month empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'year
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { month " " * year * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.btitle}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ title emphasize
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {tie.or.space.connect}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ duplicate$ text.length$ #3 <
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "~" }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { " " }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann swap$ * *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {either.or.check}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'pop$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "can't use both " swap$ * " fields in " * cite$ * warning$ }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.bvolume}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ volume empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "" }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "vol." volume tie.or.space.connect
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann series empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { " of " * series emphasize * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann "volume and number" number either.or.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.number.series}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ volume empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { number empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { series field.or.null }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { output.state mid.sentence =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "number" }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "Number" }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann number tie.or.space.connect
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann series empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "there's a number but no series in " cite$ * warning$ }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { " in " * series * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "" }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.edition}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ edition empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "" }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { output.state mid.sentence =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { edition "l" change.case$ " edition" * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { edition "t" change.case$ " edition" * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannINTEGERS { multiresult }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {multi.page.check}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ 't :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann #0 'multiresult :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { multiresult not
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann t empty$ not
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann and
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { t #1 #1 substring$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann duplicate$ "-" =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann swap$ duplicate$ "," =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann swap$ "+" =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann or or
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { #1 'multiresult := }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { t #2 global.max$ substring$ 't := }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann while$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann multiresult
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.pages}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ pages empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "" }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { pages multi.page.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "pp." pages n.dashify tie.or.space.connect }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "page" pages tie.or.space.connect }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.vol.num.pages}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ volume field.or.null
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann number empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "(" number * ")" * *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann volume empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "there's a number but no volume in " cite$ * warning$ }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann pages empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { duplicate$ empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { pop$ format.pages }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { ":" * pages n.dashify * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.chapter.pages}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ chapter empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'format.pages
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { type empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "chapter" }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { type "l" change.case$ }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann chapter tie.or.space.connect
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann pages empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { ", " * format.pages * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.in.ed.booktitle}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ booktitle empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "" }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { editor empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "In " booktitle emphasize * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "In " format.editors * ", " * booktitle emphasize * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {empty.misc.check}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ author empty$ title empty$ howpublished empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann month empty$ year empty$ note empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann and and and and and
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann key empty$ not and
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "all relevant fields are empty in " cite$ * warning$ }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.thesis.type}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ type empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { pop$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann type "t" change.case$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.tr.number}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ type empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "Technical Report" }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'type
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann number empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "t" change.case$ }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { number tie.or.space.connect }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.article.crossref}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ key empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { journal empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "need key or journal for " cite$ * " to crossref " * crossref *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann warning$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann ""
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "In {\em " journal * "\/}" * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "In " key * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann " \cite{" * crossref * "}" *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.crossref.editor}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ editor #1 "{vv~}{ll}" format.name$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann editor num.names$ duplicate$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann #2 >
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { pop$ " et~al." * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { #2 <
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { " et~al." * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { " and " * editor #2 "{vv~}{ll}" format.name$ * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.book.crossref}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ volume empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann "In "
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "Vol." volume tie.or.space.connect
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann " of " *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann editor empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann editor field.or.null author field.or.null =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann or
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { key empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { series empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "need editor, key, or series for " cite$ * " to crossref " *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann crossref * warning$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann "" *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "{\em " * series * "\/}" * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { key * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { format.crossref.editor * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann " \cite{" * crossref * "}" *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {format.incoll.inproc.crossref}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ editor empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann editor field.or.null author field.or.null =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann or
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { key empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { booktitle empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "need editor, key, or booktitle for " cite$ * " to crossref " *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann crossref * warning$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann ""
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "In {\em " booktitle * "\/}" * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "In " key * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "In " format.crossref.editor * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann " \cite{" * crossref * "}" *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {article}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ output.bibitem
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.authors "author" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.title "title" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann crossref missing$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { journal emphasize "journal" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.vol.num.pages output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.date "year" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { format.article.crossref output.nonnull
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.pages output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann note output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann fin.entry
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {book}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ output.bibitem
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann author empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { format.editors "author and editor" output.check }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { format.authors output.nonnull
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann crossref missing$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "author and editor" editor either.or.check }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.btitle "title" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann crossref missing$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { format.bvolume output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.number.series output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.sentence
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann publisher "publisher" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann address output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.book.crossref output.nonnull
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.edition output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.date "year" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann note output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann fin.entry
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {booklet}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ output.bibitem
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.authors output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.title "title" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann howpublished address new.block.checkb
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann howpublished output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann address output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.date output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann note output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann fin.entry
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {inbook}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ output.bibitem
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann author empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { format.editors "author and editor" output.check }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { format.authors output.nonnull
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann crossref missing$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "author and editor" editor either.or.check }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.btitle "title" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann crossref missing$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { format.bvolume output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.chapter.pages "chapter and pages" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.number.series output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.sentence
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann publisher "publisher" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann address output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { format.chapter.pages "chapter and pages" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.book.crossref output.nonnull
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.edition output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.date "year" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann note output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann fin.entry
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {incollection}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ output.bibitem
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.authors "author" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.title "title" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann crossref missing$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { format.in.ed.booktitle "booktitle" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.bvolume output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.number.series output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.chapter.pages output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.sentence
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann publisher "publisher" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann address output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.edition output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.date "year" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { format.incoll.inproc.crossref output.nonnull
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.chapter.pages output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann note output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann fin.entry
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {inproceedings}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ output.bibitem
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.authors "author" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.title "title" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann crossref missing$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { format.in.ed.booktitle "booktitle" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.bvolume output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.number.series output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.pages output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann address empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { organization publisher new.sentence.checkb
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann organization output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann publisher output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.date "year" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { address output.nonnull
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.date "year" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.sentence
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann organization output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann publisher output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { format.incoll.inproc.crossref output.nonnull
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.pages output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann note output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann fin.entry
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {conference} { inproceedings }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {manual}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ output.bibitem
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann author empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { organization empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { organization output.nonnull
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann address output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { format.authors output.nonnull }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.btitle "title" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann author empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { organization empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { address new.block.checka
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann address output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { organization address new.block.checkb
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann organization output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann address output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.edition output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.date output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann note output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann fin.entry
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {mastersthesis}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ output.bibitem
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.authors "author" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.title "title" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann "Master's thesis" format.thesis.type output.nonnull
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann school "school" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann address output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.date "year" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann note output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann fin.entry
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {misc}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ output.bibitem
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.authors output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann title howpublished new.block.checkb
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.title output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann howpublished new.block.checka
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann howpublished output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.date output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann note output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann fin.entry
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann empty.misc.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {phdthesis}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ output.bibitem
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.authors "author" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.btitle "title" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann "PhD thesis" format.thesis.type output.nonnull
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann school "school" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann address output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.date "year" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann note output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann fin.entry
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {proceedings}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ output.bibitem
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann editor empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { organization output }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { format.editors output.nonnull }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.btitle "title" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.bvolume output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.number.series output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann address empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { editor empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { publisher new.sentence.checka }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { organization publisher new.sentence.checkb
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann organization output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann publisher output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.date "year" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { address output.nonnull
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.date "year" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.sentence
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann editor empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { organization output }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann publisher output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann note output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann fin.entry
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {techreport}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ output.bibitem
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.authors "author" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.title "title" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.tr.number output.nonnull
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann institution "institution" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann address output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.date "year" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann note output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann fin.entry
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {unpublished}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ output.bibitem
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.authors "author" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.title "title" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann new.block
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann note "note" output.check
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann format.date output
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann fin.entry
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {default.type} { misc }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {jan} {"Jan."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {feb} {"Feb."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {mar} {"Mar."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {apr} {"Apr."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {may} {"May"}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {jun} {"June"}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {jul} {"July"}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {aug} {"Aug."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {sep} {"Sept."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {oct} {"Oct."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {nov} {"Nov."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {dec} {"Dec."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {acmcs} {"ACM Comput. Surv."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {acta} {"Acta Inf."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {cacm} {"Commun. ACM"}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {ibmjrd} {"IBM J. Res. Dev."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {ibmsj} {"IBM Syst.~J."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {ieeese} {"IEEE Trans. Softw. Eng."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {ieeetc} {"IEEE Trans. Comput."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {ieeetcad}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {ipl} {"Inf. Process. Lett."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {jacm} {"J.~ACM"}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {jcss} {"J.~Comput. Syst. Sci."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {scp} {"Sci. Comput. Programming"}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {sicomp} {"SIAM J. Comput."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {tocs} {"ACM Trans. Comput. Syst."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {tods} {"ACM Trans. Database Syst."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {tog} {"ACM Trans. Gr."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {toms} {"ACM Trans. Math. Softw."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {toois} {"ACM Trans. Office Inf. Syst."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannMACRO {tcs} {"Theoretical Comput. Sci."}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannREAD
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {sortify}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ purify$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann "l" change.case$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannINTEGERS { len }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {chop.word}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ 's :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'len :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann s #1 len substring$ =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { s len #1 + global.max$ substring$ }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 's
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {sort.format.names}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ 's :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann #1 'nameptr :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann ""
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann s num.names$ 'numnames :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann numnames 'namesleft :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { namesleft #0 > }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { nameptr #1 >
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { " " * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann nameptr numnames = t "others" = and
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "et al" * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { t sortify * }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann nameptr #1 + 'nameptr :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann namesleft #1 - 'namesleft :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann while$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {sort.format.title}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ 't :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann "A " #2
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann "An " #3
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann "The " #4 t chop.word
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann chop.word
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann chop.word
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann sortify
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann #1 global.max$ substring$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {author.sort}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ key empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { author empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "to sort, need author or key in " cite$ * warning$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann ""
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { author sort.format.names }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { key sortify }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {author.editor.sort}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ author empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { editor empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { key empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "to sort, need author, editor, or key in " cite$ * warning$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann ""
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { key sortify }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { editor sort.format.names }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { author sort.format.names }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {author.organization.sort}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ author empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { organization empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { key empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "to sort, need author, organization, or key in " cite$ * warning$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann ""
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { key sortify }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "The " #4 organization chop.word sortify }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { author sort.format.names }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {editor.organization.sort}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ editor empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { organization empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { key empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "to sort, need editor, organization, or key in " cite$ * warning$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann ""
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { key sortify }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { "The " #4 organization chop.word sortify }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { editor sort.format.names }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {presort}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ type$ "book" =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann type$ "inbook" =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann or
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'author.editor.sort
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { type$ "proceedings" =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'editor.organization.sort
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { type$ "manual" =
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'author.sort
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'author.organization.sort
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann " "
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann year field.or.null sortify
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann " "
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann title field.or.null
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann sort.format.title
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann *
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann #1 entry.max$ substring$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'sort.key$ :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannITERATE {presort}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannSORT
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannSTRINGS { longest.label }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannINTEGERS { number.label longest.label.width }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {initialize.longest.label}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ "" 'longest.label :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann #1 'number.label :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann #0 'longest.label.width :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {longest.label.pass}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ number.label int.to.str$ 'label :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann number.label #1 + 'number.label :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann label width$ longest.label.width >
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { label 'longest.label :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann label width$ 'longest.label.width :=
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannEXECUTE {initialize.longest.label}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannITERATE {longest.label.pass}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {begin.bib}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ preamble$ empty$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann 'skip$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann { preamble$ write$ newline$ }
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann if$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann "\begin{thebibliography}{" longest.label * "}" * write$ newline$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannEXECUTE {begin.bib}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannEXECUTE {init.state.consts}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannITERATE {call.type$}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannFUNCTION {end.bib}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann{ newline$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann "\end{thebibliography}" write$ newline$
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann}
2450a4210dee64b064499a3a1154129bdfc74981Daniel Hausmann
2450a4210dee64b064499a3a1154129bdfc74981Daniel HausmannEXECUTE {end.bib}