|
|
1.1 root 1: IND=../index/tools
2: ISTEX=0
3: ENVIRON="$ENVIRON"'
4: runind(){
5: F=$1
6: if test -s $1.ms
7: then
8: J=$1
9: F=$1.ms
10: else if test -s $1.m
11: then
12: J=$1
13: F=$1.m
14: else if test -s $1.tex
15: then
16: J=`basename $1 .tex`
17: F=$1.tex
18: ISTEX=1
19: else if test -s $1
20: then
21: J=$1
22: else
23: echo $1 not found
24: exit
25: fi
26: fi
27: fi
28: fi
29: O=x$F
30: tr A-Z a-z <$J.terms|sed -e '\''s/\([a-z/]*\)\.\([a-z][a-z]*\)/\1zz1\2/g'\'' -e '\''s/^\([0-9]\)/ \1/'\'' |sort|uniq|
31: awk '\'' {
32: if(last == $0)next
33: if(last "s" == $0){
34: print last
35: last = ""
36: next
37: }
38: else if(last != "")
39: print last
40: last = $0
41: }
42: END {
43: if(last != "")print last
44: }'\'' >$J.lt
45: sed '\''s/\([a-z/]*\)\.\([a-z][a-z]*\)/\1zz1\2/g'\'' $F >foo
46: $IND/diction -f $J.lt -o $J.hits foo >/dev/null
47: tr A-Z a-z <$J.terms|awk -v file=$J.terms '\''{
48: term=$0
49: gsub(/\\/,"\\\\")
50: gsub(/\//,"\\/")
51: gsub(/\*/,"\\*")
52: gsub(/\[/,"\\[")
53: gsub(/,/," ")
54: term=$0
55: getline <file
56: gsub(/\\/,"\\\\")
57: gsub(/\//,"\\/")
58: gsub(/\&/,"\\\\\&")
59: print "s/^" term "$/" $0 "/"
60: print "s/^\\([0-9]* \\)" term "$/\\1" $0 "/"}'\'' >x$J.sed
61: if test -s $J.sed
62: then
63: sed '\''s/zz1/\./g'\'' $J.hits|sed -f x$J.sed|sed -f $J.sed|tr $ ~ >$J.nh
64: else
65: sed '\''s/zz1/\./g'\'' $J.hits|sed -f x$J.sed|tr $ ~ >$J.nh
66: fi
67: if test $ISTEX -eq 0
68: then
69: echo troff file= $F out= $O
70: awk -v name=$J.nh '\''
71: BEGIN {
72: getterm()
73: }
74: /.*/ {
75: line = $0
76: if(NR >= number){
77: putterm()
78: }
79: print line
80: if(line ~ /^\.PS[ ]*</)next
81: if(line ~ /^\.[TPI]S/){
82: while(getline > 0){
83: save=$0
84: if($0 ~ /^\.T\&/){
85: if(NR >= number)
86: putterm()
87: }
88: print save
89: if($0 ~ /^\.([PTI]E)|IF/)break
90: }
91: }
92: if(line ~ /^\.EQ/){
93: while(getline > 0){
94: print $0
95: if($0 ~ /^\.EN/)break
96: }
97: }
98: if(line ~ /^\|begin.figure/){
99: while(getline > 0){
100: print $0
101: if($0 ~ /^\|end.figure/)break
102: }
103: }
104: }
105: function getterm(){
106: if((getline < name)<= 0){
107: number += 1000
108: }
109: else if($0 ~ /^[0-9]/ && NF > 1){
110: number = $1
111: sub(/^[0-9][0-9]* /,"")
112: term = $0
113: } else term=$0
114: }
115: function putterm(){
116: print ".Tm " term
117: getterm()
118: if(NR >= number){
119: while(NR >= number){
120: print ".Tm " term
121: getterm()
122: }
123: }
124: }
125: '\'' $F >$O
126: else
127: sed '\''s/ /<tab>/g'\'' $J.nh|tr $ ~ >$J.hits
128: echo tex $F $O
129: awk -v name=$J.hits '\''
130: BEGIN {
131: sawbeg = 0
132: getterm()
133: }
134: /\\begin\{document/ {
135: sawbeg=1
136: print $0
137: next
138: }
139: /.*/ {
140: line = $0
141: if(NR >= number && sawbeg){
142: putterm()
143: }
144: print line
145: if(line ~ /\\begin\{eg\}/){
146: while(getline > 0){
147: print $0
148: if($0 ~ /^\\end\{eg\}/)break
149: }
150: }
151: }
152: function getterm(){
153: if((getline < name)<= 0){
154: number += 1000
155: }
156: else if($0 ~ /^[0-9]/ && NF > 1){
157: number = $1
158: sub(/^[0-9][0-9]* /,"")
159: term = $0
160: } else term=$0
161: }
162: function putterm(){
163: print "\\index{" term "}"
164: getterm()
165: if(NR >= number){
166: while(NR >= number){
167: print "\\index{" term "}"
168: getterm()
169: }
170: }
171: }
172: '\'' $F >$O
173: fi
174: rm foo $J.lt $J.hits $J.nh
175: }
176:
177: mkindex(){ #uses either $1.x or $2.x to make base.ind
178: if test $# -eq 0
179: then
180: echo mkindex directory file or mkindex file
181: exit
182: fi
183: if test $# -eq 1
184: then
185: j=`basename $1 .x`
186: sed -n "/^\\.XX.*$j/p" ../contents/contents.ms|awk '\''{print $2 >"name"}'\''
187: else
188: j=`basename $2 .x`
189: sed -n "/^\\.XX.*$1\\/$j/p" ../contents/contents.ms|awk '\''{print $2 >"name"}'\''
190: fi
191: FILE=$j.x
192: if test -f $j.sed2
193: then
194: sed -f $j.sed2 $FILE >x$FILE
195: FILE=x$FILE
196: fi
197: S=`cat name`
198: sed -e "/^[01] /d" -e "s/ #.*//" -e "s/:/;/g" -e "/^[A-Za-z.]/d" -e "/Examp/d" $FILE|
199: awk '\''
200: BEGIN {FS=" " }
201: NF==2 { print str ", " $2 ": " $1
202: print $2 ", " str ": " $1
203: }
204: NF==3 {
205: if($NF ~ /s/ )print str ", " $2 ": " $1
206: else if($NF ~ /[SprtqxyzZY]/ )print str ", " $2 ": " $1 ":" $NF
207: else if($NF ~ /[gGPR]/) print $2 ", " str ": " $1 ":" $NF
208: else if($NF ~ /[cf]/){
209: print str ", " $2 ": " $1 ":" $NF
210: print $2 ", " str ": " $1 ":" $NF
211: }
212: else if($NF ~ /C/){
213: print str ", " $2 ": " $1 ":" $NF
214: print $2 ", " str ": " $1
215: }
216: else print "code undefined:" $NF|"cat 1>&2"
217: }'\'' str=$S | sort -f -u -t":" +0 -1 +1n |
218: awk '\''
219: BEGIN {FS=":"}
220: { if($1 != laststr){
221: if(start){
222: if(range)pages = pages "-" npage
223: if(global != "")print laststr "," pages " " global
224: else print laststr "," pages
225: }
226: start=1
227: laststr=$1
228: global=$3
229: pages = " " $2
230: npage = 0 + $2
231: range=0
232: }
233: else {
234: if($2 == npage+1){
235: range=1
236: npage++
237: next
238: }
239: else if(range) pages = pages "-" npage "," $2
240: else pages = pages "," $2
241: npage = 0 + $2
242: range = 0
243: }
244: }
245: END {
246: if(range)pages = pages "-" npage
247: if(global != "")print laststr "," pages " " global
248: else print laststr "," pages
249: }
250: '\''|sed -e '\''s/~/\$/g'\'' -e '\''s/;/:/g'\''>$j.ind
251: rm name $j.x
252: }'
253:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.