|
|
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.