annotate 0__Papers/Hardware/QMod/latex/plain.bst @ 108:e488b77f2015

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