Annotation of researchv10no/cmd/prefer/styles/newapa, revision 1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.