summaryrefslogtreecommitdiffstats
path: root/src/doxygen_bst.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/doxygen_bst.h')
-rw-r--r--src/doxygen_bst.h1414
1 files changed, 1414 insertions, 0 deletions
diff --git a/src/doxygen_bst.h b/src/doxygen_bst.h
new file mode 100644
index 0000000..7acf63e
--- /dev/null
+++ b/src/doxygen_bst.h
@@ -0,0 +1,1414 @@
+"%% doxygen.bst\n"
+"%% This is a modification of plainhtml.bst; the original copyright notice\n"
+"%% follows.\n"
+"\n"
+"%% ORIGINAL COPYRIGHT NOTICE OF plainhtml.bst\n"
+"%%\n"
+"%% plainhtml.bst\n"
+"%%\n"
+"%% Part of bibhtml, version 2.0.1, released 2009 November 2\n"
+"%% Hg node 6ca3807543d6.\n"
+"%% See <http://purl.org/nxg/dist/bibhtml>\n"
+"%%\n"
+"%% Copyright 1999, 2005, 2006, 2009, Norman Gray <norman@astro.gla.ac.uk>\n"
+"%%\n"
+"%% This is a modification of a modification!\n"
+"%%\n"
+"%%% Modification of BibTeX style file /usr/local/texlive/2008/texmf-dist/bibtex/bst/base/plain.bst\n"
+"%%% ... by urlbst, version 0.6-4 (marked with \"% urlbst\")\n"
+"%%% See <http://purl.org/nxg/dist/urlbst>\n"
+"%%% Added webpage entry type, and url and lastchecked fields.\n"
+"%%% Added eprint support.\n"
+"%%% Added DOI support.\n"
+"%%% Added PUBMED support.\n"
+"%%% Added hyperref support.\n"
+"%%% Original headers follow...\n"
+"\n"
+"% BibTeX standard bibliography style `plain'\n"
+" % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.\n"
+" % Copyright (C) 1985, all rights reserved.\n"
+" % Copying of this file is authorized only if either\n"
+" % (1) you make absolutely no changes to your copy, including name, or\n"
+" % (2) if you do make changes, you name it something other than\n"
+" % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.\n"
+" % This restriction helps ensure that all standard styles are identical.\n"
+" % The file btxbst.doc has the documentation for this style.\n"
+"\n"
+"ENTRY\n"
+" { address\n"
+" author\n"
+" booktitle\n"
+" chapter\n"
+" edition\n"
+" editor\n"
+" howpublished\n"
+" institution\n"
+" journal\n"
+" key\n"
+" month\n"
+" note\n"
+" number\n"
+" organization\n"
+" pages\n"
+" publisher\n"
+" school\n"
+" series\n"
+" title\n"
+" type\n"
+" volume\n"
+" year\n"
+" eprint % urlbst\n"
+" doi % urlbst\n"
+" pubmed % urlbst\n"
+" url % urlbst\n"
+" lastchecked % urlbst\n"
+" }\n"
+" {}\n"
+" { label }\n"
+"\n"
+"INTEGERS { output.state before.all mid.sentence after.sentence after.block doiform }\n"
+"\n"
+"STRINGS { urlintro eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl openinlinelink closeinlinelink } % urlbst...\n"
+"INTEGERS { inlinelinks makeinlinelink addeprints adddoiresolver addpubmedresolver }\n"
+"% Following constants may be adjusted by hand, if desired\n"
+"FUNCTION {init.urlbst.variables}\n"
+"{\n"
+" \"Available from: \" 'urlintro := % prefix before URL\n"
+" \"http://arxiv.org/abs/\" 'eprinturl := % prefix to make URL from eprint ref\n"
+" \"arXiv:\" 'eprintprefix := % text prefix printed before eprint ref\n"
+" \"http://dx.doi.org/\" 'doiurl := % prefix to make URL from DOI\n"
+" \"doi:\" 'doiprefix := % text prefix printed before DOI ref\n"
+" \"http://www.ncbi.nlm.nih.gov/pubmed/\" 'pubmedurl := % prefix to make URL from PUBMED\n"
+" \"PMID:\" 'pubmedprefix := % text prefix printed before PUBMED ref\n"
+" #1 'addeprints := % 0=no eprints; 1=include eprints\n"
+" #1 'adddoiresolver := % 0=no DOI resolver; 1=include it\n"
+" #1 'addpubmedresolver := % 0=no PUBMED resolver; 1=include it\n"
+" #1 'inlinelinks := % 0=URLs explicit; 1=URLs attached to titles\n"
+" #1 'doiform := % 0=simple, but can produce invalid HTML; 1=needs post-processing\n"
+" % the following are internal state variables, not config constants\n"
+" #0 'makeinlinelink := % state variable managed by possibly.setup.inlinelink\n"
+" \"\" 'openinlinelink := % ditto\n"
+" \"\" 'closeinlinelink := % ditto\n"
+"}\n"
+"INTEGERS { \n"
+" bracket.state\n"
+" outside.brackets\n"
+" open.brackets\n"
+" within.brackets\n"
+" close.brackets\n"
+" close.first.block\n"
+"}\n"
+"% ...urlbst to here\n"
+"FUNCTION {init.state.consts}\n"
+"{ #0 'outside.brackets := % urlbst\n"
+" #1 'open.brackets :=\n"
+" #2 'within.brackets :=\n"
+" #3 'close.brackets :=\n"
+"\n"
+" #0 'before.all :=\n"
+" #1 'mid.sentence :=\n"
+" #2 'after.sentence :=\n"
+" #3 'after.block :=\n"
+" #0 'close.first.block :=\n"
+"}\n"
+"\n"
+"STRINGS { s t }\n"
+"\n"
+"% urlbst\n"
+"FUNCTION {output.nonnull.original}\n"
+"{ 's :=\n"
+" output.state mid.sentence =\n"
+" { \", \" * write$ }\n"
+" { output.state after.block =\n"
+" { add.period$ write$\n"
+" % close the <dt> after the end of the first block\n"
+" close.first.block\n"
+" { newline$\n"
+" #0 'close.first.block := }\n"
+" { newline$ }\n"
+" if$\n"
+" }\n"
+" { output.state before.all =\n"
+" 'write$\n"
+" { add.period$ \" \" * write$ }\n"
+" if$\n"
+" }\n"
+" if$\n"
+" mid.sentence 'output.state :=\n"
+" }\n"
+" if$\n"
+" s\n"
+"}\n"
+"\n"
+"% urlbst...\n"
+"% The following three functions are for handling inlinelink. They wrap\n"
+"% a block of text which is potentially output with write$ by multiple\n"
+"% other functions, so we don't know the content a priori.\n"
+"% They communicate between each other using the variables makeinlinelink\n"
+"% (which is true if a link should be made), and closeinlinelink (which holds\n"
+"% the string which should close any current link. They can be called\n"
+"% at any time, but start.inlinelink will be a no-op unless something has\n"
+"% previously set makeinlinelink true, and the two ...end.inlinelink functions\n"
+"% will only do their stuff if start.inlinelink has previously set\n"
+"% closeinlinelink to be non-empty.\n"
+"FUNCTION {possibly.setup.inlinelink}\n"
+"{ makeinlinelink\n"
+" { \"\\rev CITEREF_\" quote$ * url * quote$ * \" [\" * 'openinlinelink :=\n"
+" \"]\" 'closeinlinelink :=\n"
+" #0 'makeinlinelink := }\n"
+" 'skip$\n"
+" if$ % makeinlinelink\n"
+"}\n"
+"FUNCTION {add.inlinelink}\n"
+"{ openinlinelink empty$\n"
+" 'skip$\n"
+" { openinlinelink swap$ * closeinlinelink *\n"
+" \"\" 'openinlinelink :=\n"
+" }\n"
+" if$\n"
+"}\n"
+"FUNCTION {output.nonnull}\n"
+"{ % Save the thing we've been asked to output\n"
+" 's :=\n"
+" % If the bracket-state is close.brackets, then add a close-bracket to\n"
+" % what is currently at the top of the stack, and set bracket.state\n"
+" % to outside.brackets\n"
+" bracket.state close.brackets =\n"
+" { \"]\" *\n"
+" outside.brackets 'bracket.state :=\n"
+" }\n"
+" 'skip$\n"
+" if$\n"
+" bracket.state outside.brackets =\n"
+" { % We're outside all brackets -- this is the normal situation.\n"
+" % Write out what's currently at the top of the stack, using the\n"
+" % original output.nonnull function.\n"
+" s\n"
+" add.inlinelink\n"
+" output.nonnull.original % invoke the original output.nonnull\n"
+" }\n"
+" { % Still in brackets. Add open-bracket or (continuation) comma, add the\n"
+" % new text (in s) to the top of the stack, and move to the close-brackets\n"
+" % state, ready for next time (unless inbrackets resets it). If we come\n"
+" % into this branch, then output.state is carefully undisturbed.\n"
+" bracket.state open.brackets =\n"
+" { \" [\" * }\n"
+" { \", \" * } % bracket.state will be within.brackets\n"
+" if$ \n"
+" s * \n"
+" close.brackets 'bracket.state :=\n"
+" }\n"
+" if$\n"
+"}\n"
+"\n"
+"% Call this function just before adding something which should be presented in \n"
+"% brackets. bracket.state is handled specially within output.nonnull.\n"
+"FUNCTION {inbrackets}\n"
+"{ bracket.state close.brackets =\n"
+" { within.brackets 'bracket.state := } % reset the state: not open nor closed\n"
+" { open.brackets 'bracket.state := }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {format.lastchecked}\n"
+"{ lastchecked empty$\n"
+" { \"\" }\n"
+" { inbrackets \"cited \" lastchecked * }\n"
+" if$\n"
+"}\n"
+"% ...urlbst to here\n"
+"\n"
+"FUNCTION {output}\n"
+"{ duplicate$ empty$\n"
+" 'pop$\n"
+" 'output.nonnull\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {output.check}\n"
+"{ 't :=\n"
+" duplicate$ empty$\n"
+" { pop$ \"empty \" t * \" in \" * cite$ * warning$ }\n"
+" 'output.nonnull\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {output.bibitem.original}\n"
+"{ newline$\n"
+" cite$ write$\n"
+" newline$\n"
+" \"[\" label * \"] \" * write$\n"
+" % the <dt> is closed within output.nonnull, as long as close.first.block is true\n"
+" #1 'close.first.block :=\n"
+" newline$\n"
+" \"\"\n"
+" before.all 'output.state :=\n"
+"}\n"
+"\n"
+"FUNCTION {fin.entry.original}\n"
+"{ add.period$\n"
+" write$\n"
+" newline$\n"
+"}\n"
+"\n"
+"FUNCTION {new.block}\n"
+"{ output.state before.all =\n"
+" 'skip$\n"
+" { after.block 'output.state := }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {new.sentence}\n"
+"{ output.state after.block =\n"
+" 'skip$\n"
+" { output.state before.all =\n"
+" 'skip$\n"
+" { after.sentence 'output.state := }\n"
+" if$\n"
+" }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {not}\n"
+"{ { #0 }\n"
+" { #1 }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {and}\n"
+"{ 'skip$\n"
+" { pop$ #0 }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {or}\n"
+"{ { pop$ #1 }\n"
+" 'skip$\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {new.block.checka}\n"
+"{ empty$\n"
+" 'skip$\n"
+" 'new.block\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {new.block.checkb}\n"
+"{ empty$\n"
+" swap$ empty$\n"
+" and\n"
+" 'skip$\n"
+" 'new.block\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {new.sentence.checka}\n"
+"{ empty$\n"
+" 'skip$\n"
+" 'new.sentence\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {new.sentence.checkb}\n"
+"{ empty$\n"
+" swap$ empty$\n"
+" and\n"
+" 'skip$\n"
+" 'new.sentence\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {field.or.null}\n"
+"{ duplicate$ empty$\n"
+" { pop$ \"\" }\n"
+" 'skip$\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {bold}\n"
+"{ duplicate$ empty$\n"
+" { pop$ \"\" }\n"
+" { \"<b>\" swap$ * \"</b>\" * }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {emphasize}\n"
+"{ duplicate$ empty$\n"
+" { pop$ \"\" }\n"
+" { \"<em>\" swap$ * \"</em>\" * }\n"
+" if$\n"
+"}\n"
+"\n"
+"INTEGERS { nameptr namesleft numnames }\n"
+"\n"
+"FUNCTION {format.names}\n"
+"{ 's :=\n"
+" #1 'nameptr :=\n"
+" s num.names$ 'numnames :=\n"
+" numnames 'namesleft :=\n"
+" { namesleft #0 > }\n"
+" { s nameptr \"{ff~}{vv~}{ll}{, jj}\" format.name$ 't :=\n"
+" nameptr #1 >\n"
+" { namesleft #1 >\n"
+" { \", \" * t * }\n"
+" { numnames #2 >\n"
+" { \",\" * }\n"
+" 'skip$\n"
+" if$\n"
+" t \"others\" =\n"
+" { \" et~al.\" * }\n"
+" { \" and \" * t * }\n"
+" if$\n"
+" }\n"
+" if$\n"
+" }\n"
+" 't\n"
+" if$\n"
+" nameptr #1 + 'nameptr :=\n"
+" namesleft #1 - 'namesleft :=\n"
+" }\n"
+" while$\n"
+"}\n"
+"\n"
+"FUNCTION {format.authors}\n"
+"{ author empty$\n"
+" { \"\" }\n"
+" { author format.names }\n"
+" if$\n"
+" bold\n"
+"}\n"
+"\n"
+"FUNCTION {format.editors}\n"
+"{ editor empty$\n"
+" { \"\" }\n"
+" { editor format.names\n"
+" editor num.names$ #1 >\n"
+" { \", editors\" * }\n"
+" { \", editor\" * }\n"
+" if$\n"
+" }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {format.title}\n"
+"{ title empty$\n"
+" { \"\" }\n"
+" { title \"t\" change.case$ }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {n.dashify}\n"
+"{ 't :=\n"
+" \"\"\n"
+" { t empty$ not }\n"
+" { t #1 #1 substring$ \"-\" =\n"
+" { t #1 #2 substring$ \"--\" = not\n"
+" { \"--\" *\n"
+" t #2 global.max$ substring$ 't :=\n"
+" }\n"
+" { { t #1 #1 substring$ \"-\" = }\n"
+" { \"-\" *\n"
+" t #2 global.max$ substring$ 't :=\n"
+" }\n"
+" while$\n"
+" }\n"
+" if$\n"
+" }\n"
+" { t #1 #1 substring$ *\n"
+" t #2 global.max$ substring$ 't :=\n"
+" }\n"
+" if$\n"
+" }\n"
+" while$\n"
+"}\n"
+"\n"
+"FUNCTION {format.date}\n"
+"{ year empty$\n"
+" { month empty$\n"
+" { \"\" }\n"
+" { \"there's a month but no year in \" cite$ * warning$\n"
+" month\n"
+" }\n"
+" if$\n"
+" }\n"
+" { month empty$\n"
+" 'year\n"
+" { month \" \" * year * }\n"
+" if$\n"
+" }\n"
+" if$\n"
+" bold\n"
+"}\n"
+"\n"
+"FUNCTION {format.btitle}\n"
+"{ title emphasize\n"
+"}\n"
+"\n"
+"FUNCTION {tie.or.space.connect}\n"
+"{ duplicate$ text.length$ #3 <\n"
+" { \"~\" }\n"
+" { \" \" }\n"
+" if$\n"
+" swap$ * *\n"
+"}\n"
+"\n"
+"FUNCTION {either.or.check}\n"
+"{ empty$\n"
+" 'pop$\n"
+" { \"can't use both \" swap$ * \" fields in \" * cite$ * warning$ }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {format.bvolume}\n"
+"{ volume empty$\n"
+" { \"\" }\n"
+" { \"volume\" volume tie.or.space.connect\n"
+" series empty$\n"
+" 'skip$\n"
+" { \" of \" * series emphasize * }\n"
+" if$\n"
+" \"volume and number\" number either.or.check\n"
+" }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {format.number.series}\n"
+"{ volume empty$\n"
+" { number empty$\n"
+" { series field.or.null }\n"
+" { output.state mid.sentence =\n"
+" { \"number\" }\n"
+" { \"Number\" }\n"
+" if$\n"
+" number tie.or.space.connect\n"
+" series empty$\n"
+" { \"there's a number but no series in \" cite$ * warning$ }\n"
+" { \" in \" * series * }\n"
+" if$\n"
+" }\n"
+" if$\n"
+" }\n"
+" { \"\" }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {format.edition}\n"
+"{ edition empty$\n"
+" { \"\" }\n"
+" { output.state mid.sentence =\n"
+" { edition \"l\" change.case$ \" edition\" * }\n"
+" { edition \"t\" change.case$ \" edition\" * }\n"
+" if$\n"
+" }\n"
+" if$\n"
+"}\n"
+"\n"
+"INTEGERS { multiresult }\n"
+"\n"
+"FUNCTION {multi.page.check}\n"
+"{ 't :=\n"
+" #0 'multiresult :=\n"
+" { multiresult not\n"
+" t empty$ not\n"
+" and\n"
+" }\n"
+" { t #1 #1 substring$\n"
+" duplicate$ \"-\" =\n"
+" swap$ duplicate$ \",\" =\n"
+" swap$ \"+\" =\n"
+" or or\n"
+" { #1 'multiresult := }\n"
+" { t #2 global.max$ substring$ 't := }\n"
+" if$\n"
+" }\n"
+" while$\n"
+" multiresult\n"
+"}\n"
+"\n"
+"FUNCTION {format.pages}\n"
+"{ pages empty$\n"
+" { \"\" }\n"
+" { pages multi.page.check\n"
+" { \"pages\" pages n.dashify tie.or.space.connect }\n"
+" { \"page\" pages tie.or.space.connect }\n"
+" if$\n"
+" }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {format.vol.num.pages}\n"
+"{ volume field.or.null\n"
+" number empty$\n"
+" 'skip$\n"
+" { \"(\" number * \")\" * *\n"
+" volume empty$\n"
+" { \"there's a number but no volume in \" cite$ * warning$ }\n"
+" 'skip$\n"
+" if$\n"
+" }\n"
+" if$\n"
+" pages empty$\n"
+" 'skip$\n"
+" { duplicate$ empty$\n"
+" { pop$ format.pages }\n"
+" { \":\" * pages n.dashify * }\n"
+" if$\n"
+" }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {format.chapter.pages}\n"
+"{ chapter empty$\n"
+" 'format.pages\n"
+" { type empty$\n"
+" { \"chapter\" }\n"
+" { type \"l\" change.case$ }\n"
+" if$\n"
+" chapter tie.or.space.connect\n"
+" pages empty$\n"
+" 'skip$\n"
+" { \", \" * format.pages * }\n"
+" if$\n"
+" }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {format.in.ed.booktitle}\n"
+"{ booktitle empty$\n"
+" { \"\" }\n"
+" { editor empty$\n"
+" { \"In \" booktitle emphasize * }\n"
+" { \"In \" format.editors * \", \" * booktitle emphasize * }\n"
+" if$\n"
+" }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {empty.misc.check}\n"
+"{ author empty$ title empty$ howpublished empty$\n"
+" month empty$ year empty$ note empty$\n"
+" and and and and and\n"
+" key empty$ not and\n"
+" { \"all relevant fields are empty in \" cite$ * warning$ }\n"
+" 'skip$\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {format.thesis.type}\n"
+"{ type empty$\n"
+" 'skip$\n"
+" { pop$\n"
+" type \"t\" change.case$\n"
+" }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {format.tr.number}\n"
+"{ type empty$\n"
+" { \"Technical Report\" }\n"
+" 'type\n"
+" if$\n"
+" number empty$\n"
+" { \"t\" change.case$ }\n"
+" { number tie.or.space.connect }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {format.article.crossref}\n"
+"{ key empty$\n"
+" { journal empty$\n"
+" { \"need key or journal for \" cite$ * \" to crossref \" * crossref *\n"
+" warning$\n"
+" \"\"\n"
+" }\n"
+" { \"In <em>\" journal * \"</em>\" * }\n"
+" if$\n"
+" }\n"
+" { \"In \" key * }\n"
+" if$\n"
+" \" <span class='cite'>\" * crossref * \"</span>\" *\n"
+"}\n"
+"\n"
+"FUNCTION {format.crossref.editor}\n"
+"{ editor #1 \"{vv~}{ll}\" format.name$\n"
+" editor num.names$ duplicate$\n"
+" #2 >\n"
+" { pop$ \" et~al.\" * }\n"
+" { #2 <\n"
+" 'skip$\n"
+" { editor #2 \"{ff }{vv }{ll}{ jj}\" format.name$ \"others\" =\n"
+" { \" et~al.\" * }\n"
+" { \" and \" * editor #2 \"{vv~}{ll}\" format.name$ * }\n"
+" if$\n"
+" }\n"
+" if$\n"
+" }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {format.book.crossref}\n"
+"{ volume empty$\n"
+" { \"empty volume in \" cite$ * \"'s crossref of \" * crossref * warning$\n"
+" \"In \"\n"
+" }\n"
+" { \"Volume\" volume tie.or.space.connect\n"
+" \" of \" *\n"
+" }\n"
+" if$\n"
+" editor empty$\n"
+" editor field.or.null author field.or.null =\n"
+" or\n"
+" { key empty$\n"
+" { series empty$\n"
+" { \"need editor, key, or series for \" cite$ * \" to crossref \" *\n"
+" crossref * warning$\n"
+" \"\" *\n"
+" }\n"
+" { \"<em>\" * series * \"</em>\" * }\n"
+" if$\n"
+" }\n"
+" { key * }\n"
+" if$\n"
+" }\n"
+" { format.crossref.editor * }\n"
+" if$\n"
+" \" <span class='cite'>\" * crossref * \"</span>\" *\n"
+"}\n"
+"\n"
+"FUNCTION {format.incoll.inproc.crossref}\n"
+"{ editor empty$\n"
+" editor field.or.null author field.or.null =\n"
+" or\n"
+" { key empty$\n"
+" { booktitle empty$\n"
+" { \"need editor, key, or booktitle for \" cite$ * \" to crossref \" *\n"
+" crossref * warning$\n"
+" \"\"\n"
+" }\n"
+" { \"In <em>\" booktitle * \"</em>\" * }\n"
+" if$\n"
+" }\n"
+" { \"In \" key * }\n"
+" if$\n"
+" }\n"
+" { \"In \" format.crossref.editor * }\n"
+" if$\n"
+" \" <span class='cite'>\" * crossref * \"</span>\" *\n"
+"}\n"
+"\n"
+"% urlbst...\n"
+"% Functions for making hypertext links.\n"
+"FUNCTION {make.href}\n"
+"{ \n"
+" \"<a href='\" swap$ * \"'><code>\" * swap$ * \"</code></a>\" *\n"
+"}\n"
+"\n"
+"% If inlinelinks is true, then format.url should be a no-op, since it's\n"
+"% (a) redundant, and (b) could end up as a link-within-a-link.\n"
+"FUNCTION {format.url}\n"
+"{ inlinelinks #1 = url empty$ or\n"
+" { \"\" }\n"
+" { urlintro \"<code>\" * url * \"</code>\" * }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {format.eprint}\n"
+"{ eprint empty$\n"
+" { \"\" }\n"
+" { eprintprefix eprint * eprinturl eprint * make.href }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {format.doi}\n"
+"{ doi empty$\n"
+" { \"\" }\n"
+" { doiform #0 =\n"
+" { doiprefix doi * doiurl doi * make.href }\n"
+" { \"DOI:{\" doi * \"}\" * }\n"
+" if$\n"
+" }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {format.pubmed}\n"
+"{ pubmed empty$\n"
+" { \"\" }\n"
+" { pubmedprefix pubmed * pubmedurl pubmed * make.href }\n"
+" if$\n"
+"}\n"
+"\n"
+"% Output a URL. We can't use the more normal idiom (something like\n"
+"% `format.url output'), because the `inbrackets' within\n"
+"% format.lastchecked applies to everything between calls to `output',\n"
+"% so that `format.url format.lastchecked * output' ends up with both\n"
+"% the URL and the lastchecked in brackets.\n"
+"FUNCTION {output.url}\n"
+"{ url empty$\n"
+" 'skip$ \n"
+" { new.block \n"
+" format.url output\n"
+" format.lastchecked output \n"
+" }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {output.web.refs}\n"
+"{\n"
+" new.block\n"
+" output.url\n"
+" addeprints eprint empty$ not and\n"
+" { format.eprint output.nonnull }\n"
+" 'skip$\n"
+" if$\n"
+" adddoiresolver doi empty$ not and\n"
+" { format.doi output.nonnull }\n"
+" 'skip$\n"
+" if$\n"
+" addpubmedresolver pubmed empty$ not and\n"
+" { format.pubmed output.nonnull }\n"
+" 'skip$\n"
+" if$\n"
+"}\n"
+"\n"
+"% Wrapper for output.bibitem.original.\n"
+"% If the URL field is not empty, set makeinlinelink to be true,\n"
+"% so that an inline link will be started at the next opportunity\n"
+"FUNCTION {output.bibitem}\n"
+"{ outside.brackets 'bracket.state :=\n"
+" output.bibitem.original\n"
+" inlinelinks url empty$ not and\n"
+" { #1 'makeinlinelink := }\n"
+" { #0 'makeinlinelink := }\n"
+" if$\n"
+"}\n"
+"\n"
+"% Wrapper for fin.entry.original\n"
+"FUNCTION {fin.entry}\n"
+"{ output.web.refs % urlbst\n"
+" makeinlinelink % ooops, it appears we didn't have a title for inlinelink\n"
+" { possibly.setup.inlinelink % add some artificial link text here, as a fallback\n"
+" \"[link]\" output.nonnull }\n"
+" 'skip$\n"
+" if$\n"
+" bracket.state close.brackets = % urlbst\n"
+" { \"]\" * }\n"
+" 'skip$\n"
+" if$\n"
+" fin.entry.original\n"
+"}\n"
+"\n"
+"% Webpage entry type.\n"
+"% Title and url fields required;\n"
+"% author, note, year, month, and lastchecked fields optional\n"
+"% See references \n"
+"% ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm\n"
+"% http://www.classroom.net/classroom/CitingNetResources.html\n"
+"% http://neal.ctstateu.edu/history/cite.html\n"
+"% http://www.cas.usf.edu/english/walker/mla.html\n"
+"% for citation formats for web pages.\n"
+"FUNCTION {webpage}\n"
+"{ output.bibitem\n"
+" author empty$\n"
+" { editor empty$\n"
+" 'skip$ % author and editor both optional\n"
+" { format.editors output.nonnull }\n"
+" if$\n"
+" }\n"
+" { editor empty$\n"
+" { format.authors output.nonnull }\n"
+" { \"can't use both author and editor fields in \" cite$ * warning$ }\n"
+" if$\n"
+" }\n"
+" if$\n"
+" new.block\n"
+" title empty$ 'skip$ 'possibly.setup.inlinelink if$\n"
+" format.title \"title\" output.check\n"
+" inbrackets \"online\" output\n"
+" new.block\n"
+" year empty$\n"
+" 'skip$\n"
+" { format.date \"year\" output.check }\n"
+" if$\n"
+" % We don't need to output the URL details ('lastchecked' and 'url'),\n"
+" % because fin.entry does that for us, using output.web.refs. The only\n"
+" % reason we would want to put them here is if we were to decide that\n"
+" % they should go in front of the rather miscellaneous information in 'note'.\n"
+" new.block\n"
+" note output\n"
+" fin.entry\n"
+"}\n"
+"% ...urlbst to here\n"
+"\n"
+"\n"
+"FUNCTION {article}\n"
+"{ output.bibitem\n"
+" format.authors \"author\" output.check\n"
+" new.block\n"
+" title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst\n"
+" format.title \"title\" output.check\n"
+" new.block\n"
+" crossref missing$\n"
+" { journal emphasize \"journal\" output.check\n"
+" possibly.setup.inlinelink format.vol.num.pages output% urlbst\n"
+" format.date \"year\" output.check\n"
+" }\n"
+" { format.article.crossref output.nonnull\n"
+" format.pages output\n"
+" }\n"
+" if$\n"
+" new.block\n"
+" note output\n"
+" fin.entry\n"
+"}\n"
+"\n"
+"FUNCTION {book}\n"
+"{ output.bibitem\n"
+" author empty$\n"
+" { format.editors \"author and editor\" output.check }\n"
+" { format.authors output.nonnull\n"
+" crossref missing$\n"
+" { \"author and editor\" editor either.or.check }\n"
+" 'skip$\n"
+" if$\n"
+" }\n"
+" if$\n"
+" new.block\n"
+" title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst\n"
+" format.btitle \"title\" output.check\n"
+" crossref missing$\n"
+" { format.bvolume output\n"
+" new.block\n"
+" format.number.series output\n"
+" new.sentence\n"
+" publisher \"publisher\" output.check\n"
+" address output\n"
+" }\n"
+" { new.block\n"
+" format.book.crossref output.nonnull\n"
+" }\n"
+" if$\n"
+" format.edition output\n"
+" format.date \"year\" output.check\n"
+" new.block\n"
+" note output\n"
+" fin.entry\n"
+"}\n"
+"\n"
+"FUNCTION {booklet}\n"
+"{ output.bibitem\n"
+" format.authors output\n"
+" new.block\n"
+" title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst\n"
+" format.title \"title\" output.check\n"
+" howpublished address new.block.checkb\n"
+" howpublished output\n"
+" address output\n"
+" format.date output\n"
+" new.block\n"
+" note output\n"
+" fin.entry\n"
+"}\n"
+"\n"
+"FUNCTION {inbook}\n"
+"{ output.bibitem\n"
+" author empty$\n"
+" { format.editors \"author and editor\" output.check }\n"
+" { format.authors output.nonnull\n"
+" crossref missing$\n"
+" { \"author and editor\" editor either.or.check }\n"
+" 'skip$\n"
+" if$\n"
+" }\n"
+" if$\n"
+" new.block\n"
+" title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst\n"
+" format.btitle \"title\" output.check\n"
+" crossref missing$\n"
+" { format.bvolume output\n"
+" format.chapter.pages \"chapter and pages\" output.check\n"
+" new.block\n"
+" format.number.series output\n"
+" new.sentence\n"
+" publisher \"publisher\" output.check\n"
+" address output\n"
+" }\n"
+" { format.chapter.pages \"chapter and pages\" output.check\n"
+" new.block\n"
+" format.book.crossref output.nonnull\n"
+" }\n"
+" if$\n"
+" format.edition output\n"
+" format.date \"year\" output.check\n"
+" new.block\n"
+" note output\n"
+" fin.entry\n"
+"}\n"
+"\n"
+"FUNCTION {incollection}\n"
+"{ output.bibitem\n"
+" format.authors \"author\" output.check\n"
+" new.block\n"
+" title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst\n"
+" format.title \"title\" output.check\n"
+" new.block\n"
+" crossref missing$\n"
+" { format.in.ed.booktitle \"booktitle\" output.check\n"
+" format.bvolume output\n"
+" format.number.series output\n"
+" format.chapter.pages output\n"
+" new.sentence\n"
+" publisher \"publisher\" output.check\n"
+" address output\n"
+" format.edition output\n"
+" format.date \"year\" output.check\n"
+" }\n"
+" { format.incoll.inproc.crossref output.nonnull\n"
+" format.chapter.pages output\n"
+" }\n"
+" if$\n"
+" new.block\n"
+" note output\n"
+" fin.entry\n"
+"}\n"
+"\n"
+"FUNCTION {inproceedings}\n"
+"{ output.bibitem\n"
+" format.authors \"author\" output.check\n"
+" new.block\n"
+" title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst\n"
+" format.title \"title\" output.check\n"
+" new.block\n"
+" crossref missing$\n"
+" { format.in.ed.booktitle \"booktitle\" output.check\n"
+" format.bvolume output\n"
+" format.number.series output\n"
+" format.pages output\n"
+" address empty$\n"
+" { organization publisher new.sentence.checkb\n"
+" organization output\n"
+" publisher output\n"
+" format.date \"year\" output.check\n"
+" }\n"
+" { address output.nonnull\n"
+" format.date \"year\" output.check\n"
+" new.sentence\n"
+" organization output\n"
+" publisher output\n"
+" }\n"
+" if$\n"
+" }\n"
+" { format.incoll.inproc.crossref output.nonnull\n"
+" format.pages output\n"
+" }\n"
+" if$\n"
+" new.block\n"
+" note output\n"
+" fin.entry\n"
+"}\n"
+"\n"
+"FUNCTION {conference} { inproceedings }\n"
+"\n"
+"FUNCTION {manual}\n"
+"{ output.bibitem\n"
+" author empty$\n"
+" { organization empty$\n"
+" 'skip$\n"
+" { organization output.nonnull\n"
+" address output\n"
+" }\n"
+" if$\n"
+" }\n"
+" { format.authors output.nonnull }\n"
+" if$\n"
+" new.block\n"
+" title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst\n"
+" format.btitle \"title\" output.check\n"
+" author empty$\n"
+" { organization empty$\n"
+" { address new.block.checka\n"
+" address output\n"
+" }\n"
+" 'skip$\n"
+" if$\n"
+" }\n"
+" { organization address new.block.checkb\n"
+" organization output\n"
+" address output\n"
+" }\n"
+" if$\n"
+" format.edition output\n"
+" format.date output\n"
+" new.block\n"
+" note output\n"
+" fin.entry\n"
+"}\n"
+"\n"
+"FUNCTION {mastersthesis}\n"
+"{ output.bibitem\n"
+" format.authors \"author\" output.check\n"
+" new.block\n"
+" title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst\n"
+" format.title \"title\" output.check\n"
+" new.block\n"
+" \"Master's thesis\" format.thesis.type output.nonnull\n"
+" school \"school\" output.check\n"
+" address output\n"
+" format.date \"year\" output.check\n"
+" new.block\n"
+" note output\n"
+" fin.entry\n"
+"}\n"
+"\n"
+"FUNCTION {misc}\n"
+"{ output.bibitem\n"
+" format.authors output\n"
+" title howpublished new.block.checkb\n"
+" title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst\n"
+" format.title output\n"
+" howpublished new.block.checka\n"
+" howpublished output\n"
+" format.date output\n"
+" new.block\n"
+" note output\n"
+" fin.entry\n"
+" empty.misc.check\n"
+"}\n"
+"\n"
+"FUNCTION {phdthesis}\n"
+"{ output.bibitem\n"
+" format.authors \"author\" output.check\n"
+" new.block\n"
+" title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst\n"
+" format.btitle \"title\" output.check\n"
+" new.block\n"
+" \"PhD thesis\" format.thesis.type output.nonnull\n"
+" school \"school\" output.check\n"
+" address output\n"
+" format.date \"year\" output.check\n"
+" new.block\n"
+" note output\n"
+" fin.entry\n"
+"}\n"
+"\n"
+"FUNCTION {proceedings}\n"
+"{ output.bibitem\n"
+" editor empty$\n"
+" { organization output }\n"
+" { format.editors output.nonnull }\n"
+" if$\n"
+" new.block\n"
+" title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst\n"
+" format.btitle \"title\" output.check\n"
+" format.bvolume output\n"
+" format.number.series output\n"
+" address empty$\n"
+" { editor empty$\n"
+" { publisher new.sentence.checka }\n"
+" { organization publisher new.sentence.checkb\n"
+" organization output\n"
+" }\n"
+" if$\n"
+" publisher output\n"
+" format.date \"year\" output.check\n"
+" }\n"
+" { address output.nonnull\n"
+" format.date \"year\" output.check\n"
+" new.sentence\n"
+" editor empty$\n"
+" 'skip$\n"
+" { organization output }\n"
+" if$\n"
+" publisher output\n"
+" }\n"
+" if$\n"
+" new.block\n"
+" note output\n"
+" fin.entry\n"
+"}\n"
+"\n"
+"FUNCTION {techreport}\n"
+"{ output.bibitem\n"
+" format.authors \"author\" output.check\n"
+" new.block\n"
+" title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst\n"
+" format.title \"title\" output.check\n"
+" new.block\n"
+" format.tr.number output.nonnull\n"
+" institution \"institution\" output.check\n"
+" address output\n"
+" format.date \"year\" output.check\n"
+" new.block\n"
+" note output\n"
+" fin.entry\n"
+"}\n"
+"\n"
+"FUNCTION {unpublished}\n"
+"{ output.bibitem\n"
+" format.authors \"author\" output.check\n"
+" new.block\n"
+" title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst\n"
+" format.title \"title\" output.check\n"
+" new.block\n"
+" note \"note\" output.check\n"
+" format.date output\n"
+" fin.entry\n"
+"}\n"
+"\n"
+"FUNCTION {default.type} { misc }\n"
+"MACRO {jan} {\"January\"}\n"
+"MACRO {feb} {\"February\"}\n"
+"MACRO {mar} {\"March\"}\n"
+"MACRO {apr} {\"April\"}\n"
+"MACRO {may} {\"May\"}\n"
+"MACRO {jun} {\"June\"}\n"
+"MACRO {jul} {\"July\"}\n"
+"MACRO {aug} {\"August\"}\n"
+"MACRO {sep} {\"September\"}\n"
+"MACRO {oct} {\"October\"}\n"
+"MACRO {nov} {\"November\"}\n"
+"MACRO {dec} {\"December\"}\n"
+"MACRO {acmcs} {\"ACM Computing Surveys\"}\n"
+"MACRO {acta} {\"Acta Informatica\"}\n"
+"MACRO {cacm} {\"Communications of the ACM\"}\n"
+"MACRO {ibmjrd} {\"IBM Journal of Research and Development\"}\n"
+"MACRO {ibmsj} {\"IBM Systems Journal\"}\n"
+"MACRO {ieeese} {\"IEEE Transactions on Software Engineering\"}\n"
+"MACRO {ieeetc} {\"IEEE Transactions on Computers\"}\n"
+"MACRO {ieeetcad} {\"IEEE Transactions on Computer-Aided Design of Integrated Circuits\"}\n"
+"MACRO {ipl} {\"Information Processing Letters\"}\n"
+"MACRO {jacm} {\"Journal of the ACM\"}\n"
+"MACRO {jcss} {\"Journal of Computer and System Sciences\"}\n"
+"MACRO {scp} {\"Science of Computer Programming\"}\n"
+"MACRO {sicomp} {\"SIAM Journal on Computing\"}\n"
+"MACRO {tocs} {\"ACM Transactions on Computer Systems\"}\n"
+"MACRO {tods} {\"ACM Transactions on Database Systems\"}\n"
+"MACRO {tog} {\"ACM Transactions on Graphics\"}\n"
+"MACRO {toms} {\"ACM Transactions on Mathematical Software\"}\n"
+"MACRO {toois} {\"ACM Transactions on Office Information Systems\"}\n"
+"MACRO {toplas} {\"ACM Transactions on Programming Languages and Systems\"}\n"
+"MACRO {tcs} {\"Theoretical Computer Science\"}\n"
+"\n"
+"READ\n"
+"\n"
+"FUNCTION {sortify}\n"
+"{ purify$\n"
+" \"l\" change.case$\n"
+"}\n"
+"\n"
+"INTEGERS { len }\n"
+"\n"
+"FUNCTION {chop.word}\n"
+"{ 's :=\n"
+" 'len :=\n"
+" s #1 len substring$ =\n"
+" { s len #1 + global.max$ substring$ }\n"
+" 's\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {sort.format.names}\n"
+"{ 's :=\n"
+" #1 'nameptr :=\n"
+" \"\"\n"
+" s num.names$ 'numnames :=\n"
+" numnames 'namesleft :=\n"
+" { namesleft #0 > }\n"
+" { nameptr #1 >\n"
+" { \" \" * }\n"
+" 'skip$\n"
+" if$\n"
+" s nameptr \"{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}\" format.name$ 't :=\n"
+" nameptr numnames = t \"others\" = and\n"
+" { \"et al\" * }\n"
+" { t sortify * }\n"
+" if$\n"
+" nameptr #1 + 'nameptr :=\n"
+" namesleft #1 - 'namesleft :=\n"
+" }\n"
+" while$\n"
+"}\n"
+"\n"
+"FUNCTION {sort.format.title}\n"
+"{ 't :=\n"
+" \"A \" #2\n"
+" \"An \" #3\n"
+" \"The \" #4 t chop.word\n"
+" chop.word\n"
+" chop.word\n"
+" sortify\n"
+" #1 global.max$ substring$\n"
+"}\n"
+"\n"
+"FUNCTION {author.sort}\n"
+"{ author empty$\n"
+" { key empty$\n"
+" { \"to sort, need author or key in \" cite$ * warning$\n"
+" \"\"\n"
+" }\n"
+" { key sortify }\n"
+" if$\n"
+" }\n"
+" { author sort.format.names }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {author.editor.sort}\n"
+"{ author empty$\n"
+" { editor empty$\n"
+" { key empty$\n"
+" { \"to sort, need author, editor, or key in \" cite$ * warning$\n"
+" \"\"\n"
+" }\n"
+" { key sortify }\n"
+" if$\n"
+" }\n"
+" { editor sort.format.names }\n"
+" if$\n"
+" }\n"
+" { author sort.format.names }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {author.organization.sort}\n"
+"{ author empty$\n"
+" { organization empty$\n"
+" { key empty$\n"
+" { \"to sort, need author, organization, or key in \" cite$ * warning$\n"
+" \"\"\n"
+" }\n"
+" { key sortify }\n"
+" if$\n"
+" }\n"
+" { \"The \" #4 organization chop.word sortify }\n"
+" if$\n"
+" }\n"
+" { author sort.format.names }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {editor.organization.sort}\n"
+"{ editor empty$\n"
+" { organization empty$\n"
+" { key empty$\n"
+" { \"to sort, need editor, organization, or key in \" cite$ * warning$\n"
+" \"\"\n"
+" }\n"
+" { key sortify }\n"
+" if$\n"
+" }\n"
+" { \"The \" #4 organization chop.word sortify }\n"
+" if$\n"
+" }\n"
+" { editor sort.format.names }\n"
+" if$\n"
+"}\n"
+"\n"
+"FUNCTION {presort.by.author}\n"
+"{ type$ \"book\" =\n"
+" type$ \"inbook\" =\n"
+" or\n"
+" 'author.editor.sort\n"
+" { type$ \"proceedings\" =\n"
+" 'editor.organization.sort\n"
+" { type$ \"manual\" =\n"
+" 'author.organization.sort\n"
+" 'author.sort\n"
+" if$\n"
+" }\n"
+" if$\n"
+" }\n"
+" if$\n"
+" \" \"\n"
+" *\n"
+" year field.or.null sortify\n"
+" *\n"
+" \" \"\n"
+" *\n"
+" title field.or.null\n"
+" sort.format.title\n"
+" *\n"
+" #1 entry.max$ substring$\n"
+" 'sort.key$ :=\n"
+"}\n"
+"\n"
+"FUNCTION {presort.by.year}\n"
+"{ year field.or.null sortify\n"
+" \" \"\n"
+" *\n"
+" type$ \"book\" =\n"
+" type$ \"inbook\" =\n"
+" or\n"
+" 'author.editor.sort\n"
+" { type$ \"proceedings\" =\n"
+" 'editor.organization.sort\n"
+" { type$ \"manual\" =\n"
+" 'author.organization.sort\n"
+" 'author.sort\n"
+" if$\n"
+" }\n"
+" if$\n"
+" }\n"
+" if$\n"
+" *\n"
+" \" \"\n"
+" *\n"
+" title field.or.null\n"
+" sort.format.title\n"
+" *\n"
+" #1 entry.max$ substring$\n"
+" 'sort.key$ :=\n"
+"}\n"
+"\n"
+"ITERATE {presort.by.author}\n"
+"\n"
+"SORT\n"
+"\n"
+"STRINGS { longest.label }\n"
+"\n"
+"INTEGERS { number.label longest.label.width }\n"
+"\n"
+"FUNCTION {initialize.longest.label}\n"
+"{ \"\" 'longest.label :=\n"
+" #1 'number.label :=\n"
+" #0 'longest.label.width :=\n"
+"}\n"
+"\n"
+"FUNCTION {longest.label.pass}\n"
+"{ number.label int.to.str$ 'label :=\n"
+" number.label #1 + 'number.label :=\n"
+" label width$ longest.label.width >\n"
+" { label 'longest.label :=\n"
+" label width$ 'longest.label.width :=\n"
+" }\n"
+" 'skip$\n"
+" if$\n"
+"}\n"
+"\n"
+"EXECUTE {initialize.longest.label}\n"
+"\n"
+"ITERATE {longest.label.pass}\n"
+"\n"
+"FUNCTION {begin.bib}\n"
+"{ preamble$ empty$\n"
+" 'skip$\n"
+" { preamble$ write$ newline$ }\n"
+" if$\n"
+" %\"/** \\page bibref References\" write$ newline$\n"
+" newline$\n"
+"}\n"
+"\n"
+"EXECUTE {begin.bib}\n"
+"\n"
+"EXECUTE {init.urlbst.variables}\n"
+"EXECUTE {init.state.consts}\n"
+"\n"
+"ITERATE {call.type$}\n"
+"\n"
+"FUNCTION {end.bib}\n"
+"{ newline$\n"
+" %\"*/\" write$ newline$\n"
+"}\n"
+"\n"
+"EXECUTE {end.bib}\n"
+"\n"