annotate IEEEbib.bst @ 90:4b42955c6a27 tip

Add grant acknowledgement, tighten bib spacing to make room
author Chris Cannam
date Mon, 16 Jan 2012 11:42:42 +0000
parents 36d68bf6bb2d
children
rev   line source
Chris@0 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% IEEE.bst %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Chris@0 2 % Bibliography Syle file for articles according to IEEE instructions
Chris@0 3 % balemi@aut.ee.ethz.ch <22-JUN-93>
Chris@0 4 % modified from unsrt.bib. Contributions by Richard H. Roy
Chris@0 5
Chris@0 6 ENTRY
Chris@0 7 { address
Chris@0 8 author
Chris@0 9 booktitle
Chris@0 10 chapter
Chris@0 11 edition
Chris@0 12 editor
Chris@0 13 howpublished
Chris@0 14 institution
Chris@0 15 journal
Chris@0 16 key
Chris@0 17 month
Chris@0 18 note
Chris@0 19 number
Chris@0 20 organization
Chris@0 21 pages
Chris@0 22 publisher
Chris@0 23 school
Chris@0 24 series
Chris@0 25 title
Chris@0 26 type
Chris@0 27 volume
Chris@0 28 year
Chris@0 29 }
Chris@0 30 {}
Chris@0 31 { label }
Chris@0 32
Chris@0 33 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
Chris@0 34
Chris@0 35 FUNCTION {init.state.consts}
Chris@0 36 { #0 'before.all :=
Chris@0 37 #1 'mid.sentence :=
Chris@0 38 #2 'after.sentence :=
Chris@0 39 #3 'after.block :=
Chris@0 40 }
Chris@0 41
Chris@0 42 STRINGS { s t }
Chris@0 43
Chris@0 44 FUNCTION {output.nonnull}
Chris@0 45 { 's :=
Chris@0 46 output.state mid.sentence =
Chris@0 47 { ", " * write$ }
Chris@0 48 { output.state after.block =
Chris@0 49 % next line commented out by rhr and changed to write comma
Chris@0 50 % { add.period$ write$
Chris@0 51 { ", " * write$
Chris@0 52 newline$
Chris@0 53 "\newblock " write$
Chris@0 54 }
Chris@0 55 { output.state before.all =
Chris@0 56 'write$
Chris@0 57 { add.period$ " " * write$ }
Chris@0 58 if$
Chris@0 59 }
Chris@0 60 if$
Chris@0 61 mid.sentence 'output.state :=
Chris@0 62 }
Chris@0 63 if$
Chris@0 64 s
Chris@0 65 }
Chris@0 66
Chris@0 67 FUNCTION {output}
Chris@0 68 { duplicate$ empty$
Chris@0 69 'pop$
Chris@0 70 'output.nonnull
Chris@0 71 if$
Chris@0 72 }
Chris@0 73
Chris@0 74 FUNCTION {output.check}
Chris@0 75 { 't :=
Chris@0 76 duplicate$ empty$
Chris@0 77 { pop$ "empty " t * " in " * cite$ * warning$ }
Chris@0 78 'output.nonnull
Chris@0 79 if$
Chris@0 80 }
Chris@0 81
Chris@0 82 FUNCTION {output.bibitem}
Chris@0 83 { newline$
Chris@0 84 "\bibitem{" write$
Chris@0 85 cite$ write$
Chris@0 86 "}" write$
Chris@0 87 newline$
Chris@0 88 ""
Chris@0 89 before.all 'output.state :=
Chris@0 90 }
Chris@0 91
Chris@0 92 FUNCTION {fin.entry}
Chris@0 93 { add.period$
Chris@0 94 write$
Chris@0 95 newline$
Chris@0 96 }
Chris@0 97
Chris@0 98 % 5/24/89 rhr
Chris@0 99 % modified fin.entry function - prints note field after body of entry
Chris@0 100 %FUNCTION {fin.entry}
Chris@0 101 %{ add.period$
Chris@0 102 % note empty$
Chris@0 103 % 'write$
Chris@0 104 % { "\par\bgroup\parindent=0em " * annote * "\par\egroup " * write$
Chris@0 105 % }
Chris@0 106 % if$
Chris@0 107 % newline$
Chris@0 108 %}
Chris@0 109
Chris@0 110 FUNCTION {new.block}
Chris@0 111 { output.state before.all =
Chris@0 112 'skip$
Chris@0 113 { after.block 'output.state := }
Chris@0 114 if$
Chris@0 115 }
Chris@0 116
Chris@0 117 % new block without terminating last block with a comma
Chris@0 118 FUNCTION {new.ncblock}
Chris@0 119 {
Chris@0 120 write$
Chris@0 121 newline$
Chris@0 122 "\newblock "
Chris@0 123 before.all 'output.state :=
Chris@0 124 }
Chris@0 125
Chris@0 126 FUNCTION {new.nccont}
Chris@0 127 {
Chris@0 128 write$
Chris@0 129 " "
Chris@0 130 before.all 'output.state :=
Chris@0 131 }
Chris@0 132
Chris@0 133 FUNCTION {new.sentence}
Chris@0 134 { output.state after.block =
Chris@0 135 'skip$
Chris@0 136 { output.state before.all =
Chris@0 137 'skip$
Chris@0 138 { after.sentence 'output.state := }
Chris@0 139 if$
Chris@0 140 }
Chris@0 141 if$
Chris@0 142 }
Chris@0 143
Chris@0 144 FUNCTION {not}
Chris@0 145 { { #0 }
Chris@0 146 { #1 }
Chris@0 147 if$
Chris@0 148 }
Chris@0 149
Chris@0 150 FUNCTION {and}
Chris@0 151 { 'skip$
Chris@0 152 { pop$ #0 }
Chris@0 153 if$
Chris@0 154 }
Chris@0 155
Chris@0 156 FUNCTION {or}
Chris@0 157 { { pop$ #1 }
Chris@0 158 'skip$
Chris@0 159 if$
Chris@0 160 }
Chris@0 161
Chris@0 162 FUNCTION {new.block.checka}
Chris@0 163 { empty$
Chris@0 164 'skip$
Chris@0 165 'new.block
Chris@0 166 if$
Chris@0 167 }
Chris@0 168
Chris@0 169 FUNCTION {new.block.checkb}
Chris@0 170 { empty$
Chris@0 171 swap$ empty$
Chris@0 172 and
Chris@0 173 'skip$
Chris@0 174 'new.block
Chris@0 175 if$
Chris@0 176 }
Chris@0 177
Chris@0 178 FUNCTION {new.sentence.checka}
Chris@0 179 { empty$
Chris@0 180 'skip$
Chris@0 181 'new.sentence
Chris@0 182 if$
Chris@0 183 }
Chris@0 184
Chris@0 185 FUNCTION {new.sentence.checkb}
Chris@0 186 { empty$
Chris@0 187 swap$ empty$
Chris@0 188 and
Chris@0 189 'skip$
Chris@0 190 'new.sentence
Chris@0 191 if$
Chris@0 192 }
Chris@0 193
Chris@0 194 FUNCTION {field.or.null}
Chris@0 195 { duplicate$ empty$
Chris@0 196 { pop$ "" }
Chris@0 197 'skip$
Chris@0 198 if$
Chris@0 199 }
Chris@0 200
Chris@0 201 FUNCTION {emphasize}
Chris@0 202 { duplicate$ empty$
Chris@0 203 { pop$ "" }
Chris@0 204 { "{\em " swap$ * "}" * }
Chris@0 205 if$
Chris@0 206 }
Chris@0 207
Chris@0 208 FUNCTION {boldface}
Chris@0 209 { duplicate$ empty$
Chris@0 210 { pop$ "" }
Chris@0 211 { "{\bf " swap$ * "}" * }
Chris@0 212 if$
Chris@0 213 }
Chris@0 214
Chris@0 215 %FUNCTION {boldface}
Chris@0 216 %{ 's swap$ :=
Chris@0 217 % s "" =
Chris@0 218 % { "" }
Chris@0 219 % { "{\bf " s * "}" * }
Chris@0 220 % if$
Chris@0 221 %}
Chris@0 222 %
Chris@0 223 INTEGERS { nameptr namesleft numnames }
Chris@0 224
Chris@0 225 FUNCTION {format.names}
Chris@0 226 { 's :=
Chris@0 227 #1 'nameptr :=
Chris@0 228 s num.names$ 'numnames :=
Chris@0 229 numnames 'namesleft :=
Chris@0 230 { namesleft #0 > }
Chris@0 231 { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
Chris@0 232 nameptr #1 >
Chris@0 233 { namesleft #1 >
Chris@0 234 { ", " * t * }
Chris@0 235 { numnames #2 >
Chris@0 236 { "," * }
Chris@0 237 'skip$
Chris@0 238 if$
Chris@0 239 t "others" =
Chris@0 240 { " et~al." * }
Chris@0 241 { " and " * t * }
Chris@0 242 if$
Chris@0 243 }
Chris@0 244 if$
Chris@0 245 }
Chris@0 246 't
Chris@0 247 if$
Chris@0 248 nameptr #1 + 'nameptr :=
Chris@0 249 namesleft #1 - 'namesleft :=
Chris@0 250 }
Chris@0 251 while$
Chris@0 252 }
Chris@0 253
Chris@0 254 FUNCTION {format.authors}
Chris@0 255 { author empty$
Chris@0 256 { "" }
Chris@0 257 { author format.names }
Chris@0 258 if$
Chris@0 259 }
Chris@0 260
Chris@0 261 FUNCTION {format.editors}
Chris@0 262 { editor empty$
Chris@0 263 { "" }
Chris@0 264 { editor format.names
Chris@0 265 editor num.names$ #1 >
Chris@0 266 { ", Eds." * }
Chris@0 267 { ", Ed." * }
Chris@0 268 if$
Chris@0 269 }
Chris@0 270 if$
Chris@0 271 }
Chris@0 272
Chris@0 273 FUNCTION {format.title}
Chris@0 274 { title empty$
Chris@0 275 { "" }
Chris@0 276 { "``" title "t" change.case$ * }
Chris@0 277 if$
Chris@0 278 }
Chris@0 279
Chris@0 280 FUNCTION {n.dashify}
Chris@0 281 { 't :=
Chris@0 282 ""
Chris@0 283 { t empty$ not }
Chris@0 284 { t #1 #1 substring$ "-" =
Chris@0 285 { t #1 #2 substring$ "--" = not
Chris@0 286 { "--" *
Chris@0 287 t #2 global.max$ substring$ 't :=
Chris@0 288 }
Chris@0 289 { { t #1 #1 substring$ "-" = }
Chris@0 290 { "-" *
Chris@0 291 t #2 global.max$ substring$ 't :=
Chris@0 292 }
Chris@0 293 while$
Chris@0 294 }
Chris@0 295 if$
Chris@0 296 }
Chris@0 297 { t #1 #1 substring$ *
Chris@0 298 t #2 global.max$ substring$ 't :=
Chris@0 299 }
Chris@0 300 if$
Chris@0 301 }
Chris@0 302 while$
Chris@0 303 }
Chris@0 304
Chris@0 305 FUNCTION {format.date}
Chris@0 306 { year empty$
Chris@0 307 { month empty$
Chris@0 308 { "" }
Chris@0 309 { "there's a month but no year in " cite$ * warning$
Chris@0 310 month
Chris@0 311 }
Chris@0 312 if$
Chris@0 313 }
Chris@0 314 { month empty$
Chris@0 315 'year
Chris@0 316 { month " " * year * }
Chris@0 317 if$
Chris@0 318 }
Chris@0 319 if$
Chris@0 320 }
Chris@0 321
Chris@0 322 % FUNCTION {format.date}
Chris@0 323 % { year empty$
Chris@0 324 % 'year
Chris@0 325 % { " " year * }
Chris@0 326 % if$
Chris@0 327 % }
Chris@0 328
Chris@0 329 FUNCTION {format.btitle}
Chris@0 330 { title emphasize
Chris@0 331 }
Chris@0 332
Chris@0 333 FUNCTION {tie.or.space.connect}
Chris@0 334 { duplicate$ text.length$ #3 <
Chris@0 335 { "~" }
Chris@0 336 { " " }
Chris@0 337 if$
Chris@0 338 swap$ * *
Chris@0 339 }
Chris@0 340
Chris@0 341 FUNCTION {either.or.check}
Chris@0 342 { empty$
Chris@0 343 'pop$
Chris@0 344 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
Chris@0 345 if$
Chris@0 346 }
Chris@0 347
Chris@0 348 FUNCTION {format.bvolume}
Chris@0 349 { volume empty$
Chris@0 350 { "" }
Chris@0 351 { "vol." volume tie.or.space.connect
Chris@0 352 series empty$
Chris@0 353 'skip$
Chris@0 354 { " of " * series emphasize * }
Chris@0 355 if$
Chris@0 356 "volume and number" number either.or.check
Chris@0 357 }
Chris@0 358 if$
Chris@0 359 }
Chris@0 360
Chris@0 361 FUNCTION {format.number.series}
Chris@0 362 { volume empty$
Chris@0 363 { number empty$
Chris@0 364 { series field.or.null }
Chris@0 365 { output.state mid.sentence =
Chris@0 366 { "number" }
Chris@0 367 { "Number" }
Chris@0 368 if$
Chris@0 369 number tie.or.space.connect
Chris@0 370 series empty$
Chris@0 371 { "there's a number but no series in " cite$ * warning$ }
Chris@0 372 { " in " * series * }
Chris@0 373 if$
Chris@0 374 }
Chris@0 375 if$
Chris@0 376 }
Chris@0 377 { "" }
Chris@0 378 if$
Chris@0 379 }
Chris@0 380
Chris@0 381 FUNCTION {format.edition}
Chris@0 382 { edition empty$
Chris@0 383 { "" }
Chris@0 384 { output.state mid.sentence =
Chris@0 385 { edition "l" change.case$ " edition" * }
Chris@0 386 { edition "t" change.case$ " edition" * }
Chris@0 387 if$
Chris@0 388 }
Chris@0 389 if$
Chris@0 390 }
Chris@0 391
Chris@0 392 INTEGERS { multiresult }
Chris@0 393
Chris@0 394 FUNCTION {multi.page.check}
Chris@0 395 { 't :=
Chris@0 396 #0 'multiresult :=
Chris@0 397 { multiresult not
Chris@0 398 t empty$ not
Chris@0 399 and
Chris@0 400 }
Chris@0 401 { t #1 #1 substring$
Chris@0 402 duplicate$ "-" =
Chris@0 403 swap$ duplicate$ "," =
Chris@0 404 swap$ "+" =
Chris@0 405 or or
Chris@0 406 { #1 'multiresult := }
Chris@0 407 { t #2 global.max$ substring$ 't := }
Chris@0 408 if$
Chris@0 409 }
Chris@0 410 while$
Chris@0 411 multiresult
Chris@0 412 }
Chris@0 413
Chris@0 414 FUNCTION {format.pages}
Chris@0 415 { pages empty$
Chris@0 416 { "" }
Chris@0 417 { pages multi.page.check
Chris@0 418 { "pp." pages n.dashify tie.or.space.connect }
Chris@0 419 { "p." pages tie.or.space.connect }
Chris@0 420 if$
Chris@0 421 }
Chris@0 422 if$
Chris@0 423 }
Chris@0 424
Chris@0 425 FUNCTION {format.vol.num.pages}
Chris@0 426 {
Chris@0 427 volume empty$
Chris@0 428 {"" }
Chris@0 429 {"vol. " volume *}
Chris@0 430 if$
Chris@0 431 number empty$
Chris@0 432 'skip$
Chris@0 433 {", no. " number * *}
Chris@0 434 if$
Chris@0 435 pages empty$
Chris@0 436 'skip$
Chris@0 437 { duplicate$ empty$
Chris@0 438 { pop$ format.pages }
Chris@0 439 { ", pp. " * pages n.dashify * }
Chris@0 440 if$
Chris@0 441 }
Chris@0 442 if$
Chris@0 443 }
Chris@0 444
Chris@0 445 %FUNCTION {format.vol.num.pages}
Chris@0 446 %%boldface added 3/17/87 rhr
Chris@0 447 %{ volume field.or.null boldface
Chris@0 448 % number empty$
Chris@0 449 % 'skip$
Chris@0 450 % { "(" number * ")" * *
Chris@0 451 % volume empty$
Chris@0 452 % { "there's a number but no volume in " cite$ * warning$ }
Chris@0 453 % 'skip$
Chris@0 454 % if$
Chris@0 455 % }
Chris@0 456 % if$
Chris@0 457 % pages empty$
Chris@0 458 % 'skip$
Chris@0 459 % { duplicate$ empty$
Chris@0 460 % { pop$ format.pages }
Chris@0 461 % { ":" * pages n.dashify * }
Chris@0 462 % if$
Chris@0 463 % }
Chris@0 464 % if$
Chris@0 465 %}
Chris@0 466
Chris@0 467 FUNCTION {format.chapter.pages}
Chris@0 468 { chapter empty$
Chris@0 469 'format.pages
Chris@0 470 { type empty$
Chris@0 471 { "chapter" }
Chris@0 472 { type "l" change.case$ }
Chris@0 473 if$
Chris@0 474 chapter tie.or.space.connect
Chris@0 475 pages empty$
Chris@0 476 'skip$
Chris@0 477 { ", " * format.pages * }
Chris@0 478 if$
Chris@0 479 }
Chris@0 480 if$
Chris@0 481 }
Chris@0 482
Chris@0 483 FUNCTION {format.in.ed.booktitle}
Chris@0 484 { booktitle empty$
Chris@0 485 { "" }
Chris@0 486 { editor empty$
Chris@0 487 { "in " booktitle emphasize * }
Chris@0 488 { "in " booktitle emphasize * ", " * format.editors * }
Chris@0 489 if$
Chris@0 490 }
Chris@0 491 if$
Chris@0 492 }
Chris@0 493
Chris@0 494 FUNCTION {empty.misc.check}
Chris@0 495 { author empty$ title empty$ howpublished empty$
Chris@0 496 month empty$ year empty$ note empty$
Chris@0 497 and and and and and
Chris@0 498 { "all relevant fields are empty in " cite$ * warning$ }
Chris@0 499 'skip$
Chris@0 500 if$
Chris@0 501 }
Chris@0 502
Chris@0 503 FUNCTION {format.thesis.type}
Chris@0 504 { type empty$
Chris@0 505 'skip$
Chris@0 506 { pop$
Chris@0 507 type "t" change.case$
Chris@0 508 }
Chris@0 509 if$
Chris@0 510 }
Chris@0 511
Chris@0 512 FUNCTION {format.tr.number}
Chris@0 513 { type empty$
Chris@0 514 { "Tech. {R}ep." }
Chris@0 515 'type
Chris@0 516 if$
Chris@0 517 number empty$
Chris@0 518 { "t" change.case$ }
Chris@0 519 { number tie.or.space.connect }
Chris@0 520 if$
Chris@0 521 }
Chris@0 522
Chris@0 523 FUNCTION {format.article.crossref}
Chris@0 524 { key empty$
Chris@0 525 { journal empty$
Chris@0 526 { "need key or journal for " cite$ * " to crossref " * crossref *
Chris@0 527 warning$
Chris@0 528 ""
Chris@0 529 }
Chris@0 530 { "In {\em " journal * "\/}" * }
Chris@0 531 if$
Chris@0 532 }
Chris@0 533 { "In " key * }
Chris@0 534 if$
Chris@0 535 " \cite{" * crossref * "}" *
Chris@0 536 }
Chris@0 537
Chris@0 538 FUNCTION {format.crossref.editor}
Chris@0 539 { editor #1 "{vv~}{ll}" format.name$
Chris@0 540 editor num.names$ duplicate$
Chris@0 541 #2 >
Chris@0 542 { pop$ " et~al." * }
Chris@0 543 { #2 <
Chris@0 544 'skip$
Chris@0 545 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
Chris@0 546 { " et~al." * }
Chris@0 547 { " and " * editor #2 "{vv~}{ll}" format.name$ * }
Chris@0 548 if$
Chris@0 549 }
Chris@0 550 if$
Chris@0 551 }
Chris@0 552 if$
Chris@0 553 }
Chris@0 554
Chris@0 555 FUNCTION {format.book.crossref}
Chris@0 556 { volume empty$
Chris@0 557 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
Chris@0 558 "In "
Chris@0 559 }
Chris@0 560 { "vol." volume tie.or.space.connect
Chris@0 561 " of " *
Chris@0 562 }
Chris@0 563 if$
Chris@0 564 editor empty$
Chris@0 565 editor field.or.null author field.or.null =
Chris@0 566 or
Chris@0 567 { key empty$
Chris@0 568 { series empty$
Chris@0 569 { "need editor, key, or series for " cite$ * " to crossref " *
Chris@0 570 crossref * warning$
Chris@0 571 "" *
Chris@0 572 }
Chris@0 573 { "{\em " * series * "\/}" * }
Chris@0 574 if$
Chris@0 575 }
Chris@0 576 { key * }
Chris@0 577 if$
Chris@0 578 }
Chris@0 579 { format.crossref.editor * }
Chris@0 580 if$
Chris@0 581 " \cite{" * crossref * "}" *
Chris@0 582 }
Chris@0 583
Chris@0 584 FUNCTION {format.incoll.inproc.crossref}
Chris@0 585 { editor empty$
Chris@0 586 editor field.or.null author field.or.null =
Chris@0 587 or
Chris@0 588 { key empty$
Chris@0 589 { booktitle empty$
Chris@0 590 { "need editor, key, or booktitle for " cite$ * " to crossref " *
Chris@0 591 crossref * warning$
Chris@0 592 ""
Chris@0 593 }
Chris@0 594 { "In {\em " booktitle * "\/}" * }
Chris@0 595 if$
Chris@0 596 }
Chris@0 597 { "In " key * }
Chris@0 598 if$
Chris@0 599 }
Chris@0 600 { "In " format.crossref.editor * }
Chris@0 601 if$
Chris@0 602 " \cite{" * crossref * "}" *
Chris@0 603 }
Chris@0 604
Chris@0 605 FUNCTION {article}
Chris@0 606 { output.bibitem
Chris@0 607 format.authors "author" output.check
Chris@0 608 new.block
Chris@0 609 format.title ",''" * "title" output.check
Chris@0 610 new.ncblock
Chris@0 611 crossref missing$
Chris@0 612 { journal emphasize "journal" output.check
Chris@0 613 format.vol.num.pages output
Chris@0 614 format.date "year" output.check
Chris@0 615 }
Chris@0 616 { format.article.crossref output.nonnull
Chris@0 617 format.pages output
Chris@0 618 }
Chris@0 619 if$
Chris@0 620 new.block
Chris@0 621 note output
Chris@0 622 fin.entry
Chris@0 623 }
Chris@0 624
Chris@0 625 FUNCTION {book}
Chris@0 626 { output.bibitem
Chris@0 627 author empty$
Chris@0 628 { format.editors "author and editor" output.check }
Chris@0 629 { format.authors output.nonnull
Chris@0 630 crossref missing$
Chris@0 631 { "author and editor" editor either.or.check }
Chris@0 632 'skip$
Chris@0 633 if$
Chris@0 634 }
Chris@0 635 if$
Chris@0 636 new.block
Chris@0 637 format.btitle "title" output.check
Chris@0 638 crossref missing$
Chris@0 639 { format.bvolume output
Chris@0 640 new.block
Chris@0 641 format.number.series output
Chris@0 642 new.sentence
Chris@0 643 publisher "publisher" output.check
Chris@0 644 address output
Chris@0 645 }
Chris@0 646 { new.block
Chris@0 647 format.book.crossref output.nonnull
Chris@0 648 }
Chris@0 649 if$
Chris@0 650 format.edition output
Chris@0 651 format.date "year" output.check
Chris@0 652 new.block
Chris@0 653 note output
Chris@0 654 fin.entry
Chris@0 655 }
Chris@0 656
Chris@0 657 FUNCTION {booklet}
Chris@0 658 { output.bibitem
Chris@0 659 format.authors output
Chris@0 660 new.block
Chris@0 661 format.title ",''" * "title" output.check
Chris@0 662 new.nccont
Chris@0 663 howpublished address new.block.checkb
Chris@0 664 howpublished output
Chris@0 665 address output
Chris@0 666 format.date output
Chris@0 667 new.block
Chris@0 668 note output
Chris@0 669 fin.entry
Chris@0 670 }
Chris@0 671
Chris@0 672 FUNCTION {inbook}
Chris@0 673 { output.bibitem
Chris@0 674 author empty$
Chris@0 675 { format.editors "author and editor" output.check }
Chris@0 676 { format.authors output.nonnull
Chris@0 677 crossref missing$
Chris@0 678 { "author and editor" editor either.or.check }
Chris@0 679 'skip$
Chris@0 680 if$
Chris@0 681 }
Chris@0 682 if$
Chris@0 683 new.block
Chris@0 684 format.btitle "title" output.check
Chris@0 685 crossref missing$
Chris@0 686 { format.bvolume output
Chris@0 687 format.chapter.pages "chapter and pages" output.check
Chris@0 688 new.block
Chris@0 689 format.number.series output
Chris@0 690 new.sentence
Chris@0 691 publisher "publisher" output.check
Chris@0 692 address output
Chris@0 693 }
Chris@0 694 { format.chapter.pages "chapter and pages" output.check
Chris@0 695 new.block
Chris@0 696 format.book.crossref output.nonnull
Chris@0 697 }
Chris@0 698 if$
Chris@0 699 format.edition output
Chris@0 700 format.date "year" output.check
Chris@0 701 new.block
Chris@0 702 note output
Chris@0 703 fin.entry
Chris@0 704 }
Chris@0 705
Chris@0 706 FUNCTION {incollection}
Chris@0 707 { output.bibitem
Chris@0 708 format.authors "author" output.check
Chris@0 709 new.block
Chris@0 710 format.title ",''" * "title" output.check
Chris@0 711 new.ncblock
Chris@0 712 crossref missing$
Chris@0 713 { format.in.ed.booktitle "booktitle" output.check
Chris@0 714 format.bvolume output
Chris@0 715 format.number.series output
Chris@0 716 format.chapter.pages output
Chris@0 717 new.sentence
Chris@0 718 publisher "publisher" output.check
Chris@0 719 address output
Chris@0 720 format.edition output
Chris@0 721 format.date "year" output.check
Chris@0 722 }
Chris@0 723 { format.incoll.inproc.crossref output.nonnull
Chris@0 724 format.chapter.pages output
Chris@0 725 }
Chris@0 726 if$
Chris@0 727 new.block
Chris@0 728 note output
Chris@0 729 fin.entry
Chris@0 730 }
Chris@0 731
Chris@0 732 FUNCTION {inproceedings}
Chris@0 733 { output.bibitem
Chris@0 734 format.authors "author" output.check
Chris@0 735 new.block
Chris@0 736 format.title ",''" * "title" output.check
Chris@0 737 new.ncblock
Chris@0 738 crossref missing$
Chris@0 739 { format.in.ed.booktitle "booktitle" output.check
Chris@0 740 address empty$
Chris@0 741 { organization publisher new.sentence.checkb
Chris@0 742 organization output
Chris@0 743 format.date "year" output.check
Chris@0 744 }
Chris@0 745 { address output.nonnull
Chris@0 746 format.date "year" output.check
Chris@0 747 organization output
Chris@0 748 }
Chris@0 749 if$
Chris@0 750 format.bvolume output
Chris@0 751 format.number.series output
Chris@0 752 format.pages output
Chris@0 753 publisher output
Chris@0 754 }
Chris@0 755 { format.incoll.inproc.crossref output.nonnull
Chris@0 756 format.pages output
Chris@0 757 }
Chris@0 758 if$
Chris@0 759 new.block
Chris@0 760 note output
Chris@0 761 fin.entry
Chris@0 762 }
Chris@0 763
Chris@0 764 FUNCTION {conference} { inproceedings }
Chris@0 765
Chris@0 766 FUNCTION {manual}
Chris@0 767 { output.bibitem
Chris@0 768 author empty$
Chris@0 769 { organization empty$
Chris@0 770 'skip$
Chris@0 771 { organization output.nonnull
Chris@0 772 address output
Chris@0 773 }
Chris@0 774 if$
Chris@0 775 }
Chris@0 776 { format.authors output.nonnull }
Chris@0 777 if$
Chris@0 778 new.block
Chris@0 779 format.btitle "title" output.check
Chris@0 780 author empty$
Chris@0 781 { organization empty$
Chris@0 782 { address new.block.checka
Chris@0 783 address output
Chris@0 784 }
Chris@0 785 'skip$
Chris@0 786 if$
Chris@0 787 }
Chris@0 788 { organization address new.block.checkb
Chris@0 789 organization output
Chris@0 790 address output
Chris@0 791 }
Chris@0 792 if$
Chris@0 793 format.edition output
Chris@0 794 format.date output
Chris@0 795 new.block
Chris@0 796 note output
Chris@0 797 fin.entry
Chris@0 798 }
Chris@0 799
Chris@0 800 FUNCTION {mastersthesis}
Chris@0 801 { output.bibitem
Chris@0 802 format.authors "author" output.check
Chris@0 803 new.block
Chris@0 804 format.title ",''" * "title" output.check
Chris@0 805 new.ncblock
Chris@0 806 "M.S. thesis" format.thesis.type output.nonnull
Chris@0 807 school "school" output.check
Chris@0 808 address output
Chris@0 809 format.date "year" output.check
Chris@0 810 new.block
Chris@0 811 note output
Chris@0 812 fin.entry
Chris@0 813 }
Chris@0 814
Chris@0 815 FUNCTION {misc}
Chris@0 816 { output.bibitem
Chris@0 817 format.authors output
Chris@0 818 title howpublished new.block.checkb
Chris@0 819 format.title ",''" * output
Chris@0 820 new.nccont
Chris@0 821 howpublished new.block.checka
Chris@0 822 howpublished output
Chris@0 823 format.date output
Chris@0 824 new.block
Chris@0 825 note output
Chris@0 826 fin.entry
Chris@0 827 empty.misc.check
Chris@0 828 }
Chris@0 829
Chris@0 830 FUNCTION {phdthesis}
Chris@0 831 { output.bibitem
Chris@0 832 format.authors "author" output.check
Chris@0 833 new.block
Chris@0 834 format.btitle "title" output.check
Chris@0 835 new.block
Chris@0 836 "Ph.D. thesis" format.thesis.type output.nonnull
Chris@0 837 school "school" output.check
Chris@0 838 address output
Chris@0 839 format.date "year" output.check
Chris@0 840 new.block
Chris@0 841 note output
Chris@0 842 fin.entry
Chris@0 843 }
Chris@0 844
Chris@0 845 FUNCTION {proceedings}
Chris@0 846 { output.bibitem
Chris@0 847 editor empty$
Chris@0 848 { organization output }
Chris@0 849 { format.editors output.nonnull }
Chris@0 850 if$
Chris@0 851 new.block
Chris@0 852 format.btitle "title" output.check
Chris@0 853 format.bvolume output
Chris@0 854 format.number.series output
Chris@0 855 address empty$
Chris@0 856 { editor empty$
Chris@0 857 { publisher new.sentence.checka }
Chris@0 858 { organization publisher new.sentence.checkb
Chris@0 859 organization output
Chris@0 860 }
Chris@0 861 if$
Chris@0 862 publisher output
Chris@0 863 format.date "year" output.check
Chris@0 864 }
Chris@0 865 { address output.nonnull
Chris@0 866 format.date "year" output.check
Chris@0 867 new.sentence
Chris@0 868 editor empty$
Chris@0 869 'skip$
Chris@0 870 { organization output }
Chris@0 871 if$
Chris@0 872 publisher output
Chris@0 873 }
Chris@0 874 if$
Chris@0 875 new.block
Chris@0 876 note output
Chris@0 877 fin.entry
Chris@0 878 }
Chris@0 879
Chris@0 880 FUNCTION {techreport}
Chris@0 881 { output.bibitem
Chris@0 882 format.authors "author" output.check
Chris@0 883 new.block
Chris@0 884 format.title ",''" * "title" output.check
Chris@0 885 new.ncblock
Chris@0 886 format.tr.number output.nonnull
Chris@0 887 institution "institution" output.check
Chris@0 888 address output
Chris@0 889 format.date "year" output.check
Chris@0 890 new.block
Chris@0 891 note output
Chris@0 892 fin.entry
Chris@0 893 }
Chris@0 894
Chris@0 895 FUNCTION {unpublished}
Chris@0 896 { output.bibitem
Chris@0 897 format.authors "author" output.check
Chris@0 898 new.block
Chris@0 899 format.title ",''" * "title" output.check
Chris@0 900 new.ncblock
Chris@0 901 note "note" output.check
Chris@0 902 format.date output
Chris@0 903 fin.entry
Chris@0 904 }
Chris@0 905
Chris@0 906 FUNCTION {default.type} { misc }
Chris@0 907
Chris@0 908 MACRO {jan} {"Jan."}
Chris@0 909
Chris@0 910 MACRO {feb} {"Feb."}
Chris@0 911
Chris@0 912 MACRO {mar} {"Mar."}
Chris@0 913
Chris@0 914 MACRO {apr} {"Apr."}
Chris@0 915
Chris@0 916 MACRO {may} {"May"}
Chris@0 917
Chris@0 918 MACRO {jun} {"June"}
Chris@0 919
Chris@0 920 MACRO {jul} {"July"}
Chris@0 921
Chris@0 922 MACRO {aug} {"Aug."}
Chris@0 923
Chris@0 924 MACRO {sep} {"Sept."}
Chris@0 925
Chris@0 926 MACRO {oct} {"Oct."}
Chris@0 927
Chris@0 928 MACRO {nov} {"Nov."}
Chris@0 929
Chris@0 930 MACRO {dec} {"Dec."}
Chris@0 931
Chris@0 932 MACRO {acmcs} {"ACM Computing Surveys"}
Chris@0 933
Chris@0 934 MACRO {acta} {"Acta Informatica"}
Chris@0 935
Chris@0 936 MACRO {cacm} {"Communications of the ACM"}
Chris@0 937
Chris@0 938 MACRO {ibmjrd} {"IBM Journal of Research and Development"}
Chris@0 939
Chris@0 940 MACRO {ibmsj} {"IBM Systems Journal"}
Chris@0 941
Chris@0 942 MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
Chris@0 943
Chris@0 944 MACRO {ieeetc} {"IEEE Transactions on Computers"}
Chris@0 945
Chris@0 946 MACRO {ieeetcad}
Chris@0 947 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
Chris@0 948
Chris@0 949 MACRO {ipl} {"Information Processing Letters"}
Chris@0 950
Chris@0 951 MACRO {jacm} {"Journal of the ACM"}
Chris@0 952
Chris@0 953 MACRO {jcss} {"Journal of Computer and System Sciences"}
Chris@0 954
Chris@0 955 MACRO {scp} {"Science of Computer Programming"}
Chris@0 956
Chris@0 957 MACRO {sicomp} {"SIAM Journal on Computing"}
Chris@0 958
Chris@0 959 MACRO {tocs} {"ACM Transactions on Computer Systems"}
Chris@0 960
Chris@0 961 MACRO {tods} {"ACM Transactions on Database Systems"}
Chris@0 962
Chris@0 963 MACRO {tog} {"ACM Transactions on Graphics"}
Chris@0 964
Chris@0 965 MACRO {toms} {"ACM Transactions on Mathematical Software"}
Chris@0 966
Chris@0 967 MACRO {toois} {"ACM Transactions on Office Information Systems"}
Chris@0 968
Chris@0 969 MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
Chris@0 970
Chris@0 971 MACRO {tcs} {"Theoretical Computer Science"}
Chris@0 972
Chris@0 973 READ
Chris@0 974
Chris@0 975 STRINGS { longest.label }
Chris@0 976
Chris@0 977 INTEGERS { number.label longest.label.width }
Chris@0 978
Chris@0 979 FUNCTION {initialize.longest.label}
Chris@0 980 { "" 'longest.label :=
Chris@0 981 #1 'number.label :=
Chris@0 982 #0 'longest.label.width :=
Chris@0 983 }
Chris@0 984
Chris@0 985 FUNCTION {longest.label.pass}
Chris@0 986 { number.label int.to.str$ 'label :=
Chris@0 987 number.label #1 + 'number.label :=
Chris@0 988 label width$ longest.label.width >
Chris@0 989 { label 'longest.label :=
Chris@0 990 label width$ 'longest.label.width :=
Chris@0 991 }
Chris@0 992 'skip$
Chris@0 993 if$
Chris@0 994 }
Chris@0 995
Chris@0 996 EXECUTE {initialize.longest.label}
Chris@0 997
Chris@0 998 ITERATE {longest.label.pass}
Chris@0 999
Chris@0 1000 FUNCTION {begin.bib}
Chris@0 1001 { preamble$ empty$
Chris@0 1002 'skip$
Chris@0 1003 { preamble$ write$ newline$ }
Chris@0 1004 if$
Chris@0 1005 "\begin{thebibliography}{" longest.label * "}" * write$ newline$
Chris@0 1006 }
Chris@0 1007
Chris@0 1008 EXECUTE {begin.bib}
Chris@0 1009
Chris@0 1010 EXECUTE {init.state.consts}
Chris@0 1011
Chris@0 1012 ITERATE {call.type$}
Chris@0 1013
Chris@0 1014 FUNCTION {end.bib}
Chris@0 1015 { newline$
Chris@0 1016 "\end{thebibliography}" write$ newline$
Chris@0 1017 }
Chris@0 1018
Chris@0 1019 EXECUTE {end.bib}
Chris@0 1020
Chris@0 1021 %%%%%%%%%%%%%%%%%%%%%%%%%%%%% End of IEEE.bst %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%