annotate mume2012/aaai.bst @ 58:a63c438b3f65 tip

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