iccsa-21-guile

Functional Programming Interface for Parallel and Distributed Computing
git clone https://git.igankevich.com/iccsa-21-guile.git
Log | Files | Refs

splncs04.bst (33694B)


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