More troff bits; if you want them elsewhere, feel free to repo copy them.
This commit is contained in:
parent
a7eb134e87
commit
aa83d77271
22 changed files with 670 additions and 1 deletions
64
src/cmd/index/format
Normal file
64
src/cmd/index/format
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
awk ' # format
|
||||
# Input: sort key (tab) string (tab) numlist
|
||||
# Output: troff format, commands interpreted
|
||||
|
||||
BEGIN { FS = "\t"
|
||||
s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz "
|
||||
# set upper["a"] = "A"
|
||||
for (i = 1; i <= 27; i++) upper[substr(s,i+27,1)] = substr(s,i,1)
|
||||
# set lower["a"] = lower["A"] ="a"
|
||||
for (i = 1; i <= 27; i++) {
|
||||
lower[substr(s,i,1)] = substr(s,i+27,1)
|
||||
lower[substr(s,i+27,1)] = substr(s,i+27,1)
|
||||
}
|
||||
}
|
||||
{ # mark change between letters with .YY
|
||||
# find first non-punctuation char
|
||||
for (i = 1; (c = substr($1,i,1)) != ""; i++)
|
||||
if (c ~ /[a-zA-Z0-9 ]/)
|
||||
break
|
||||
this = c
|
||||
if (!(this in lower)) lower[this] = " "
|
||||
this = lower[this]
|
||||
if (this != last) # && this != " ")
|
||||
print ".YY", this, upper[last=this]
|
||||
quoted = 0
|
||||
|
||||
# interpret font change language
|
||||
|
||||
if ($2 ~ /^ /) # different macro, to avoid bad breaks in hier
|
||||
print ".ZZ"
|
||||
else
|
||||
print ".XX"
|
||||
if (NF == 3)
|
||||
$0 = $2 "," " " $3 # discard sort key, leave term .. numlist
|
||||
else
|
||||
$0 = $2
|
||||
|
||||
if ($0 ~ /%/) {
|
||||
quoted = 1
|
||||
gsub(/%%/, "QQ0QQ", $0)
|
||||
gsub(/%\[/, "QQ1QQ", $0)
|
||||
gsub(/%\]/, "QQ2QQ", $0)
|
||||
gsub(/%\{/, "QQ3QQ", $0)
|
||||
gsub(/%\}/, "QQ4QQ", $0)
|
||||
gsub(/%~/, "QQ5QQ", $0)
|
||||
}
|
||||
gsub(/%e/, "\\e", $0) # %e -> \e
|
||||
gsub(/~/, " ", $0) # unpaddable spaces go away at last
|
||||
if (gsub(/\[/, "\\\\&\\f(CW", $0))
|
||||
gsub(/\]/, "\\fP", $0)
|
||||
if (gsub(/\{/, "\\f2", $0))
|
||||
gsub(/\}/, "\\fP", $0)
|
||||
if (quoted) {
|
||||
gsub(/%/, "", $0)
|
||||
gsub(/QQ0QQ/, "%", $0)
|
||||
gsub(/QQ1QQ/, "[", $0)
|
||||
gsub(/QQ2QQ/, "]", $0)
|
||||
gsub(/QQ3QQ/, "{", $0)
|
||||
gsub(/QQ4QQ/, "}", $0)
|
||||
gsub(/QQ5QQ/, "~", $0)
|
||||
}
|
||||
printf "\\&%s\n", $0
|
||||
}
|
||||
' $*
|
||||
Loading…
Add table
Add a link
Reference in a new issue