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