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