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

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

unix.superglobalmegacorp.com

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