Blame templates/html/doxygen.bst

Packit Service 50c9f2
	% $Id: html-btxbst.doc 1.5 2010/12/08 19:02:34 dds Exp $
Packit Service 50c9f2
	% 
Packit Service 50c9f2
	% This file is either "html-btxbst.doc" or was derived from
Packit Service 50c9f2
	% "html-btxbst.doc" using cpp.  "html-btxbst.doc" itself was edited
Packit Service 50c9f2
	% from "btxbst.doc" and "named.bst".
Packit Service 50c9f2
	% The following copyright information is from btxbst.doc:
Packit Service 50c9f2
	% version 0.99b for BibTeX versions 0.99a or later, LaTeX version 2.09.
Packit Service 50c9f2
	% Copyright (C) 1985, all rights reserved.
Packit Service 50c9f2
	% Copying of this file is authorized only if either
Packit Service 50c9f2
	% (1) you make absolutely no changes to your copy, including name, or
Packit Service 50c9f2
	% (2) if you do make changes, you name it something other than
Packit Service 50c9f2
	% btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
Packit Service 50c9f2
	% This restriction helps ensure that all standard styles are identical.
Packit Service 50c9f2
	% The file btxbst.doc has the documentation for this style.
Packit Service 50c9f2
 % "named" style (sorted keys of the form [name, year])
Packit Service 50c9f2
 % Some code for this was taken from "named.bst".
Packit Service 50c9f2
Packit Service 50c9f2
ENTRY
Packit Service 50c9f2
  { address
Packit Service 50c9f2
    author
Packit Service 50c9f2
    booktitle
Packit Service 50c9f2
    chapter
Packit Service 50c9f2
    edition
Packit Service 50c9f2
    editor
Packit Service 50c9f2
    howpublished
Packit Service 50c9f2
    institution
Packit Service 50c9f2
    journal
Packit Service 50c9f2
    key
Packit Service 50c9f2
    month
Packit Service 50c9f2
    note
Packit Service 50c9f2
    number
Packit Service 50c9f2
    organization
Packit Service 50c9f2
    pages
Packit Service 50c9f2
    publisher
Packit Service 50c9f2
    school
Packit Service 50c9f2
    series
Packit Service 50c9f2
    title
Packit Service 50c9f2
    type
Packit Service 50c9f2
    volume
Packit Service 50c9f2
    year
Packit Service 50c9f2
    dvi
Packit Service 50c9f2
    html
Packit Service 50c9f2
    keywords
Packit Service 50c9f2
    pdf
Packit Service 50c9f2
    postscript
Packit Service 50c9f2
    url
Packit Service 50c9f2
    doi
Packit Service 50c9f2
    mailto
Packit Service 50c9f2
  }
Packit Service 50c9f2
  {}
Packit Service 50c9f2
  { label extra.label sort.label }
Packit Service 50c9f2
Packit Service 50c9f2
INTEGERS { output.state before.all mid.sentence after.sentence after.block }
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {init.state.consts}
Packit Service 50c9f2
{ #0 'before.all :=
Packit Service 50c9f2
  #1 'mid.sentence :=
Packit Service 50c9f2
  #2 'after.sentence :=
Packit Service 50c9f2
  #3 'after.block :=
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
STRINGS { s t }
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {output.nonnull}
Packit Service 50c9f2
{ 's :=
Packit Service 50c9f2
  output.state mid.sentence =
Packit Service 50c9f2
    { ", " * write$ }
Packit Service 50c9f2
    { output.state after.block =
Packit Service 50c9f2
	{ add.period$ write$
Packit Service 50c9f2
	  newline$
Packit Service 50c9f2
	}
Packit Service 50c9f2
	{ output.state before.all =
Packit Service 50c9f2
	    'write$
Packit Service 50c9f2
	    { add.period$ " " * write$ }
Packit Service 50c9f2
	  if$
Packit Service 50c9f2
	}
Packit Service 50c9f2
      if$
Packit Service 50c9f2
      mid.sentence 'output.state :=
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  s
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {output}
Packit Service 50c9f2
{ duplicate$ empty$
Packit Service 50c9f2
    'pop$
Packit Service 50c9f2
    'output.nonnull
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {output.check}
Packit Service 50c9f2
{ 't :=
Packit Service 50c9f2
  duplicate$ empty$
Packit Service 50c9f2
    { pop$ "empty " t * " in " * cite$ * warning$ }
Packit Service 50c9f2
    'output.nonnull
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {output.bibitem}
Packit Service 50c9f2
{ newline$
Packit Service 50c9f2
  author empty$
Packit Service 50c9f2
    { editor empty$
Packit Service 50c9f2
	{ organization empty$
Packit Service 50c9f2
	    'skip$
Packit Service 50c9f2
	    { "" * write$ newline$ }
Packit Service 50c9f2
          if$
Packit Service 50c9f2
	} 
Packit Service 50c9f2
        { "" * write$ newline$ }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { "" * write$ newline$ }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  keywords empty$
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
    { "" * write$ newline$ }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  "
[" * label * "]
" * write$
Packit Service 50c9f2
  ""
Packit Service 50c9f2
  before.all 'output.state :=
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {fin.entry}
Packit Service 50c9f2
{ add.period$
Packit Service 50c9f2
  write$
Packit Service 50c9f2
  postscript empty$
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
    { newline$ "" * write$ }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  pdf empty$
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
    { newline$ "" * write$ }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  dvi empty$
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
    { newline$ "" * write$ }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  doi empty$
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
    { newline$ "" * write$ }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  "" write$
Packit Service 50c9f2
  newline$
Packit Service 50c9f2
  newline$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {new.block}
Packit Service 50c9f2
{ output.state before.all =
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
    { after.block 'output.state := }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {new.sentence}
Packit Service 50c9f2
{ output.state after.block =
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
    { output.state before.all =
Packit Service 50c9f2
	'skip$
Packit Service 50c9f2
	{ after.sentence 'output.state := }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {not}
Packit Service 50c9f2
{   { #0 }
Packit Service 50c9f2
    { #1 }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {and}
Packit Service 50c9f2
{   'skip$
Packit Service 50c9f2
    { pop$ #0 }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {or}
Packit Service 50c9f2
{   { pop$ #1 }
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {str.to.int}
Packit Service 50c9f2
{
Packit Service 50c9f2
  's :=
Packit Service 50c9f2
  #0
Packit Service 50c9f2
    { s empty$ not }
Packit Service 50c9f2
    { % Multiply the number on the top of the stack by 10 = 1010 binary
Packit Service 50c9f2
      duplicate$ +			% x2
Packit Service 50c9f2
      duplicate$			% x2 x2
Packit Service 50c9f2
      duplicate$ + duplicate$ +		% x2 x8
Packit Service 50c9f2
      +
Packit Service 50c9f2
      s #1 #1 substring$ chr.to.int$ #48 - + % #48 is ascii for '0'
Packit Service 50c9f2
      s #2 global.max$ substring$ 's :=
Packit Service 50c9f2
    }
Packit Service 50c9f2
  while$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {new.block.checka}
Packit Service 50c9f2
{ empty$
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
    'new.block
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {new.block.checkb}
Packit Service 50c9f2
{ empty$
Packit Service 50c9f2
  swap$ empty$
Packit Service 50c9f2
  and
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
    'new.block
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {new.sentence.checka}
Packit Service 50c9f2
{ empty$
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
    'new.sentence
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {new.sentence.checkb}
Packit Service 50c9f2
{ empty$
Packit Service 50c9f2
  swap$ empty$
Packit Service 50c9f2
  and
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
    'new.sentence
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {field.or.null}
Packit Service 50c9f2
{ duplicate$ empty$
Packit Service 50c9f2
    { pop$ "" }
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {emphasize}
Packit Service 50c9f2
{ duplicate$ empty$
Packit Service 50c9f2
    { pop$ "" }
Packit Service 50c9f2
    { "" swap$ * "" * }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {add.link} % title
Packit Service 50c9f2
{
Packit Service 50c9f2
  't :=
Packit Service 50c9f2
  t empty$
Packit Service 50c9f2
    { "" }
Packit Service 50c9f2
    { url empty$
Packit Service 50c9f2
	{ html empty$
Packit Service 50c9f2
	    { t }
Packit Service 50c9f2
	    { "" * t * "" * }
Packit Service 50c9f2
	  if$ }
Packit Service 50c9f2
	{ "" * t * "" * }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {add.mailto} % authors
Packit Service 50c9f2
{
Packit Service 50c9f2
  't :=
Packit Service 50c9f2
  t empty$
Packit Service 50c9f2
    { "" }
Packit Service 50c9f2
    { mailto empty$
Packit Service 50c9f2
        { t }
Packit Service 50c9f2
        { "" * t * "" * }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
INTEGERS { nameptr namesleft numnames }
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.names}
Packit Service 50c9f2
{ 's :=
Packit Service 50c9f2
  #1 'nameptr :=
Packit Service 50c9f2
  s num.names$ 'numnames :=
Packit Service 50c9f2
  numnames 'namesleft :=
Packit Service 50c9f2
    { namesleft #0 > }
Packit Service 50c9f2
    { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
Packit Service 50c9f2
      "\bibxhtmlname{" t * "}" * 't :=
Packit Service 50c9f2
      nameptr #1 >
Packit Service 50c9f2
	{ namesleft #1 >
Packit Service 50c9f2
	    { ", " * t * }
Packit Service 50c9f2
	    { numnames #2 >
Packit Service 50c9f2
		{ "," * }
Packit Service 50c9f2
		'skip$
Packit Service 50c9f2
	      if$
Packit Service 50c9f2
	      t "others" =
Packit Service 50c9f2
		{ " et~al." * }
Packit Service 50c9f2
		{ " and " * t * }
Packit Service 50c9f2
	      if$
Packit Service 50c9f2
	    }
Packit Service 50c9f2
	  if$
Packit Service 50c9f2
	}
Packit Service 50c9f2
	't
Packit Service 50c9f2
      if$
Packit Service 50c9f2
      nameptr #1 + 'nameptr :=
Packit Service 50c9f2
      namesleft #1 - 'namesleft :=
Packit Service 50c9f2
    }
Packit Service 50c9f2
  while$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.authors}
Packit Service 50c9f2
{ author empty$
Packit Service 50c9f2
    { "" }
Packit Service 50c9f2
    { author format.names }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  add.mailto
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.editors}
Packit Service 50c9f2
{ editor empty$
Packit Service 50c9f2
    { "" }
Packit Service 50c9f2
    { editor format.names
Packit Service 50c9f2
      editor num.names$ #1 >
Packit Service 50c9f2
	{ ", editors" * }
Packit Service 50c9f2
	{ ", editor" * }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.title}
Packit Service 50c9f2
{ title empty$
Packit Service 50c9f2
    { "" }
Packit Service 50c9f2
    { title "t" change.case$ }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  add.link
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {n.dashify}
Packit Service 50c9f2
{ 't :=
Packit Service 50c9f2
  ""
Packit Service 50c9f2
    { t empty$ not }
Packit Service 50c9f2
    { t #1 #1 substring$ "-" =
Packit Service 50c9f2
	{ t #1 #2 substring$ "--" = not
Packit Service 50c9f2
	    { "--" *
Packit Service 50c9f2
	      t #2 global.max$ substring$ 't :=
Packit Service 50c9f2
	    }
Packit Service 50c9f2
	    {   { t #1 #1 substring$ "-" = }
Packit Service 50c9f2
		{ "-" *
Packit Service 50c9f2
		  t #2 global.max$ substring$ 't :=
Packit Service 50c9f2
		}
Packit Service 50c9f2
	      while$
Packit Service 50c9f2
	    }
Packit Service 50c9f2
	  if$
Packit Service 50c9f2
	}
Packit Service 50c9f2
	{ t #1 #1 substring$ *
Packit Service 50c9f2
	  t #2 global.max$ substring$ 't :=
Packit Service 50c9f2
	}
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  while$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.date}
Packit Service 50c9f2
{ year empty$
Packit Service 50c9f2
    { month empty$
Packit Service 50c9f2
	{ "" }
Packit Service 50c9f2
	{ "there's a month but no year in " cite$ * warning$
Packit Service 50c9f2
	  month
Packit Service 50c9f2
	}
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { month empty$
Packit Service 50c9f2
	'year
Packit Service 50c9f2
	{ month " " * year * }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.btitle}
Packit Service 50c9f2
{ title emphasize
Packit Service 50c9f2
  add.link
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {tie.or.space.connect}
Packit Service 50c9f2
{ duplicate$ text.length$ #3 <
Packit Service 50c9f2
    { "~" }
Packit Service 50c9f2
    { " " }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  swap$ * *
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {either.or.check}
Packit Service 50c9f2
{ empty$
Packit Service 50c9f2
    'pop$
Packit Service 50c9f2
    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.bvolume}
Packit Service 50c9f2
{ volume empty$
Packit Service 50c9f2
    { "" }
Packit Service 50c9f2
    { "volume" volume tie.or.space.connect
Packit Service 50c9f2
      series empty$
Packit Service 50c9f2
	'skip$
Packit Service 50c9f2
	{ " of " * series emphasize * }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
      "volume and number" number either.or.check
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.number.series}
Packit Service 50c9f2
{ volume empty$
Packit Service 50c9f2
    { number empty$
Packit Service 50c9f2
	{ series field.or.null }
Packit Service 50c9f2
	{ output.state mid.sentence =
Packit Service 50c9f2
	    { "number" }
Packit Service 50c9f2
	    { "Number" }
Packit Service 50c9f2
	  if$
Packit Service 50c9f2
	  number tie.or.space.connect
Packit Service 50c9f2
	  series empty$
Packit Service 50c9f2
	    { "there's a number but no series in " cite$ * warning$ }
Packit Service 50c9f2
	    { " in " * series * }
Packit Service 50c9f2
	  if$
Packit Service 50c9f2
	}
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { "" }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.edition}
Packit Service 50c9f2
{ edition empty$
Packit Service 50c9f2
    { "" }
Packit Service 50c9f2
    { output.state mid.sentence =
Packit Service 50c9f2
	{ edition "l" change.case$ " edition" * }
Packit Service 50c9f2
	{ edition "t" change.case$ " edition" * }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
INTEGERS { multiresult }
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {multi.page.check}
Packit Service 50c9f2
{ 't :=
Packit Service 50c9f2
  #0 'multiresult :=
Packit Service 50c9f2
    { multiresult not
Packit Service 50c9f2
      t empty$ not
Packit Service 50c9f2
      and
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { t #1 #1 substring$
Packit Service 50c9f2
      duplicate$ "-" =
Packit Service 50c9f2
      swap$ duplicate$ "," =
Packit Service 50c9f2
      swap$ "+" =
Packit Service 50c9f2
      or or
Packit Service 50c9f2
	{ #1 'multiresult := }
Packit Service 50c9f2
	{ t #2 global.max$ substring$ 't := }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  while$
Packit Service 50c9f2
  multiresult
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.pages}
Packit Service 50c9f2
{ pages empty$
Packit Service 50c9f2
    { "" }
Packit Service 50c9f2
    { pages multi.page.check
Packit Service 50c9f2
	{ "pages" pages n.dashify tie.or.space.connect }
Packit Service 50c9f2
	{ "page" pages tie.or.space.connect }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.vol.num.pages}
Packit Service 50c9f2
{ volume field.or.null
Packit Service 50c9f2
  number empty$
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
    { "(" number * ")" * *
Packit Service 50c9f2
      volume empty$
Packit Service 50c9f2
	{ "there's a number but no volume in " cite$ * warning$ }
Packit Service 50c9f2
	'skip$
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  pages empty$
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
    { duplicate$ empty$
Packit Service 50c9f2
	{ pop$ format.pages }
Packit Service 50c9f2
	{ ":" * pages n.dashify * }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.chapter.pages}
Packit Service 50c9f2
{ chapter empty$
Packit Service 50c9f2
    'format.pages
Packit Service 50c9f2
    { type empty$
Packit Service 50c9f2
	{ "chapter" }
Packit Service 50c9f2
	{ type "l" change.case$ }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
      chapter tie.or.space.connect
Packit Service 50c9f2
      pages empty$
Packit Service 50c9f2
	'skip$
Packit Service 50c9f2
	{ ", " * format.pages * }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.in.ed.booktitle}
Packit Service 50c9f2
{ booktitle empty$
Packit Service 50c9f2
    { "" }
Packit Service 50c9f2
    { editor empty$
Packit Service 50c9f2
	{ "In " booktitle emphasize * }
Packit Service 50c9f2
	{ "In " format.editors * ", " * booktitle emphasize * }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {empty.misc.check}
Packit Service 50c9f2
{ author empty$ title empty$ howpublished empty$
Packit Service 50c9f2
  month empty$ year empty$ note empty$
Packit Service 50c9f2
  and and and and and
Packit Service 50c9f2
  key empty$ not and
Packit Service 50c9f2
    { "all relevant fields are empty in " cite$ * warning$ }
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.thesis.type}
Packit Service 50c9f2
{ type empty$
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
    { pop$
Packit Service 50c9f2
      type "t" change.case$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.tr.number}
Packit Service 50c9f2
{ type empty$
Packit Service 50c9f2
    { "Technical Report" }
Packit Service 50c9f2
    'type
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  number empty$
Packit Service 50c9f2
    { "t" change.case$ }
Packit Service 50c9f2
    { number tie.or.space.connect }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.article.crossref}
Packit Service 50c9f2
{
Packit Service 50c9f2
  "In " *
Packit Service 50c9f2
  key empty$
Packit Service 50c9f2
    { journal empty$
Packit Service 50c9f2
	{ "need key or journal for " cite$ * " to crossref " * crossref *
Packit Service 50c9f2
	  warning$
Packit Service 50c9f2
	  ""
Packit Service 50c9f2
	}
Packit Service 50c9f2
        { "" * journal * "" * }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { key * }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  " \citelabel{" * crossref * "}" *
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.crossref.editor}
Packit Service 50c9f2
{ editor #1 "{vv~}{ll}" format.name$
Packit Service 50c9f2
  editor num.names$ duplicate$
Packit Service 50c9f2
  #2 >
Packit Service 50c9f2
    { pop$ " et~al." * }
Packit Service 50c9f2
    { #2 <
Packit Service 50c9f2
	'skip$
Packit Service 50c9f2
	{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
Packit Service 50c9f2
	    { " et~al." * }
Packit Service 50c9f2
	    { " and " * editor #2 "{vv~}{ll}" format.name$ * }
Packit Service 50c9f2
	  if$
Packit Service 50c9f2
	}
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.book.crossref}
Packit Service 50c9f2
{ volume empty$
Packit Service 50c9f2
    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
Packit Service 50c9f2
      "In "
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { "Volume" volume tie.or.space.connect
Packit Service 50c9f2
      " of " *
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  "" *
Packit Service 50c9f2
  editor empty$
Packit Service 50c9f2
  editor field.or.null author field.or.null =
Packit Service 50c9f2
  or
Packit Service 50c9f2
    { key empty$
Packit Service 50c9f2
	{ series empty$
Packit Service 50c9f2
	    { "need editor, key, or series for " cite$ * " to crossref " *
Packit Service 50c9f2
	      crossref * warning$
Packit Service 50c9f2
	      "" *
Packit Service 50c9f2
	    }
Packit Service 50c9f2
            { "" * series * "" * }
Packit Service 50c9f2
	  if$
Packit Service 50c9f2
	}
Packit Service 50c9f2
	{ key * }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { format.crossref.editor * }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  " \citelabel{" * crossref * "}" *
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.incoll.inproc.crossref}
Packit Service 50c9f2
{
Packit Service 50c9f2
  "In " *
Packit Service 50c9f2
  editor empty$
Packit Service 50c9f2
  editor field.or.null author field.or.null =
Packit Service 50c9f2
  or
Packit Service 50c9f2
    { key empty$
Packit Service 50c9f2
	{ booktitle empty$
Packit Service 50c9f2
	    { "need editor, key, or booktitle for " cite$ * " to crossref " *
Packit Service 50c9f2
	      crossref * warning$
Packit Service 50c9f2
	      ""
Packit Service 50c9f2
	    }
Packit Service 50c9f2
            { "" * booktitle * "" * }
Packit Service 50c9f2
	  if$
Packit Service 50c9f2
	}
Packit Service 50c9f2
        { key * }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { format.crossref.editor * }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  " \citelabel{" * crossref * "}" *
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {article}
Packit Service 50c9f2
{ output.bibitem
Packit Service 50c9f2
  format.authors "author" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  format.title "title" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  crossref missing$
Packit Service 50c9f2
    { journal emphasize "journal" output.check
Packit Service 50c9f2
      format.vol.num.pages output
Packit Service 50c9f2
      format.date "year" output.check
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { format.article.crossref output.nonnull
Packit Service 50c9f2
      format.pages output
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  note output
Packit Service 50c9f2
  fin.entry
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {book}
Packit Service 50c9f2
{ output.bibitem
Packit Service 50c9f2
  author empty$
Packit Service 50c9f2
    { format.editors "author and editor" output.check }
Packit Service 50c9f2
    { format.authors output.nonnull
Packit Service 50c9f2
      crossref missing$
Packit Service 50c9f2
	{ "author and editor" editor either.or.check }
Packit Service 50c9f2
	'skip$
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  format.btitle "title" output.check
Packit Service 50c9f2
  crossref missing$
Packit Service 50c9f2
    { format.bvolume output
Packit Service 50c9f2
      new.block
Packit Service 50c9f2
      format.number.series output
Packit Service 50c9f2
      new.sentence
Packit Service 50c9f2
      publisher "publisher" output.check
Packit Service 50c9f2
      address output
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { new.block
Packit Service 50c9f2
      format.book.crossref output.nonnull
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  format.edition output
Packit Service 50c9f2
  format.date "year" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  note output
Packit Service 50c9f2
  fin.entry
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {booklet}
Packit Service 50c9f2
{ output.bibitem
Packit Service 50c9f2
  format.authors output
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  format.title "title" output.check
Packit Service 50c9f2
  howpublished address new.block.checkb
Packit Service 50c9f2
  howpublished output
Packit Service 50c9f2
  address output
Packit Service 50c9f2
  format.date output
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  note output
Packit Service 50c9f2
  fin.entry
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {inbook}
Packit Service 50c9f2
{ output.bibitem
Packit Service 50c9f2
  author empty$
Packit Service 50c9f2
    { format.editors "author and editor" output.check }
Packit Service 50c9f2
    { format.authors output.nonnull
Packit Service 50c9f2
      crossref missing$
Packit Service 50c9f2
	{ "author and editor" editor either.or.check }
Packit Service 50c9f2
	'skip$
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  format.btitle "title" output.check
Packit Service 50c9f2
  crossref missing$
Packit Service 50c9f2
    { format.bvolume output
Packit Service 50c9f2
      format.chapter.pages "chapter and pages" output.check
Packit Service 50c9f2
      new.block
Packit Service 50c9f2
      format.number.series output
Packit Service 50c9f2
      new.sentence
Packit Service 50c9f2
      publisher "publisher" output.check
Packit Service 50c9f2
      address output
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { format.chapter.pages "chapter and pages" output.check
Packit Service 50c9f2
      new.block
Packit Service 50c9f2
      format.book.crossref output.nonnull
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  format.edition output
Packit Service 50c9f2
  format.date "year" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  note output
Packit Service 50c9f2
  fin.entry
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {incollection}
Packit Service 50c9f2
{ output.bibitem
Packit Service 50c9f2
  format.authors "author" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  format.title "title" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  crossref missing$
Packit Service 50c9f2
    { format.in.ed.booktitle "booktitle" output.check
Packit Service 50c9f2
      format.bvolume output
Packit Service 50c9f2
      format.number.series output
Packit Service 50c9f2
      format.chapter.pages output
Packit Service 50c9f2
      new.sentence
Packit Service 50c9f2
      publisher "publisher" output.check
Packit Service 50c9f2
      address output
Packit Service 50c9f2
      format.edition output
Packit Service 50c9f2
      format.date "year" output.check
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { format.incoll.inproc.crossref output.nonnull
Packit Service 50c9f2
      format.chapter.pages output
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  note output
Packit Service 50c9f2
  fin.entry
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {inproceedings}
Packit Service 50c9f2
{ output.bibitem
Packit Service 50c9f2
  format.authors "author" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  format.title "title" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  crossref missing$
Packit Service 50c9f2
    { format.in.ed.booktitle "booktitle" output.check
Packit Service 50c9f2
      format.bvolume output
Packit Service 50c9f2
      format.number.series output
Packit Service 50c9f2
      format.pages output
Packit Service 50c9f2
      address empty$
Packit Service 50c9f2
	{ organization publisher new.sentence.checkb
Packit Service 50c9f2
	  organization output
Packit Service 50c9f2
	  publisher output
Packit Service 50c9f2
	  format.date "year" output.check
Packit Service 50c9f2
	}
Packit Service 50c9f2
	{ address output.nonnull
Packit Service 50c9f2
	  format.date "year" output.check
Packit Service 50c9f2
	  new.sentence
Packit Service 50c9f2
	  organization output
Packit Service 50c9f2
	  publisher output
Packit Service 50c9f2
	}
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { format.incoll.inproc.crossref output.nonnull
Packit Service 50c9f2
      format.pages output
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  note output
Packit Service 50c9f2
  fin.entry
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {conference} { inproceedings }
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {manual}
Packit Service 50c9f2
{ output.bibitem
Packit Service 50c9f2
  author empty$
Packit Service 50c9f2
    { organization empty$
Packit Service 50c9f2
	'skip$
Packit Service 50c9f2
	{ organization output.nonnull
Packit Service 50c9f2
	  address output
Packit Service 50c9f2
	}
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { format.authors output.nonnull }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  format.btitle "title" output.check
Packit Service 50c9f2
  author empty$
Packit Service 50c9f2
    { organization empty$
Packit Service 50c9f2
	{ address new.block.checka
Packit Service 50c9f2
	  address output
Packit Service 50c9f2
	}
Packit Service 50c9f2
	'skip$
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { organization address new.block.checkb
Packit Service 50c9f2
      organization output
Packit Service 50c9f2
      address output
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  format.edition output
Packit Service 50c9f2
  format.date output
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  note output
Packit Service 50c9f2
  fin.entry
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {mastersthesis}
Packit Service 50c9f2
{ output.bibitem
Packit Service 50c9f2
  format.authors "author" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  format.title "title" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  "Master's thesis" format.thesis.type output.nonnull
Packit Service 50c9f2
  school "school" output.check
Packit Service 50c9f2
  address output
Packit Service 50c9f2
  format.date "year" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  note output
Packit Service 50c9f2
  fin.entry
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {misc}
Packit Service 50c9f2
{ output.bibitem
Packit Service 50c9f2
  format.authors output
Packit Service 50c9f2
  title howpublished new.block.checkb
Packit Service 50c9f2
  format.title output
Packit Service 50c9f2
  howpublished new.block.checka
Packit Service 50c9f2
  howpublished output
Packit Service 50c9f2
  format.date output
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  note output
Packit Service 50c9f2
  fin.entry
Packit Service 50c9f2
  empty.misc.check
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {phdthesis}
Packit Service 50c9f2
{ output.bibitem
Packit Service 50c9f2
  format.authors "author" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  format.btitle "title" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  "PhD thesis" format.thesis.type output.nonnull
Packit Service 50c9f2
  school "school" output.check
Packit Service 50c9f2
  address output
Packit Service 50c9f2
  format.date "year" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  note output
Packit Service 50c9f2
  fin.entry
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {proceedings}
Packit Service 50c9f2
{ output.bibitem
Packit Service 50c9f2
  editor empty$
Packit Service 50c9f2
    { organization output }
Packit Service 50c9f2
    { format.editors output.nonnull }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  format.btitle "title" output.check
Packit Service 50c9f2
  format.bvolume output
Packit Service 50c9f2
  format.number.series output
Packit Service 50c9f2
  address empty$
Packit Service 50c9f2
    { editor empty$
Packit Service 50c9f2
	{ publisher new.sentence.checka }
Packit Service 50c9f2
	{ organization publisher new.sentence.checkb
Packit Service 50c9f2
	  organization output
Packit Service 50c9f2
	}
Packit Service 50c9f2
      if$
Packit Service 50c9f2
      publisher output
Packit Service 50c9f2
      format.date "year" output.check
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { address output.nonnull
Packit Service 50c9f2
      format.date "year" output.check
Packit Service 50c9f2
      new.sentence
Packit Service 50c9f2
      editor empty$
Packit Service 50c9f2
	'skip$
Packit Service 50c9f2
	{ organization output }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
      publisher output
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  note output
Packit Service 50c9f2
  fin.entry
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {techreport}
Packit Service 50c9f2
{ output.bibitem
Packit Service 50c9f2
  format.authors "author" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  format.title "title" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  format.tr.number output.nonnull
Packit Service 50c9f2
  institution "institution" output.check
Packit Service 50c9f2
  address output
Packit Service 50c9f2
  format.date "year" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  note output
Packit Service 50c9f2
  fin.entry
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {unpublished}
Packit Service 50c9f2
{ output.bibitem
Packit Service 50c9f2
  format.authors "author" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  format.title "title" output.check
Packit Service 50c9f2
  new.block
Packit Service 50c9f2
  note "note" output.check
Packit Service 50c9f2
  format.date output
Packit Service 50c9f2
  fin.entry
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {default.type} { misc }
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {jan} {"January"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {feb} {"February"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {mar} {"March"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {apr} {"April"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {may} {"May"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {jun} {"June"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {jul} {"July"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {aug} {"August"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {sep} {"September"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {oct} {"October"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {nov} {"November"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {dec} {"December"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {acmcs} {"ACM Computing Surveys"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {acta} {"Acta Informatica"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {cacm} {"Communications of the ACM"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {ibmjrd} {"IBM Journal of Research and Development"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {ibmsj} {"IBM Systems Journal"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {ieeetc} {"IEEE Transactions on Computers"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {ieeetcad}
Packit Service 50c9f2
 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {ipl} {"Information Processing Letters"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {jacm} {"Journal of the ACM"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {jcss} {"Journal of Computer and System Sciences"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {scp} {"Science of Computer Programming"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {sicomp} {"SIAM Journal on Computing"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {tocs} {"ACM Transactions on Computer Systems"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {tods} {"ACM Transactions on Database Systems"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {tog} {"ACM Transactions on Graphics"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {toms} {"ACM Transactions on Mathematical Software"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {toois} {"ACM Transactions on Office Information Systems"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
Packit Service 50c9f2
Packit Service 50c9f2
MACRO {tcs} {"Theoretical Computer Science"}
Packit Service 50c9f2
Packit Service 50c9f2
READ
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {sortify}
Packit Service 50c9f2
{ purify$
Packit Service 50c9f2
  "l" change.case$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
INTEGERS { len }
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {chop.word}
Packit Service 50c9f2
{ 's :=
Packit Service 50c9f2
  'len :=
Packit Service 50c9f2
  s #1 len substring$ =
Packit Service 50c9f2
    { s len #1 + global.max$ substring$ }
Packit Service 50c9f2
    's
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {format.lab.names}
Packit Service 50c9f2
{ 's :=
Packit Service 50c9f2
  s num.names$ 'numnames :=
Packit Service 50c9f2
  numnames #1 =
Packit Service 50c9f2
    { s #1 "{vv }{ll}" format.name$ }
Packit Service 50c9f2
    { numnames #2 =
Packit Service 50c9f2
        { s #1 "{vv }{ll }and " format.name$ s #2 "{vv }{ll}" format.name$ * }
Packit Service 50c9f2
        { s #1 "{vv }{ll }" format.name$ "et~al." * }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {author.key.label}
Packit Service 50c9f2
{ author empty$
Packit Service 50c9f2
    { key empty$
Packit Service 50c9f2
	{ cite$ #1 #3 substring$ }
Packit Service 50c9f2
	{ key }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { author format.lab.names }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {author.editor.key.label}
Packit Service 50c9f2
{ author empty$
Packit Service 50c9f2
    { editor empty$
Packit Service 50c9f2
	{ key empty$
Packit Service 50c9f2
	    { cite$ #1 #3 substring$ }
Packit Service 50c9f2
	    { key }
Packit Service 50c9f2
	  if$
Packit Service 50c9f2
	}
Packit Service 50c9f2
	{ editor format.lab.names }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { author format.lab.names }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {author.key.organization.label}
Packit Service 50c9f2
{ author empty$
Packit Service 50c9f2
    { key empty$
Packit Service 50c9f2
	{ organization empty$
Packit Service 50c9f2
	    { cite$ #1 #3 substring$ }
Packit Service 50c9f2
	    { "The " #4 organization chop.word #3 text.prefix$ }
Packit Service 50c9f2
	  if$
Packit Service 50c9f2
	}
Packit Service 50c9f2
	{ key }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { author format.lab.names }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {editor.key.organization.label}
Packit Service 50c9f2
{ editor empty$
Packit Service 50c9f2
    { key empty$
Packit Service 50c9f2
	{ organization empty$
Packit Service 50c9f2
	    { cite$ #1 #3 substring$ }
Packit Service 50c9f2
	    { "The " #4 organization chop.word #3 text.prefix$ }
Packit Service 50c9f2
	  if$
Packit Service 50c9f2
	}
Packit Service 50c9f2
	{ key }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { editor format.lab.names }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {month.to.int}
Packit Service 50c9f2
{
Packit Service 50c9f2
	"l" change.case$ #3 text.prefix$
Packit Service 50c9f2
	's :=
Packit Service 50c9f2
	s "jan" = { #1 }  {
Packit Service 50c9f2
	s "feb" = { #2 }  {
Packit Service 50c9f2
	s "mar" = { #3 }  {
Packit Service 50c9f2
	s "apr" = { #4 }  {
Packit Service 50c9f2
	s "may" = { #5 }  {
Packit Service 50c9f2
	s "jun" = { #6 }  {
Packit Service 50c9f2
	s "jul" = { #7 }  {
Packit Service 50c9f2
	s "aug" = { #8 }  {
Packit Service 50c9f2
	s "sep" = { #9 }  {
Packit Service 50c9f2
	s "oct" = { #10 } {
Packit Service 50c9f2
	s "nov" = { #11 } {
Packit Service 50c9f2
    s "dec" = { #12 } { #13 }  % 13 if nothing matches
Packit Service 50c9f2
    if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
INTEGERS { done c } 
Packit Service 50c9f2
FUNCTION { get.day }
Packit Service 50c9f2
{ month field.or.null 's :=
Packit Service 50c9f2
  
Packit Service 50c9f2
  % Strip out month name
Packit Service 50c9f2
  #0 'done := 
Packit Service 50c9f2
  { s "" = not done not and }
Packit Service 50c9f2
  { s #1 #1 substring$ " " = 'done :=
Packit Service 50c9f2
    s #2 global.max$ substring$ 's :=
Packit Service 50c9f2
  }
Packit Service 50c9f2
  while$
Packit Service 50c9f2
Packit Service 50c9f2
  % Build up first number in t
Packit Service 50c9f2
  "0" 't :=
Packit Service 50c9f2
  #0 'done :=
Packit Service 50c9f2
  { s "" = not done not and }
Packit Service 50c9f2
  { s #1 #1 substring$ chr.to.int$ 'c :=
Packit Service 50c9f2
    c #47 > c #58 < and
Packit Service 50c9f2
      { t c int.to.chr$ * 't := }
Packit Service 50c9f2
      { #1 'done := }
Packit Service 50c9f2
    if$
Packit Service 50c9f2
    s #2 global.max$ substring$ 's :=
Packit Service 50c9f2
  }
Packit Service 50c9f2
  while$
Packit Service 50c9f2
Packit Service 50c9f2
  t str.to.int
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION { sortify.fourdigit }
Packit Service 50c9f2
{ 's :=
Packit Service 50c9f2
  s empty$
Packit Service 50c9f2
    { "0000" }
Packit Service 50c9f2
    { s
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION { sortify.twodigit }
Packit Service 50c9f2
{ 's :=
Packit Service 50c9f2
  s empty$
Packit Service 50c9f2
    { "00" }
Packit Service 50c9f2
    { s
Packit Service 50c9f2
      str.to.int #10 + int.to.str$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {calc.label}
Packit Service 50c9f2
{ type$ "book" =
Packit Service 50c9f2
  type$ "inbook" =
Packit Service 50c9f2
  or
Packit Service 50c9f2
    'author.editor.key.label
Packit Service 50c9f2
    { type$ "proceedings" =
Packit Service 50c9f2
	'editor.key.organization.label
Packit Service 50c9f2
	{ type$ "manual" =
Packit Service 50c9f2
	    'author.key.organization.label
Packit Service 50c9f2
	    'author.key.label
Packit Service 50c9f2
	  if$
Packit Service 50c9f2
	}
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  duplicate$
Packit Service 50c9f2
Packit Service 50c9f2
  year empty$
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
    { ", " * }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  year field.or.null purify$ *  % CHANGED - pfps - 15 Feb 1989
Packit Service 50c9f2
  'label :=
Packit Service 50c9f2
Packit Service 50c9f2
  year field.or.null purify$
Packit Service 50c9f2
  #-1 #4 substring$ 
Packit Service 50c9f2
  sortify.fourdigit 
Packit Service 50c9f2
  "  " *
Packit Service 50c9f2
  month field.or.null month.to.int int.to.str$ sortify.twodigit *
Packit Service 50c9f2
  "  " *  
Packit Service 50c9f2
  get.day int.to.str$ sortify.twodigit *
Packit Service 50c9f2
  "  " *
Packit Service 50c9f2
  * sortify 'sort.label :=
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {sort.format.names}
Packit Service 50c9f2
{ 's :=
Packit Service 50c9f2
  #1 'nameptr :=
Packit Service 50c9f2
  ""
Packit Service 50c9f2
  s num.names$ 'numnames :=
Packit Service 50c9f2
  numnames 'namesleft :=
Packit Service 50c9f2
    { namesleft #0 > }
Packit Service 50c9f2
    { nameptr #1 >
Packit Service 50c9f2
	{ "   " * }
Packit Service 50c9f2
	'skip$
Packit Service 50c9f2
      if$
Packit Service 50c9f2
      s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
Packit Service 50c9f2
      nameptr numnames = t "others" = and
Packit Service 50c9f2
	{ "et al." * }
Packit Service 50c9f2
	{ t sortify * }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
      nameptr #1 + 'nameptr :=
Packit Service 50c9f2
      namesleft #1 - 'namesleft :=
Packit Service 50c9f2
    }
Packit Service 50c9f2
  while$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {sort.format.title}
Packit Service 50c9f2
{ 't :=
Packit Service 50c9f2
  "A " #2
Packit Service 50c9f2
    "An " #3
Packit Service 50c9f2
      "The " #4 t chop.word
Packit Service 50c9f2
    chop.word
Packit Service 50c9f2
  chop.word
Packit Service 50c9f2
  sortify
Packit Service 50c9f2
  #1 global.max$ substring$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {author.sort}
Packit Service 50c9f2
{ author empty$
Packit Service 50c9f2
    { key empty$
Packit Service 50c9f2
	{ "to sort, need author or key in " cite$ * warning$
Packit Service 50c9f2
	  ""
Packit Service 50c9f2
	}
Packit Service 50c9f2
	{ key sortify }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { author sort.format.names }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {author.editor.sort}
Packit Service 50c9f2
{ author empty$
Packit Service 50c9f2
    { editor empty$
Packit Service 50c9f2
	{ key empty$
Packit Service 50c9f2
	    { "to sort, need author, editor, or key in " cite$ * warning$
Packit Service 50c9f2
	      ""
Packit Service 50c9f2
	    }
Packit Service 50c9f2
	    { key sortify }
Packit Service 50c9f2
	  if$
Packit Service 50c9f2
	}
Packit Service 50c9f2
	{ editor sort.format.names }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { author sort.format.names }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {author.organization.sort}
Packit Service 50c9f2
{ author empty$
Packit Service 50c9f2
    { organization empty$
Packit Service 50c9f2
	{ key empty$
Packit Service 50c9f2
	    { "to sort, need author, organization, or key in " cite$ * warning$
Packit Service 50c9f2
	      ""
Packit Service 50c9f2
	    }
Packit Service 50c9f2
	    { key sortify }
Packit Service 50c9f2
	  if$
Packit Service 50c9f2
	}
Packit Service 50c9f2
	{ "The " #4 organization chop.word sortify }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { author sort.format.names }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {editor.organization.sort}
Packit Service 50c9f2
{ editor empty$
Packit Service 50c9f2
    { organization empty$
Packit Service 50c9f2
	{ key empty$
Packit Service 50c9f2
	    { "to sort, need editor, organization, or key in " cite$ * warning$
Packit Service 50c9f2
	      ""
Packit Service 50c9f2
	    }
Packit Service 50c9f2
	    { key sortify }
Packit Service 50c9f2
	  if$
Packit Service 50c9f2
	}
Packit Service 50c9f2
	{ "The " #4 organization chop.word sortify }
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { editor sort.format.names }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {presort}
Packit Service 50c9f2
{ calc.label
Packit Service 50c9f2
  sort.label
Packit Service 50c9f2
  "    "
Packit Service 50c9f2
  *
Packit Service 50c9f2
  type$ "book" =
Packit Service 50c9f2
  type$ "inbook" =
Packit Service 50c9f2
  or
Packit Service 50c9f2
    'author.editor.sort
Packit Service 50c9f2
    { type$ "proceedings" =
Packit Service 50c9f2
	'editor.organization.sort
Packit Service 50c9f2
	{ type$ "manual" =
Packit Service 50c9f2
	    'author.organization.sort
Packit Service 50c9f2
	    'author.sort
Packit Service 50c9f2
	  if$
Packit Service 50c9f2
	}
Packit Service 50c9f2
      if$
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  *
Packit Service 50c9f2
  "    "
Packit Service 50c9f2
  *
Packit Service 50c9f2
  year field.or.null sortify
Packit Service 50c9f2
  *
Packit Service 50c9f2
  "    "
Packit Service 50c9f2
  *
Packit Service 50c9f2
  title field.or.null
Packit Service 50c9f2
  sort.format.title
Packit Service 50c9f2
  *
Packit Service 50c9f2
  #1 entry.max$ substring$
Packit Service 50c9f2
  'sort.key$ :=
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
ITERATE {presort}
Packit Service 50c9f2
Packit Service 50c9f2
SORT
Packit Service 50c9f2
Packit Service 50c9f2
STRINGS { longest.label last.sort.label next.extra }
Packit Service 50c9f2
Packit Service 50c9f2
INTEGERS { longest.label.width last.extra.num }
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {initialize.longest.label}
Packit Service 50c9f2
{ "" 'longest.label :=
Packit Service 50c9f2
  #0 int.to.chr$ 'last.sort.label :=
Packit Service 50c9f2
  "" 'next.extra :=
Packit Service 50c9f2
  #0 'longest.label.width :=
Packit Service 50c9f2
  #0 'last.extra.num :=
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {forward.pass}
Packit Service 50c9f2
{ last.sort.label sort.label =
Packit Service 50c9f2
    { last.extra.num #1 + 'last.extra.num :=
Packit Service 50c9f2
      last.extra.num int.to.chr$ 'extra.label :=
Packit Service 50c9f2
    }
Packit Service 50c9f2
    { "a" chr.to.int$ 'last.extra.num :=
Packit Service 50c9f2
      "" 'extra.label :=
Packit Service 50c9f2
      sort.label 'last.sort.label :=
Packit Service 50c9f2
    }
Packit Service 50c9f2
  if$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {reverse.pass}
Packit Service 50c9f2
{ next.extra "b" =
Packit Service 50c9f2
    { "a" 'extra.label := }
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  label extra.label * 'label :=
Packit Service 50c9f2
  label width$ longest.label.width >
Packit Service 50c9f2
    { label 'longest.label :=
Packit Service 50c9f2
      label width$ 'longest.label.width :=
Packit Service 50c9f2
    }
Packit Service 50c9f2
    'skip$
Packit Service 50c9f2
  if$
Packit Service 50c9f2
  extra.label 'next.extra :=
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
EXECUTE {initialize.longest.label}
Packit Service 50c9f2
Packit Service 50c9f2
ITERATE {forward.pass}
Packit Service 50c9f2
Packit Service 50c9f2
REVERSE {reverse.pass}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {begin.bib}
Packit Service 50c9f2
{
Packit Service 50c9f2
  "# label-style: default" write$ newline$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
EXECUTE {begin.bib}
Packit Service 50c9f2
Packit Service 50c9f2
EXECUTE {init.state.consts}
Packit Service 50c9f2
Packit Service 50c9f2
ITERATE {call.type$}
Packit Service 50c9f2
Packit Service 50c9f2
FUNCTION {end.bib}
Packit Service 50c9f2
{ newline$
Packit Service 50c9f2
}
Packit Service 50c9f2
Packit Service 50c9f2
EXECUTE {end.bib}