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