]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/papers/system_T/latex8.bst
ported to the IEEE latex8 style
[helm.git] / helm / papers / system_T / latex8.bst
diff --git a/helm/papers/system_T/latex8.bst b/helm/papers/system_T/latex8.bst
new file mode 100644 (file)
index 0000000..88e49bf
--- /dev/null
@@ -0,0 +1,1124 @@
+\r
+% ---------------------------------------------------------------\r
+%\r
+% $Id: latex8.bst,v 1.1 1995/09/15 15:13:49 ienne Exp $\r
+%\r
+% by Paolo.Ienne@di.epfl.ch\r
+%\r
+\r
+% ---------------------------------------------------------------\r
+%\r
+% no guarantee is given that the format corresponds perfectly to \r
+% IEEE 8.5" x 11" Proceedings, but most features should be ok.\r
+%\r
+% ---------------------------------------------------------------\r
+%\r
+% `latex8' from BibTeX standard bibliography style `abbrv'\r
+% version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.\r
+% Copyright (C) 1985, all rights reserved.\r
+% Copying of this file is authorized only if either\r
+% (1) you make absolutely no changes to your copy, including name, or\r
+% (2) if you do make changes, you name it something other than\r
+% btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.\r
+% This restriction helps ensure that all standard styles are identical.\r
+% The file btxbst.doc has the documentation for this style.\r
+\r
+ENTRY\r
+  { address\r
+    author\r
+    booktitle\r
+    chapter\r
+    edition\r
+    editor\r
+    howpublished\r
+    institution\r
+    journal\r
+    key\r
+    month\r
+    note\r
+    number\r
+    organization\r
+    pages\r
+    publisher\r
+    school\r
+    series\r
+    title\r
+    type\r
+    volume\r
+    year\r
+  }\r
+  {}\r
+  { label }\r
+\r
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }\r
+\r
+FUNCTION {init.state.consts}\r
+{ #0 'before.all :=\r
+  #1 'mid.sentence :=\r
+  #2 'after.sentence :=\r
+  #3 'after.block :=\r
+}\r
+\r
+STRINGS { s t }\r
+\r
+FUNCTION {output.nonnull}\r
+{ 's :=\r
+  output.state mid.sentence =\r
+    { ", " * write$ }\r
+    { output.state after.block =\r
+ { add.period$ write$\r
+   newline$\r
+   "\newblock " write$\r
+ }\r
+ { output.state before.all =\r
+     'write$\r
+     { add.period$ " " * write$ }\r
+   if$\r
+ }\r
+      if$\r
+      mid.sentence 'output.state :=\r
+    }\r
+  if$\r
+  s\r
+}\r
+\r
+FUNCTION {output}\r
+{ duplicate$ empty$\r
+    'pop$\r
+    'output.nonnull\r
+  if$\r
+}\r
+\r
+FUNCTION {output.check}\r
+{ 't :=\r
+  duplicate$ empty$\r
+    { pop$ "empty " t * " in " * cite$ * warning$ }\r
+    'output.nonnull\r
+  if$\r
+}\r
+\r
+FUNCTION {output.bibitem}\r
+{ newline$\r
+  "\bibitem{" write$\r
+  cite$ write$\r
+  "}" write$\r
+  newline$\r
+  ""\r
+  before.all 'output.state :=\r
+}\r
+\r
+FUNCTION {fin.entry}\r
+{ add.period$\r
+  write$\r
+  newline$\r
+}\r
+\r
+FUNCTION {new.block}\r
+{ output.state before.all =\r
+    'skip$\r
+    { after.block 'output.state := }\r
+  if$\r
+}\r
+\r
+FUNCTION {new.sentence}\r
+{ output.state after.block =\r
+    'skip$\r
+    { output.state before.all =\r
+ 'skip$\r
+ { after.sentence 'output.state := }\r
+      if$\r
+    }\r
+  if$\r
+}\r
+\r
+FUNCTION {not}\r
+{   { #0 }\r
+    { #1 }\r
+  if$\r
+}\r
+\r
+FUNCTION {and}\r
+{   'skip$\r
+    { pop$ #0 }\r
+  if$\r
+}\r
+\r
+FUNCTION {or}\r
+{   { pop$ #1 }\r
+    'skip$\r
+  if$\r
+}\r
+\r
+FUNCTION {new.block.checka}\r
+{ empty$\r
+    'skip$\r
+    'new.block\r
+  if$\r
+}\r
+\r
+FUNCTION {new.block.checkb}\r
+{ empty$\r
+  swap$ empty$\r
+  and\r
+    'skip$\r
+    'new.block\r
+  if$\r
+}\r
+\r
+FUNCTION {new.sentence.checka}\r
+{ empty$\r
+    'skip$\r
+    'new.sentence\r
+  if$\r
+}\r
+\r
+FUNCTION {new.sentence.checkb}\r
+{ empty$\r
+  swap$ empty$\r
+  and\r
+    'skip$\r
+    'new.sentence\r
+  if$\r
+}\r
+\r
+FUNCTION {field.or.null}\r
+{ duplicate$ empty$\r
+    { pop$ "" }\r
+    'skip$\r
+  if$\r
+}\r
+\r
+FUNCTION {emphasize}\r
+{ duplicate$ empty$\r
+    { pop$ "" }\r
+    { "{\em " swap$ * "}" * }\r
+  if$\r
+}\r
+\r
+INTEGERS { nameptr namesleft numnames }\r
+\r
+FUNCTION {format.names}\r
+{ 's :=\r
+  #1 'nameptr :=\r
+  s num.names$ 'numnames :=\r
+  numnames 'namesleft :=\r
+    { namesleft #0 > }\r
+    { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=\r
+      nameptr #1 >\r
+ { namesleft #1 >\r
+     { ", " * t * }\r
+     { numnames #2 >\r
+  { "," * }\r
+  'skip$\r
+       if$\r
+       t "others" =\r
+  { " et~al." * }\r
+  { " and " * t * }\r
+       if$\r
+     }\r
+   if$\r
+ }\r
+ 't\r
+      if$\r
+      nameptr #1 + 'nameptr :=\r
+\r
+      namesleft #1 - 'namesleft :=\r
+    }\r
+  while$\r
+}\r
+\r
+FUNCTION {format.authors}\r
+{ author empty$\r
+    { "" }\r
+    { author format.names }\r
+  if$\r
+}\r
+\r
+FUNCTION {format.editors}\r
+{ editor empty$\r
+    { "" }\r
+    { editor format.names\r
+      editor num.names$ #1 >\r
+ { ", editors" * }\r
+ { ", editor" * }\r
+      if$\r
+    }\r
+  if$\r
+}\r
+\r
+FUNCTION {format.title}\r
+{ title empty$\r
+    { "" }\r
+    { title "t" change.case$ }\r
+  if$\r
+}\r
+\r
+FUNCTION {n.dashify}\r
+{ 't :=\r
+  ""\r
+    { t empty$ not }\r
+    { t #1 #1 substring$ "-" =\r
+ { t #1 #2 substring$ "--" = not\r
+     { "--" *\r
+       t #2 global.max$ substring$ 't :=\r
+     }\r
+     {   { t #1 #1 substring$ "-" = }\r
+  { "-" *\r
+    t #2 global.max$ substring$ 't :=\r
+  }\r
+       while$\r
+     }\r
+   if$\r
+ }\r
+ { t #1 #1 substring$ *\r
+   t #2 global.max$ substring$ 't :=\r
+ }\r
+      if$\r
+    }\r
+  while$\r
+}\r
+\r
+FUNCTION {format.date}\r
+{ year empty$\r
+    { month empty$\r
+ { "" }\r
+ { "there's a month but no year in " cite$ * warning$\r
+   month\r
+ }\r
+      if$\r
+    }\r
+    { month empty$\r
+ 'year\r
+ { month " " * year * }\r
+      if$\r
+    }\r
+  if$\r
+}\r
+\r
+FUNCTION {format.btitle}\r
+{ title emphasize\r
+}\r
+\r
+FUNCTION {tie.or.space.connect}\r
+{ duplicate$ text.length$ #3 <\r
+    { "~" }\r
+    { " " }\r
+  if$\r
+  swap$ * *\r
+}\r
+\r
+FUNCTION {either.or.check}\r
+{ empty$\r
+    'pop$\r
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }\r
+  if$\r
+}\r
+\r
+FUNCTION {format.bvolume}\r
+{ volume empty$\r
+    { "" }\r
+    { "volume" volume tie.or.space.connect\r
+      series empty$\r
+ 'skip$\r
+ { " of " * series emphasize * }\r
+      if$\r
+      "volume and number" number either.or.check\r
+    }\r
+  if$\r
+}\r
+\r
+FUNCTION {format.number.series}\r
+{ volume empty$\r
+    { number empty$\r
+ { series field.or.null }\r
+ { output.state mid.sentence =\r
+     { "number" }\r
+     { "Number" }\r
+   if$\r
+   number tie.or.space.connect\r
+   series empty$\r
+     { "there's a number but no series in " cite$ * warning$ }\r
+     { " in " * series * }\r
+   if$\r
+ }\r
+      if$\r
+    }\r
+    { "" }\r
+  if$\r
+}\r
+\r
+FUNCTION {format.edition}\r
+{ edition empty$\r
+    { "" }\r
+    { output.state mid.sentence =\r
+ { edition "l" change.case$ " edition" * }\r
+ { edition "t" change.case$ " edition" * }\r
+      if$\r
+    }\r
+  if$\r
+}\r
+\r
+INTEGERS { multiresult }\r
+\r
+FUNCTION {multi.page.check}\r
+{ 't :=\r
+  #0 'multiresult :=\r
+    { multiresult not\r
+      t empty$ not\r
+      and\r
+    }\r
+    { t #1 #1 substring$\r
+      duplicate$ "-" =\r
+      swap$ duplicate$ "," =\r
+      swap$ "+" =\r
+      or or\r
+ { #1 'multiresult := }\r
+ { t #2 global.max$ substring$ 't := }\r
+      if$\r
+    }\r
+  while$\r
+  multiresult\r
+}\r
+\r
+FUNCTION {format.pages}\r
+{ pages empty$\r
+    { "" }\r
+    { pages multi.page.check\r
+ { "pages" pages n.dashify tie.or.space.connect }\r
+ { "page" pages tie.or.space.connect }\r
+      if$\r
+    }\r
+  if$\r
+}\r
+\r
+FUNCTION {format.vol.num.pages}\r
+{ volume field.or.null\r
+  number empty$\r
+    'skip$\r
+    { "(" number * ")" * *\r
+      volume empty$\r
+ { "there's a number but no volume in " cite$ * warning$ }\r
+ 'skip$\r
+      if$\r
+    }\r
+  if$\r
+  pages empty$\r
+    'skip$\r
+    { duplicate$ empty$\r
+ { pop$ format.pages }\r
+ { ":" * pages n.dashify * }\r
+      if$\r
+    }\r
+  if$\r
+}\r
+\r
+FUNCTION {format.chapter.pages}\r
+{ chapter empty$\r
+    'format.pages\r
+    { type empty$\r
+ { "chapter" }\r
+ { type "l" change.case$ }\r
+      if$\r
+      chapter tie.or.space.connect\r
+      pages empty$\r
+ 'skip$\r
+ { ", " * format.pages * }\r
+      if$\r
+    }\r
+  if$\r
+}\r
+\r
+FUNCTION {format.in.ed.booktitle}\r
+{ booktitle empty$\r
+    { "" }\r
+    { editor empty$\r
+ { "In " booktitle emphasize * }\r
+ { "In " format.editors * ", " * booktitle emphasize * }\r
+      if$\r
+    }\r
+  if$\r
+}\r
+\r
+FUNCTION {empty.misc.check}\r
+\r
+{ author empty$ title empty$ howpublished empty$\r
+  month empty$ year empty$ note empty$\r
+  and and and and and\r
+  key empty$ not and\r
+    { "all relevant fields are empty in " cite$ * warning$ }\r
+    'skip$\r
+  if$\r
+}\r
+\r
+FUNCTION {format.thesis.type}\r
+{ type empty$\r
+    'skip$\r
+    { pop$\r
+      type "t" change.case$\r
+    }\r
+  if$\r
+}\r
+\r
+FUNCTION {format.tr.number}\r
+{ type empty$\r
+    { "Technical Report" }\r
+    'type\r
+  if$\r
+  number empty$\r
+    { "t" change.case$ }\r
+    { number tie.or.space.connect }\r
+  if$\r
+}\r
+\r
+FUNCTION {format.article.crossref}\r
+{ key empty$\r
+    { journal empty$\r
+ { "need key or journal for " cite$ * " to crossref " * crossref *\r
+   warning$\r
+   ""\r
+ }\r
+ { "In {\em " journal * "\/}" * }\r
+      if$\r
+    }\r
+    { "In " key * }\r
+  if$\r
+  " \cite{" * crossref * "}" *\r
+}\r
+\r
+FUNCTION {format.crossref.editor}\r
+{ editor #1 "{vv~}{ll}" format.name$\r
+  editor num.names$ duplicate$\r
+  #2 >\r
+    { pop$ " et~al." * }\r
+    { #2 <\r
+ 'skip$\r
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =\r
+     { " et~al." * }\r
+     { " and " * editor #2 "{vv~}{ll}" format.name$ * }\r
+   if$\r
+ }\r
+      if$\r
+    }\r
+  if$\r
+}\r
+\r
+FUNCTION {format.book.crossref}\r
+{ volume empty$\r
+    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$\r
+      "In "\r
+    }\r
+    { "Volume" volume tie.or.space.connect\r
+      " of " *\r
+    }\r
+  if$\r
+  editor empty$\r
+  editor field.or.null author field.or.null =\r
+  or\r
+    { key empty$\r
+ { series empty$\r
+     { "need editor, key, or series for " cite$ * " to crossref " *\r
+       crossref * warning$\r
+       "" *\r
+     }\r
+     { "{\em " * series * "\/}" * }\r
+   if$\r
+ }\r
+ { key * }\r
+      if$\r
+    }\r
+    { format.crossref.editor * }\r
+  if$\r
+  " \cite{" * crossref * "}" *\r
+}\r
+\r
+FUNCTION {format.incoll.inproc.crossref}\r
+{ editor empty$\r
+  editor field.or.null author field.or.null =\r
+  or\r
+    { key empty$\r
+ { booktitle empty$\r
+     { "need editor, key, or booktitle for " cite$ * " to crossref " *\r
+       crossref * warning$\r
+       ""\r
+     }\r
+     { "In {\em " booktitle * "\/}" * }\r
+   if$\r
+ }\r
+ { "In " key * }\r
+      if$\r
+    }\r
+    { "In " format.crossref.editor * }\r
+  if$\r
+  " \cite{" * crossref * "}" *\r
+}\r
+\r
+FUNCTION {article}\r
+{ output.bibitem\r
+  format.authors "author" output.check\r
+  new.block\r
+  format.title "title" output.check\r
+  new.block\r
+  crossref missing$\r
+    { journal emphasize "journal" output.check\r
+      format.vol.num.pages output\r
+      format.date "year" output.check\r
+    }\r
+    { format.article.crossref output.nonnull\r
+      format.pages output\r
+    }\r
+  if$\r
+  new.block\r
+  note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {book}\r
+{ output.bibitem\r
+  author empty$\r
+    { format.editors "author and editor" output.check }\r
+    { format.authors output.nonnull\r
+      crossref missing$\r
+ { "author and editor" editor either.or.check }\r
+ 'skip$\r
+      if$\r
+    }\r
+  if$\r
+  new.block\r
+  format.btitle "title" output.check\r
+  crossref missing$\r
+    { format.bvolume output\r
+      new.block\r
+      format.number.series output\r
+      new.sentence\r
+      publisher "publisher" output.check\r
+      address output\r
+    }\r
+    { new.block\r
+      format.book.crossref output.nonnull\r
+    }\r
+  if$\r
+  format.edition output\r
+  format.date "year" output.check\r
+  new.block\r
+  note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {booklet}\r
+{ output.bibitem\r
+  format.authors output\r
+  new.block\r
+  format.title "title" output.check\r
+  howpublished address new.block.checkb\r
+  howpublished output\r
+  address output\r
+  format.date output\r
+  new.block\r
+  note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {inbook}\r
+{ output.bibitem\r
+  author empty$\r
+    { format.editors "author and editor" output.check }\r
+    { format.authors output.nonnull\r
+\r
+      crossref missing$\r
+ { "author and editor" editor either.or.check }\r
+ 'skip$\r
+      if$\r
+    }\r
+  if$\r
+  new.block\r
+  format.btitle "title" output.check\r
+  crossref missing$\r
+    { format.bvolume output\r
+      format.chapter.pages "chapter and pages" output.check\r
+      new.block\r
+      format.number.series output\r
+      new.sentence\r
+      publisher "publisher" output.check\r
+      address output\r
+    }\r
+    { format.chapter.pages "chapter and pages" output.check\r
+      new.block\r
+      format.book.crossref output.nonnull\r
+    }\r
+  if$\r
+  format.edition output\r
+  format.date "year" output.check\r
+  new.block\r
+  note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {incollection}\r
+{ output.bibitem\r
+  format.authors "author" output.check\r
+  new.block\r
+  format.title "title" output.check\r
+  new.block\r
+  crossref missing$\r
+    { format.in.ed.booktitle "booktitle" output.check\r
+      format.bvolume output\r
+      format.number.series output\r
+      format.chapter.pages output\r
+      new.sentence\r
+      publisher "publisher" output.check\r
+      address output\r
+      format.edition output\r
+      format.date "year" output.check\r
+    }\r
+    { format.incoll.inproc.crossref output.nonnull\r
+      format.chapter.pages output\r
+    }\r
+  if$\r
+  new.block\r
+  note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {inproceedings}\r
+{ output.bibitem\r
+  format.authors "author" output.check\r
+  new.block\r
+  format.title "title" output.check\r
+  new.block\r
+  crossref missing$\r
+    { format.in.ed.booktitle "booktitle" output.check\r
+      format.bvolume output\r
+      format.number.series output\r
+      format.pages output\r
+      address empty$\r
+ { organization publisher new.sentence.checkb\r
+   organization output\r
+   publisher output\r
+   format.date "year" output.check\r
+ }\r
+ { address output.nonnull\r
+   format.date "year" output.check\r
+   new.sentence\r
+   organization output\r
+   publisher output\r
+ }\r
+      if$\r
+    }\r
+    { format.incoll.inproc.crossref output.nonnull\r
+      format.pages output\r
+    }\r
+  if$\r
+  new.block\r
+  note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {conference} { inproceedings }\r
+\r
+FUNCTION {manual}\r
+{ output.bibitem\r
+  author empty$\r
+    { organization empty$\r
+ 'skip$\r
+ { organization output.nonnull\r
+   address output\r
+ }\r
+      if$\r
+    }\r
+    { format.authors output.nonnull }\r
+  if$\r
+  new.block\r
+  format.btitle "title" output.check\r
+  author empty$\r
+    { organization empty$\r
+ { address new.block.checka\r
+   address output\r
+ }\r
+ 'skip$\r
+      if$\r
+    }\r
+    { organization address new.block.checkb\r
+      organization output\r
+      address output\r
+    }\r
+  if$\r
+  format.edition output\r
+  format.date output\r
+  new.block\r
+  note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {mastersthesis}\r
+{ output.bibitem\r
+  format.authors "author" output.check\r
+  new.block\r
+  format.title "title" output.check\r
+  new.block\r
+  "Master's thesis" format.thesis.type output.nonnull\r
+  school "school" output.check\r
+  address output\r
+  format.date "year" output.check\r
+  new.block\r
+  note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {misc}\r
+{ output.bibitem\r
+  format.authors output\r
+  title howpublished new.block.checkb\r
+  format.title output\r
+  howpublished new.block.checka\r
+  howpublished output\r
+  format.date output\r
+  new.block\r
+  note output\r
+  fin.entry\r
+  empty.misc.check\r
+}\r
+\r
+FUNCTION {phdthesis}\r
+{ output.bibitem\r
+  format.authors "author" output.check\r
+  new.block\r
+  format.btitle "title" output.check\r
+  new.block\r
+  "PhD thesis" format.thesis.type output.nonnull\r
+  school "school" output.check\r
+  address output\r
+  format.date "year" output.check\r
+  new.block\r
+  note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {proceedings}\r
+{ output.bibitem\r
+  editor empty$\r
+    { organization output }\r
+    { format.editors output.nonnull }\r
+\r
+  if$\r
+  new.block\r
+  format.btitle "title" output.check\r
+  format.bvolume output\r
+  format.number.series output\r
+  address empty$\r
+    { editor empty$\r
+ { publisher new.sentence.checka }\r
+ { organization publisher new.sentence.checkb\r
+   organization output\r
+ }\r
+      if$\r
+      publisher output\r
+      format.date "year" output.check\r
+    }\r
+    { address output.nonnull\r
+      format.date "year" output.check\r
+      new.sentence\r
+      editor empty$\r
+ 'skip$\r
+ { organization output }\r
+      if$\r
+      publisher output\r
+    }\r
+  if$\r
+  new.block\r
+  note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {techreport}\r
+{ output.bibitem\r
+  format.authors "author" output.check\r
+  new.block\r
+  format.title "title" output.check\r
+  new.block\r
+  format.tr.number output.nonnull\r
+  institution "institution" output.check\r
+  address output\r
+  format.date "year" output.check\r
+  new.block\r
+  note output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {unpublished}\r
+{ output.bibitem\r
+  format.authors "author" output.check\r
+  new.block\r
+  format.title "title" output.check\r
+  new.block\r
+  note "note" output.check\r
+  format.date output\r
+  fin.entry\r
+}\r
+\r
+FUNCTION {default.type} { misc }\r
+\r
+MACRO {jan} {"Jan."}\r
+\r
+MACRO {feb} {"Feb."}\r
+\r
+MACRO {mar} {"Mar."}\r
+\r
+MACRO {apr} {"Apr."}\r
+\r
+MACRO {may} {"May"}\r
+\r
+MACRO {jun} {"June"}\r
+\r
+MACRO {jul} {"July"}\r
+\r
+MACRO {aug} {"Aug."}\r
+\r
+MACRO {sep} {"Sept."}\r
+\r
+MACRO {oct} {"Oct."}\r
+\r
+MACRO {nov} {"Nov."}\r
+\r
+MACRO {dec} {"Dec."}\r
+\r
+MACRO {acmcs} {"ACM Comput. Surv."}\r
+\r
+MACRO {acta} {"Acta Inf."}\r
+\r
+MACRO {cacm} {"Commun. ACM"}\r
+\r
+MACRO {ibmjrd} {"IBM J. Res. Dev."}\r
+\r
+MACRO {ibmsj} {"IBM Syst.~J."}\r
+\r
+MACRO {ieeese} {"IEEE Trans. Softw. Eng."}\r
+\r
+MACRO {ieeetc} {"IEEE Trans. Comput."}\r
+\r
+MACRO {ieeetcad}\r
+ {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}\r
+\r
+MACRO {ipl} {"Inf. Process. Lett."}\r
+\r
+MACRO {jacm} {"J.~ACM"}\r
+\r
+MACRO {jcss} {"J.~Comput. Syst. Sci."}\r
+\r
+MACRO {scp} {"Sci. Comput. Programming"}\r
+\r
+MACRO {sicomp} {"SIAM J. Comput."}\r
+\r
+MACRO {tocs} {"ACM Trans. Comput. Syst."}\r
+\r
+MACRO {tods} {"ACM Trans. Database Syst."}\r
+\r
+MACRO {tog} {"ACM Trans. Gr."}\r
+\r
+MACRO {toms} {"ACM Trans. Math. Softw."}\r
+\r
+MACRO {toois} {"ACM Trans. Office Inf. Syst."}\r
+\r
+MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}\r
+\r
+MACRO {tcs} {"Theoretical Comput. Sci."}\r
+\r
+READ\r
+\r
+FUNCTION {sortify}\r
+{ purify$\r
+  "l" change.case$\r
+}\r
+\r
+INTEGERS { len }\r
+\r
+FUNCTION {chop.word}\r
+{ 's :=\r
+  'len :=\r
+  s #1 len substring$ =\r
+    { s len #1 + global.max$ substring$ }\r
+    's\r
+  if$\r
+}\r
+\r
+FUNCTION {sort.format.names}\r
+{ 's :=\r
+  #1 'nameptr :=\r
+  ""\r
+  s num.names$ 'numnames :=\r
+  numnames 'namesleft :=\r
+    { namesleft #0 > }\r
+    { nameptr #1 >\r
+ { "   " * }\r
+ 'skip$\r
+      if$\r
+      s nameptr "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" format.name$ 't :=\r
+      nameptr numnames = t "others" = and\r
+ { "et al" * }\r
+ { t sortify * }\r
+      if$\r
+      nameptr #1 + 'nameptr :=\r
+      namesleft #1 - 'namesleft :=\r
+    }\r
+  while$\r
+}\r
+\r
+FUNCTION {sort.format.title}\r
+{ 't :=\r
+  "A " #2\r
+    "An " #3\r
+      "The " #4 t chop.word\r
+    chop.word\r
+  chop.word\r
+  sortify\r
+  #1 global.max$ substring$\r
+}\r
+\r
+FUNCTION {author.sort}\r
+{ author empty$\r
+    { key empty$\r
+ { "to sort, need author or key in " cite$ * warning$\r
+   ""\r
+ }\r
+ { key sortify }\r
+      if$\r
+    }\r
+    { author sort.format.names }\r
+  if$\r
+}\r
+\r
+FUNCTION {author.editor.sort}\r
+{ author empty$\r
+    { editor empty$\r
+ { key empty$\r
+     { "to sort, need author, editor, or key in " cite$ * warning$\r
+       ""\r
+     }\r
+     { key sortify }\r
+   if$\r
+ }\r
+ { editor sort.format.names }\r
+      if$\r
+    }\r
+    { author sort.format.names }\r
+  if$\r
+}\r
+\r
+FUNCTION {author.organization.sort}\r
+{ author empty$\r
+\r
+    { organization empty$\r
+ { key empty$\r
+     { "to sort, need author, organization, or key in " cite$ * warning$\r
+       ""\r
+     }\r
+     { key sortify }\r
+   if$\r
+ }\r
+ { "The " #4 organization chop.word sortify }\r
+      if$\r
+    }\r
+    { author sort.format.names }\r
+  if$\r
+}\r
+\r
+FUNCTION {editor.organization.sort}\r
+{ editor empty$\r
+    { organization empty$\r
+ { key empty$\r
+     { "to sort, need editor, organization, or key in " cite$ * warning$\r
+       ""\r
+     }\r
+     { key sortify }\r
+   if$\r
+ }\r
+ { "The " #4 organization chop.word sortify }\r
+      if$\r
+    }\r
+    { editor sort.format.names }\r
+  if$\r
+}\r
+\r
+FUNCTION {presort}\r
+{ type$ "book" =\r
+  type$ "inbook" =\r
+  or\r
+    'author.editor.sort\r
+    { type$ "proceedings" =\r
+ 'editor.organization.sort\r
+ { type$ "manual" =\r
+     'author.organization.sort\r
+     'author.sort\r
+   if$\r
+ }\r
+      if$\r
+    }\r
+  if$\r
+  "    "\r
+  *\r
+  year field.or.null sortify\r
+  *\r
+  "    "\r
+  *\r
+  title field.or.null\r
+  sort.format.title\r
+  *\r
+  #1 entry.max$ substring$\r
+  'sort.key$ :=\r
+}\r
+\r
+ITERATE {presort}\r
+\r
+SORT\r
+\r
+STRINGS { longest.label }\r
+\r
+INTEGERS { number.label longest.label.width }\r
+\r
+FUNCTION {initialize.longest.label}\r
+{ "" 'longest.label :=\r
+  #1 'number.label :=\r
+  #0 'longest.label.width :=\r
+}\r
+\r
+FUNCTION {longest.label.pass}\r
+{ number.label int.to.str$ 'label :=\r
+  number.label #1 + 'number.label :=\r
+  label width$ longest.label.width >\r
+    { label 'longest.label :=\r
+      label width$ 'longest.label.width :=\r
+    }\r
+    'skip$\r
+  if$\r
+}\r
+\r
+EXECUTE {initialize.longest.label}\r
+\r
+ITERATE {longest.label.pass}\r
+\r
+FUNCTION {begin.bib}\r
+{ preamble$ empty$\r
+    'skip$\r
+    { preamble$ write$ newline$ }\r
+  if$\r
+  "\begin{thebibliography}{"  longest.label  * \r
+  "}\setlength{\itemsep}{-1ex}\small" * write$ newline$\r
+}\r
+\r
+EXECUTE {begin.bib}\r
+\r
+EXECUTE {init.state.consts}\r
+\r
+ITERATE {call.type$}\r
+\r
+FUNCTION {end.bib}\r
+{ newline$\r
+  "\end{thebibliography}" write$ newline$\r
+}\r
+\r
+EXECUTE {end.bib}\r
+\r
+% end of file latex8.bst\r
+% ---------------------------------------------------------------\r
+\r
+\r
+\r