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'.