Blame templates/html/doxygen.bst

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