
The indexing programs here are modified from the versions printed in
Bentley & Kernighan, EP-ODD V1 #1.  The programs are also described in
AT&T Bell Laboratories Computing Science Technical Report No. 128,
``Tools for Printing Indexes''.

Changes from the published version derive from further experience
after the paper was frozen, plus some cleanup and corrections by Joe
Kruskal (to whom many thanks), plus some very local features for
printing the AMPL book.


USING THE PROGRAMS

install
	makes the appropriate files executable.  since this file
	is not executable, use by typing "sh <install"
ix.test
see.terms
	these two files provide test input.  make.index produces
	standard output and files
		foo[1-9] foo.regular foo.see foo.hier foo.all
	from ix.test and see.terms.  to make sure things
	work when you first unbundle this file, type
		sh <install
		make.index ix.test >foo.ix
		troff -ms foo.ix >foo.out
	and then examine the troff output foo.out
cleanup
	removes the garbage files left around for debugging


CHANGES FROM THE PAPER

make.index
	handles "see" file see.terms.  A line like
		algorithms<tab>searching, sorting
	generates in the final index
		algorithms see searching, sorting
	a 3rd field of %also makes it
		algorithms see also searching, sorting
doclean
deroman
range.prep
	minor change to defend against bug in some versions of "sort"
rotate
	moved here (and changed as necessary) to remove subtle bug.
	see check.data below
range.sort
	-u option on sort removes duplicate entries on same page
range.collapse
reroman
	page number concatenation removed from here ...
num.collapse
	and moved to here.   also commas between numbers now
	inserted here (to make see terms easier)
gen.key
	literals protected differently in gsub commands.
	rules for non-alpha index terms slightly richer:
		purely nonalphabetic lines first
		lines with leading digits next
		ordinary lines last
see.prep
	changed to match changes above, and to rely on font-changing {}
final.sort
	uses -d option for "telephone directory" order.
hierarchy
	a rather special purpose version to replace runs of items
	with a common one or two word prefix and replace them by
	a head word and indented lines.
	this also does some rearrangement to bring see terms to the top,
	and terms with formatting info to the bottom;  this is not
	always the right thing to do.
format
	letter changes (.YY) determined by first letter.
	minor rearrangement of how output line is created.
	commas no longer added here.
	[Some systems have a disk-formatting program called format.]
check.data
	new program that catches subtle errors in the data
