|
|
1.1 root 1: < ../ADM/defns
2: <../index/defns
3:
4: all:V: index.out
5:
6: pg: index.out
7: count index.ms index.out
8:
9: spell:VQ:
10: dospell index.ms
11:
12: lp: index.out
13: $LP $newprereq && touch $target
14:
15: index.out:D: index.ms
16: $PREFER $prereq | pic | troff -mpm > $target
17:
18: index:V:
19: touch index.ind
20: pindex:V:
21: touch index.ind
22:
23: PAPERS=`cd /usr/vol2;echo [a-z]*`
24: INDEX=${PAPERS:%=%.index}
25: incindex:V: $INDEX
26:
27: %.index:VQ:
28: cd ../$stem; mk index
29: PINDEX=${PAPERS:%=%.pindex}
30: pincindex:V: $PINDEX
31:
32: %.pindex:VQ:
33: cd ../$stem; mk pindex
34:
35: restart:V:
36: for i in ../setup ../snocone ../spin ../streams ../[t-z]*
37: do
38: cd $i
39: mk index
40: done
41:
42: sindex:VQ:
43: wc sindex
44: awk '
45: /^\.XX/ {
46: if($2 ~ /[a-z]/){
47: name=$2
48: first=$3
49: str = "..\/" $4 ".pg"
50: getline <str
51: last=$1 + first -1
52: print name " " first " " last
53: close(str)
54: }
55: }' ../contents/contents.ms >contents
56: 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/^ //' -e 's/ / /' ../[a-z]*/*.ind|sed 's/ \([^A-Za-z]\)/ \1/'|sort -f|sed -e 's/ / /' -e 's/\b//'|
57: awk '
58: #single
59: #s
60: #Sfor cw
61: #p for 1cw
62: #r for 2cw
63: #t for 4cw
64: #q for 3cw
65: #x for 4&6
66: #y for 1&3
67: #z for 2&4
68: #Z for 3&5
69: #Y for 1,2,&4
70: #
71: #global
72: #g
73: #G for CW
74: #P for 1cw
75: #R for 2cw
76: #
77: #c cw
78: #f 1st cw
79: #C paper name to cw
80: BEGIN {
81: while((getline<"contents") > 0){
82: names[$1] = $2
83: last[$1] = $3
84: }
85: FS=" "
86: }
87: {
88: junk=$0
89: caps=gsub(/[A-HJ-Z]/,"",junk)
90: constant=0
91: control=0
92: if($1 == term){
93: ck = global = substr($2,2,index($2,",")-2)
94: if(ck in names && ((NF>2 && $NF !~ /C/)||NF < 3)){
95: sub(/^ /, " \\fI", $2)
96: sub(/,/,"\\fP,", $2)
97: }
98: if($2 ~ /[A-Z_$][A-Z_][A-Z_$0-9& ]*/){
99: if($2 !~ /[a-z]/)caps = caps/2
100: control=8*gsub(/[A-Z_$][A-Z_$][A-Z_$0-9& ]*/,"\\s-2&\\s+2")
101: }
102: sub(/^ /,"",$2)
103: if(NF == 3){
104: rside = ckcw($2,0,$NF)
105: if(global in names){
106: if( $3~ /[gGPR]/)
107: printit(" \\fI" global "\\fP, " names[global] "-" last[global],1,control)
108: else if($2 ~ /\\fI/)printit(" " $2, 1, control)
109: else printit(" " rside, 1, control)
110: next
111: }
112: }
113: else rside = $2
114: printit(" " rside, 1, control) #removed space
115: }
116: else {
117: term = $1
118: control=0
119: if(hadamatch){
120: printf("\n")
121: }
122: if(term in names){
123: if(!hadamatch)printf("\n")
124: hadamatch=1
125: newt="\\fI" term "\\fP, " names[term] "-" last[term]
126: printit(newt, 0, 0)
127: if($2 ~ /[A-Z_$][A-Z_$][A-Z_$0-9& ]*/){
128: if($2 !~ /[a-z]/)caps /= 2
129: control=8*gsub(/[A-Z_$][A-Z_$][A-Z_$0-9& ]*/,"\\s-2&\\s+2")
130: }
131: sub(/^ /,"",$2)
132: if(NF == 3)
133: rside = ckcw($2,0,$NF)
134: else rside = $2
135: printit(" " rside, 1, control) #removed space
136: }
137: else {
138: hadamatch=0
139: if($1 ~ /[A-Z_$][A-Z_$][A-Z_$0-9& ]*/){
140: control=8*gsub(/[A-Z_$][A-Z_$][A-Z_$0-9& ]*/,"\\s-2&\\s+2")
141: }
142: lside = $1
143: if(NF == 3){
144: lside = ckcw($1,1,$NF)
145: if($NF ~ /[gGPR]/){
146: r = substr($2,2,index($2,",")-2)
147: if(r in names ){
148: control += 6
149: printit(lside ", \\fI" r "\\fP, " names[r] "-" last[r],0,control)
150: next
151: }
152: else {
153: print "term not in names:" r|"cat 1>&2"
154: sub(/ ./,"")
155: }
156: }
157: }
158: control += 6
159: sub(",","\\fP,",$2)
160: printit(lside ",\\fI" $2, 0, control)
161: }
162: }}
163: function ckcw(rterm,first,code){
164: constant=0
165: savit=rterm
166: if(rterm ~ /^-/){
167: control += 2
168: sub(/^-/,"\\(em",rterm)
169: }
170: if(rterm ~ /^\./){
171: control += 2
172: sub(/^\./,"\\\\&&",rterm)
173: }
174: if(code ~ /[gs]/)return(rterm)
175: if(code ~ /[GcSC]/){
176: if(first)rterm = addit(rterm)
177: else {
178: constant = index(rterm,",")-1
179: if(rterm ~ /s[-+]2/){
180: constant -= 8
181: gsub(/s\+2/,"s+1", rterm)
182: gsub(/s\-2/,"s-1", rterm)
183: rterm = "\\s-1\\f(CW" rterm
184: sub(/,/,"\\fP\\s+1,",rterm)
185: }
186: else {
187: rterm = "\\s-1\\f(CW" rterm
188: sub(/,/,"\\fP\\s+1,",rterm)
189: }
190: }
191: }
192: else if(code ~ /[pPf]/){
193: constant = index(rterm," ")-1
194: if(rterm ~ /s[-+]2/){
195: constant -= 8
196: gsub(/s\+2/,"s+1", rterm)
197: gsub(/s\-2/,"s-1", rterm)
198: rterm = "\\s-1\\f(CW" rterm
199: sub(/ /,"\\fP\\s+1 ", rterm)
200: }
201: else {
202: rterm = "\\s-1\\f(CW" rterm
203: sub(/ /,"\\fP\\s+1 ", rterm)
204: }
205: }
206: else{
207: n=split(rterm, arr, " ")
208: if(code ~ /[Yy]/)rterm = addit(arr[1])
209: else rterm = arr[1]
210: for(i=2;i<=n;i++){
211: if(i==2 && code~/[rRzY]/)rterm = rterm " " addit(arr[i])
212: else if(i==3 && code~/[qyZ]/)rterm=rterm " " addit(arr[i])
213: else if(i==4 && code~/[txzY]/)rterm=rterm " " addit(arr[i])
214: else if(i==5 && code~/[Z]/)rterm=rterm " " addit(arr[i])
215: else if(i==6 && code~/x/)rterm=rterm " " addit(arr[i])
216: else {
217: if(arr[i] ~ /s\+2/)sub(/s\+2/,"s+1",arr[i])
218: rterm = rterm " " arr[i]
219: }
220: }
221: }
222: if(code ~ /[xyz]/)control+=16
223: control += 16
224: return(rterm)
225: }
226: function addit(string){
227: constant += length(string)
228: if(string ~ /s[-+]2/){
229: constant -= 8
230: gsub(/s\+2/,"s+1", string)
231: gsub(/s\-2/,"s-1", string)
232: return("\\s-1\\f(CW" string "\\fP\\s+1")
233: }
234: else return("\\s-1\\f(CW" string "\\fP\\s+1")
235: }
236: function printit(line, space, control){
237: if(!constant)
238: limit=43+control - caps*.5 #was 46 at 8 pt - 43 with italic change
239: else limit = 43 - constant*.4 + 1 + control - caps*.5
240: print "lim " limit " leng " length(line) " cons:ctl:caps " constant ":" control ":" caps " " line|"cat 1>&2"
241: if(space == 0)limit += 2
242: if(length(line)< limit)print line
243: else {
244: n=split(line, a, ",")
245: if(length(a[1])>=limit-6 || space){ #adjust for italic change
246: if(!space)limit -=6
247: m=split(a[1],b," ")
248: nline=b[1]
249: if(space)nline = " " b[1]
250: if(m > 1)for(i=2;i<=m;i++){
251: if(length(nline)+length(b[i])+1>=limit){
252: if(nline ~ /s-2/ && nline !~ /s+2/){
253: print nline "\\s+2"
254: nline = " \\s-2" b[i]
255: }
256: else {
257: print nline
258: nline = " " b[i]
259: }
260: }
261: else nline = nline " " b[i]
262: }
263: for(i=2; i<=n;i++){
264: leng=length(a[i])
265: if(a[i] ~ /-/)leng--
266: if(length(nline)+leng >= limit){
267: print nline ","
268: nline = " " a[i]
269: }
270: else nline = nline "," a[i]
271: }
272: print nline
273: return
274: }
275: nline=a[1]
276: for(i=2;i<=n;i++){
277: if(length(nline)+ length(a[i])>= limit){ #used to be -6
278: print nline ","
279: nline = " " a[i]
280: }
281: else nline = nline "," a[i]
282: }
283: if(length(nline) > 0)print nline
284: }
285: }' 2>/dev/null|finddups >sindex
286: wc sindex
287: # troff sindex.ms >tr.out
288:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.