|
|
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: if test $ISTEX -eq 0
48: then
49: sed '\''s/zz1/\./g'\'' $J.hits|tr $ ~ >$J.nh
50: mv $J.nh $J.hits
51: echo troff file= $F out= $O
52: awk -v name=$J.hits '\''
53: BEGIN {
54: getterm()
55: }
56: /.*/ {
57: line = $0
58: if(NR >= number){
59: putterm()
60: }
61: print line
62: if(line ~ /^\.PS[ ]*</)next
63: if(line ~ /^\.[TPI]S/){
64: while(getline > 0){
65: if($0 ~ /^\.T\&/){
66: if(NR >= number)
67: putterm()
68: }
69: print $0
70: if($0 ~ /^\.([PTI]E)|IF/)break
71: }
72: }
73: if(line ~ /^\.EQ/){
74: while(getline > 0){
75: print $0
76: if($0 ~ /^\.EN/)break
77: }
78: }
79: }
80: function getterm(){
81: if((getline < name)<= 0){
82: number += 1000
83: }
84: else if($0 ~ /^[0-9]/ && NF > 1){
85: number = $1
86: sub(/^[0-9][0-9]* /,"")
87: term = $0
88: } else term=$0
89: }
90: function putterm(){
91: print ".Tm " term
92: getterm()
93: if(NR >= number){
94: while(NR >= number){
95: print ".Tm " term
96: getterm()
97: }
98: }
99: }
100: '\'' $F >$O
101: else
102: sed -e '\''s/zz1/\./g'\'' -e '\''s/ /<tab>/g'\'' $J.hits|tr $ ~ >$J.nh
103: mv $J.nh $J.hits
104: echo tex $F $O
105: awk -v name=$J.hits '\''
106: BEGIN {
107: sawbeg = 0
108: getterm()
109: }
110: /\\begin\{document/ {
111: sawbeg=1
112: print $0
113: next
114: }
115: /.*/ {
116: line = $0
117: if(NR >= number && sawbeg){
118: putterm()
119: }
120: print line
121: if(line ~ /\\begin\{eg\}/){
122: while(getline > 0){
123: print $0
124: if($0 ~ /^\\end\{eg\}/)break
125: }
126: }
127: }
128: function getterm(){
129: if((getline < name)<= 0){
130: number += 1000
131: }
132: else if($0 ~ /^[0-9]/ && NF > 1){
133: number = $1
134: sub(/^[0-9][0-9]* /,"")
135: term = $0
136: } else term=$0
137: if(term ~ /\\em/)
138: sub(/\\em /,"",term)
139: if(term ~ /{\\tt/){
140: sub(/{\\tt /,"",term)
141: sub(/}/,"",term)
142: }
143: }
144: function putterm(){
145: print "\\index{" term "}"
146: getterm()
147: if(NR >= number){
148: while(NR >= number){
149: print "\\index{" term "}"
150: getterm()
151: }
152: }
153: }
154: '\'' $F >$O
155: fi
156: rm foo $J.lt # $J.hits
157: }
158:
159: mkindex(){ #uses either $1.x or $2.x to make base.ind
160: if test $# -eq 0
161: then
162: echo mkindex directory file or mkindex file
163: exit
164: fi
165: if test $# -eq 1
166: then
167: j=`basename $1 .x`
168: sed -n "/^\\.XX.*$j/p" ../contents/contents.ms|awk '\''{print $2 >"name"}'\''
169: else
170: j=`basename $2 .x`
171: sed -n "/^\\.XX.*$1\\/$j/p" ../contents/contents.ms|awk '\''{print $2 >"name"}'\''
172: fi
173: FILE=$j.x
174: S=`cat name`
175: sed -e "/^0 /d" -e "s/ #.*//" -e "s/:/!/g" -e "/^[A-Za-z.]/d" -e "/Examp/d" $FILE|
176: awk '\''
177: BEGIN {FS=" " }
178: NF==2 { print str ", " $2 ": " $1
179: print $2 ", " str ": " $1
180: }
181: NF==3 {
182: if($NF == "s" )print str ", " $2 ": " $1
183: else print $2 ", " str ": " $1
184: }'\'' str=$S | sort -f -u -t":" +0 -1 +1n |
185: awk '\''
186: BEGIN {FS=":"}
187: { if($1 != laststr){
188: if(start){
189: if(range)pages = pages "-" npage
190: print laststr "," pages
191: }
192: start=1
193: laststr=$1
194: pages = " " $2
195: npage = 0 + $2
196: range=0
197: }
198: else {
199: if($2 == npage+1){
200: range=1
201: npage++
202: next
203: }
204: else if(range) pages = pages "-" npage "," $2
205: else pages = pages "," $2
206: npage = 0 + $2
207: range = 0
208: }
209: }
210: END {
211: if(range)pages = pages "-" npage
212: print laststr "," pages
213: }
214: '\''|sed -e '\''s/~/\$/g'\'' -e '\''s/!/:/g'\''>$j.ind
215: rm name $j.x
216: }'
217:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.