Annotation of researchv10no/cmd/prefer/styles/newlsa, revision 1.1.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.