iccsa-16-factory

Factory: Master Node High-Availability for Big Data Applications and Beyond
git clone https://git.igankevich.com/iccsa-16-factory.git
Log | Files | Refs

splncs03.bst (31579B)


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