Mercurial > cgi-bin > hgwebdir.cgi > VMS > 0__Writings > kshalle
diff 0__Papers/Future_Architecture/latex/plain.bst @ 29:8364254531cd
perf tuning -- first try on figs and a bit of story text
| author | Some Random Person <seanhalle@yahoo.com> |
|---|---|
| date | Mon, 16 Apr 2012 16:41:54 -0700 |
| parents | |
| children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/0__Papers/Future_Architecture/latex/plain.bst Mon Apr 16 16:41:54 2012 -0700 1.3 @@ -0,0 +1,1098 @@ 1.4 +% BibTeX standard bibliography style `plain' 1.5 + % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. 1.6 + % Copyright (C) 1985, all rights reserved. 1.7 + % Copying of this file is authorized only if either 1.8 + % (1) you make absolutely no changes to your copy, including name, or 1.9 + % (2) if you do make changes, you name it something other than 1.10 + % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. 1.11 + % This restriction helps ensure that all standard styles are identical. 1.12 + % The file btxbst.doc has the documentation for this style. 1.13 + 1.14 +ENTRY 1.15 + { address 1.16 + author 1.17 + booktitle 1.18 + chapter 1.19 + edition 1.20 + editor 1.21 + howpublished 1.22 + institution 1.23 + journal 1.24 + key 1.25 + month 1.26 + note 1.27 + number 1.28 + organization 1.29 + pages 1.30 + publisher 1.31 + school 1.32 + series 1.33 + title 1.34 + type 1.35 + volume 1.36 + year 1.37 + } 1.38 + {} 1.39 + { label } 1.40 + 1.41 +INTEGERS { output.state before.all mid.sentence after.sentence after.block } 1.42 + 1.43 +FUNCTION {init.state.consts} 1.44 +{ #0 'before.all := 1.45 + #1 'mid.sentence := 1.46 + #2 'after.sentence := 1.47 + #3 'after.block := 1.48 +} 1.49 + 1.50 +STRINGS { s t } 1.51 + 1.52 +FUNCTION {output.nonnull} 1.53 +{ 's := 1.54 + output.state mid.sentence = 1.55 + { ", " * write$ } 1.56 + { output.state after.block = 1.57 + { add.period$ write$ 1.58 + newline$ 1.59 + "\newblock " write$ 1.60 + } 1.61 + { output.state before.all = 1.62 + 'write$ 1.63 + { add.period$ " " * write$ } 1.64 + if$ 1.65 + } 1.66 + if$ 1.67 + mid.sentence 'output.state := 1.68 + } 1.69 + if$ 1.70 + s 1.71 +} 1.72 + 1.73 +FUNCTION {output} 1.74 +{ duplicate$ empty$ 1.75 + 'pop$ 1.76 + 'output.nonnull 1.77 + if$ 1.78 +} 1.79 + 1.80 +FUNCTION {output.check} 1.81 +{ 't := 1.82 + duplicate$ empty$ 1.83 + { pop$ "empty " t * " in " * cite$ * warning$ } 1.84 + 'output.nonnull 1.85 + if$ 1.86 +} 1.87 + 1.88 +FUNCTION {output.bibitem} 1.89 +{ newline$ 1.90 + "\bibitem{" write$ 1.91 + cite$ write$ 1.92 + "}" write$ 1.93 + newline$ 1.94 + "" 1.95 + before.all 'output.state := 1.96 +} 1.97 + 1.98 +FUNCTION {fin.entry} 1.99 +{ add.period$ 1.100 + write$ 1.101 + newline$ 1.102 +} 1.103 + 1.104 +FUNCTION {new.block} 1.105 +{ output.state before.all = 1.106 + 'skip$ 1.107 + { after.block 'output.state := } 1.108 + if$ 1.109 +} 1.110 + 1.111 +FUNCTION {new.sentence} 1.112 +{ output.state after.block = 1.113 + 'skip$ 1.114 + { output.state before.all = 1.115 + 'skip$ 1.116 + { after.sentence 'output.state := } 1.117 + if$ 1.118 + } 1.119 + if$ 1.120 +} 1.121 + 1.122 +FUNCTION {not} 1.123 +{ { #0 } 1.124 + { #1 } 1.125 + if$ 1.126 +} 1.127 + 1.128 +FUNCTION {and} 1.129 +{ 'skip$ 1.130 + { pop$ #0 } 1.131 + if$ 1.132 +} 1.133 + 1.134 +FUNCTION {or} 1.135 +{ { pop$ #1 } 1.136 + 'skip$ 1.137 + if$ 1.138 +} 1.139 + 1.140 +FUNCTION {new.block.checka} 1.141 +{ empty$ 1.142 + 'skip$ 1.143 + 'new.block 1.144 + if$ 1.145 +} 1.146 + 1.147 +FUNCTION {new.block.checkb} 1.148 +{ empty$ 1.149 + swap$ empty$ 1.150 + and 1.151 + 'skip$ 1.152 + 'new.block 1.153 + if$ 1.154 +} 1.155 + 1.156 +FUNCTION {new.sentence.checka} 1.157 +{ empty$ 1.158 + 'skip$ 1.159 + 'new.sentence 1.160 + if$ 1.161 +} 1.162 + 1.163 +FUNCTION {new.sentence.checkb} 1.164 +{ empty$ 1.165 + swap$ empty$ 1.166 + and 1.167 + 'skip$ 1.168 + 'new.sentence 1.169 + if$ 1.170 +} 1.171 + 1.172 +FUNCTION {field.or.null} 1.173 +{ duplicate$ empty$ 1.174 + { pop$ "" } 1.175 + 'skip$ 1.176 + if$ 1.177 +} 1.178 + 1.179 +FUNCTION {emphasize} 1.180 +{ duplicate$ empty$ 1.181 + { pop$ "" } 1.182 + { "{\em " swap$ * "}" * } 1.183 + if$ 1.184 +} 1.185 + 1.186 +INTEGERS { nameptr namesleft numnames } 1.187 + 1.188 +FUNCTION {format.names} 1.189 +{ 's := 1.190 + #1 'nameptr := 1.191 + s num.names$ 'numnames := 1.192 + numnames 'namesleft := 1.193 + { namesleft #0 > } 1.194 + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := 1.195 + nameptr #1 > 1.196 + { namesleft #1 > 1.197 + { ", " * t * } 1.198 + { numnames #2 > 1.199 + { "," * } 1.200 + 'skip$ 1.201 + if$ 1.202 + t "others" = 1.203 + { " et~al." * } 1.204 + { " and " * t * } 1.205 + if$ 1.206 + } 1.207 + if$ 1.208 + } 1.209 + 't 1.210 + if$ 1.211 + nameptr #1 + 'nameptr := 1.212 + namesleft #1 - 'namesleft := 1.213 + } 1.214 + while$ 1.215 +} 1.216 + 1.217 +FUNCTION {format.authors} 1.218 +{ author empty$ 1.219 + { "" } 1.220 + { author format.names } 1.221 + if$ 1.222 +} 1.223 + 1.224 +FUNCTION {format.editors} 1.225 +{ editor empty$ 1.226 + { "" } 1.227 + { editor format.names 1.228 + editor num.names$ #1 > 1.229 + { ", editors" * } 1.230 + { ", editor" * } 1.231 + if$ 1.232 + } 1.233 + if$ 1.234 +} 1.235 + 1.236 +FUNCTION {format.title} 1.237 +{ title empty$ 1.238 + { "" } 1.239 + { title "t" change.case$ } 1.240 + if$ 1.241 +} 1.242 + 1.243 +FUNCTION {n.dashify} 1.244 +{ 't := 1.245 + "" 1.246 + { t empty$ not } 1.247 + { t #1 #1 substring$ "-" = 1.248 + { t #1 #2 substring$ "--" = not 1.249 + { "--" * 1.250 + t #2 global.max$ substring$ 't := 1.251 + } 1.252 + { { t #1 #1 substring$ "-" = } 1.253 + { "-" * 1.254 + t #2 global.max$ substring$ 't := 1.255 + } 1.256 + while$ 1.257 + } 1.258 + if$ 1.259 + } 1.260 + { t #1 #1 substring$ * 1.261 + t #2 global.max$ substring$ 't := 1.262 + } 1.263 + if$ 1.264 + } 1.265 + while$ 1.266 +} 1.267 + 1.268 +FUNCTION {format.date} 1.269 +{ year empty$ 1.270 + { month empty$ 1.271 + { "" } 1.272 + { "there's a month but no year in " cite$ * warning$ 1.273 + month 1.274 + } 1.275 + if$ 1.276 + } 1.277 + { month empty$ 1.278 + 'year 1.279 + { month " " * year * } 1.280 + if$ 1.281 + } 1.282 + if$ 1.283 +} 1.284 + 1.285 +FUNCTION {format.btitle} 1.286 +{ title emphasize 1.287 +} 1.288 + 1.289 +FUNCTION {tie.or.space.connect} 1.290 +{ duplicate$ text.length$ #3 < 1.291 + { "~" } 1.292 + { " " } 1.293 + if$ 1.294 + swap$ * * 1.295 +} 1.296 + 1.297 +FUNCTION {either.or.check} 1.298 +{ empty$ 1.299 + 'pop$ 1.300 + { "can't use both " swap$ * " fields in " * cite$ * warning$ } 1.301 + if$ 1.302 +} 1.303 + 1.304 +FUNCTION {format.bvolume} 1.305 +{ volume empty$ 1.306 + { "" } 1.307 + { "volume" volume tie.or.space.connect 1.308 + series empty$ 1.309 + 'skip$ 1.310 + { " of " * series emphasize * } 1.311 + if$ 1.312 + "volume and number" number either.or.check 1.313 + } 1.314 + if$ 1.315 +} 1.316 + 1.317 +FUNCTION {format.number.series} 1.318 +{ volume empty$ 1.319 + { number empty$ 1.320 + { series field.or.null } 1.321 + { output.state mid.sentence = 1.322 + { "number" } 1.323 + { "Number" } 1.324 + if$ 1.325 + number tie.or.space.connect 1.326 + series empty$ 1.327 + { "there's a number but no series in " cite$ * warning$ } 1.328 + { " in " * series * } 1.329 + if$ 1.330 + } 1.331 + if$ 1.332 + } 1.333 + { "" } 1.334 + if$ 1.335 +} 1.336 + 1.337 +FUNCTION {format.edition} 1.338 +{ edition empty$ 1.339 + { "" } 1.340 + { output.state mid.sentence = 1.341 + { edition "l" change.case$ " edition" * } 1.342 + { edition "t" change.case$ " edition" * } 1.343 + if$ 1.344 + } 1.345 + if$ 1.346 +} 1.347 + 1.348 +INTEGERS { multiresult } 1.349 + 1.350 +FUNCTION {multi.page.check} 1.351 +{ 't := 1.352 + #0 'multiresult := 1.353 + { multiresult not 1.354 + t empty$ not 1.355 + and 1.356 + } 1.357 + { t #1 #1 substring$ 1.358 + duplicate$ "-" = 1.359 + swap$ duplicate$ "," = 1.360 + swap$ "+" = 1.361 + or or 1.362 + { #1 'multiresult := } 1.363 + { t #2 global.max$ substring$ 't := } 1.364 + if$ 1.365 + } 1.366 + while$ 1.367 + multiresult 1.368 +} 1.369 + 1.370 +FUNCTION {format.pages} 1.371 +{ pages empty$ 1.372 + { "" } 1.373 + { pages multi.page.check 1.374 + { "pages" pages n.dashify tie.or.space.connect } 1.375 + { "page" pages tie.or.space.connect } 1.376 + if$ 1.377 + } 1.378 + if$ 1.379 +} 1.380 + 1.381 +FUNCTION {format.vol.num.pages} 1.382 +{ volume field.or.null 1.383 + number empty$ 1.384 + 'skip$ 1.385 + { "(" number * ")" * * 1.386 + volume empty$ 1.387 + { "there's a number but no volume in " cite$ * warning$ } 1.388 + 'skip$ 1.389 + if$ 1.390 + } 1.391 + if$ 1.392 + pages empty$ 1.393 + 'skip$ 1.394 + { duplicate$ empty$ 1.395 + { pop$ format.pages } 1.396 + { ":" * pages n.dashify * } 1.397 + if$ 1.398 + } 1.399 + if$ 1.400 +} 1.401 + 1.402 +FUNCTION {format.chapter.pages} 1.403 +{ chapter empty$ 1.404 + 'format.pages 1.405 + { type empty$ 1.406 + { "chapter" } 1.407 + { type "l" change.case$ } 1.408 + if$ 1.409 + chapter tie.or.space.connect 1.410 + pages empty$ 1.411 + 'skip$ 1.412 + { ", " * format.pages * } 1.413 + if$ 1.414 + } 1.415 + if$ 1.416 +} 1.417 + 1.418 +FUNCTION {format.in.ed.booktitle} 1.419 +{ booktitle empty$ 1.420 + { "" } 1.421 + { editor empty$ 1.422 + { "In " booktitle emphasize * } 1.423 + { "In " format.editors * ", " * booktitle emphasize * } 1.424 + if$ 1.425 + } 1.426 + if$ 1.427 +} 1.428 + 1.429 +FUNCTION {empty.misc.check} 1.430 +{ author empty$ title empty$ howpublished empty$ 1.431 + month empty$ year empty$ note empty$ 1.432 + and and and and and 1.433 + key empty$ not and 1.434 + { "all relevant fields are empty in " cite$ * warning$ } 1.435 + 'skip$ 1.436 + if$ 1.437 +} 1.438 + 1.439 +FUNCTION {format.thesis.type} 1.440 +{ type empty$ 1.441 + 'skip$ 1.442 + { pop$ 1.443 + type "t" change.case$ 1.444 + } 1.445 + if$ 1.446 +} 1.447 + 1.448 +FUNCTION {format.tr.number} 1.449 +{ type empty$ 1.450 + { "Technical Report" } 1.451 + 'type 1.452 + if$ 1.453 + number empty$ 1.454 + { "t" change.case$ } 1.455 + { number tie.or.space.connect } 1.456 + if$ 1.457 +} 1.458 + 1.459 +FUNCTION {format.article.crossref} 1.460 +{ key empty$ 1.461 + { journal empty$ 1.462 + { "need key or journal for " cite$ * " to crossref " * crossref * 1.463 + warning$ 1.464 + "" 1.465 + } 1.466 + { "In {\em " journal * "\/}" * } 1.467 + if$ 1.468 + } 1.469 + { "In " key * } 1.470 + if$ 1.471 + " \cite{" * crossref * "}" * 1.472 +} 1.473 + 1.474 +FUNCTION {format.crossref.editor} 1.475 +{ editor #1 "{vv~}{ll}" format.name$ 1.476 + editor num.names$ duplicate$ 1.477 + #2 > 1.478 + { pop$ " et~al." * } 1.479 + { #2 < 1.480 + 'skip$ 1.481 + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = 1.482 + { " et~al." * } 1.483 + { " and " * editor #2 "{vv~}{ll}" format.name$ * } 1.484 + if$ 1.485 + } 1.486 + if$ 1.487 + } 1.488 + if$ 1.489 +} 1.490 + 1.491 +FUNCTION {format.book.crossref} 1.492 +{ volume empty$ 1.493 + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ 1.494 + "In " 1.495 + } 1.496 + { "Volume" volume tie.or.space.connect 1.497 + " of " * 1.498 + } 1.499 + if$ 1.500 + editor empty$ 1.501 + editor field.or.null author field.or.null = 1.502 + or 1.503 + { key empty$ 1.504 + { series empty$ 1.505 + { "need editor, key, or series for " cite$ * " to crossref " * 1.506 + crossref * warning$ 1.507 + "" * 1.508 + } 1.509 + { "{\em " * series * "\/}" * } 1.510 + if$ 1.511 + } 1.512 + { key * } 1.513 + if$ 1.514 + } 1.515 + { format.crossref.editor * } 1.516 + if$ 1.517 + " \cite{" * crossref * "}" * 1.518 +} 1.519 + 1.520 +FUNCTION {format.incoll.inproc.crossref} 1.521 +{ editor empty$ 1.522 + editor field.or.null author field.or.null = 1.523 + or 1.524 + { key empty$ 1.525 + { booktitle empty$ 1.526 + { "need editor, key, or booktitle for " cite$ * " to crossref " * 1.527 + crossref * warning$ 1.528 + "" 1.529 + } 1.530 + { "In {\em " booktitle * "\/}" * } 1.531 + if$ 1.532 + } 1.533 + { "In " key * } 1.534 + if$ 1.535 + } 1.536 + { "In " format.crossref.editor * } 1.537 + if$ 1.538 + " \cite{" * crossref * "}" * 1.539 +} 1.540 + 1.541 +FUNCTION {article} 1.542 +{ output.bibitem 1.543 + format.authors "author" output.check 1.544 + new.block 1.545 + format.title "title" output.check 1.546 + new.block 1.547 + crossref missing$ 1.548 + { journal emphasize "journal" output.check 1.549 + format.vol.num.pages output 1.550 + format.date "year" output.check 1.551 + } 1.552 + { format.article.crossref output.nonnull 1.553 + format.pages output 1.554 + } 1.555 + if$ 1.556 + new.block 1.557 + note output 1.558 + fin.entry 1.559 +} 1.560 + 1.561 +FUNCTION {book} 1.562 +{ output.bibitem 1.563 + author empty$ 1.564 + { format.editors "author and editor" output.check } 1.565 + { format.authors output.nonnull 1.566 + crossref missing$ 1.567 + { "author and editor" editor either.or.check } 1.568 + 'skip$ 1.569 + if$ 1.570 + } 1.571 + if$ 1.572 + new.block 1.573 + format.btitle "title" output.check 1.574 + crossref missing$ 1.575 + { format.bvolume output 1.576 + new.block 1.577 + format.number.series output 1.578 + new.sentence 1.579 + publisher "publisher" output.check 1.580 + address output 1.581 + } 1.582 + { new.block 1.583 + format.book.crossref output.nonnull 1.584 + } 1.585 + if$ 1.586 + format.edition output 1.587 + format.date "year" output.check 1.588 + new.block 1.589 + note output 1.590 + fin.entry 1.591 +} 1.592 + 1.593 +FUNCTION {booklet} 1.594 +{ output.bibitem 1.595 + format.authors output 1.596 + new.block 1.597 + format.title "title" output.check 1.598 + howpublished address new.block.checkb 1.599 + howpublished output 1.600 + address output 1.601 + format.date output 1.602 + new.block 1.603 + note output 1.604 + fin.entry 1.605 +} 1.606 + 1.607 +FUNCTION {inbook} 1.608 +{ output.bibitem 1.609 + author empty$ 1.610 + { format.editors "author and editor" output.check } 1.611 + { format.authors output.nonnull 1.612 + crossref missing$ 1.613 + { "author and editor" editor either.or.check } 1.614 + 'skip$ 1.615 + if$ 1.616 + } 1.617 + if$ 1.618 + new.block 1.619 + format.btitle "title" output.check 1.620 + crossref missing$ 1.621 + { format.bvolume output 1.622 + format.chapter.pages "chapter and pages" output.check 1.623 + new.block 1.624 + format.number.series output 1.625 + new.sentence 1.626 + publisher "publisher" output.check 1.627 + address output 1.628 + } 1.629 + { format.chapter.pages "chapter and pages" output.check 1.630 + new.block 1.631 + format.book.crossref output.nonnull 1.632 + } 1.633 + if$ 1.634 + format.edition output 1.635 + format.date "year" output.check 1.636 + new.block 1.637 + note output 1.638 + fin.entry 1.639 +} 1.640 + 1.641 +FUNCTION {incollection} 1.642 +{ output.bibitem 1.643 + format.authors "author" output.check 1.644 + new.block 1.645 + format.title "title" output.check 1.646 + new.block 1.647 + crossref missing$ 1.648 + { format.in.ed.booktitle "booktitle" output.check 1.649 + format.bvolume output 1.650 + format.number.series output 1.651 + format.chapter.pages output 1.652 + new.sentence 1.653 + publisher "publisher" output.check 1.654 + address output 1.655 + format.edition output 1.656 + format.date "year" output.check 1.657 + } 1.658 + { format.incoll.inproc.crossref output.nonnull 1.659 + format.chapter.pages output 1.660 + } 1.661 + if$ 1.662 + new.block 1.663 + note output 1.664 + fin.entry 1.665 +} 1.666 + 1.667 +FUNCTION {inproceedings} 1.668 +{ output.bibitem 1.669 + format.authors "author" output.check 1.670 + new.block 1.671 + format.title "title" output.check 1.672 + new.block 1.673 + crossref missing$ 1.674 + { format.in.ed.booktitle "booktitle" output.check 1.675 + format.bvolume output 1.676 + format.number.series output 1.677 + format.pages output 1.678 + address empty$ 1.679 + { organization publisher new.sentence.checkb 1.680 + organization output 1.681 + publisher output 1.682 + format.date "year" output.check 1.683 + } 1.684 + { address output.nonnull 1.685 + format.date "year" output.check 1.686 + new.sentence 1.687 + organization output 1.688 + publisher output 1.689 + } 1.690 + if$ 1.691 + } 1.692 + { format.incoll.inproc.crossref output.nonnull 1.693 + format.pages output 1.694 + } 1.695 + if$ 1.696 + new.block 1.697 + note output 1.698 + fin.entry 1.699 +} 1.700 + 1.701 +FUNCTION {conference} { inproceedings } 1.702 + 1.703 +FUNCTION {manual} 1.704 +{ output.bibitem 1.705 + author empty$ 1.706 + { organization empty$ 1.707 + 'skip$ 1.708 + { organization output.nonnull 1.709 + address output 1.710 + } 1.711 + if$ 1.712 + } 1.713 + { format.authors output.nonnull } 1.714 + if$ 1.715 + new.block 1.716 + format.btitle "title" output.check 1.717 + author empty$ 1.718 + { organization empty$ 1.719 + { address new.block.checka 1.720 + address output 1.721 + } 1.722 + 'skip$ 1.723 + if$ 1.724 + } 1.725 + { organization address new.block.checkb 1.726 + organization output 1.727 + address output 1.728 + } 1.729 + if$ 1.730 + format.edition output 1.731 + format.date output 1.732 + new.block 1.733 + note output 1.734 + fin.entry 1.735 +} 1.736 + 1.737 +FUNCTION {mastersthesis} 1.738 +{ output.bibitem 1.739 + format.authors "author" output.check 1.740 + new.block 1.741 + format.title "title" output.check 1.742 + new.block 1.743 + "Master's thesis" format.thesis.type output.nonnull 1.744 + school "school" output.check 1.745 + address output 1.746 + format.date "year" output.check 1.747 + new.block 1.748 + note output 1.749 + fin.entry 1.750 +} 1.751 + 1.752 +FUNCTION {misc} 1.753 +{ output.bibitem 1.754 + format.authors output 1.755 + title howpublished new.block.checkb 1.756 + format.title output 1.757 + howpublished new.block.checka 1.758 + howpublished output 1.759 + format.date output 1.760 + new.block 1.761 + note output 1.762 + fin.entry 1.763 + empty.misc.check 1.764 +} 1.765 + 1.766 +FUNCTION {phdthesis} 1.767 +{ output.bibitem 1.768 + format.authors "author" output.check 1.769 + new.block 1.770 + format.btitle "title" output.check 1.771 + new.block 1.772 + "PhD thesis" format.thesis.type output.nonnull 1.773 + school "school" output.check 1.774 + address output 1.775 + format.date "year" output.check 1.776 + new.block 1.777 + note output 1.778 + fin.entry 1.779 +} 1.780 + 1.781 +FUNCTION {proceedings} 1.782 +{ output.bibitem 1.783 + editor empty$ 1.784 + { organization output } 1.785 + { format.editors output.nonnull } 1.786 + if$ 1.787 + new.block 1.788 + format.btitle "title" output.check 1.789 + format.bvolume output 1.790 + format.number.series output 1.791 + address empty$ 1.792 + { editor empty$ 1.793 + { publisher new.sentence.checka } 1.794 + { organization publisher new.sentence.checkb 1.795 + organization output 1.796 + } 1.797 + if$ 1.798 + publisher output 1.799 + format.date "year" output.check 1.800 + } 1.801 + { address output.nonnull 1.802 + format.date "year" output.check 1.803 + new.sentence 1.804 + editor empty$ 1.805 + 'skip$ 1.806 + { organization output } 1.807 + if$ 1.808 + publisher output 1.809 + } 1.810 + if$ 1.811 + new.block 1.812 + note output 1.813 + fin.entry 1.814 +} 1.815 + 1.816 +FUNCTION {techreport} 1.817 +{ output.bibitem 1.818 + format.authors "author" output.check 1.819 + new.block 1.820 + format.title "title" output.check 1.821 + new.block 1.822 + format.tr.number output.nonnull 1.823 + institution "institution" output.check 1.824 + address output 1.825 + format.date "year" output.check 1.826 + new.block 1.827 + note output 1.828 + fin.entry 1.829 +} 1.830 + 1.831 +FUNCTION {unpublished} 1.832 +{ output.bibitem 1.833 + format.authors "author" output.check 1.834 + new.block 1.835 + format.title "title" output.check 1.836 + new.block 1.837 + note "note" output.check 1.838 + format.date output 1.839 + fin.entry 1.840 +} 1.841 + 1.842 +FUNCTION {default.type} { misc } 1.843 + 1.844 +MACRO {jan} {"January"} 1.845 + 1.846 +MACRO {feb} {"February"} 1.847 + 1.848 +MACRO {mar} {"March"} 1.849 + 1.850 +MACRO {apr} {"April"} 1.851 + 1.852 +MACRO {may} {"May"} 1.853 + 1.854 +MACRO {jun} {"June"} 1.855 + 1.856 +MACRO {jul} {"July"} 1.857 + 1.858 +MACRO {aug} {"August"} 1.859 + 1.860 +MACRO {sep} {"September"} 1.861 + 1.862 +MACRO {oct} {"October"} 1.863 + 1.864 +MACRO {nov} {"November"} 1.865 + 1.866 +MACRO {dec} {"December"} 1.867 + 1.868 +MACRO {acmcs} {"ACM Computing Surveys"} 1.869 + 1.870 +MACRO {acta} {"Acta Informatica"} 1.871 + 1.872 +MACRO {cacm} {"Communications of the ACM"} 1.873 + 1.874 +MACRO {ibmjrd} {"IBM Journal of Research and Development"} 1.875 + 1.876 +MACRO {ibmsj} {"IBM Systems Journal"} 1.877 + 1.878 +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} 1.879 + 1.880 +MACRO {ieeetc} {"IEEE Transactions on Computers"} 1.881 + 1.882 +MACRO {ieeetcad} 1.883 + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} 1.884 + 1.885 +MACRO {ipl} {"Information Processing Letters"} 1.886 + 1.887 +MACRO {jacm} {"Journal of the ACM"} 1.888 + 1.889 +MACRO {jcss} {"Journal of Computer and System Sciences"} 1.890 + 1.891 +MACRO {scp} {"Science of Computer Programming"} 1.892 + 1.893 +MACRO {sicomp} {"SIAM Journal on Computing"} 1.894 + 1.895 +MACRO {tocs} {"ACM Transactions on Computer Systems"} 1.896 + 1.897 +MACRO {tods} {"ACM Transactions on Database Systems"} 1.898 + 1.899 +MACRO {tog} {"ACM Transactions on Graphics"} 1.900 + 1.901 +MACRO {toms} {"ACM Transactions on Mathematical Software"} 1.902 + 1.903 +MACRO {toois} {"ACM Transactions on Office Information Systems"} 1.904 + 1.905 +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} 1.906 + 1.907 +MACRO {tcs} {"Theoretical Computer Science"} 1.908 + 1.909 +READ 1.910 + 1.911 +FUNCTION {sortify} 1.912 +{ purify$ 1.913 + "l" change.case$ 1.914 +} 1.915 + 1.916 +INTEGERS { len } 1.917 + 1.918 +FUNCTION {chop.word} 1.919 +{ 's := 1.920 + 'len := 1.921 + s #1 len substring$ = 1.922 + { s len #1 + global.max$ substring$ } 1.923 + 's 1.924 + if$ 1.925 +} 1.926 + 1.927 +FUNCTION {sort.format.names} 1.928 +{ 's := 1.929 + #1 'nameptr := 1.930 + "" 1.931 + s num.names$ 'numnames := 1.932 + numnames 'namesleft := 1.933 + { namesleft #0 > } 1.934 + { nameptr #1 > 1.935 + { " " * } 1.936 + 'skip$ 1.937 + if$ 1.938 + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := 1.939 + nameptr numnames = t "others" = and 1.940 + { "et al" * } 1.941 + { t sortify * } 1.942 + if$ 1.943 + nameptr #1 + 'nameptr := 1.944 + namesleft #1 - 'namesleft := 1.945 + } 1.946 + while$ 1.947 +} 1.948 + 1.949 +FUNCTION {sort.format.title} 1.950 +{ 't := 1.951 + "A " #2 1.952 + "An " #3 1.953 + "The " #4 t chop.word 1.954 + chop.word 1.955 + chop.word 1.956 + sortify 1.957 + #1 global.max$ substring$ 1.958 +} 1.959 + 1.960 +FUNCTION {author.sort} 1.961 +{ author empty$ 1.962 + { key empty$ 1.963 + { "to sort, need author or key in " cite$ * warning$ 1.964 + "" 1.965 + } 1.966 + { key sortify } 1.967 + if$ 1.968 + } 1.969 + { author sort.format.names } 1.970 + if$ 1.971 +} 1.972 + 1.973 +FUNCTION {author.editor.sort} 1.974 +{ author empty$ 1.975 + { editor empty$ 1.976 + { key empty$ 1.977 + { "to sort, need author, editor, or key in " cite$ * warning$ 1.978 + "" 1.979 + } 1.980 + { key sortify } 1.981 + if$ 1.982 + } 1.983 + { editor sort.format.names } 1.984 + if$ 1.985 + } 1.986 + { author sort.format.names } 1.987 + if$ 1.988 +} 1.989 + 1.990 +FUNCTION {author.organization.sort} 1.991 +{ author empty$ 1.992 + { organization empty$ 1.993 + { key empty$ 1.994 + { "to sort, need author, organization, or key in " cite$ * warning$ 1.995 + "" 1.996 + } 1.997 + { key sortify } 1.998 + if$ 1.999 + } 1.1000 + { "The " #4 organization chop.word sortify } 1.1001 + if$ 1.1002 + } 1.1003 + { author sort.format.names } 1.1004 + if$ 1.1005 +} 1.1006 + 1.1007 +FUNCTION {editor.organization.sort} 1.1008 +{ editor empty$ 1.1009 + { organization empty$ 1.1010 + { key empty$ 1.1011 + { "to sort, need editor, organization, or key in " cite$ * warning$ 1.1012 + "" 1.1013 + } 1.1014 + { key sortify } 1.1015 + if$ 1.1016 + } 1.1017 + { "The " #4 organization chop.word sortify } 1.1018 + if$ 1.1019 + } 1.1020 + { editor sort.format.names } 1.1021 + if$ 1.1022 +} 1.1023 + 1.1024 +FUNCTION {presort} 1.1025 +{ type$ "book" = 1.1026 + type$ "inbook" = 1.1027 + or 1.1028 + 'author.editor.sort 1.1029 + { type$ "proceedings" = 1.1030 + 'editor.organization.sort 1.1031 + { type$ "manual" = 1.1032 + 'author.organization.sort 1.1033 + 'author.sort 1.1034 + if$ 1.1035 + } 1.1036 + if$ 1.1037 + } 1.1038 + if$ 1.1039 + " " 1.1040 + * 1.1041 + year field.or.null sortify 1.1042 + * 1.1043 + " " 1.1044 + * 1.1045 + title field.or.null 1.1046 + sort.format.title 1.1047 + * 1.1048 + #1 entry.max$ substring$ 1.1049 + 'sort.key$ := 1.1050 +} 1.1051 + 1.1052 +ITERATE {presort} 1.1053 + 1.1054 +SORT 1.1055 + 1.1056 +STRINGS { longest.label } 1.1057 + 1.1058 +INTEGERS { number.label longest.label.width } 1.1059 + 1.1060 +FUNCTION {initialize.longest.label} 1.1061 +{ "" 'longest.label := 1.1062 + #1 'number.label := 1.1063 + #0 'longest.label.width := 1.1064 +} 1.1065 + 1.1066 +FUNCTION {longest.label.pass} 1.1067 +{ number.label int.to.str$ 'label := 1.1068 + number.label #1 + 'number.label := 1.1069 + label width$ longest.label.width > 1.1070 + { label 'longest.label := 1.1071 + label width$ 'longest.label.width := 1.1072 + } 1.1073 + 'skip$ 1.1074 + if$ 1.1075 +} 1.1076 + 1.1077 +EXECUTE {initialize.longest.label} 1.1078 + 1.1079 +ITERATE {longest.label.pass} 1.1080 + 1.1081 +FUNCTION {begin.bib} 1.1082 +{ preamble$ empty$ 1.1083 + 'skip$ 1.1084 + { preamble$ write$ newline$ } 1.1085 + if$ 1.1086 + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ 1.1087 +} 1.1088 + 1.1089 +EXECUTE {begin.bib} 1.1090 + 1.1091 +EXECUTE {init.state.consts} 1.1092 + 1.1093 +ITERATE {call.type$} 1.1094 + 1.1095 +FUNCTION {end.bib} 1.1096 +{ newline$ 1.1097 + "\end{thebibliography}" write$ newline$ 1.1098 +} 1.1099 + 1.1100 +EXECUTE {end.bib} 1.1101 +
