1099 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			1099 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | % BibTeX bibliography style `splncs' | ||
|  | 
 | ||
|  | % An attempt to match the bibliography style required for use with | ||
|  | % numbered references in Springer Verlag's "Lecture Notes in Computer | ||
|  | % Science" series.  (See Springer's documentation for llncs.sty for | ||
|  | % more details of the suggested reference format.)  Note that this | ||
|  | % file will not work for author-year style citations. | ||
|  | 
 | ||
|  | % Use \documentclass{llncs} and \bibliographystyle{splncs}, and cite | ||
|  | % a reference with (e.g.) \cite{smith77} to get a "[1]" in the text. | ||
|  | 
 | ||
|  | % Copyright (C) 1999 Jason Noble. | ||
|  | % Last updated: Friday 07 March 2006, 08:04:42  Frank Holzwarth, Springer | ||
|  | % | ||
|  | % Based on the BibTeX standard bibliography style `unsrt' | ||
|  | 
 | ||
|  | ENTRY | ||
|  |   { address | ||
|  |     author | ||
|  |     booktitle | ||
|  |     chapter | ||
|  |     edition | ||
|  |     editor | ||
|  |     howpublished | ||
|  |     institution | ||
|  |     journal | ||
|  |     key | ||
|  |     month | ||
|  |     note | ||
|  |     number | ||
|  |     organization | ||
|  |     pages | ||
|  |     publisher | ||
|  |     school | ||
|  |     series | ||
|  |     title | ||
|  |     type | ||
|  |     volume | ||
|  |     year | ||
|  |   } | ||
|  |   {} | ||
|  |   { label } | ||
|  | 
 | ||
|  | INTEGERS { output.state before.all mid.sentence after.sentence | ||
|  |            after.block after.authors between.elements} | ||
|  | 
 | ||
|  | FUNCTION {init.state.consts} | ||
|  | { #0 'before.all := | ||
|  |   #1 'mid.sentence := | ||
|  |   #2 'after.sentence := | ||
|  |   #3 'after.block := | ||
|  |   #4 'after.authors := | ||
|  |   #5 'between.elements := | ||
|  | } | ||
|  | 
 | ||
|  | STRINGS { s t } | ||
|  | 
 | ||
|  | FUNCTION {output.nonnull} | ||
|  | { 's := | ||
|  |   output.state mid.sentence = | ||
|  |     { " " * write$ } | ||
|  |     { output.state after.block = | ||
|  |         { add.period$ write$ | ||
|  |           newline$ | ||
|  |           "\newblock " write$ | ||
|  |         } | ||
|  |         { | ||
|  |           output.state after.authors = | ||
|  |           { ": " * write$ | ||
|  |             newline$ | ||
|  |             "\newblock " write$ | ||
|  |           } | ||
|  |           { output.state between.elements = | ||
|  |               { ", " * write$ } | ||
|  |               { output.state before.all = | ||
|  |                    'write$ | ||
|  |                   { add.period$ " " * write$ } | ||
|  |                   if$ | ||
|  |               } | ||
|  |               if$ | ||
|  |           } | ||
|  |           if$ | ||
|  |         } | ||
|  |       if$ | ||
|  |       mid.sentence 'output.state := | ||
|  |     } | ||
|  |   if$ | ||
|  |   s | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {output} | ||
|  | { duplicate$ empty$ | ||
|  |     'pop$ | ||
|  |     'output.nonnull | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {output.check} | ||
|  | { 't := | ||
|  |   duplicate$ empty$ | ||
|  |     { pop$ "empty " t * " in " * cite$ * warning$ } | ||
|  |     'output.nonnull | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {output.bibitem} | ||
|  | { newline$ | ||
|  |   "\bibitem{" write$ | ||
|  |   cite$ write$ | ||
|  |   "}" write$ | ||
|  |   newline$ | ||
|  |   "" | ||
|  |   before.all 'output.state := | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {fin.entry} | ||
|  | { write$ | ||
|  |   newline$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {new.block} | ||
|  | { output.state before.all = | ||
|  |     'skip$ | ||
|  |     { after.block 'output.state := } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {stupid.colon} | ||
|  | { after.authors 'output.state := } | ||
|  | 
 | ||
|  | FUNCTION {insert.comma} | ||
|  | { output.state before.all = | ||
|  |     'skip$ | ||
|  |     { between.elements 'output.state := } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {new.sentence} | ||
|  | { output.state after.block = | ||
|  |     'skip$ | ||
|  |     { output.state before.all = | ||
|  |         'skip$ | ||
|  |         { after.sentence 'output.state := } | ||
|  |       if$ | ||
|  |     } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {not} | ||
|  | {   { #0 } | ||
|  |     { #1 } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {and} | ||
|  | {   'skip$ | ||
|  |     { pop$ #0 } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {or} | ||
|  | {   { pop$ #1 } | ||
|  |     'skip$ | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {new.block.checka} | ||
|  | { empty$ | ||
|  |     'skip$ | ||
|  |     'new.block | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {new.block.checkb} | ||
|  | { empty$ | ||
|  |   swap$ empty$ | ||
|  |   and | ||
|  |     'skip$ | ||
|  |     'new.block | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {new.sentence.checka} | ||
|  | { empty$ | ||
|  |     'skip$ | ||
|  |     'new.sentence | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {new.sentence.checkb} | ||
|  | { empty$ | ||
|  |   swap$ empty$ | ||
|  |   and | ||
|  |     'skip$ | ||
|  |     'new.sentence | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {field.or.null} | ||
|  | { duplicate$ empty$ | ||
|  |     { pop$ "" } | ||
|  |     'skip$ | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {emphasize} | ||
|  | { duplicate$ empty$ | ||
|  |     { pop$ "" } | ||
|  |     { "" swap$ * "" * } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {bold} | ||
|  | { duplicate$ empty$ | ||
|  |     { pop$ "" } | ||
|  |     { "\textbf{" swap$ * "}" * } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {parens} | ||
|  | { duplicate$ empty$ | ||
|  |     { pop$ "" } | ||
|  |     { "(" swap$ * ")" * } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | INTEGERS { nameptr namesleft numnames } | ||
|  | 
 | ||
|  | FUNCTION {format.springer.names} | ||
|  | { 's := | ||
|  |   #1 'nameptr := | ||
|  |   s num.names$ 'numnames := | ||
|  |   numnames 'namesleft := | ||
|  |     { namesleft #0 > } | ||
|  |     { s nameptr "{vv~}{ll}{, jj}{, f{.}.}" format.name$ 't := | ||
|  |       nameptr #1 > | ||
|  |         { namesleft #1 > | ||
|  |             { ", " * t * } | ||
|  |             { numnames #1 > | ||
|  |                 { ", " * } | ||
|  |                 'skip$ | ||
|  |               if$ | ||
|  |               t "others" = | ||
|  |                 { " et~al." * } | ||
|  |                 { "" * t * } | ||
|  |               if$ | ||
|  |             } | ||
|  |           if$ | ||
|  |         } | ||
|  |         't | ||
|  |       if$ | ||
|  |       nameptr #1 + 'nameptr := | ||
|  |       namesleft #1 - 'namesleft := | ||
|  |     } | ||
|  |   while$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.names} | ||
|  | { 's := | ||
|  |   #1 'nameptr := | ||
|  |   s num.names$ 'numnames := | ||
|  |   numnames 'namesleft := | ||
|  |     { namesleft #0 > } | ||
|  |     { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't := | ||
|  |       nameptr #1 > | ||
|  |         { namesleft #1 > | ||
|  |             { ", " * t * } | ||
|  |             { numnames #2 > | ||
|  |                 { "," * } | ||
|  |                 'skip$ | ||
|  |               if$ | ||
|  |               t "others" = | ||
|  |                 { " et~al." * } | ||
|  |                 { " \& " * t * } | ||
|  |               if$ | ||
|  |             } | ||
|  |           if$ | ||
|  |         } | ||
|  |         't | ||
|  |       if$ | ||
|  |       nameptr #1 + 'nameptr := | ||
|  |       namesleft #1 - 'namesleft := | ||
|  |     } | ||
|  |   while$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.authors} | ||
|  | { author empty$ | ||
|  |     { "" } | ||
|  |     { author format.springer.names } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.editors} | ||
|  | { editor empty$ | ||
|  |     { "" } | ||
|  |     { editor format.springer.names | ||
|  |       editor num.names$ #1 > | ||
|  |         { ", eds." * } | ||
|  |         { ", ed." * } | ||
|  |       if$ | ||
|  |     } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.title} | ||
|  | { title empty$ | ||
|  |     { "" } | ||
|  |     { title "t" change.case$ } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {n.dashify} | ||
|  | { 't := | ||
|  |   "" | ||
|  |     { t empty$ not } | ||
|  |     { t #1 #1 substring$ "-" = | ||
|  |         { t #1 #2 substring$ "--" = not | ||
|  |             { "--" * | ||
|  |               t #2 global.max$ substring$ 't := | ||
|  |             } | ||
|  |             {   { t #1 #1 substring$ "-" = } | ||
|  |                 { "-" * | ||
|  |                   t #2 global.max$ substring$ 't := | ||
|  |                 } | ||
|  |               while$ | ||
|  |             } | ||
|  |           if$ | ||
|  |         } | ||
|  |         { t #1 #1 substring$ * | ||
|  |           t #2 global.max$ substring$ 't := | ||
|  |         } | ||
|  |       if$ | ||
|  |     } | ||
|  |   while$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.date} | ||
|  | { year empty$ | ||
|  |     { month empty$ | ||
|  |         { "" } | ||
|  |         { "there's a month but no year in " cite$ * warning$ | ||
|  |           month | ||
|  |         } | ||
|  |       if$ | ||
|  |     } | ||
|  |     { month empty$ | ||
|  |         'year | ||
|  |         { month " " * year * } | ||
|  |       if$ | ||
|  |     } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.btitle} | ||
|  | { title emphasize | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {tie.or.space.connect} | ||
|  | { duplicate$ text.length$ #3 < | ||
|  |     { "~" } | ||
|  |     { " " } | ||
|  |   if$ | ||
|  |   swap$ * * | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {either.or.check} | ||
|  | { empty$ | ||
|  |     'pop$ | ||
|  |     { "can't use both " swap$ * " fields in " * cite$ * warning$ } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.bvolume} | ||
|  | { volume empty$ | ||
|  |     { "" } | ||
|  |     { "Volume" volume tie.or.space.connect | ||
|  |       series empty$ | ||
|  |         'skip$ | ||
|  |         { " of " * series emphasize * } | ||
|  |       if$ | ||
|  |       add.period$ | ||
|  |       "volume and number" number either.or.check | ||
|  |     } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.number.series} | ||
|  | { volume empty$ | ||
|  |     { number empty$ | ||
|  |         { series field.or.null } | ||
|  |         { output.state mid.sentence = | ||
|  |             { "number" } | ||
|  |             { "Number" } | ||
|  |           if$ | ||
|  |           number tie.or.space.connect | ||
|  |           series empty$ | ||
|  |             { "there's a number but no series in " cite$ * warning$ } | ||
|  |             { " in " * series * } | ||
|  |           if$ | ||
|  |         } | ||
|  |       if$ | ||
|  |     } | ||
|  |     { "" } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.edition} | ||
|  | { edition empty$ | ||
|  |     { "" } | ||
|  |     { output.state mid.sentence = | ||
|  |         { edition "l" change.case$ " edn." * } | ||
|  |         { edition "t" change.case$ " edn." * } | ||
|  |       if$ | ||
|  |     } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | INTEGERS { multiresult } | ||
|  | 
 | ||
|  | FUNCTION {multi.page.check} | ||
|  | { 't := | ||
|  |   #0 'multiresult := | ||
|  |     { multiresult not | ||
|  |       t empty$ not | ||
|  |       and | ||
|  |     } | ||
|  |     { t #1 #1 substring$ | ||
|  |       duplicate$ "-" = | ||
|  |       swap$ duplicate$ "," = | ||
|  |       swap$ "+" = | ||
|  |       or or | ||
|  |         { #1 'multiresult := } | ||
|  |         { t #2 global.max$ substring$ 't := } | ||
|  |       if$ | ||
|  |     } | ||
|  |   while$ | ||
|  |   multiresult | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.pages} | ||
|  | { pages empty$ | ||
|  |     { "" } | ||
|  |     { pages multi.page.check | ||
|  |         { "" pages n.dashify tie.or.space.connect } | ||
|  |         { "" pages tie.or.space.connect } | ||
|  |       if$ | ||
|  |     } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.vol} | ||
|  | { volume bold | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.vol.num} | ||
|  | { volume bold | ||
|  | number empty$ | ||
|  | { } | ||
|  | { number "(" swap$ * * ")" * } | ||
|  | if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {pre.format.pages} | ||
|  | { pages empty$ | ||
|  |     'skip$ | ||
|  |     { duplicate$ empty$ | ||
|  |         { pop$ format.pages } | ||
|  |         { " " * pages n.dashify * } | ||
|  |       if$ | ||
|  |     } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.chapter.pages} | ||
|  | { chapter empty$ | ||
|  |     'format.pages | ||
|  |     { type empty$ | ||
|  |         { "chapter" } | ||
|  |         { type "l" change.case$ } | ||
|  |       if$ | ||
|  |       chapter tie.or.space.connect | ||
|  |       pages empty$ | ||
|  |         'skip$ | ||
|  |         { " " * format.pages * } | ||
|  |       if$ | ||
|  |     } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.in.ed.booktitle} | ||
|  | { booktitle empty$ | ||
|  |     { "" } | ||
|  |     { editor empty$ | ||
|  |         { "In: " booktitle emphasize * } | ||
|  |         { "In " format.editors * ": " * booktitle emphasize * } | ||
|  |       if$ | ||
|  |     } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {empty.misc.check} | ||
|  | { author empty$ title empty$ howpublished empty$ | ||
|  |   month empty$ year empty$ note empty$ | ||
|  |   and and and and and | ||
|  |     { "all relevant fields are empty in " cite$ * warning$ } | ||
|  |     'skip$ | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.thesis.type} | ||
|  | { type empty$ | ||
|  |     'skip$ | ||
|  |     { pop$ | ||
|  |       type "t" change.case$ | ||
|  |     } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.tr.number} | ||
|  | { type empty$ | ||
|  |     { "Technical Report" } | ||
|  |     'type | ||
|  |   if$ | ||
|  |   number empty$ | ||
|  |     { "t" change.case$ } | ||
|  |     { number tie.or.space.connect } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.article.crossref} | ||
|  | { key empty$ | ||
|  |     { journal empty$ | ||
|  |         { "need key or journal for " cite$ * " to crossref " * crossref * | ||
|  |           warning$ | ||
|  |           "" | ||
|  |         } | ||
|  |         { "In {\em " journal * "\/}" * } | ||
|  |       if$ | ||
|  |     } | ||
|  |     { "In " key * } | ||
|  |   if$ | ||
|  |   " \cite{" * crossref * "}" * | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.crossref.editor} | ||
|  | { editor #1 "{vv~}{ll}" format.name$ | ||
|  |   editor num.names$ duplicate$ | ||
|  |   #2 > | ||
|  |     { pop$ " et~al." * } | ||
|  |     { #2 < | ||
|  |         'skip$ | ||
|  |         { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = | ||
|  |             { " et~al." * } | ||
|  |             { " and " * editor #2 "{vv~}{ll}" format.name$ * } | ||
|  |           if$ | ||
|  |         } | ||
|  |       if$ | ||
|  |     } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.book.crossref} | ||
|  | { volume empty$ | ||
|  |     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ | ||
|  |       "In " | ||
|  |     } | ||
|  |     { "Volume" volume tie.or.space.connect | ||
|  |       " of " * | ||
|  |     } | ||
|  |   if$ | ||
|  |   " \cite{" * crossref * "}" * | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {format.incoll.inproc.crossref} | ||
|  | { editor empty$ | ||
|  |   editor field.or.null author field.or.null = | ||
|  |   or | ||
|  |     { key empty$ | ||
|  |         { booktitle empty$ | ||
|  |             { "need editor, key, or booktitle for " cite$ * " to crossref " * | ||
|  |               crossref * warning$ | ||
|  |               "" | ||
|  |             } | ||
|  |             { "" } | ||
|  |           if$ | ||
|  |         } | ||
|  |         { "" } | ||
|  |       if$ | ||
|  |     } | ||
|  |     { "" } | ||
|  |   if$ | ||
|  |   " \cite{" * crossref * "}" * | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {and.the.note} | ||
|  | { note output | ||
|  |   note empty$ | ||
|  |      'skip$ | ||
|  |      { add.period$ } | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {article} | ||
|  | { output.bibitem | ||
|  |   format.authors "author" output.check | ||
|  |   stupid.colon | ||
|  |   format.title "title" output.check | ||
|  |   new.block | ||
|  |   crossref missing$ | ||
|  |     { journal emphasize "journal" output.check | ||
|  |       format.vol.num output | ||
|  |       format.date parens output | ||
|  |       format.pages output | ||
|  |     } | ||
|  |     { format.article.crossref output.nonnull | ||
|  |       format.pages output | ||
|  |     } | ||
|  |   if$ | ||
|  |   and.the.note | ||
|  |   fin.entry | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {book} | ||
|  | { output.bibitem | ||
|  |   author empty$ | ||
|  |     { format.editors "author and editor" output.check } | ||
|  |     { format.authors output.nonnull | ||
|  |       crossref missing$ | ||
|  |         { "author and editor" editor either.or.check } | ||
|  |         'skip$ | ||
|  |       if$ | ||
|  |     } | ||
|  |   if$ | ||
|  |   stupid.colon | ||
|  |   format.btitle "title" output.check | ||
|  |   new.sentence | ||
|  |   crossref missing$ | ||
|  |     { format.edition output | ||
|  |       format.bvolume output | ||
|  |       new.block | ||
|  |       format.number.series output | ||
|  |       new.sentence | ||
|  |       publisher "publisher" output.check | ||
|  |       address empty$ | ||
|  |          'skip$ | ||
|  |          { insert.comma } | ||
|  |       if$ | ||
|  |       address output | ||
|  |       format.date parens output | ||
|  |     } | ||
|  |     { format.book.crossref output.nonnull | ||
|  |     } | ||
|  |   if$ | ||
|  |   and.the.note | ||
|  |   fin.entry | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {booklet} | ||
|  | { output.bibitem | ||
|  |   format.authors output | ||
|  |   stupid.colon | ||
|  |   format.title "title" output.check | ||
|  |   howpublished address new.block.checkb | ||
|  |   howpublished output | ||
|  |   address empty$ | ||
|  |      'skip$ | ||
|  |      { insert.comma } | ||
|  |   if$ | ||
|  |   address output | ||
|  |   format.date parens output | ||
|  |   and.the.note | ||
|  |   fin.entry | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {inbook} | ||
|  | { output.bibitem | ||
|  |   author empty$ | ||
|  |     { format.editors "author and editor" output.check } | ||
|  |     { format.authors output.nonnull | ||
|  |       crossref missing$ | ||
|  |         { "author and editor" editor either.or.check } | ||
|  |         'skip$ | ||
|  |       if$ | ||
|  |     } | ||
|  |   if$ | ||
|  |   stupid.colon | ||
|  |   crossref missing$ | ||
|  |     { chapter output | ||
|  |       new.block | ||
|  |       format.number.series output | ||
|  |       new.sentence | ||
|  |       "In:" output | ||
|  |       format.btitle "title" output.check | ||
|  |       new.sentence | ||
|  |       format.edition output | ||
|  |       format.bvolume output | ||
|  |       publisher "publisher" output.check | ||
|  |       address empty$ | ||
|  |          'skip$ | ||
|  |          { insert.comma } | ||
|  |       if$ | ||
|  |       address output | ||
|  |       format.date parens output | ||
|  |     } | ||
|  |     { chapter output | ||
|  |       new.block | ||
|  |       format.incoll.inproc.crossref output.nonnull | ||
|  |     } | ||
|  |   if$ | ||
|  |   format.pages output | ||
|  |   and.the.note | ||
|  |   fin.entry | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {incollection} | ||
|  | { output.bibitem | ||
|  |   format.authors "author" output.check | ||
|  |   stupid.colon | ||
|  |   format.title "title" output.check | ||
|  |   new.block | ||
|  |   crossref missing$ | ||
|  |     { format.in.ed.booktitle "booktitle" output.check | ||
|  |       new.sentence | ||
|  |       format.bvolume output | ||
|  |       format.number.series output | ||
|  |       new.block | ||
|  |       format.edition output | ||
|  |       publisher "publisher" output.check | ||
|  |       address empty$ | ||
|  |          'skip$ | ||
|  |          { insert.comma } | ||
|  |       if$ | ||
|  |       address output | ||
|  |       format.date parens output | ||
|  |       format.pages output | ||
|  |     } | ||
|  |     { format.incoll.inproc.crossref output.nonnull | ||
|  |       format.chapter.pages output | ||
|  |     } | ||
|  |   if$ | ||
|  |   and.the.note | ||
|  |   fin.entry | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {inproceedings} | ||
|  | { output.bibitem | ||
|  |   format.authors "author" output.check | ||
|  |   stupid.colon | ||
|  |   format.title "title" output.check | ||
|  |   new.block | ||
|  |   crossref missing$ | ||
|  |     { format.in.ed.booktitle "booktitle" output.check | ||
|  |       new.sentence | ||
|  |       format.bvolume output | ||
|  |       format.number.series output | ||
|  |       address empty$ | ||
|  |         { organization publisher new.sentence.checkb | ||
|  |           organization empty$ | ||
|  |              'skip$ | ||
|  |              { insert.comma } | ||
|  |           if$ | ||
|  |           organization output | ||
|  |           publisher empty$ | ||
|  |              'skip$ | ||
|  |              { insert.comma } | ||
|  |           if$ | ||
|  |           publisher output | ||
|  |           format.date parens output | ||
|  |         } | ||
|  |         { insert.comma | ||
|  |           address output.nonnull | ||
|  |           organization empty$ | ||
|  |              'skip$ | ||
|  |              { insert.comma } | ||
|  |           if$ | ||
|  |           organization output | ||
|  |           publisher empty$ | ||
|  |              'skip$ | ||
|  |              { insert.comma } | ||
|  |           if$ | ||
|  |           publisher output | ||
|  |           format.date parens output | ||
|  |         } | ||
|  |       if$ | ||
|  |     } | ||
|  |     { format.incoll.inproc.crossref output.nonnull | ||
|  |     } | ||
|  |   if$ | ||
|  |   format.pages output | ||
|  |   and.the.note | ||
|  |   fin.entry | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {conference} { inproceedings } | ||
|  | 
 | ||
|  | FUNCTION {manual} | ||
|  | { output.bibitem | ||
|  |   author empty$ | ||
|  |     { organization empty$ | ||
|  |         'skip$ | ||
|  |         { organization output.nonnull | ||
|  |           address output | ||
|  |         } | ||
|  |       if$ | ||
|  |     } | ||
|  |     { format.authors output.nonnull } | ||
|  |   if$ | ||
|  |   stupid.colon | ||
|  |   format.btitle "title" output.check | ||
|  |   author empty$ | ||
|  |     { organization empty$ | ||
|  |         { address new.block.checka | ||
|  |           address output | ||
|  |         } | ||
|  |         'skip$ | ||
|  |       if$ | ||
|  |     } | ||
|  |     { organization address new.block.checkb | ||
|  |       organization output | ||
|  |       address empty$ | ||
|  |          'skip$ | ||
|  |          { insert.comma } | ||
|  |       if$ | ||
|  |       address output | ||
|  |     } | ||
|  |   if$ | ||
|  |   new.sentence | ||
|  |   format.edition output | ||
|  |   format.date parens output | ||
|  |   and.the.note | ||
|  |   fin.entry | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {mastersthesis} | ||
|  | { output.bibitem | ||
|  |   format.authors "author" output.check | ||
|  |   stupid.colon | ||
|  |   format.title "title" output.check | ||
|  |   new.block | ||
|  |   "Master's thesis" format.thesis.type output.nonnull | ||
|  |   school empty$ | ||
|  |      'skip$ | ||
|  |      { insert.comma } | ||
|  |   if$ | ||
|  |   school "school" output.check | ||
|  |   address empty$ | ||
|  |      'skip$ | ||
|  |      { insert.comma } | ||
|  |   if$ | ||
|  |   address output | ||
|  |   format.date parens output | ||
|  |   and.the.note | ||
|  |   fin.entry | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {misc} | ||
|  | { output.bibitem | ||
|  |   format.authors "author" output.check | ||
|  |   stupid.colon | ||
|  |   format.title "title" output.check | ||
|  |   howpublished new.block.checka | ||
|  |   howpublished output | ||
|  |   format.date parens output | ||
|  |   and.the.note | ||
|  |   fin.entry | ||
|  |   empty.misc.check | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {phdthesis} | ||
|  | { output.bibitem | ||
|  |   format.authors "author" output.check | ||
|  |   stupid.colon | ||
|  |   format.btitle "title" output.check | ||
|  |   new.block | ||
|  |   "PhD thesis" format.thesis.type output.nonnull | ||
|  |   school empty$ | ||
|  |      'skip$ | ||
|  |      { insert.comma } | ||
|  |   if$ | ||
|  |   school "school" output.check | ||
|  |   address empty$ | ||
|  |      'skip$ | ||
|  |      { insert.comma } | ||
|  |   if$ | ||
|  |   address output | ||
|  |   format.date parens output | ||
|  |   and.the.note | ||
|  |   fin.entry | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {proceedings} | ||
|  | { output.bibitem | ||
|  |   editor empty$ | ||
|  |     { organization empty$ | ||
|  |         { "" } | ||
|  |         { organization output | ||
|  |           stupid.colon } | ||
|  |       if$ | ||
|  |     } | ||
|  |     { format.editors output.nonnull | ||
|  |       stupid.colon | ||
|  |     } | ||
|  |   if$ | ||
|  |   format.btitle "title" output.check | ||
|  |   new.block | ||
|  |   crossref missing$ | ||
|  |     { format.in.ed.booktitle "booktitle" output.check | ||
|  |       new.sentence | ||
|  |       format.bvolume output | ||
|  |       format.number.series output | ||
|  |       address empty$ | ||
|  |         { organization publisher new.sentence.checkb | ||
|  |           organization empty$ | ||
|  |              'skip$ | ||
|  |              { insert.comma } | ||
|  |           if$ | ||
|  |           organization output | ||
|  |           publisher empty$ | ||
|  |              'skip$ | ||
|  |              { insert.comma } | ||
|  |           if$ | ||
|  |           publisher output | ||
|  |           format.date parens output | ||
|  |         } | ||
|  |         { insert.comma | ||
|  |           address output.nonnull | ||
|  |           organization empty$ | ||
|  |              'skip$ | ||
|  |              { insert.comma } | ||
|  |           if$ | ||
|  |           organization output | ||
|  |           publisher empty$ | ||
|  |              'skip$ | ||
|  |              { insert.comma } | ||
|  |           if$ | ||
|  |           publisher output | ||
|  |           format.date parens output | ||
|  |         } | ||
|  |       if$ | ||
|  |     } | ||
|  |     { format.incoll.inproc.crossref output.nonnull | ||
|  |     } | ||
|  |   if$ | ||
|  |   and.the.note | ||
|  |   fin.entry | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {techreport} | ||
|  | { output.bibitem | ||
|  |   format.authors "author" output.check | ||
|  |   stupid.colon | ||
|  |   format.title "title" output.check | ||
|  |   new.block | ||
|  |   format.tr.number output.nonnull | ||
|  |   institution empty$ | ||
|  |      'skip$ | ||
|  |      { insert.comma } | ||
|  |   if$ | ||
|  |   institution "institution" output.check | ||
|  |   address empty$ | ||
|  |      'skip$ | ||
|  |      { insert.comma } | ||
|  |   if$ | ||
|  |   address output | ||
|  |   format.date parens output | ||
|  |   and.the.note | ||
|  |   fin.entry | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {unpublished} | ||
|  | { output.bibitem | ||
|  |   format.authors "author" output.check | ||
|  |   stupid.colon | ||
|  |   format.title "title" output.check | ||
|  |   new.block | ||
|  |   note "note" output.check | ||
|  |   format.date parens output | ||
|  |   fin.entry | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {default.type} { misc } | ||
|  | 
 | ||
|  | MACRO {jan} {"January"} | ||
|  | 
 | ||
|  | MACRO {feb} {"February"} | ||
|  | 
 | ||
|  | MACRO {mar} {"March"} | ||
|  | 
 | ||
|  | MACRO {apr} {"April"} | ||
|  | 
 | ||
|  | MACRO {may} {"May"} | ||
|  | 
 | ||
|  | MACRO {jun} {"June"} | ||
|  | 
 | ||
|  | MACRO {jul} {"July"} | ||
|  | 
 | ||
|  | MACRO {aug} {"August"} | ||
|  | 
 | ||
|  | MACRO {sep} {"September"} | ||
|  | 
 | ||
|  | MACRO {oct} {"October"} | ||
|  | 
 | ||
|  | MACRO {nov} {"November"} | ||
|  | 
 | ||
|  | MACRO {dec} {"December"} | ||
|  | 
 | ||
|  | MACRO {acmcs} {"ACM Computing Surveys"} | ||
|  | 
 | ||
|  | MACRO {acta} {"Acta Informatica"} | ||
|  | 
 | ||
|  | MACRO {cacm} {"Communications of the ACM"} | ||
|  | 
 | ||
|  | MACRO {ibmjrd} {"IBM Journal of Research and Development"} | ||
|  | 
 | ||
|  | MACRO {ibmsj} {"IBM Systems Journal"} | ||
|  | 
 | ||
|  | MACRO {ieeese} {"IEEE Transactions on Software Engineering"} | ||
|  | 
 | ||
|  | MACRO {ieeetc} {"IEEE Transactions on Computers"} | ||
|  | 
 | ||
|  | MACRO {ieeetcad} | ||
|  |  {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} | ||
|  | 
 | ||
|  | MACRO {ipl} {"Information Processing Letters"} | ||
|  | 
 | ||
|  | MACRO {jacm} {"Journal of the ACM"} | ||
|  | 
 | ||
|  | MACRO {jcss} {"Journal of Computer and System Sciences"} | ||
|  | 
 | ||
|  | MACRO {scp} {"Science of Computer Programming"} | ||
|  | 
 | ||
|  | MACRO {sicomp} {"SIAM Journal on Computing"} | ||
|  | 
 | ||
|  | MACRO {tocs} {"ACM Transactions on Computer Systems"} | ||
|  | 
 | ||
|  | MACRO {tods} {"ACM Transactions on Database Systems"} | ||
|  | 
 | ||
|  | MACRO {tog} {"ACM Transactions on Graphics"} | ||
|  | 
 | ||
|  | MACRO {toms} {"ACM Transactions on Mathematical Software"} | ||
|  | 
 | ||
|  | MACRO {toois} {"ACM Transactions on Office Information Systems"} | ||
|  | 
 | ||
|  | MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} | ||
|  | 
 | ||
|  | MACRO {tcs} {"Theoretical Computer Science"} | ||
|  | 
 | ||
|  | READ | ||
|  | 
 | ||
|  | STRINGS { longest.label } | ||
|  | 
 | ||
|  | INTEGERS { number.label longest.label.width } | ||
|  | 
 | ||
|  | FUNCTION {initialize.longest.label} | ||
|  | { "" 'longest.label := | ||
|  |   #1 'number.label := | ||
|  |   #0 'longest.label.width := | ||
|  | } | ||
|  | 
 | ||
|  | FUNCTION {longest.label.pass} | ||
|  | { number.label int.to.str$ 'label := | ||
|  |   number.label #1 + 'number.label := | ||
|  |   label width$ longest.label.width > | ||
|  |     { label 'longest.label := | ||
|  |       label width$ 'longest.label.width := | ||
|  |     } | ||
|  |     'skip$ | ||
|  |   if$ | ||
|  | } | ||
|  | 
 | ||
|  | EXECUTE {initialize.longest.label} | ||
|  | 
 | ||
|  | ITERATE {longest.label.pass} | ||
|  | 
 | ||
|  | FUNCTION {begin.bib} | ||
|  | { preamble$ empty$ | ||
|  |     'skip$ | ||
|  |     { preamble$ write$ newline$ } | ||
|  |   if$ | ||
|  |   "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$ | ||
|  | } | ||
|  | 
 | ||
|  | EXECUTE {begin.bib} | ||
|  | 
 | ||
|  | EXECUTE {init.state.consts} | ||
|  | 
 | ||
|  | ITERATE {call.type$} | ||
|  | 
 | ||
|  | FUNCTION {end.bib} | ||
|  | { newline$ | ||
|  |   "\end{thebibliography}" write$ newline$ | ||
|  | } | ||
|  | 
 | ||
|  | EXECUTE {end.bib} | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 |