|
|
1.1 ! root 1: BEGIN { ! 2: longest = 0 ! 3: overf = 0 ! 4: i = 1 ! 5: } ! 6: /^%/ { ! 7: total += length($0)+1 ! 8: next ! 9: } ! 10: /\\def/ { ! 11: total += length($0)+1 ! 12: next ! 13: } ! 14: /\\title/ { ! 15: place[i] = total ! 16: total += length($0) + 1 ! 17: gettitl($0) ! 18: text[i] = title ! 19: hsize += length(title)+1 ! 20: i++ ! 21: l = length(title) ! 22: if(longest < l+1) ! 23: longest = l + 1 ! 24: if(l > 23){ ! 25: while(l>=23){ ! 26: overf++; ! 27: l -= 23 ! 28: } ! 29: } ! 30: next ! 31: } ! 32: /\\([Ss]ection|sub.*section|newsection|chapter)[^a-zA-Z]/ { ! 33: place[i] = total ! 34: if($0 ~ /{/ && $0 ~ /}/){ ! 35: line=$0 ! 36: op=gsub("{","",line) ! 37: cl=gsub("}","",line) ! 38: n=index($0,"{") +1 ! 39: if(op == cl && cl>1){ ! 40: sub("}","") ! 41: sub(/{\\tt/,"") ! 42: } ! 43: heading = substr($0, n, index($0,"}")-n) ! 44: } ! 45: else if($0 ~ /{/){ ! 46: total += length($0) + 1 ! 47: nlines = 0 ! 48: n=index($0, "{") ! 49: heading = substr($0, n+1, length($0)-n) ! 50: while(getline ){ ! 51: if(nlines++ > 3){ ! 52: print "too many lines in heading:" heading |"cat 1>&2" ! 53: break ! 54: } ! 55: total += length($0) +1 ! 56: if($0 ~ /}/){ ! 57: heading = heading " " substr($0, 1, index($0,"}")-1) ! 58: break ! 59: } ! 60: else ! 61: heading = heading " " $0 ! 62: } ! 63: } ! 64: total += length($0) +1 ! 65: text[i] = heading ! 66: hsize += length(heading)+1 ! 67: l = length(heading) ! 68: if(longest < l+1) ! 69: longest = l + 1 ! 70: if(l > 23){ ! 71: while(l>=23){ ! 72: overf++; ! 73: l -= 23 ! 74: } ! 75: } ! 76: heading = "" ! 77: i++ ! 78: next ! 79: } ! 80: /.*/ { ! 81: total += length($0) + 1 ! 82: } ! 83: END { ! 84: if(i > 1){ ! 85: # print hsize, longest, i-1, overf ! 86: for(n=1;n<i;n++){ ! 87: # print place[n] ! 88: print text[n] ! 89: } ! 90: } ! 91: } ! 92: function gettitl(A){ ! 93: if(A ~ "%"){ ! 94: split(A,z,"%") ! 95: a=z[1] ! 96: } ! 97: else a=A ! 98: if(a ~ /\\thanks/){ ! 99: if(a ~ /}/) ! 100: sub(/\\thanks{.*}/," ",a) ! 101: else{ ! 102: thanks=1 ! 103: sub(/\\thanks.*/, " ",a) ! 104: } ! 105: } ! 106: left=gsub(/{/," ",a) ! 107: right = gsub(/}/," ",a) ! 108: if(thanks)left += 1 ! 109: if(a ~ /\\[a-z][a-z]* /)gsub(/\\[a-z][a-z]* /," ",a) ! 110: if(a ~ /\\[^a-z]/)gsub(/\\[^a-z]/," ",a) ! 111: title = a ! 112: while(left != right){ ! 113: if((getline)<1){print "ran out of file" ! 114: exit ! 115: } ! 116: total += length($0) +1 ! 117: if($0 ~ "%"){ ! 118: split($0,z,"%") ! 119: if(length(z[1]) == 0)continue ! 120: a = z[1] ! 121: } ! 122: else a = $0 ! 123: if(thanks){ ! 124: if(a ~ /}/){ ! 125: thanks=0 ! 126: right += 1 ! 127: sub(/}/,"XXX",a) ! 128: sub(/.*XXX/," ",a) ! 129: } ! 130: else continue ! 131: } ! 132: if(a ~ /\\thanks/){ ! 133: b=a ! 134: left += gsub(/{/," ",b) ! 135: right += gsub(/}/," ",b) ! 136: if(index(/}/,a)){ ! 137: gsub(/\\thanks.*}/," ",a) ! 138: title = title " " a ! 139: continue ! 140: } ! 141: thanks=1 ! 142: continue ! 143: } ! 144: left+=gsub(/{/," ",a) ! 145: right += gsub(/}/," ",a) ! 146: if(a ~ /\\[a-z][a-z]* /)gsub(/\\[a-z][a-z]* /," ",a) ! 147: if(a ~ /\\[^a-z]/)gsub(/\\[^a-z]/," ",a) ! 148: title = title " " a ! 149: } ! 150: gsub(/[ ][ ]*/," ",title) ! 151: sub(/^ /,"", title) ! 152: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.