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