"Fossies" - the Fresh Open Source Software Archive

Member "gretl-2019c/doc/tex/gretl.bst" (2 Oct 2015, 30479 Bytes) of package /linux/misc/gretl-2019c.tar.xz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 %%
    2 %% This is file `gretl.bst',
    3 %% generated with the docstrip utility.
    4 %%
    5 %% The original source files were:
    6 %%
    7 %% merlin.mbs  (with options: `ay,nat,vonx,nm-rev1,jnrlst,nmdash,nmd-3,keyxyr,dt-beg,yr-par,yrp-x,note-yr,tit-qq,qx,volp-sp,num-xser,jnm-x,add-pub,edpar,pp,ed,abr,xedn,and-xcom,etal-xc,etal-it,url,url-blk,nfss,')
    8 %% ----------------------------------------
    9 %% 
   10 %% Copyright 1994-2007 Patrick W Daly
   11  % ===============================================================
   12  % IMPORTANT NOTICE:
   13  % This bibliographic style (bst) file has been generated from one or
   14  % more master bibliographic style (mbs) files, listed above.
   15  %
   16  % This generated file can be redistributed and/or modified under the terms
   17  % of the LaTeX Project Public License Distributed from CTAN
   18  % archives in directory macros/latex/base/lppl.txt; either
   19  % version 1 of the License, or any later version.
   20  % ===============================================================
   21  % Name and version information of the main mbs file:
   22  % \ProvidesFile{merlin.mbs}[2007/04/24 4.20 (PWD, AO, DPC)]
   23  %   For use with BibTeX version 0.99a or later
   24  %-------------------------------------------------------------------
   25  % This bibliography style file is intended for texts in ENGLISH
   26  % This is an author-year citation style bibliography. As such, it is
   27  % non-standard LaTeX, and requires a special package file to function properly.
   28  % Such a package is    natbib.sty   by Patrick W. Daly
   29  % The form of the \bibitem entries is
   30  %   \bibitem[Jones et al.(1990)]{key}...
   31  %   \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
   32  % The essential feature is that the label (the part in brackets) consists
   33  % of the author names, as they should appear in the citation, with the year
   34  % in parentheses following. There must be no space before the opening
   35  % parenthesis!
   36  % With natbib v5.3, a full list of authors may also follow the year.
   37  % In natbib.sty, it is possible to define the type of enclosures that is
   38  % really wanted (brackets or parentheses), but in either case, there must
   39  % be parentheses in the label.
   40  % The \cite command functions as follows:
   41  %   \citet{key} ==>>                Jones et al. (1990)
   42  %   \citet*{key} ==>>               Jones, Baker, and Smith (1990)
   43  %   \citep{key} ==>>                (Jones et al., 1990)
   44  %   \citep*{key} ==>>               (Jones, Baker, and Smith, 1990)
   45  %   \citep[chap. 2]{key} ==>>       (Jones et al., 1990, chap. 2)
   46  %   \citep[e.g.][]{key} ==>>        (e.g. Jones et al., 1990)
   47  %   \citep[e.g.][p. 32]{key} ==>>   (e.g. Jones et al., p. 32)
   48  %   \citeauthor{key} ==>>           Jones et al.
   49  %   \citeauthor*{key} ==>>          Jones, Baker, and Smith
   50  %   \citeyear{key} ==>>             1990
   51  %---------------------------------------------------------------------
   52 
   53 ENTRY
   54   { address
   55     author
   56     booktitle
   57     chapter
   58     edition
   59     editor
   60     eid
   61     howpublished
   62     institution
   63     journal
   64     key
   65     month
   66     note
   67     number
   68     organization
   69     pages
   70     publisher
   71     school
   72     series
   73     title
   74     type
   75     url
   76     volume
   77     year
   78   }
   79   {}
   80   { label extra.label sort.label short.list }
   81 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
   82 FUNCTION {init.state.consts}
   83 { #0 'before.all :=
   84   #1 'mid.sentence :=
   85   #2 'after.sentence :=
   86   #3 'after.block :=
   87 }
   88 STRINGS { s t}
   89 FUNCTION {output.nonnull}
   90 { 's :=
   91   output.state mid.sentence =
   92     { ", " * write$ }
   93     { output.state after.block =
   94         { add.period$ write$
   95           newline$
   96           "\newblock " write$
   97         }
   98         { output.state before.all =
   99             'write$
  100             { add.period$ " " * write$ }
  101           if$
  102         }
  103       if$
  104       mid.sentence 'output.state :=
  105     }
  106   if$
  107   s
  108 }
  109 FUNCTION {output}
  110 { duplicate$ empty$
  111     'pop$
  112     'output.nonnull
  113   if$
  114 }
  115 FUNCTION {output.check}
  116 { 't :=
  117   duplicate$ empty$
  118     { pop$ "empty " t * " in " * cite$ * warning$ }
  119     'output.nonnull
  120   if$
  121 }
  122 FUNCTION {fin.entry}
  123 { add.period$
  124   write$
  125   newline$
  126 }
  127 
  128 FUNCTION {new.block}
  129 { output.state before.all =
  130     'skip$
  131     { after.block 'output.state := }
  132   if$
  133 }
  134 FUNCTION {new.sentence}
  135 { output.state after.block =
  136     'skip$
  137     { output.state before.all =
  138         'skip$
  139         { after.sentence 'output.state := }
  140       if$
  141     }
  142   if$
  143 }
  144 FUNCTION {add.blank}
  145 {  " " * before.all 'output.state :=
  146 }
  147 
  148 FUNCTION {date.block}
  149 {
  150   add.blank
  151 }
  152 
  153 FUNCTION {not}
  154 {   { #0 }
  155     { #1 }
  156   if$
  157 }
  158 FUNCTION {and}
  159 {   'skip$
  160     { pop$ #0 }
  161   if$
  162 }
  163 FUNCTION {or}
  164 {   { pop$ #1 }
  165     'skip$
  166   if$
  167 }
  168 FUNCTION {non.stop}
  169 { duplicate$
  170    "}" * add.period$
  171    #-1 #1 substring$ "." =
  172 }
  173 
  174 FUNCTION {new.block.checkb}
  175 { empty$
  176   swap$ empty$
  177   and
  178     'skip$
  179     'new.block
  180   if$
  181 }
  182 FUNCTION {field.or.null}
  183 { duplicate$ empty$
  184     { pop$ "" }
  185     'skip$
  186   if$
  187 }
  188 FUNCTION {emphasize}
  189 { duplicate$ empty$
  190     { pop$ "" }
  191     { "\emph{" swap$ * "}" * }
  192   if$
  193 }
  194 FUNCTION {tie.or.space.prefix}
  195 { duplicate$ text.length$ #3 <
  196     { "~" }
  197     { " " }
  198   if$
  199   swap$
  200 }
  201 
  202 FUNCTION {capitalize}
  203 { "u" change.case$ "t" change.case$ }
  204 
  205 FUNCTION {space.word}
  206 { " " swap$ * " " * }
  207  % Here are the language-specific definitions for explicit words.
  208  % Each function has a name bbl.xxx where xxx is the English word.
  209  % The language selected here is ENGLISH
  210 FUNCTION {bbl.and}
  211 { "and"}
  212 
  213 FUNCTION {bbl.etal}
  214 { "et~al." }
  215 
  216 FUNCTION {bbl.editors}
  217 { "eds." }
  218 
  219 FUNCTION {bbl.editor}
  220 { "ed." }
  221 
  222 FUNCTION {bbl.edby}
  223 { "edited by" }
  224 
  225 FUNCTION {bbl.edition}
  226 { "edn." }
  227 
  228 FUNCTION {bbl.volume}
  229 { "vol." }
  230 
  231 FUNCTION {bbl.of}
  232 { "of" }
  233 
  234 FUNCTION {bbl.number}
  235 { "no." }
  236 
  237 FUNCTION {bbl.nr}
  238 { "no." }
  239 
  240 FUNCTION {bbl.in}
  241 { "in" }
  242 
  243 FUNCTION {bbl.pages}
  244 { "pp." }
  245 
  246 FUNCTION {bbl.page}
  247 { "p." }
  248 
  249 FUNCTION {bbl.chapter}
  250 { "chap." }
  251 
  252 FUNCTION {bbl.techrep}
  253 { "Technical Report" }
  254 
  255 FUNCTION {bbl.mthesis}
  256 { "Master's thesis" }
  257 
  258 FUNCTION {bbl.phdthesis}
  259 { "Ph.D. thesis" }
  260 
  261 MACRO {jan} {"Jan."}
  262 
  263 MACRO {feb} {"Feb."}
  264 
  265 MACRO {mar} {"Mar."}
  266 
  267 MACRO {apr} {"Apr."}
  268 
  269 MACRO {may} {"May"}
  270 
  271 MACRO {jun} {"Jun."}
  272 
  273 MACRO {jul} {"Jul."}
  274 
  275 MACRO {aug} {"Aug."}
  276 
  277 MACRO {sep} {"Sep."}
  278 
  279 MACRO {oct} {"Oct."}
  280 
  281 MACRO {nov} {"Nov."}
  282 
  283 MACRO {dec} {"Dec."}
  284 
  285 MACRO {acmcs} {"ACM Computing Surveys"}
  286 
  287 MACRO {acta} {"Acta Informatica"}
  288 
  289 MACRO {cacm} {"Communications of the ACM"}
  290 
  291 MACRO {ibmjrd} {"IBM Journal of Research and Development"}
  292 
  293 MACRO {ibmsj} {"IBM Systems Journal"}
  294 
  295 MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
  296 
  297 MACRO {ieeetc} {"IEEE Transactions on Computers"}
  298 
  299 MACRO {ieeetcad}
  300  {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
  301 
  302 MACRO {ipl} {"Information Processing Letters"}
  303 
  304 MACRO {jacm} {"Journal of the ACM"}
  305 
  306 MACRO {jcss} {"Journal of Computer and System Sciences"}
  307 
  308 MACRO {scp} {"Science of Computer Programming"}
  309 
  310 MACRO {sicomp} {"SIAM Journal on Computing"}
  311 
  312 MACRO {tocs} {"ACM Transactions on Computer Systems"}
  313 
  314 MACRO {tods} {"ACM Transactions on Database Systems"}
  315 
  316 MACRO {tog} {"ACM Transactions on Graphics"}
  317 
  318 MACRO {toms} {"ACM Transactions on Mathematical Software"}
  319 
  320 MACRO {toois} {"ACM Transactions on Office Information Systems"}
  321 
  322 MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
  323 
  324 MACRO {tcs} {"Theoretical Computer Science"}
  325 FUNCTION {bibinfo.check}
  326 { swap$
  327   duplicate$ missing$
  328     {
  329       pop$ pop$
  330       ""
  331     }
  332     { duplicate$ empty$
  333         {
  334           swap$ pop$
  335         }
  336         { swap$
  337           pop$
  338         }
  339       if$
  340     }
  341   if$
  342 }
  343 FUNCTION {bibinfo.warn}
  344 { swap$
  345   duplicate$ missing$
  346     {
  347       swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
  348       ""
  349     }
  350     { duplicate$ empty$
  351         {
  352           swap$ "empty " swap$ * " in " * cite$ * warning$
  353         }
  354         { swap$
  355           pop$
  356         }
  357       if$
  358     }
  359   if$
  360 }
  361 
  362 FUNCTION {format.url}
  363 { url empty$
  364     { "" }
  365     { "\urlprefix\url{" url * "}" * }
  366   if$
  367 }
  368 
  369 INTEGERS { nameptr namesleft numnames }
  370 
  371 STRINGS  { bibinfo}
  372 
  373 FUNCTION {format.names}
  374 { 'bibinfo :=
  375   duplicate$ empty$ 'skip$ {
  376   's :=
  377   "" 't :=
  378   #1 'nameptr :=
  379   s num.names$ 'numnames :=
  380   numnames 'namesleft :=
  381     { namesleft #0 > }
  382     { s nameptr
  383       duplicate$ #1 >
  384         { "{f.~}{vv~}{ll}{, jj}" }
  385         { "{vv~}{ll}{, f.}{, jj}" }
  386       if$
  387       format.name$
  388       bibinfo bibinfo.check
  389       't :=
  390       nameptr #1 >
  391         {
  392           namesleft #1 >
  393             { ", " * t * }
  394             {
  395               s nameptr "{ll}" format.name$ duplicate$ "others" =
  396                 { 't := }
  397                 { pop$ }
  398               if$
  399               t "others" =
  400                 {
  401                   " " * bbl.etal emphasize *
  402                 }
  403                 {
  404                   bbl.and
  405                   space.word * t *
  406                 }
  407               if$
  408             }
  409           if$
  410         }
  411         't
  412       if$
  413       nameptr #1 + 'nameptr :=
  414       namesleft #1 - 'namesleft :=
  415     }
  416   while$
  417   } if$
  418 }
  419 
  420 FUNCTION {format.names.ed}
  421 {
  422   'bibinfo :=
  423   duplicate$ empty$ 'skip$ {
  424   's :=
  425   "" 't :=
  426   #1 'nameptr :=
  427   s num.names$ 'numnames :=
  428   numnames 'namesleft :=
  429     { namesleft #0 > }
  430     { s nameptr
  431       "{f.~}{vv~}{ll}{, jj}"
  432       format.name$
  433       bibinfo bibinfo.check
  434       't :=
  435       nameptr #1 >
  436         {
  437           namesleft #1 >
  438             { ", " * t * }
  439             {
  440               s nameptr "{ll}" format.name$ duplicate$ "others" =
  441                 { 't := }
  442                 { pop$ }
  443               if$
  444               t "others" =
  445                 {
  446 
  447                   " " * bbl.etal emphasize *
  448                 }
  449                 {
  450                   bbl.and
  451                   space.word * t *
  452                 }
  453               if$
  454             }
  455           if$
  456         }
  457         't
  458       if$
  459       nameptr #1 + 'nameptr :=
  460       namesleft #1 - 'namesleft :=
  461     }
  462   while$
  463   } if$
  464 }
  465 FUNCTION {format.key}
  466 { empty$
  467     { key field.or.null }
  468     { "" }
  469   if$
  470 }
  471 
  472 FUNCTION {format.authors}
  473 { author "author" format.names
  474 }
  475 FUNCTION {get.bbl.editor}
  476 { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
  477 
  478 FUNCTION {format.editors}
  479 { editor "editor" format.names duplicate$ empty$ 'skip$
  480     {
  481       " " *
  482       get.bbl.editor
  483    "(" swap$ * ")" *
  484       *
  485     }
  486   if$
  487 }
  488 FUNCTION {format.note}
  489 {
  490  note empty$
  491     { "" }
  492     { note #1 #1 substring$
  493       duplicate$ "{" =
  494         'skip$
  495         { output.state mid.sentence =
  496           { "l" }
  497           { "u" }
  498         if$
  499         change.case$
  500         }
  501       if$
  502       note #2 global.max$ substring$ * "note" bibinfo.check
  503     }
  504   if$
  505 }
  506 
  507 FUNCTION {format.title}
  508 { title
  509   duplicate$ empty$ 'skip$
  510     { "t" change.case$ }
  511   if$
  512   "title" bibinfo.check
  513   duplicate$ empty$ 'skip$
  514     {
  515       "\enquote{" swap$ *
  516       "}" *
  517     }
  518   if$
  519 }
  520 FUNCTION {format.full.names}
  521 {'s :=
  522  "" 't :=
  523   #1 'nameptr :=
  524   s num.names$ 'numnames :=
  525   numnames 'namesleft :=
  526     { namesleft #0 > }
  527     { s nameptr
  528       "{vv~}{ll}" format.name$
  529       't :=
  530       nameptr #1 >
  531         {
  532           namesleft #1 >
  533             { ", " * t * }
  534             {
  535               s nameptr "{ll}" format.name$ duplicate$ "others" =
  536                 { 't := }
  537                 { pop$ }
  538               if$
  539               t "others" =
  540                 {
  541                   " " * bbl.etal emphasize *
  542                 }
  543                 {
  544                   bbl.and
  545                   space.word * t *
  546                 }
  547               if$
  548             }
  549           if$
  550         }
  551         't
  552       if$
  553       nameptr #1 + 'nameptr :=
  554       namesleft #1 - 'namesleft :=
  555     }
  556   while$
  557 }
  558 
  559 FUNCTION {author.editor.key.full}
  560 { author empty$
  561     { editor empty$
  562         { key empty$
  563             { cite$ #1 #3 substring$ }
  564             'key
  565           if$
  566         }
  567         { editor format.full.names }
  568       if$
  569     }
  570     { author format.full.names }
  571   if$
  572 }
  573 
  574 FUNCTION {author.key.full}
  575 { author empty$
  576     { key empty$
  577          { cite$ #1 #3 substring$ }
  578           'key
  579       if$
  580     }
  581     { author format.full.names }
  582   if$
  583 }
  584 
  585 FUNCTION {editor.key.full}
  586 { editor empty$
  587     { key empty$
  588          { cite$ #1 #3 substring$ }
  589           'key
  590       if$
  591     }
  592     { editor format.full.names }
  593   if$
  594 }
  595 
  596 FUNCTION {make.full.names}
  597 { type$ "book" =
  598   type$ "inbook" =
  599   or
  600     'author.editor.key.full
  601     { type$ "proceedings" =
  602         'editor.key.full
  603         'author.key.full
  604       if$
  605     }
  606   if$
  607 }
  608 
  609 FUNCTION {output.bibitem}
  610 { newline$
  611   "\bibitem[{" write$
  612   label write$
  613   ")" make.full.names duplicate$ short.list =
  614      { pop$ }
  615      { * }
  616    if$
  617   "}]{" * write$
  618   cite$ write$
  619   "}" write$
  620   newline$
  621   ""
  622   before.all 'output.state :=
  623 }
  624 
  625 FUNCTION {n.dashify}
  626 {
  627   't :=
  628   ""
  629     { t empty$ not }
  630     { t #1 #1 substring$ "-" =
  631         { t #1 #2 substring$ "--" = not
  632             { "--" *
  633               t #2 global.max$ substring$ 't :=
  634             }
  635             {   { t #1 #1 substring$ "-" = }
  636                 { "-" *
  637                   t #2 global.max$ substring$ 't :=
  638                 }
  639               while$
  640             }
  641           if$
  642         }
  643         { t #1 #1 substring$ *
  644           t #2 global.max$ substring$ 't :=
  645         }
  646       if$
  647     }
  648   while$
  649 }
  650 
  651 FUNCTION {word.in}
  652 { bbl.in capitalize
  653   " " * }
  654 
  655 FUNCTION {format.date}
  656 { year "year" bibinfo.check duplicate$ empty$
  657     {
  658       "empty year in " cite$ * "; set to ????" * warning$
  659        pop$ "????"
  660     }
  661     'skip$
  662   if$
  663   extra.label *
  664   before.all 'output.state :=
  665   " (" swap$ * ")" *
  666 }
  667 FUNCTION {format.btitle}
  668 { title "title" bibinfo.check
  669   duplicate$ empty$ 'skip$
  670     {
  671       emphasize
  672     }
  673   if$
  674 }
  675 FUNCTION {either.or.check}
  676 { empty$
  677     'pop$
  678     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
  679   if$
  680 }
  681 FUNCTION {format.bvolume}
  682 { volume empty$
  683     { "" }
  684     { bbl.volume volume tie.or.space.prefix
  685       "volume" bibinfo.check * *
  686       series "series" bibinfo.check
  687       duplicate$ empty$ 'pop$
  688         { swap$ bbl.of space.word * swap$
  689           emphasize * }
  690       if$
  691       "volume and number" number either.or.check
  692     }
  693   if$
  694 }
  695 FUNCTION {format.number.series}
  696 { volume empty$
  697     { number empty$
  698         { series field.or.null }
  699         { series empty$
  700             { number "number" bibinfo.check }
  701             { output.state mid.sentence =
  702                 { bbl.number }
  703                 { bbl.number capitalize }
  704               if$
  705               number tie.or.space.prefix "number" bibinfo.check * *
  706               bbl.in space.word *
  707               series "series" bibinfo.check *
  708             }
  709           if$
  710         }
  711       if$
  712     }
  713     { "" }
  714   if$
  715 }
  716 
  717 FUNCTION {format.edition}
  718 { edition duplicate$ empty$ 'skip$
  719     {
  720       output.state mid.sentence =
  721         { "l" }
  722         { "t" }
  723       if$ change.case$
  724       "edition" bibinfo.check
  725       " " * bbl.edition *
  726     }
  727   if$
  728 }
  729 INTEGERS { multiresult }
  730 FUNCTION {multi.page.check}
  731 { 't :=
  732   #0 'multiresult :=
  733     { multiresult not
  734       t empty$ not
  735       and
  736     }
  737     { t #1 #1 substring$
  738       duplicate$ "-" =
  739       swap$ duplicate$ "," =
  740       swap$ "+" =
  741       or or
  742         { #1 'multiresult := }
  743         { t #2 global.max$ substring$ 't := }
  744       if$
  745     }
  746   while$
  747   multiresult
  748 }
  749 FUNCTION {format.pages}
  750 { pages duplicate$ empty$ 'skip$
  751     { duplicate$ multi.page.check
  752         {
  753           bbl.pages swap$
  754           n.dashify
  755         }
  756         {
  757           bbl.page swap$
  758         }
  759       if$
  760       tie.or.space.prefix
  761       "pages" bibinfo.check
  762       * *
  763     }
  764   if$
  765 }
  766 FUNCTION {format.journal.pages}
  767 { pages duplicate$ empty$ 'pop$
  768     { swap$ duplicate$ empty$
  769         { pop$ pop$ format.pages }
  770         {
  771           ": " *
  772           swap$
  773           n.dashify
  774           "pages" bibinfo.check
  775           *
  776         }
  777       if$
  778     }
  779   if$
  780 }
  781 FUNCTION {format.journal.eid}
  782 { eid "eid" bibinfo.check
  783   duplicate$ empty$ 'pop$
  784     { swap$ duplicate$ empty$ 'skip$
  785       {
  786           ": " *
  787       }
  788       if$
  789       swap$ *
  790     }
  791   if$
  792 }
  793 FUNCTION {format.vol.num.pages}
  794 { volume field.or.null
  795   duplicate$ empty$ 'skip$
  796     {
  797       "volume" bibinfo.check
  798     }
  799   if$
  800   number "number" bibinfo.check duplicate$ empty$ 'skip$
  801     {
  802       swap$ duplicate$ empty$
  803         { "there's a number but no volume in " cite$ * warning$ }
  804         'skip$
  805       if$
  806       swap$
  807       "(" swap$ * ")" *
  808     }
  809   if$ *
  810   eid empty$
  811     { format.journal.pages }
  812     { format.journal.eid }
  813   if$
  814 }
  815 
  816 FUNCTION {format.chapter.pages}
  817 { chapter empty$
  818     'format.pages
  819     { type empty$
  820         { bbl.chapter }
  821         { type "l" change.case$
  822           "type" bibinfo.check
  823         }
  824       if$
  825       chapter tie.or.space.prefix
  826       "chapter" bibinfo.check
  827       * *
  828       pages empty$
  829         'skip$
  830         { ", " * format.pages * }
  831       if$
  832     }
  833   if$
  834 }
  835 
  836 FUNCTION {format.booktitle}
  837 {
  838   booktitle "booktitle" bibinfo.check
  839   emphasize
  840 }
  841 FUNCTION {format.in.ed.booktitle}
  842 { format.booktitle duplicate$ empty$ 'skip$
  843     {
  844       editor "editor" format.names.ed duplicate$ empty$ 'pop$
  845         {
  846           " " *
  847           get.bbl.editor
  848           "(" swap$ * "), " *
  849           * swap$
  850           * }
  851       if$
  852       word.in swap$ *
  853     }
  854   if$
  855 }
  856 FUNCTION {format.thesis.type}
  857 { type duplicate$ empty$
  858     'pop$
  859     { swap$ pop$
  860       "t" change.case$ "type" bibinfo.check
  861     }
  862   if$
  863 }
  864 FUNCTION {format.tr.number}
  865 { number "number" bibinfo.check
  866   type duplicate$ empty$
  867     { pop$ bbl.techrep }
  868     'skip$
  869   if$
  870   "type" bibinfo.check
  871   swap$ duplicate$ empty$
  872     { pop$ "t" change.case$ }
  873     { tie.or.space.prefix * * }
  874   if$
  875 }
  876 FUNCTION {format.article.crossref}
  877 {
  878   word.in
  879   " \cite{" * crossref * "}" *
  880 }
  881 FUNCTION {format.book.crossref}
  882 { volume duplicate$ empty$
  883     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
  884       pop$ word.in
  885     }
  886     { bbl.volume
  887       capitalize
  888       swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
  889     }
  890   if$
  891   " \cite{" * crossref * "}" *
  892 }
  893 FUNCTION {format.incoll.inproc.crossref}
  894 {
  895   word.in
  896   " \cite{" * crossref * "}" *
  897 }
  898 FUNCTION {format.org.or.pub}
  899 { 't :=
  900   ""
  901   address empty$ t empty$ and
  902     'skip$
  903     {
  904       address "address" bibinfo.check *
  905       t empty$
  906         'skip$
  907         { address empty$
  908             'skip$
  909             { ": " * }
  910           if$
  911           t *
  912         }
  913       if$
  914     }
  915   if$
  916 }
  917 FUNCTION {format.publisher.address}
  918 { publisher "publisher" bibinfo.warn format.org.or.pub
  919 }
  920 
  921 FUNCTION {format.organization.address}
  922 { organization "organization" bibinfo.check format.org.or.pub
  923 }
  924 
  925 STRINGS {oldname}
  926 
  927 FUNCTION {name.or.dash}
  928 { 's :=
  929    oldname empty$
  930      { s 'oldname := s }
  931      { s oldname =
  932          { "\bibliorule{}" }
  933          { s 'oldname := s }
  934        if$
  935      }
  936    if$
  937 }
  938 
  939 FUNCTION {article}
  940 { output.bibitem
  941   format.authors "author" output.check
  942   author format.key output
  943   name.or.dash
  944   format.date "year" output.check
  945   date.block
  946   format.title "title" output.check
  947   %% new.block
  948   crossref missing$
  949     {
  950       journal
  951       "journal" bibinfo.check
  952       emphasize
  953       "journal" output.check
  954       add.blank
  955       format.vol.num.pages output
  956     }
  957     { format.article.crossref output.nonnull
  958       format.pages output
  959     }
  960   if$
  961   new.block
  962   format.url output
  963   new.block
  964   format.note output
  965   fin.entry
  966 }
  967 FUNCTION {book}
  968 { output.bibitem
  969   author empty$
  970     { format.editors "author and editor" output.check
  971       editor format.key output
  972       name.or.dash
  973     }
  974     { format.authors output.nonnull
  975       name.or.dash
  976       crossref missing$
  977         { "author and editor" editor either.or.check }
  978         'skip$
  979       if$
  980     }
  981   if$
  982   format.date "year" output.check
  983   date.block
  984   format.btitle "title" output.check
  985   crossref missing$
  986     { format.bvolume output
  987       %% new.block
  988       format.number.series output
  989       %% new.sentence
  990       format.publisher.address output
  991     }
  992     {
  993       new.block
  994       format.book.crossref output.nonnull
  995     }
  996   if$
  997   format.edition output
  998   new.block
  999   format.url output
 1000   new.block
 1001   format.note output
 1002   fin.entry
 1003 }
 1004 FUNCTION {booklet}
 1005 { output.bibitem
 1006   format.authors output
 1007   author format.key output
 1008   name.or.dash
 1009   format.date "year" output.check
 1010   date.block
 1011   format.title "title" output.check
 1012   new.block
 1013   howpublished "howpublished" bibinfo.check output
 1014   address "address" bibinfo.check output
 1015   new.block
 1016   format.url output
 1017   new.block
 1018   format.note output
 1019   fin.entry
 1020 }
 1021 
 1022 FUNCTION {inbook}
 1023 { output.bibitem
 1024   author empty$
 1025     { format.editors "author and editor" output.check
 1026       editor format.key output
 1027       name.or.dash
 1028     }
 1029     { format.authors output.nonnull
 1030       name.or.dash
 1031       crossref missing$
 1032         { "author and editor" editor either.or.check }
 1033         'skip$
 1034       if$
 1035     }
 1036   if$
 1037   format.date "year" output.check
 1038   date.block
 1039   format.btitle "title" output.check
 1040   crossref missing$
 1041     {
 1042       format.bvolume output
 1043       format.chapter.pages "chapter and pages" output.check
 1044       new.block
 1045       format.number.series output
 1046       new.sentence
 1047       format.publisher.address output
 1048     }
 1049     {
 1050       format.chapter.pages "chapter and pages" output.check
 1051       new.block
 1052       format.book.crossref output.nonnull
 1053     }
 1054   if$
 1055   format.edition output
 1056   new.block
 1057   format.url output
 1058   new.block
 1059   format.note output
 1060   fin.entry
 1061 }
 1062 
 1063 FUNCTION {incollection}
 1064 { output.bibitem
 1065   format.authors "author" output.check
 1066   author format.key output
 1067   name.or.dash
 1068   format.date "year" output.check
 1069   date.block
 1070   format.title "title" output.check
 1071   new.block
 1072   crossref missing$
 1073     { format.in.ed.booktitle "booktitle" output.check
 1074       format.bvolume output
 1075       format.number.series output
 1076       format.chapter.pages output
 1077       new.sentence
 1078       format.publisher.address output
 1079       format.edition output
 1080     }
 1081     { format.incoll.inproc.crossref output.nonnull
 1082       format.chapter.pages output
 1083     }
 1084   if$
 1085   new.block
 1086   format.url output
 1087   new.block
 1088   format.note output
 1089   fin.entry
 1090 }
 1091 FUNCTION {inproceedings}
 1092 { output.bibitem
 1093   format.authors "author" output.check
 1094   author format.key output
 1095   name.or.dash
 1096   format.date "year" output.check
 1097   date.block
 1098   format.title "title" output.check
 1099   new.block
 1100   crossref missing$
 1101     { format.in.ed.booktitle "booktitle" output.check
 1102       format.bvolume output
 1103       format.number.series output
 1104       format.pages output
 1105       new.sentence
 1106       publisher empty$
 1107         { format.organization.address output }
 1108         { organization "organization" bibinfo.check output
 1109           format.publisher.address output
 1110         }
 1111       if$
 1112     }
 1113     { format.incoll.inproc.crossref output.nonnull
 1114       format.pages output
 1115     }
 1116   if$
 1117   new.block
 1118   format.url output
 1119   new.block
 1120   format.note output
 1121   fin.entry
 1122 }
 1123 FUNCTION {conference} { inproceedings }
 1124 FUNCTION {manual}
 1125 { output.bibitem
 1126   format.authors output
 1127   author format.key output
 1128   name.or.dash
 1129   format.date "year" output.check
 1130   date.block
 1131   format.btitle "title" output.check
 1132   organization address new.block.checkb
 1133   organization "organization" bibinfo.check output
 1134   address "address" bibinfo.check output
 1135   format.edition output
 1136   new.block
 1137   format.url output
 1138   new.block
 1139   format.note output
 1140   fin.entry
 1141 }
 1142 
 1143 FUNCTION {mastersthesis}
 1144 { output.bibitem
 1145   format.authors "author" output.check
 1146   author format.key output
 1147   name.or.dash
 1148   format.date "year" output.check
 1149   date.block
 1150   format.btitle
 1151   "title" output.check
 1152   new.block
 1153   bbl.mthesis format.thesis.type output.nonnull
 1154   school "school" bibinfo.warn output
 1155   address "address" bibinfo.check output
 1156   new.block
 1157   format.url output
 1158   new.block
 1159   format.note output
 1160   fin.entry
 1161 }
 1162 
 1163 FUNCTION {misc}
 1164 { output.bibitem
 1165   format.authors output
 1166   author format.key output
 1167   name.or.dash
 1168   format.date "year" output.check
 1169   date.block
 1170   format.title output
 1171   new.block
 1172   howpublished "howpublished" bibinfo.check output
 1173   new.block
 1174   format.url output
 1175   new.block
 1176   format.note output
 1177   fin.entry
 1178 }
 1179 FUNCTION {phdthesis}
 1180 { output.bibitem
 1181   format.authors "author" output.check
 1182   author format.key output
 1183   name.or.dash
 1184   format.date "year" output.check
 1185   date.block
 1186   format.btitle
 1187   "title" output.check
 1188   new.block
 1189   bbl.phdthesis format.thesis.type output.nonnull
 1190   school "school" bibinfo.warn output
 1191   address "address" bibinfo.check output
 1192   new.block
 1193   format.url output
 1194   new.block
 1195   format.note output
 1196   fin.entry
 1197 }
 1198 
 1199 FUNCTION {proceedings}
 1200 { output.bibitem
 1201   format.editors output
 1202   editor format.key output
 1203   name.or.dash
 1204   format.date "year" output.check
 1205   date.block
 1206   format.btitle "title" output.check
 1207   format.bvolume output
 1208   format.number.series output
 1209   new.sentence
 1210   publisher empty$
 1211     { format.organization.address output }
 1212     { organization "organization" bibinfo.check output
 1213       format.publisher.address output
 1214     }
 1215   if$
 1216   new.block
 1217   format.url output
 1218   new.block
 1219   format.note output
 1220   fin.entry
 1221 }
 1222 
 1223 FUNCTION {techreport}
 1224 { output.bibitem
 1225   format.authors "author" output.check
 1226   author format.key output
 1227   name.or.dash
 1228   format.date "year" output.check
 1229   date.block
 1230   format.title
 1231   "title" output.check
 1232   new.block
 1233   format.tr.number output.nonnull
 1234   institution "institution" bibinfo.warn output
 1235   address "address" bibinfo.check output
 1236   new.block
 1237   format.url output
 1238   new.block
 1239   format.note output
 1240   fin.entry
 1241 }
 1242 
 1243 FUNCTION {unpublished}
 1244 { output.bibitem
 1245   format.authors "author" output.check
 1246   author format.key output
 1247   name.or.dash
 1248   format.date "year" output.check
 1249   date.block
 1250   format.title "title" output.check
 1251   new.block
 1252   format.url output
 1253   new.block
 1254   format.note "note" output.check
 1255   fin.entry
 1256 }
 1257 
 1258 FUNCTION {default.type} { misc }
 1259 READ
 1260 FUNCTION {sortify}
 1261 { purify$
 1262   "l" change.case$
 1263 }
 1264 INTEGERS { len }
 1265 FUNCTION {chop.word}
 1266 { 's :=
 1267   'len :=
 1268   s #1 len substring$ =
 1269     { s len #1 + global.max$ substring$ }
 1270     's
 1271   if$
 1272 }
 1273 FUNCTION {format.lab.names}
 1274 { 's :=
 1275   "" 't :=
 1276   s #1 "{vv~}{ll}" format.name$
 1277   s num.names$ duplicate$
 1278   #2 >
 1279     { pop$
 1280       " " * bbl.etal emphasize *
 1281     }
 1282     { #2 <
 1283         'skip$
 1284         { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
 1285             {
 1286               " " * bbl.etal emphasize *
 1287             }
 1288             { bbl.and space.word * s #2 "{vv~}{ll}" format.name$
 1289               * }
 1290           if$
 1291         }
 1292       if$
 1293     }
 1294   if$
 1295 }
 1296 
 1297 FUNCTION {author.key.label}
 1298 { author empty$
 1299     { key empty$
 1300         { cite$ #1 #3 substring$ }
 1301         'key
 1302       if$
 1303     }
 1304     { author format.lab.names }
 1305   if$
 1306 }
 1307 
 1308 FUNCTION {author.editor.key.label}
 1309 { author empty$
 1310     { editor empty$
 1311         { key empty$
 1312             { cite$ #1 #3 substring$ }
 1313             'key
 1314           if$
 1315         }
 1316         { editor format.lab.names }
 1317       if$
 1318     }
 1319     { author format.lab.names }
 1320   if$
 1321 }
 1322 
 1323 FUNCTION {editor.key.label}
 1324 { editor empty$
 1325     { key empty$
 1326         { cite$ #1 #3 substring$ }
 1327         'key
 1328       if$
 1329     }
 1330     { editor format.lab.names }
 1331   if$
 1332 }
 1333 
 1334 FUNCTION {calc.short.authors}
 1335 { type$ "book" =
 1336   type$ "inbook" =
 1337   or
 1338     'author.editor.key.label
 1339     { type$ "proceedings" =
 1340         'editor.key.label
 1341         'author.key.label
 1342       if$
 1343     }
 1344   if$
 1345   'short.list :=
 1346 }
 1347 
 1348 FUNCTION {calc.label}
 1349 { calc.short.authors
 1350   short.list
 1351   "("
 1352   *
 1353   year duplicate$ empty$
 1354   short.list key field.or.null = or
 1355      { pop$ "" }
 1356      'skip$
 1357   if$
 1358   *
 1359   'label :=
 1360 }
 1361 
 1362 FUNCTION {sort.format.names}
 1363 { 's :=
 1364   #1 'nameptr :=
 1365   ""
 1366   s num.names$ 'numnames :=
 1367   numnames 'namesleft :=
 1368     { namesleft #0 > }
 1369     { s nameptr
 1370       "{ll{ }}{  f{ }}{  jj{ }}"
 1371       format.name$ 't :=
 1372       nameptr #1 >
 1373         {
 1374           "   "  *
 1375           namesleft #1 = t "others" = and
 1376             { "zzzzz" * }
 1377             { t sortify * }
 1378           if$
 1379         }
 1380         { t sortify * }
 1381       if$
 1382       nameptr #1 + 'nameptr :=
 1383       namesleft #1 - 'namesleft :=
 1384     }
 1385   while$
 1386 }
 1387 
 1388 FUNCTION {sort.format.title}
 1389 { 't :=
 1390   "A " #2
 1391     "An " #3
 1392       "The " #4 t chop.word
 1393     chop.word
 1394   chop.word
 1395   sortify
 1396   #1 global.max$ substring$
 1397 }
 1398 FUNCTION {author.sort}
 1399 { author empty$
 1400     { key empty$
 1401         { "to sort, need author or key in " cite$ * warning$
 1402           ""
 1403         }
 1404         { key sortify }
 1405       if$
 1406     }
 1407     { author sort.format.names }
 1408   if$
 1409 }
 1410 FUNCTION {author.editor.sort}
 1411 { author empty$
 1412     { editor empty$
 1413         { key empty$
 1414             { "to sort, need author, editor, or key in " cite$ * warning$
 1415               ""
 1416             }
 1417             { key sortify }
 1418           if$
 1419         }
 1420         { editor sort.format.names }
 1421       if$
 1422     }
 1423     { author sort.format.names }
 1424   if$
 1425 }
 1426 FUNCTION {editor.sort}
 1427 { editor empty$
 1428     { key empty$
 1429         { "to sort, need editor or key in " cite$ * warning$
 1430           ""
 1431         }
 1432         { key sortify }
 1433       if$
 1434     }
 1435     { editor sort.format.names }
 1436   if$
 1437 }
 1438 FUNCTION {presort}
 1439 { calc.label
 1440   label sortify
 1441   "    "
 1442   *
 1443   type$ "book" =
 1444   type$ "inbook" =
 1445   or
 1446     'author.editor.sort
 1447     { type$ "proceedings" =
 1448         'editor.sort
 1449         'author.sort
 1450       if$
 1451     }
 1452   if$
 1453   #1 entry.max$ substring$
 1454   'sort.label :=
 1455   sort.label
 1456   *
 1457   "    "
 1458   *
 1459   title field.or.null
 1460   sort.format.title
 1461   *
 1462   #1 entry.max$ substring$
 1463   'sort.key$ :=
 1464 }
 1465 
 1466 ITERATE {presort}
 1467 SORT
 1468 STRINGS { last.label next.extra }
 1469 INTEGERS { last.extra.num number.label }
 1470 FUNCTION {initialize.extra.label.stuff}
 1471 { #0 int.to.chr$ 'last.label :=
 1472   "" 'next.extra :=
 1473   #0 'last.extra.num :=
 1474   #0 'number.label :=
 1475 }
 1476 FUNCTION {forward.pass}
 1477 { last.label label =
 1478     { last.extra.num #1 + 'last.extra.num :=
 1479       last.extra.num int.to.chr$ 'extra.label :=
 1480     }
 1481     { "a" chr.to.int$ 'last.extra.num :=
 1482       "" 'extra.label :=
 1483       label 'last.label :=
 1484     }
 1485   if$
 1486   number.label #1 + 'number.label :=
 1487 }
 1488 FUNCTION {reverse.pass}
 1489 { next.extra "b" =
 1490     { "a" 'extra.label := }
 1491     'skip$
 1492   if$
 1493   extra.label 'next.extra :=
 1494   extra.label
 1495   duplicate$ empty$
 1496     'skip$
 1497     { "{\natexlab{" swap$ * "}}" * }
 1498   if$
 1499   'extra.label :=
 1500   label extra.label * 'label :=
 1501 }
 1502 EXECUTE {initialize.extra.label.stuff}
 1503 ITERATE {forward.pass}
 1504 REVERSE {reverse.pass}
 1505 FUNCTION {bib.sort.order}
 1506 { sort.label
 1507   "    "
 1508   *
 1509   year field.or.null sortify
 1510   *
 1511   "    "
 1512   *
 1513   title field.or.null
 1514   sort.format.title
 1515   *
 1516   #1 entry.max$ substring$
 1517   'sort.key$ :=
 1518 }
 1519 ITERATE {bib.sort.order}
 1520 SORT
 1521 FUNCTION {begin.bib}
 1522 { preamble$ empty$
 1523     'skip$
 1524     { preamble$ write$ newline$ }
 1525   if$
 1526   "\begin{thebibliography}{" number.label int.to.str$ * "}" *
 1527   write$ newline$
 1528   "\newcommand{\enquote}[1]{`#1'}"
 1529   write$ newline$
 1530   "\providecommand{\natexlab}[1]{#1}"
 1531   write$ newline$
 1532   "\providecommand{\url}[1]{\texttt{#1}}"
 1533   write$ newline$
 1534   "\providecommand{\urlprefix}{URL }"
 1535   write$ newline$
 1536 }
 1537 EXECUTE {begin.bib}
 1538 EXECUTE {init.state.consts}
 1539 ITERATE {call.type$}
 1540 FUNCTION {end.bib}
 1541 { newline$
 1542   "\end{thebibliography}" write$ newline$
 1543 }
 1544 EXECUTE {end.bib}
 1545 %% End of customized bst file
 1546 %%
 1547 %% End of file `allin.bst'.