< ../ADM/defns <../index/defns all:V: index.out pg: index.out count index.ms index.out spell:VQ: dospell index.ms lp: index.out $LP $newprereq && touch $target index.out:D: index.ms $PREFER $prereq | pic | troff -mpm > $target index:V: touch index.ind pindex:V: touch index.ind PAPERS=`cd /usr/vol2;echo [a-z]*` INDEX=${PAPERS:%=%.index} incindex:V: $INDEX %.index:VQ: cd ../$stem; mk index PINDEX=${PAPERS:%=%.pindex} pincindex:V: $PINDEX %.pindex:VQ: cd ../$stem; mk pindex restart:V: for i in ../[a-z]* do cd $i mk index done sindex:VQ: wc sindex awk ' /^\.XX/ { if($2 ~ /[a-z]/){ name=$2 first=$3 str = "..\/" $4 ".pg" getline <str last=$1 + first -1 print name " " first " " last close(str) } }' ../contents/contents.ms >contents sed -e 's/\\f(..//g' -e 's/\\f[a-z0-9A-Z]//g' -e 's/\\em//' -e 's/ ,/,/' -e 's/\\\&//g' -e 's/,/ /' -e 's/^ //' ../[a-z]*/*.ind|sort -f| awk ' BEGIN { while((getline<"contents") > 0){ names[$1] = $2 last[$1] = $3 } FS=" " mult = .2 } {if($1 == term){ ck = global = substr($2,2,index($2,",")-2) if(ck in names){ sub(/^ /, " \\fI", $2) sub(/,/,"\\fP,", $2) control = 6 } else control=0 if($2 ~ /[A-Z_$][A-Z_$][A-Z_$0-9& ]*/){ if($2 !~ /\\s/) control += 8*gsub(/[A-Z_$][A-Z_$][A-Z_$0-9& ]*/,"\\s-2&\\s+2") } sub(/^ /,"",$2) if(NF == 3){ rside = ckcw($2,0,$NF) if(global in names){ if( $3~ /[gGPR]/) printit(" \\fI" global "\\fP, " names[global] "-" last[global],1,control) else printit(" " $2, 1, control) next } } else rside = $2 printit(" " rside, 1, control) #removed space } else { term = $1 control=0 if(term in names){ newt="\\fI" term "\\fP, " names[term] "-" last[term] printit(newt, 0, 0) if($2 ~ /[A-Z_$][A-Z_$][A-Z_$0-9& ]*/){ if($2 !~ /\\s/)control=8*gsub(/[A-Z_$][A-Z_$][A-Z_$0-9& ]*/,"\\s-2&\\s+2") } sub(/^ /,"",$2) if(NF == 3) rside = ckcw($2,0,$NF) else rside = $2 printit(" " rside, 1, control) #removed space } else { if($1 ~ /[A-Z_$][A-Z_$][A-Z_$0-9& ]*/){ if($1 !~ /\\s/)control=8*gsub(/[A-Z_$][A-Z_$][A-Z_$0-9& ]*/,"\\s-2&\\s+2") } lside = $1 if(NF == 3){ lside = ckcw($1,1,$NF) if($NF ~ /[gGPR]/){ r = substr($2,2,index($2,",")-2) if(r in names ){ printit(lside ", \\fI" r "\\fP, " names[r] "-" last[r],0,control) next } else { print "term not in names:" r|"cat 1>&2" sub(/ ./,"") } } } sub(",","\\fP,",$2) printit(lside ",\\fI" $2, 0, control) } }} function ckcw(rterm,first,code){ if(rterm ~ /^-/){ sub(/^-/,"\\(em",rterm) control += 3 } if(rterm ~ /^\./){ sub(/^\./,"\\\\&&",rterm) control += 2 } if(code ~ /[GcS]/){ if(first)rterm = addcw( rterm,0) else { control -= length(rterm)*mult rterm = "\\f(CW" rterm sub(/,/,"\\fP,",rterm) } } else if(code ~ /[pPf]/){ control -= length(rterm)*mult rterm = "\\f(CW" rterm sub(/ /,"\\fP ", rterm) } else{ n=split(rterm, arr, " ") if(code ~ /y/)rterm = addcw( arr[1],0) else rterm = arr[1] for(i=2;i<=n;i++){ if(i==2 && code~/[rRz]/)rterm = rterm addcw( arr[i],1) else if(i==3 && code~/[qy]/)rterm=rterm addcw( arr[i],1) else if(i==4 && code~/[txz]/)rterm=rterm addcw( arr[i],1) else if(i==6 && code~/x/)rterm=rterm addcw( arr[i],1) else rterm = rterm " " arr[i] } } if(code ~ /[xyz]/)control += 16 control += 8 return(rterm) } function addcw(term,adds,hidden){ control -= length(term)*mult hidden = "\\f(CW" term "\\fP" if(adds) hidden = " " hidden return(hidden) } function printit(line, space, caps){ limit=46+caps if(space == 0)limit += 2 if(length(line)< limit)print line else { n=split(line, a, ",") if(length(a[1])>=limit){ m=split(a[1],b," ") nline=b[1] if(space)nline = " " b[1] for(i=2;i<=m;i++){ nline = nline " " b[i] if(length(nline)>=limit){ print nline nline = " " } } for(i=2; i<=n;i++){ if(nline == " ")nline = nline a[i] else nline = nline "," a[i] } print nline return } nline=a[1] for(i=2;i<=n;i++){ nline = nline "," a[i] if(length(nline)>= limit-6){ if(i < n)print nline "," else print nline if(i < n)nline = " " a[++i] else nline = "" } } if(length(nline) > 0)print nline } }' |finddups >sindex wc sindex # troff -ms sindex.ms >tr.out