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

1.1     ! root        1: ###
        !             2: ### acm reference formatting style
        !             3: ###
        !             4: 
        !             5: BEGIN  {
        !             6:        PASS="%TWOPASS";        # only one pass thru document
        !             7:        sortflag = 1;           # reference_placement bib is sortedone
        !             8:        STYLE = "acm";
        !             9:        SKEY = "atd";
        !            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: 
        !            28: func setauthor(b,a) {
        !            29: 
        !            30:        Afull[b,a] = LastFM();
        !            31:        Asort[b] = Asort[b] Afull[b,a] " ";
        !            32: }
        !            33: 
        !            34: func seteditor(b,a) {
        !            35:        E[b,a] = FMLast();
        !            36:        Efull[b,a] = LastFM();
        !            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:        seq = "no";
        !            48:        punc = "\n";
        !            49:        if(lastpunc == "\"" || lastpunc == "'") {
        !            50:                punc = lastpunc " ";
        !            51:                lastpunc = "\\ ";
        !            52:        }
        !            53:        if(lastpunc == "(") {
        !            54:                punc = lastpunc;
        !            55:                lastpunc = "";
        !            56:        }
        !            57:        for(i=1; i<=cites; i++) {
        !            58:                cn = bibptr[i]
        !            59:                seq = sequence(i,cites);
        !            60:                if (seq == "in") continue;
        !            61:                if (seq == "end") {
        !            62:                        punc = "-";
        !            63:                        seq = "no";
        !            64:                }
        !            65:                printf "%s[", punc;
        !            66:                if (pre_text[cn]) printf "%s ", pre_text[cn];
        !            67:                printf "%s", makemark(i);
        !            68:                if(post_text[cn]) {
        !            69:                        if (is_punc(substr(post_text[cn],1,1)) == 0) print "";
        !            70:                        printf "%s", post_text[cn];
        !            71:                }
        !            72:                printf "]";
        !            73:                punc = ", ";
        !            74:        }
        !            75:        printf lastpunc;
        !            76: }
        !            77: 
        !            78: func is_punc(p)
        !            79: {
        !            80:        if(p == ",") return 1;
        !            81:        if(p == ".") return 1;
        !            82:        if(p == ";") return 1;
        !            83:        return 0;
        !            84: }
        !            85: 
        !            86: 
        !            87: ##
        !            88: ## makemark
        !            89: ##     return citation mark: identical citations have the same number
        !            90: ##
        !            91: func makemark(m) {
        !            92:        return(inverse[uniqno[bibptr[m]]]);
        !            93: }
        !            94: 
        !            95: 
        !            96: 
        !            97: ##
        !            98: ## bibindex
        !            99: ##     print citation mark for the bibliography;
        !           100: ##     return an index for accessing rest of citation
        !           101: ##
        !           102: func bibindex(i) {
        !           103:        print ".in \\w'999.\\ 'u"
        !           104:        printf ".sp .5\n.ti -\\w'%s.\\ 'u\n",i;
        !           105:        printf "%s.\\ ", i ;
        !           106:        if(sortflag) return sortorder[i];
        !           107:        else return i;
        !           108: }
        !           109: 
        !           110: 
        !           111: 
        !           112: #############################################
        !           113: #
        !           114: # Reference types
        !           115: #
        !           116: ############################################
        !           117: 
        !           118: 
        !           119: func book(b) {
        !           120:        # authorlist
        !           121:                        if(authors[b]) {
        !           122:                                printfull(b);
        !           123:                                printf "\n";
        !           124:                        }
        !           125:        # italic title.
        !           126:                        if(title[b])
        !           127:                                printf "\\f2\\&%s\\f1\\&.\n", title[b];
        !           128:        # Vol. #.
        !           129:                        if (volstr[b])
        !           130:                                printf "%s.\n", volstr[b] ;
        !           131:                        else if (volume[b])
        !           132:                                printf "Vol. %s.\n", volume[b] ;
        !           133:        # publisher, location
        !           134:                        printf "%s", issuer[b] ;
        !           135:                        punc = ",\n";
        !           136:                        if (city[b]) printf ", %s", city[b] ;
        !           137:        # date
        !           138:                        printf punc date[b] ;
        !           139: }
        !           140: 
        !           141: func editedbook(b) {
        !           142: 
        !           143:        # authorlist
        !           144:                        if(authors[b]) {
        !           145:                                printfull(b);
        !           146:                                if(authors[b] <2)
        !           147:                                        printf ", Ed.\n";
        !           148:                                else
        !           149:                                        printf ", Eds.\n";
        !           150:                        }
        !           151:        # italic title.
        !           152:                        if(title[b])
        !           153:                                printf "\\f2\\&%s\\f1\\&.\n", title[b];
        !           154:        # Vol. #.
        !           155:                        if (volstr[b])
        !           156:                                printf "%s.\n", volstr[b] ;
        !           157:                        else if (volume[b])
        !           158:                                printf "Vol. %s.\n", volume[b] ;
        !           159:        # publisher, location
        !           160:                        printf "%s", issuer[b] ;
        !           161:                        if (city[b]) printf ", %s", city[b] ;
        !           162:        # date
        !           163:                        printf ",\n%s", date[b] ;
        !           164: }
        !           165: 
        !           166: 
        !           167: 
        !           168: func incollection(b) {
        !           169: 
        !           170:        # Authorlist
        !           171:                        if(authors[b]) {
        !           172:                                printfull(b);
        !           173:                                printf "\n";
        !           174:                        }
        !           175:        # Title.
        !           176:                        if(title[b])
        !           177:                                printf "%s.\n", title[b] ;
        !           178:        # in italics booktitle,
        !           179:                        printf "In \\f2\\&%s\\f1\\&,\n", booktitle[b];
        !           180:        # Vol. #,
        !           181:                        if (volstr[b])
        !           182:                                printf "%s,\n", volstr[b] ;
        !           183:                        else if (volume[b])
        !           184:                                printf "Vol. %s,\n", volume[b] ;
        !           185:        # editorlist Ed.
        !           186:                        if (editors[b]) {
        !           187:                                editorlist(b);
        !           188:                                if (editors[b] == 1) printf ", Ed.\n"
        !           189:                                else if (editors[b] > 1) printf ", Eds.\n"
        !           190:                        }
        !           191:        # publisher, location
        !           192:                        printf "%s", issuer[b] ;
        !           193:                        if (city[b]) printf ", %s", city[b] ;
        !           194:        # date,
        !           195:                        printf ",\n%s", date[b] ;
        !           196:        # pages,
        !           197:                        if ( pages[b]) {
        !           198:                                if ( pages[b] ~ /[,-]/ )
        !           199:                                        printf ",\npp. %s", pages[b];
        !           200:                                else printf ",\np. %s", pages[b];
        !           201:                        }
        !           202: }
        !           203: 
        !           204: func thesis(b) {
        !           205: 
        !           206:        # authorlist
        !           207:                        if(authors[b]) {
        !           208:                                printfull(b);
        !           209:                                printf "\n";
        !           210:                        }
        !           211:        # italic title.
        !           212:                        if(title[b])
        !           213:                                printf "%s.\n", title[b];
        !           214:        # thesis, publisher, 
        !           215:                        if(reftype[b] == "phdthesis")
        !           216:                                printf "PhD Thesis, %s", issuer[b];
        !           217:                        else if(reftype[b] == "mastersthesis")
        !           218:                                printf "Master's Thesis, %s", issuer[b];
        !           219: 
        !           220:        # date
        !           221:                        printf ",\n%s", date[b] ;
        !           222: }
        !           223: 
        !           224: 
        !           225: 
        !           226: func review(b) {
        !           227:        article(b);
        !           228: }
        !           229: 
        !           230: func article(b) {
        !           231: 
        !           232:        # authorlist
        !           233:                        if(authors[b]) {
        !           234:                                printfull(b);
        !           235:                                printf "\n";
        !           236:                                }
        !           237:        # title.
        !           238:                        if(title[b])
        !           239:                                printf "%s.\n", title[b] ;
        !           240:        # review
        !           241:                        if(booktitle[b]) {
        !           242:                                printf "Review of \\f2\\&%s\\f1\\&", booktitle[b];
        !           243:                                if(editors[b]) {
        !           244:                                        printf " by "
        !           245:                                        editorlist(b);
        !           246:                                }
        !           247:                                if (issuer[b]) {
        !           248:                                        printf " %s", issuer[b];
        !           249:                                }
        !           250:                                printf ".\n";
        !           251:                        }
        !           252:        # italics journal
        !           253:                        printf "\\f2\\&%s\\f1\\&", journal[b];
        !           254:        # italics volume,
        !           255:                        if (volstr[b])
        !           256:                                printf " \\f2\\&%s\\f1\\&", volstr[b] ;
        !           257:                        else if (volume[b])
        !           258:                                printf " \\f2\\&%s\\f1\\&", volume[b] ;
        !           259:        # number
        !           260:                        if(numstr[b])
        !           261:                                printf ", %s", numstr[b];
        !           262:                        else if (number[b])
        !           263:                                printf ", %s", number[b] ;
        !           264:        # part
        !           265:                        if(partstr[b])
        !           266:                                printf ", %s", partstr[b];
        !           267:                        else if (part[b])
        !           268:                                printf ", Pt. %s", part[b] ;
        !           269:        # date
        !           270:                        printf " (%s)", date[b] ;
        !           271:        # pages,
        !           272:                        if ( pages[b]) printf ", %s", pages[b];
        !           273: }
        !           274: 
        !           275: 
        !           276: 
        !           277: 
        !           278: func inproceedings(b) {
        !           279:        # authorlist
        !           280:                        if(authors[b]) {
        !           281:                                printfull(b);
        !           282:                                printf "\n";
        !           283:                        }
        !           284:        # Title.
        !           285:                        if(title[b])
        !           286:                                printf "%s.\n", title[b] ;
        !           287:        # italics Journal,
        !           288:                        printf "In \\f2\\&%s\\f1\\&", journal[b];
        !           289:        # volume,
        !           290:                        if (volstr[b])
        !           291:                                printf ", %s", volstr[b] ;
        !           292:                        else if (volume[b])
        !           293:                                printf ", Vol. %s", volume[b] ;
        !           294:                        if(numstr[b])
        !           295:                                printf ", %s", numstr[b];
        !           296:                        else if (number[b])
        !           297:                                printf ", No. %s", number[b] ;
        !           298:                        if(partstr[b])
        !           299:                                printf ", %s", partstr[b];
        !           300:                        else if (part[b])
        !           301:                                printf ", Pt. %s", part[b] ;
        !           302:        # editorlist Ed.
        !           303:                        if(editors[b]) {
        !           304:                                printf ",\n";
        !           305:                                editorlist(b);
        !           306:                                if (editors[b] == 1) printf ", Ed."
        !           307:                                else if (editors[b] > 1) printf ", Eds."
        !           308:                        }
        !           309:        # organization,
        !           310:                        if(issuer[b])
        !           311:                                printf ", %s", issuer[b];
        !           312:        # location,
        !           313:                        if(city[b])
        !           314:                                printf ", %s", city[b];
        !           315:        # date,
        !           316:                        printf ", %s", date[b];
        !           317:        # pages,
        !           318:                        if ( pages[b]) {
        !           319:                                if ( pages[b] ~ /[,-]/ )
        !           320:                                        printf ", pp. %s", pages[b];
        !           321:                                else printf ", p. %s", pages[b] ;
        !           322:                        }
        !           323: }
        !           324: 
        !           325: func proceedings(b) {
        !           326:                        punc = "";
        !           327:        # authorlist
        !           328:                        if(authors[b] >0) {
        !           329:                                authorlist(b);
        !           330:                                punc = "\n";
        !           331:                        }
        !           332:                                
        !           333:        # editorlist Ed.
        !           334:                        else if(editors[b] > 0) {
        !           335:                                printf punc;
        !           336:                                editorlist(b);
        !           337:                                if (editors[b] == 1) printf ", Ed."
        !           338:                                else if (editors[b] > 1) printf ", Eds."
        !           339:                                punc = "\n";
        !           340:                        }
        !           341:        # publisher.
        !           342:                        else if(issuer[b]) {
        !           343:                                printf "%s%s", punc, issuer[b];
        !           344:                                punc = ".\n";
        !           345:                        }
        !           346:        # italics(title),
        !           347:                        if(title[b]) {
        !           348:                                printf "%s\\f2\\&%s\\f1\\&", punc,title[b];
        !           349:                                punc = ".\n";
        !           350:                                if(substr(title[b],length(title[b]),1) == ".")
        !           351:                                        punc = "\n";
        !           352:        
        !           353:        # volume, number, part.
        !           354:                                if (volstr[b])
        !           355:                                        printf ", %s", volstr[b] ;
        !           356:                                else if (volume[b])
        !           357:                                        printf ", Vol. %s", volume[b] ;
        !           358:                                if(numstr[b])
        !           359:                                        printf ", %s", numstr[b];
        !           360:                                else if (number[b])
        !           361:                                        printf ", No. %s", number[b] ;
        !           362:                                if(partstr[b])
        !           363:                                        printf ", %s", partstr[b];
        !           364:                                else if (part[b])
        !           365:                                        printf ", Pt. %s", part[b] ;
        !           366:                        }
        !           367:        # publisher,
        !           368:                        if(issuer[b])
        !           369:                                if(authors[b] || editors[b]) {
        !           370:                                        printf "%s%s", punc, issuer[b];
        !           371:                                        punc = ",\n";
        !           372:                                }
        !           373:        # location,
        !           374:                        if (city[b]) {
        !           375:                                printf "%s%s", punc, city[b] ;
        !           376:                                punc = ",\n";
        !           377:                        }
        !           378:        # date
        !           379:                        if (date[b])
        !           380:                                printf "%s%s", punc, date[b];
        !           381: }
        !           382: 
        !           383: func techreport(b) {
        !           384: 
        !           385:        # authorlist
        !           386:                        if(authors[b]) {
        !           387:                                printfull(b);
        !           388:                                printf "\n";
        !           389:                        }
        !           390:        # title.
        !           391:                        if(title[b])
        !           392:                                printf "%s.\n", title[b];
        !           393:        # report number,
        !           394:                        printf report[b] 
        !           395:        # publisher,
        !           396:                        if (issuer[b]) printf ",\n%s", issuer[b] ;
        !           397:        # date
        !           398:                        printf ",\n%s", date[b] ;
        !           399: }
        !           400: 
        !           401: func tm(b) {
        !           402: 
        !           403:        # authorlist
        !           404:                        if(authors[b]) {
        !           405:                                printfull(b);
        !           406:                                printf "\n";
        !           407:                        }
        !           408:        # title.
        !           409:                        if(title[b])
        !           410:                                printf "%s.\n", title[b];
        !           411:        # report number,
        !           412:                        if(rp)
        !           413:                                printf "AT&T Bell Laboratories internal memorandum";
        !           414:                        else
        !           415:                                printf tmno[b] 
        !           416:        # date
        !           417:                        printf ",\n%s", date[b] ;
        !           418: }
        !           419: 
        !           420: 
        !           421: func manual(b) {
        !           422:                        punc = "";
        !           423:        # authorlist
        !           424:                        if(authors[b] >0) {
        !           425:                                printfull(b);
        !           426:                                punc = "\n";
        !           427:                        }
        !           428:        # editorlist Ed.
        !           429:                        else if(editors[b]) {
        !           430:                                printf punc;
        !           431:                                printedfull(b);
        !           432:                                if (editors[b] == 1) printf ", Ed."
        !           433:                                else if (editors[b] > 1) printf ", Eds."
        !           434:                                punc = "\n";
        !           435:                        }
        !           436:        # publisher
        !           437:                        else if(issuer[b]) {
        !           438:                                printf "%s%s", punc, issuer[b];
        !           439:                                punc = ".\n";
        !           440:                        }
        !           441:        # title,
        !           442:                        if(title[b]) {
        !           443:                                printf "%s\\f2\\&%s\\f1\\&" ,punc, title[b];
        !           444:                                punc = ".\n";
        !           445:        # Vol. volume,
        !           446:                                if (volstr[b])
        !           447:                                        printf ", %s", volstr[b] ;
        !           448:                                else if (volume[b])
        !           449:                                        printf ", Vol. %s", volume[b] ;
        !           450:                        }
        !           451:        # publisher
        !           452:                        if(issuer[b]) {
        !           453:                                if(authors[b] || editors[b]) {
        !           454:                                        printf "%s%s", punc, issuer[b];
        !           455:                                        punc = ", ";
        !           456:                                }
        !           457:                        }
        !           458:        # location
        !           459:                        if (city[b]) {
        !           460:                                printf "%s%s", punc, city[b] ;
        !           461:                                punc = ", ";
        !           462:                        }
        !           463:        # date
        !           464:                        printf "%s%s", punc, date[b];
        !           465: }
        !           466: 
        !           467: func pamphlet(b) {
        !           468:        default(b);
        !           469: }
        !           470: 
        !           471: func default(b) {
        !           472:                        punc = "";
        !           473:        # authorlist
        !           474:                        if(authors[b] >0) {
        !           475:                                printfull(b);
        !           476:                                punc = "\n";
        !           477:                        }
        !           478:                                
        !           479:        # publisher.
        !           480:                        else if(issuer[b]) {
        !           481:                                printf "%s%s", punc, issuer[b];
        !           482:                                punc = ".\n";
        !           483:                        }
        !           484:        # title,
        !           485:                        if (title[b]) {
        !           486:                                printf "%s%s" ,punc, title[b];
        !           487:                                punc = ".\n";
        !           488:                        }
        !           489:        # volume,
        !           490:                        if(volstr[b]) {
        !           491:                                printf ", %s", volstr[b];
        !           492:                        }
        !           493:                        else if (volume[b]) {
        !           494:                                printf ", Vol. %s", punc, volume[b] ;
        !           495:                        }
        !           496:        # publisher,
        !           497:                        if(issuer[b]) {
        !           498:                                printf "%s%s", punc, issuer[b];
        !           499:                                punc = ", ";
        !           500:                        }
        !           501:        # location,
        !           502:                        if (city[b]) {
        !           503:                                printf "%s%s", punc, city[b] ;
        !           504:                                punc = ", ";
        !           505:                        }
        !           506:        # date,
        !           507:                        if (date[b]) {
        !           508:                                printf "%s%s", punc, date[b];
        !           509:                                punc = ", ";
        !           510:                        }
        !           511:        # pages
        !           512:                        if (pages[b]) {
        !           513:                                if ( pages[b] ~ /[,-]/ )
        !           514:                                        printf "%spp. %s", punc, pages[b];
        !           515:                                else
        !           516:                                        printf "%sp. %s", punc, pages[b];
        !           517:                        }
        !           518: }
        !           519: 
        !           520: 
        !           521: 
        !           522: 
        !           523: 
        !           524: 
        !           525: # Author, First
        !           526: # Author, First and Second Author
        !           527: # Author, First, Second Author, and Remaining Authors
        !           528: 
        !           529: func printfull(b) {                    
        !           530:        if ( authors[b] == 0 ) ;
        !           531:        else if ( authors[b] == 1 ) {
        !           532:                printf  Afull[b,1] ;
        !           533:                if(aetal[b]) printf ", et al.";
        !           534:        }
        !           535:        else if ( authors[b] == 2 ) printf  Afull[b,1] " and " Afull[b,2];
        !           536:        else {
        !           537:                for ( j = 1; j < authors[b]; j++ ) printf Afull[b,j] ", ";
        !           538:                printf "and " Afull[b,authors[b]];
        !           539:        }
        !           540: }
        !           541: func printedfull(b) {                  
        !           542:        if ( editors[b] == 0 ) ;
        !           543:        else if ( editors[b] == 1 ) {
        !           544:                printf  Efull[b,1] ;
        !           545:                if(eetal[b]) printf ", et al.";
        !           546:        }
        !           547:        else if ( editors[b] == 2 ) printf  Efull[b,1] " and " Efull[b,2];
        !           548:        else {
        !           549:                for ( j = 1; j < editors[b]; j++ ) printf Efull[b,j] ", ";
        !           550:                printf "and " Efull[b,editors[b]];
        !           551:        }
        !           552: }
        !           553: 
        !           554: func editorlist(b) {                   
        !           555:        if ( editors[b] == 0 ) ;
        !           556:        else if ( editors[b] == 1 ) printf E[b,1] ;
        !           557:        else if ( editors[b] == 2 ) printf E[b,1] " and " E[b,2];
        !           558:        else {
        !           559:                for ( j = 1; j < editors[b]; j++ ) printf E[b,j] ", ";
        !           560:                printf "and " E[b,editors[b]];
        !           561:        }
        !           562: }

unix.superglobalmegacorp.com

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