home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- # This script takes the file of index entries emitted to stderr by
- # troff when processing the output of texi2roff -i and creates up
- # to 6 indices (concept, function, keystroke, program, data type,
- # variable) as troff input. If there are no entries for a particular
- # type of index, it won't be generated.
-
- # Run the output of this script through nroff or troff with one of
- # -me, -mm or -ms. The macros are necessary to provide pagination.
-
- # Credit for the creative use of tbl to a posting by jpr@dasys1.
- # The tricky part with sed protects index entries beginning with
- # characters that make troff drop lines and preserves sort order
- # for index entries containing typesetting commands.
-
- FILE="$*"
-
- sed -n "s/^../&\\\\\\&/p" $FILE \
- | sed "
- s/.*/&~+~&/
- :repeat
- s/\\\\f[BIR]\(.*~+~\)/\1/
- s/\\\\f(CW\(.*~+~\)/\1/
- t repeat
- " | sort -fd | sed -e 's/.*~+~//' -e 's/[0-9][0-9]*$/ &/'\
- | awk '
- BEGIN {
- titles["c"] = "Concept Index"
- titles["f"] = "Function Index"
- titles["k"] = "Keystroke Index"
- titles["p"] = "Program Index"
- titles["t"] = "Data Type Index"
- titles["v"] = "Variable Index"
- print ".nf"
- }
- {
- if ($1 != prev) {
- if (prev != "")
- print ".TE"
- print ".bp"
- print ".TS"; print "c s"; print "l r."
- print titles[$1]
- print ""
- prev = $1
- }
- print substr($0, 3, length($0)-2)
- }
- END {
- if (prev != "")
- print ".TE"
- } ' | tbl
-
-