|
|
1.1 ! root 1: ### ! 2: ### ieee reference formatting style ! 3: ### ! 4: ! 5: BEGIN { ! 6: PASS = ""; # only one pass thru document ! 7: sortflag = 0; # reference_placement bibliography is not sorted ! 8: STYLE = ieee; ! 9: SKEY = "adt"; ! 10: } ! 11: ! 12: ####################################################### ! 13: # ! 14: # Functions required by general awk script ! 15: # ! 16: ####################################################### ! 17: ! 18: ## ! 19: ## Set author and editor fields ! 20: ## for reference ! 21: ## for possible sorting ! 22: ! 23: func setauthor(b,a) { ! 24: Afull[b,a] = F_MLast(); ! 25: Asort[b] = Asort[b] LastFM()" "; ! 26: } ! 27: ! 28: ! 29: func seteditor(b,a) { ! 30: E[b,a] = F_MLast(); ! 31: Esort[b] = Esort[b] LastFM() " "; ! 32: } ! 33: ! 34: ## ! 35: ## citations ! 36: ## print a citation list ! 37: ## troff superscripted numbers ! 38: ## nroff numbers in square brackets ! 39: ## ! 40: func citations(tpunc) { ! 41: ! 42: seq = "no"; ! 43: sep = ""; ! 44: ! 45: # troff citation ! 46: ! 47: if(nroff == 0) { ! 48: tcite = ""; ! 49: begin_super = "\\^\\s-2\\v'-0.4m'\\f1\\&"; ! 50: end_super = "\\fP\\v'0.4m'\\s+2" ! 51: if(quote(tpunc) || period(tpunc)) ! 52: end_super = end_super "\\ "; ! 53: ! 54: # format the list of citations, putting in commas and hypens ! 55: ! 56: for(i=1; i<=cites; i++) { ! 57: seq = sequence(i,cites); ! 58: if (seq == "in") continue; ! 59: if (seq == "end") { ! 60: sep = "-"; ! 61: seq = "no"; ! 62: } ! 63: tcite = tcite sep makemark(i); ! 64: sep = ",\\ "; ! 65: } ! 66: printf "%s%s%s%s", tpunc, begin_super, tcite, end_super; ! 67: } ! 68: ! 69: # nroff citation ! 70: ! 71: else { ! 72: ncite = "\n"; ! 73: if(quote(tpunc)) { ! 74: ncite = tpunc " "; ! 75: tpunc = "\\ "; ! 76: } ! 77: else if(tpunc == "(") { ! 78: ncite = tpunc; ! 79: tpunc = ""; ! 80: } ! 81: ! 82: # format the list of citations, putting in commas and hypens ! 83: ! 84: for(i=1; i<=cites; i++) { ! 85: seq = sequence(i,cites); ! 86: if (seq == "in") continue; ! 87: if (seq == "end") { ! 88: sep = "-"; ! 89: seq = "no"; ! 90: } ! 91: ncite = ncite sep "[" makemark(i) "]"; ! 92: sep = ", "; ! 93: } ! 94: printf "%s%s", ncite, tpunc; ! 95: } ! 96: } ! 97: ! 98: func quote(punc) { ! 99: if(tpunc == "\"" || tpunc == "'") return 1; ! 100: return 0; ! 101: } ! 102: ! 103: func period(punc) { ! 104: if (tpunc == "." || tpunc == "!" || tpunc == "?") return 1; ! 105: return 0; ! 106: } ! 107: ! 108: ! 109: ## ! 110: ## makemark ! 111: ## return citation mark: identical citations have the same number ! 112: ## ! 113: func makemark(m) { ! 114: return(uniqno[bibptr[m]]); ! 115: } ! 116: ! 117: ! 118: ## ! 119: ## bibindex ! 120: ## print citation mark for the bibliography; ! 121: ## return an index for accessing rest of citation ! 122: ## ! 123: func bibindex(b) { ! 124: printf ".sp .5\n.ti -\\w'" b ".\\ \\ \\ 'u\n"; ! 125: printf b ".\\ \\ \\ " ; ! 126: if (sortflag) return sortorder[b]; ! 127: else return b; ! 128: } ! 129: ! 130: ! 131: ############################################# ! 132: # ! 133: # Reference types ! 134: # ! 135: ############################################ ! 136: ! 137: ! 138: func book(b) { ! 139: punc = ""; ! 140: # authorlist, ! 141: if(authors[b]) { ! 142: authorlist(b); ! 143: punc = ",\n"; ! 144: } ! 145: # italic(title), ! 146: if(title[b]) { ! 147: printf "%s\\f2\\&%s\\f1\\&", punc, title[b]; ! 148: punc = ",\n"; ! 149: # Vol. #, ! 150: if(volstr[b]) ! 151: printf "%s%s", punc, volstr[b]; ! 152: else if(volume[b]) ! 153: printf "%sVol. %s", punc, volume[b]; ! 154: } ! 155: # publisher, ! 156: printf "%s%s", punc, issuer[b] ; ! 157: punc = ",\n"; ! 158: # location, ! 159: if (city[b]) ! 160: printf "%s%s", punc, city[b] ; ! 161: # date, ! 162: printf "%s%s", punc, date[b] ; ! 163: # pages ! 164: if ( pages[b]) { ! 165: if ( pages[b] ~ /[,-]/ ) ! 166: printf "%spp. %s", punc, pages[b]; ! 167: else printf "%sp. %s", punc, pages[b]; ! 168: } ! 169: } ! 170: ! 171: ! 172: func editedbook(b) { ! 173: ! 174: punc = ""; ! 175: # authorlist, Ed., ! 176: if(authors[b]) { ! 177: authorlist(b); ! 178: if(authors[b] <2) ! 179: printf ", Ed."; ! 180: else ! 181: printf ", Eds."; ! 182: punc = ",\n"; ! 183: } ! 184: # italic(title), ! 185: if(title[b]) { ! 186: printf "%s\\f2\\&%s\\f1\\&", punc, title[b]; ! 187: punc = ",\n"; ! 188: # Vol. #, ! 189: if(volstr[b]) ! 190: printf "%s%s", punc, volstr[b]; ! 191: else if(volume[b]) ! 192: printf "%sVol. %s", punc, volume[b]; ! 193: } ! 194: # publisher, ! 195: printf "%s%s", punc, issuer[b] ; ! 196: punc = ",\n"; ! 197: # location, ! 198: if (city[b]) ! 199: printf "%s%s", punc, city[b] ; ! 200: # date, ! 201: printf "%s%s", punc, date[b] ; ! 202: # pages ! 203: if ( pages[b]) { ! 204: if ( pages[b] ~ /[,-]/ ) ! 205: printf "%spp. %s", punc, pages[b]; ! 206: else printf "%sp. %s", punc, pages[b]; ! 207: } ! 208: } ! 209: ! 210: func thesis(b) { ! 211: punc = ""; ! 212: # authorlist, ! 213: if(authors[b]) { ! 214: authorlist(b); ! 215: punc = ",\n"; ! 216: } ! 217: # italic(title), ! 218: if(title[b]) { ! 219: printf "%s\\f2\\&%s\\f1\\&", punc, title[b]; ! 220: punc = ",\n"; ! 221: } ! 222: # thesis, ! 223: printf punc; ! 224: if(reftype[b] == "phdthesis") ! 225: printf "PhD Thesis"; ! 226: else ! 227: printf "Master's Thesis"; ! 228: punc = ",\n"; ! 229: # report number, ! 230: if(report[b]) ! 231: printf "%s%s", punc, report[b]; ! 232: # school, ! 233: printf "%s%s", punc, issuer[b]; ! 234: # date ! 235: printf "%s%s", punc, date[b] ; ! 236: } ! 237: ! 238: func review(b) { ! 239: article(b); ! 240: } ! 241: ! 242: ! 243: func article(b) { ! 244: ! 245: punc = ""; ! 246: # authorlist, ! 247: if(authors[b]) { ! 248: authorlist(b); ! 249: punc = ",\n"; ! 250: } ! 251: # ``Title,'' ! 252: if(title[b]) { ! 253: if(nroff) ! 254: printf "%s\"%s,\"", punc, title[b] ; ! 255: else ! 256: printf "%s``%s,''", punc, title[b] ; ! 257: punc = "\n"; ! 258: } ! 259: # Reviewed title and author ! 260: if(booktitle[b]) { ! 261: printf "%sReview of \\f2\\&%s\\f1\\&", punc, booktitle[b]; ! 262: if(editors[b]) { ! 263: printf " by "; ! 264: editorlist(b); ! 265: } ! 266: if (issuer[b]) { ! 267: printf " %s", issuer[b]; ! 268: } ! 269: printf ",\n"; ! 270: } ! 271: # italics(journal), ! 272: printf "\\f2\\&%s\\f1\\&", journal[b]; ! 273: punc = ",\n"; ! 274: # vol. #, no. #, Pt. # ! 275: if (volstr[b]) ! 276: printf "%s%s", punc, volstr[b] ; ! 277: else if (volume[b]) ! 278: printf "%sVol. %s", punc, volume[b] ; ! 279: if(numstr[b]) ! 280: printf "%s%s", punc, numstr[b]; ! 281: else if (number[b]) ! 282: printf "%sNo. %s", punc, number[b] ; ! 283: if(partstr[b]) ! 284: printf "%s%s", punc, partstr[b]; ! 285: else if (part[b]) ! 286: printf "%sPt. %s", punc, part[b] ; ! 287: # date, ! 288: printf "%s%s", punc, date[b]; ! 289: # pages ! 290: if ( pages[b]) { ! 291: if ( pages[b] ~ /[,-]/ ) ! 292: printf "%spp. %s", punc, pages[b]; ! 293: else printf "%sp. %s", punc,pages[b]; ! 294: } ! 295: } ! 296: ! 297: ! 298: ! 299: func incollection(b) { ! 300: ! 301: punc = ""; ! 302: # authorlist, ! 303: if(authors[b]) { ! 304: authorlist(b); ! 305: punc = ",\n"; ! 306: } ! 307: # ``Title,'' ! 308: if(title[b]) { ! 309: if(nroff) ! 310: printf "%s\"%s,\"\n", punc, title[b] ; ! 311: else ! 312: printf "%s``%s,''\n", punc, title[b] ; ! 313: } ! 314: # in italics(booktitle), ! 315: printf "in \\f2\\&%s\\f1\\&", booktitle[b]; ! 316: punc = ",\n"; ! 317: # Vol. #, ! 318: if(volstr[b]) ! 319: printf "%s%s", punc, volstr[b]; ! 320: else if(volume[b]) ! 321: printf "%sVol. %s", punc, volume[b]; ! 322: # editorlist, eds., ! 323: if(editors[b]) { ! 324: printf punc; ! 325: editorlist(b); ! 326: if (editors[b] == 1) printf ", Ed." ! 327: else if (editors[b] > 1) printf ", Eds." ! 328: } ! 329: # publisher, location, ! 330: printf "%s%s", punc, issuer[b] ! 331: if (city[b]) ! 332: printf ", %s", city[b] ; ! 333: # date, ! 334: printf "%s%s", punc, date[b]; ! 335: # pages ! 336: if ( pages[b]) { ! 337: if ( pages[b] ~ /[,-]/ ) ! 338: printf "%spp. %s", punc,pages[b]; ! 339: else printf "%sp. %s", punc,pages[b]; ! 340: } ! 341: } ! 342: ! 343: ! 344: func inproceedings(b) { ! 345: ! 346: punc = ""; ! 347: # authorlist, ! 348: if(authors[b]) { ! 349: authorlist(b); ! 350: punc = ",\n"; ! 351: } ! 352: # ``Title,'' ! 353: if(title[b]) { ! 354: if(nroff) ! 355: printf "%s\"%s,\"\n", punc, title[b] ; ! 356: else ! 357: printf "%s``%s,''\n", punc, title[b] ; ! 358: } ! 359: # italics(journal), ! 360: printf "\\f2\\&%s\\f1\\&", journal[b]; ! 361: punc = ",\n"; ! 362: # vol. #, no. #, ! 363: if (volstr[b]) ! 364: printf "%s%s", punc, volstr[b] ; ! 365: else if (volume[b]) ! 366: printf "%sVol. %s", punc, volume[b] ; ! 367: if(numstr[b]) ! 368: printf "%s%s", punc, numstr[b]; ! 369: else if (number[b]) ! 370: printf "%sNo. %s", punc, number[b] ; ! 371: if(partstr[b]) ! 372: printf "%s%s", punc, partstr[b]; ! 373: else if (part[b]) ! 374: printf "%sPt. %s", punc, part[b] ; ! 375: # editorlist, eds., ! 376: if(editors[b]) { ! 377: printf punc; ! 378: editorlist(b); ! 379: if (editors[b] == 1) printf ", Ed." ! 380: else if (editors[b] > 1) printf ", Eds." ! 381: } ! 382: # publisher, ! 383: if(issuer[b]) ! 384: if(authors[b] || editors[b]) ! 385: printf "%s%s", punc, issuer[b]; ! 386: # date, ! 387: printf "%s%s", punc, date[b]; ! 388: # pages ! 389: if ( pages[b]) { ! 390: if ( pages[b] ~ /[,-]/ ) ! 391: printf "%spp. %s", punc, pages[b]; ! 392: else printf "%sp. %s", punc, pages[b]; ! 393: } ! 394: } ! 395: ! 396: func proceedings(b) { ! 397: ! 398: punc = ""; ! 399: # authorlist, ! 400: if(authors[b] >0) { ! 401: authorlist(b); ! 402: punc = ",\n"; ! 403: } ! 404: ! 405: # editorlist Ed., ! 406: else if(editors[b]) { ! 407: printf punc; ! 408: editorlist(b); ! 409: if (editors[b] == 1) printf ", Ed." ! 410: else if (editors[b] > 1) printf ", Eds." ! 411: punc = ",\n"; ! 412: } ! 413: # publisher, ! 414: else if(issuer[b]) { ! 415: printf "%s%s", punc, issuer[b]; ! 416: punc = ",\n"; ! 417: } ! 418: # italics(title), ! 419: if(title[b]) { ! 420: printf "%s\\f2\\&%s\\f1\\&", punc,title[b]; ! 421: punc = ",\n"; ! 422: } ! 423: # vol. #, no. #, ! 424: if (volstr[b]) ! 425: printf "%s%s", punc, volstr[b] ; ! 426: else if (volume[b]) ! 427: printf "%sVol. %s", punc, volume[b] ; ! 428: if(numstr[b]) ! 429: printf "%s%s", punc, numstr[b]; ! 430: else if (number[b]) ! 431: printf "%sNo. %s", punc, number[b] ; ! 432: if(partstr[b]) ! 433: printf "%s%s", punc, partstr[b]; ! 434: else if (part[b]) ! 435: printf "%sPt. %s", punc, part[b] ; ! 436: # publisher, ! 437: if(issuer[b]) ! 438: if(authors[b] || editors[b]) ! 439: printf "%s%s", punc, issuer[b]; ! 440: # location, ! 441: if (city[b]) ! 442: printf "%s%s", punc, city[b] ; ! 443: # (date) ! 444: if (date[b]) ! 445: printf "%s(%s)", punc, date[b]; ! 446: } ! 447: ! 448: ! 449: func techreport(b) { ! 450: ! 451: punc = ""; ! 452: # authorlist, ! 453: if(authors[b]) { ! 454: authorlist(b); ! 455: punc = ",\n"; ! 456: } ! 457: # ``Title,'' ! 458: if(title[b]) { ! 459: if(nroff) ! 460: printf "%s\"%s,\"\n", punc, title[b] ; ! 461: else ! 462: printf "%s``%s,''\n", punc, title[b] ; ! 463: } ! 464: # report, ! 465: printf "%s", report[b]; ! 466: punc = ",\n"; ! 467: # publisher, ! 468: if (issuer[b]) printf "%s%s", punc, issuer[b] ; ! 469: # date ! 470: printf "%s%s", punc, date[b] ; ! 471: } ! 472: ! 473: ! 474: func tm(b) { ! 475: ! 476: punc = ""; ! 477: # authorlist, ! 478: if(authors[b]) { ! 479: authorlist(b); ! 480: punc = ",\n"; ! 481: } ! 482: # italics(title), ! 483: if(title[b]) { ! 484: printf "%s\\f2\\&%s\\f1\\&", punc, title[b]; ! 485: punc = ",\n"; ! 486: } ! 487: # tmno, ! 488: printf punc; ! 489: if(rp) ! 490: printf "AT&T Bell Laboratories internal memorandum"; ! 491: else ! 492: printf "%s", tmno[b]; ! 493: punc = ",\n"; ! 494: # date ! 495: printf "%s%s", punc, date[b] ; ! 496: } ! 497: ! 498: ! 499: func manual(b) { ! 500: punc = ""; ! 501: # authorlist, ! 502: if(authors[b] >0) { ! 503: authorlist(b); ! 504: punc = ",\n"; ! 505: } ! 506: # editorlist ed., ! 507: else if(editors[b]) { ! 508: printf punc; ! 509: editorlist(b); ! 510: if (editors[b] == 1) printf ", Ed." ! 511: else if (editors[b] > 1) printf ", Eds." ! 512: punc = ",\n" ! 513: } ! 514: # publisher, ! 515: else if(issuer[b]) { ! 516: printf "%s%s", punc, issuer[b]; ! 517: punc = ",\n"; ! 518: } ! 519: # italic(title), ! 520: if(title[b]) { ! 521: printf "%s\\f2\\&%s\\f1\\&", punc, title[b]; ! 522: punc = ",\n"; ! 523: } ! 524: # Vol. volume, ! 525: if(volstr[b]) ! 526: printf "%s%s", punc, volstr[b]; ! 527: else if(volume[b]) ! 528: printf "%sVol. %s", punc, volume[b]; ! 529: # publisher, ! 530: if(issuer[b]) ! 531: if(authors[b] || editors[b]) { ! 532: printf "%s%s", punc, issuer[b]; ! 533: punc = ",\n"; ! 534: } ! 535: # location ! 536: if (city[b]) ! 537: printf "%s%s", punc, city[b] ; ! 538: # date, ! 539: printf "%s%s", punc, date[b]; ! 540: # pages ! 541: if (pages[b]) { ! 542: if ( pages[b] ~ /[,-]/ ) ! 543: printf "%spp. %s", punc, pages[b]; ! 544: else ! 545: printf "%sp. %s", punc, pages[b]; ! 546: } ! 547: } ! 548: ! 549: func pamphlet(b) ! 550: { ! 551: ! 552: punc = ""; ! 553: # authorlist, ! 554: if(authors[b] >0) { ! 555: authorlist(b); ! 556: punc = ",\n"; ! 557: } ! 558: ! 559: # publisher, ! 560: else if(issuer[b]) { ! 561: printf "%s%s", punc, issuer[b]; ! 562: punc = ",\n"; ! 563: } ! 564: # ``Title,'' ! 565: if(title[b]) { ! 566: if(nroff) { ! 567: printf "%s\"%s", punc, title[b] ; ! 568: punc = ",\"\n"; ! 569: } ! 570: else { ! 571: printf "%s``%s", punc, title[b] ; ! 572: punc = ",''\n"; ! 573: } ! 574: } ! 575: # publisher, ! 576: if(issuer[b]) { ! 577: if(authors[b] || editors[b]) { ! 578: printf "%s%s", punc, issuer[b]; ! 579: punc = ",\n"; ! 580: } ! 581: } ! 582: # location, ! 583: if (city[b]) { ! 584: printf "%s%s", punc, city[b] ; ! 585: punc = ",\n"; ! 586: } ! 587: # date ! 588: if (date[b]) { ! 589: printf "%s%s", punc, date[b]; ! 590: punc = ",\n"; ! 591: } ! 592: } ! 593: ! 594: func default(b) { ! 595: punc = ""; ! 596: # authorlist, ! 597: if(authors[b] >0) { ! 598: authorlist(b); ! 599: punc = ",\n"; ! 600: } ! 601: ! 602: # publisher, ! 603: else if(issuer[b]) { ! 604: printf "%s%s", punc, issuer[b]; ! 605: punc = ",\n"; ! 606: } ! 607: # Title, ! 608: if(title[b]) { ! 609: printf "%s\\f2\\&%s\\f1\\&", punc, title[b] ; ! 610: punc = ",\n"; ! 611: } ! 612: # Vol. volume, ! 613: if(volstr[b]) ! 614: printf "%s%s", punc, volstr[b]; ! 615: else if(volume[b]) ! 616: printf "%sVol. %s", punc, volume[b]; ! 617: # publisher, ! 618: if(issuer[b]) { ! 619: if(authors[b] || editors[b]) { ! 620: printf "%s%s", punc, issuer[b]; ! 621: punc = ",\n"; ! 622: } ! 623: } ! 624: # location, ! 625: if (city[b]) { ! 626: printf "%s%s", punc, city[b] ; ! 627: punc = ",\n"; ! 628: } ! 629: # date, ! 630: if (date[b]) { ! 631: printf "%s%s", punc, date[b]; ! 632: punc = ",\n"; ! 633: } ! 634: # pages ! 635: if (pages[b]) { ! 636: if ( pages[b] ~ /[,-]/ ) ! 637: printf "%spp. %s", punc, pages[b]; ! 638: else ! 639: printf "%sp. %s", punc, pages[b]; ! 640: } ! 641: } ! 642: ! 643: ! 644: ## ! 645: ## authorlist ! 646: ## First ! 647: ## First and Second ! 648: ## First, Second,..., and Last ! 649: ## ! 650: func authorlist(b) { ! 651: if ( authors[b] == 0 ) ; ! 652: else if ( authors[b] == 1 ) { ! 653: printf Afull[b,1] ; ! 654: if(aetal[b]) printf ", et al."; ! 655: } ! 656: else if ( authors[b] == 2 ) printf Afull[b,1] " and " Afull[b,2]; ! 657: else { ! 658: for ( j = 1; j < authors[b]; j++ ) print Afull[b,j] ", "; ! 659: printf "and " Afull[b,authors[b]]; ! 660: } ! 661: } ! 662: ! 663: ! 664: ## ! 665: ## editorlist ! 666: ## First ! 667: ## First and Second ! 668: ## First, Second,..., and Last ! 669: ## ! 670: func editorlist(b) { ! 671: if ( editors[b] == 0 ) ; ! 672: else if ( editors[b] == 1 ) { ! 673: printf E[b,1] ; ! 674: if(eetal[b]) printf ", et al."; ! 675: } ! 676: else if ( editors[b] == 2 ) printf E[b,1] " and " E[b,2]; ! 677: else { ! 678: for ( j = 1; j < editors[b]; j++ ) print E[b,j] ", "; ! 679: printf "and " E[b,editors[b]]; ! 680: } ! 681: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.