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
}
' $*
