11 MAKEINDEX 2 32 NAME 4 makeindex - a general purpose, formatter-independent index 5 processor 6 72 SYNOPSIS 8 makeindex [-c] [-g] [-i] [-l] [-o ind] [-p num] [-q] [-r] 9 [-s sfile] [-t log] [idx0 idx1 idx2...] 10 112 DESCRIPTION 122 The program makeindex is a general purpose hierarchical 13 index generator; it accepts one or more input files (often 14 produced by a text formatter such as TeX (tex(1L)) or 15 troff(1), sorts the entries, and produces an output file 16 which can be formatted. The index can have up to three lev- 17 els (0, 1, and 2) of subitem nesting. The way in which 18 words are flagged for indexing within the main document is 19 specific to the formatter used; makeindex does not automate 20 the process of selecting these words. As the output index 21 is hierarchical, makeindex can be considered complimentary 22 to the awk(1)-based make.index(1L) system of Bentley and 232 Kernighan, which is specific to troff(1), generates non- 24 hierarchical indices, and employs a much simpler syntax for 25 indicating index entries. For illustration of use with 26 troff and TeX, see the section EXAMPLES below. 27 282 The formats of the input and output files are specified in a 29 style file; by default, input is assumed to be a .idx file, 30 as generated by LaTeX. 31 322 Unless specified explicitly, the base name of the first 33 input file (idx0) is used to determine the names of other 34 files. For each input file name specified, a file of that 35 name is sought. If this file is not found and the file name 36 has no extension, the extension .idx is appended. If no 37 file with this name is found, makeindex aborts. 38 392 For important notes on how to select index keywords, see the 40 document by Lamport cited below. As an issue separate from 41 selecting index keywords, a systematic mechanism for placing 42 index terms in a document is suggested in Index Preparation 43 and Processing, a paper cited below. 44 452 OPTIONS 46 -c Compress intermediate blanks (ignoring leading and 47 trailing blanks and tabs). By default, blanks in 48 the index key are retained. 49 50 -g Employ German word ordering in the index, in 51 accord with rules set forth in DIN 5007. By 52 default, makeindex employs a word ordering in 53 which precedence is: symbols, numbers, uppercase 54 letters, lowercase letters. The sequence in 55 56 German word ordering is: symbols, lowercase 57 letters, uppercase letters, numbers. Addition- 58 ally, this option enables makeindex to recognize 59 the German TeX-commands {"a, "o, "u and "s} as 60 {ae, oe, ue and ss} during the sorting of the 61 entries. The quote character must be redefined in 62 a style file (for example, redefine quote as '+'). 63 If the quote character is not redefined, makeindex 64 will produce an error message and abort. 65 66 -i Take input from stdin. When this option is speci- 67 fied and -o is not, output is written to stdout. 68 69 -l Letter ordering; by default, word ordering is used 70 (see the ORDERING section). 71 72 -o ind Employ ind as the output index file. By default, 73 the file name is created by appending the exten- 74 sion .ind to the base name of the first input file 75 (idx0). 76 77 -p num Set the starting page number of the output index 78 file to be num (useful when the index file is to 79 be formatted separately). The argument num may be 80 numerical or one of the following: 81 82 any The starting page is the last source 83 page number plus 1. 84 85 odd The starting page is the first odd page 86 following the last source page number. 87 88 even The starting page is the first even page 89 following the last source page number. 90 91 The last source page is obtained by searching 92 backward in the log file for the first instance of 93 a number included within paired square brackets 94 ([...]). If a page number is missing or the log 95 file is not found, no attempt will be made to set 96 the starting page number. The source log file 97 name is determined by appending the extension .log 98 to the base name of the first input file (idx0). 99 100 -q Quiet mode; send no messages to stderr. By 101 default, progress and error messages are sent to 102 stderr as well as to the transcript file. 103 104 -r Disable implicit page range formation; page ranges 105 must be created by using explicit range operators; 106 see SPECIAL EFFECTS below. By default, three or 107 more successive pages are automatically 108 109 abbreviated as a range (e.g. 1-5). 110 111 -s sty Employ sty as the style file (no default). The 112 environment variable INDEXSTYLE defines the path 113 where the style file should be found. 114 115 -t log Employ log as the transcript file. By default, 116 the file name is created by appending the exten- 117 sion .ilg to the base name of the first input file 118 (idx0). 119 1202 STYLE FILE 1212 The style file informs makeindex about the format of the 122 .idx input files and the intended format of the final output 123 file; examples appear below. This file can reside anywhere 124 in the path defined by the environment variable INDEXSTYLE. 1252 The style file contains a list of <specifier, attribute> 126 pairs. There are two types of specifiers: input and output. 1272 Pairs do not have to appear in any particular order. A line 128 begun by `%' is a comment. In the following list of specif- 129 iers and arguments, <string> is an arbitrary string delim- 130 ited by double quotes ("..."), <char> is a single letter 131 embraced by single quotes ('...'), and <number> is a nonne- 132 gative integer. The maximum length of a <string> is 2048. 1332 A literal backslash or quote must be escaped (by a 134 backslash). Anything not specified in the style file will 135 be assigned a default value, which is shown at the head of 136 the rightmost column. 137 1383 INPUT STYLE SPECIFIERS 139 actual <char> '@' 140 Symbol indicating that the next 141 entry is to appear in the output 142 file. 143 144 arg_close <char> '}' 145 Closing delimiter for the index 146 entry argument. 147 148 arg_open <char> '{' 149 Opening delimiter for the index 150 entry argument. 151 152 encap <char> '|' 153 Symbol indicating that the rest of 154 the argument list is to be used as 155 the encapsulating command for the 156 page number. 157 158 escape <char> '\\' 159 Symbol which escapes the following 160 letter, unless its preceding letter 161 162 is escape. Note: quote is used to 163 escape the letter which immediately 164 follows it, but if it is preceded 165 by escape, it is treated as a ordi- 166 nary character. These two symbols 167 must be distinct. 168 169 keyword <string> "\\indexentry" 170 Command which tells makeindex that 171 its argument is an index entry. 172 173 level <char> '!' 174 Delimiter denoting a new level of 175 subitem. 176 177 quote <char> '"' 178 Note: quote is used to escape the 179 letter which immediately follows 180 it, but if it is preceded by 181 escape, it is treated as a ordinary 182 character. These two symbols must 183 be distinct. 184 185 range_close <char> ')' 186 Closing delimiter indicating the 187 end of an explicit page range. 188 189 range_open <char> '(' 190 Opening delimiter indicating the 191 beginning of an explicit page 192 range. 193 1943 OUTPUT STYLE SPECIFIERS 195 preamble <string> "\\begin{theindex}\n" 196 Preamble of output file. 197 198 postamble <string> "\n\n\\end{theindex}\n" 199 Postamble of output file. 200 201 setpage_prefix <string> "\n \\setcounter{page}{" 202 Prefix of command which sets the 203 starting page number. 204 205 setpage_suffix <string> "}\n" 206 Suffix of command which sets the 207 starting page number. 208 209 group_skip <string> "\n\n \\indexspace\n" 210 Vertical space to be inserted 211 before a new group begins. 212 213 headings_flag <string> 0 214 215 Flag indicating treatment of new 216 group headers, which are inserted 217 when before a new group (symbols, 218 numbers, and the 26 letters): posi- 219 tive values cause an uppercase 220 letter to be inserted between pre- 221 fix and suffix, and negative values 222 cause a lowercase letter to be 223 inserted (default is 0, which pro- 224 duces no header). 225 226 heading_prefix <string> "" 227 Header prefix to be inserted before 228 a new letter begins. 229 230 symhead_positive <string> 231 "Symbols" 232 Heading for symbols to be inserted 233 if headings_flag is positive. 234 235 symhead_negative <string> 236 "symbols" 237 Heading for symbols to be inserted 238 if headings_flag is negative. 239 240 numhead_positive <string> 241 "Numbers" 242 Heading for numbers to be inserted 243 if headings_flag is positive. 244 245 numhead_negative <string> 246 "numbers" 247 Heading for numbers to be inserted 248 if headings_flag is negative. 249 250 item_0 <string> "\n \\item " 251 Command to be inserted between two 252 primary (level 0) items. 253 254 item_1 <string> "\n \\subitem " 255 Command to be inserted between two 256 secondary (level 1) items. 257 258 item_2 <string> "\n \\subsubitem " 259 Command to be inserted between two 260 level 2 items. 261 262 item_01 <string> "\n \\subitem " 263 Command to be inserted between a 264 level 0 item and a level 1 item. 265 266 item_x1 <string> "\n \\subitem " 267 268 Command to be inserted between a 269 level 0 item and a level 1 item, 270 where the level 0 item does not 271 have associated page numbers. 272 273 item_12 <string> "\n \\subsubitem " 274 Command to be inserted between a 275 level 1 item and a level 2 item. 276 277 item_x2 <string> "\n \\subsubitem " 278 Command to be inserted between a 279 level 1 item and a level 2 item, 280 where the level 1 item does not 281 have associated page numbers. 282 283 delim_0 <string> ", " 284 Delimiter to be inserted between a 285 level 0 key and its first page 286 number (default: comma followed by 287 a blank). 288 289 delim_1 <string> ", " 290 Delimiter to be inserted between a 291 level 1 key and its first page 292 number (default: comma followed by 293 a blank). 294 295 delim_2 <string> ", " 296 Delimiter to be inserted between a 297 level 2 key and its first page 298 number (default: comma followed by 299 a blank). 300 301 delim_n <string> ", " 302 Delimiter to be inserted between 303 two page numbers for the same key 304 in any level (default: comma fol- 305 lowed by a blank). 306 307 delim_r <string> "--" 308 Delimiter to be inserted between 309 the starting and ending page 310 numbers of a range. 311 312 delim_t <string> "" 313 Delimiter to be inserted at the end 314 of a page list. This delimiter has 315 no effect on entries which have no 316 associated page list. 317 318 encap_prefix <string> "\\" 319 First part of prefix for the 320 321 command which encapsulates the page 322 number. 323 324 encap_infix <string> "{" 325 Second part of prefix for the com- 326 mand which encapsulates the page 327 number. 328 329 encap_suffix <string> "}". 330 Suffix for the command which encap- 331 sulates the page number. 332 333 line_max <number> 72 334 Maximum length of a line in the 335 output, beyond which a line wraps. 336 337 indent_space <string> "\t\t" 338 Space to be inserted in front of a 339 wrapped line (default: two tabs). 340 341 indent_length <number> 16 342 Length of indent_space (default: 343 16, equivalent to 2 tabs). 344 3452 EXAMPLES 3463 TeX EXAMPLE 3472 The following example shows a style file called book.ist, 348 which defines an index for a book which can be formatted 349 independently of the main source: 350 351 preamble 352 "\\documentstyle[12pt]{book} 353 \\begin{document} 354 \\begin{theindex} 355 {\\small\n" 356 postamble 357 "\n\n} 358 \\end{theindex} 359 \\end{document}\n" 360 3612 Assuming that a particular book style requires the index (as 362 well as any chapters) to start from an odd page number, and 363 that the input file is named foo.idx, the following command 364 line produces output in file footmp.ind: 365 366 makeindex -s book.ist -o footmp.ind -p odd foo 367 3682 Here a non-default output file name is used to avoid 369 clobbering the output for the book itself (presumably 370 foo.dvi, which would have been the default name for the 371 index output file!). 372 3733 TROFF EXAMPLE 3742 A sample control file for creating an index, which we will 375 assume resides in the file sample.ist: 376 377 keyword "IX:" 378 preamble 379 ".\\\" start of index output 380 \".\\\" enter two column mode 381 .2C 382 .SH 383 .ce 384 INDEX 385 .XS 386 INDEX 387 .XE 388 .R 389 .ps 9p 390 .vs 11p 391 .sp 392 .de I1 393 .ti 0.25i 394 .. 395 .de I2 396 .ti 0.5i 397 .." 398 postamble "\n.\\\" end of index output" 399 setpage_prefix "\n.nr % " 400 setpage_suffix "" 401 group_skip "\n.sp 1.0" 402 headings_flag 1 403 heading_prefix "\n.IS\n" 404 heading_suffix "\n.IE" 405 item_0 "\n.br\n" 406 item_1 "\n.I1\n" 407 item_2 "\n.I2\n" 408 item_01 "\n.I1\n" 409 item_x1 "\n.I1\n" 410 item_12 "\n.I2\n" 411 item_x2 "\n.I2\n" 412 delim_0 ", " 413 delim_1 ", " 414 delim_2 ", " 415 delim_r "-" 416 delim_t "." 417 encap_prefix "\\fB" 418 encap_infix "" 419 encap_suffix "\\fP" 420 indent_space "" 421 indent_length 0 422 4232 The local macro package may require modification, as in this 424 example of an extension to the -ms macros (note that at some 425 426 sites, this macro should replace a pre-existing macro of the 427 same name): 428 429 . 430 .de IX 431 .ie '\\n(.z'' .tm IX: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 {\\n(PN} 432 .el \\!.IX \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 {\\n(PN} 433 .. 434 435 (note that the string {\\n(PN} is separated from the rest of 436 the line by a tab. If your local macro package does not 437 contain this extension, just include those lines at the 438 beginning of your file. Here is a simple troff(1) input 439 file, which we will assume is named sample.txt: 440 441 This is a sample file to test the \fImakeindex\fP(1L) 442 program, and see 443 .IX {indexing!programs!C language} 444 .IX {makeindex@\fImakeindex\fP(1L)} 445 .bp 446 .rs 447 .IX {Knuth} 448 .IX {typesetting!computer-aided} 449 how well it functions in the \fItroff\fP(1) environment. 450 4512 Note that index entries are indicated by the .IX macro, 452 which causes the following text to be written to stdout 453 along with the current page number. 454 4553 CREATING THE INDEX FILE IN THE BOURNE SHELL 4562 To create an input file for makeindex, in the Bourne shell 457 environment, do the equivalent at your site of the command: 458 459 psroff -ms -Tpsc -t sample.txt > /dev/null 2> sample.tmp 460 4612 Some sites will require ditroff instead of psroff. To 462 filter out any genuine error messages, invoke grep(1): 463 464 grep '^IX: ' sample.tmp > sample.idx 465 4663 CREATING THE INDEX FILE USING UCSF ENHANCED TROFF/TRANSCRIPT 467 4682 With UCSF Enhanced troff/TRANSCRIPT, the -I option of 469 psroff(1L) can produce both formatter output and an index 470 file: 471 472 psroff -ms -I sample.inp -Tpsc sample.txt 473 4742 If it is wished to suppress the formatter output: 475 476 psroff -ms -I sample.inp -Tpsc -t sample.txt > /dev/null 477 4783 COMPLETING THE INDEX 4792 Any of the above procedures leaves the input for makeindex 480 in sample.inp. The next step is to invoke makeindex: 481 482 makeindex -s sample.ist sample.idx 483 4842 This leaves troff(1)-ready output in the file sample.ind. 485 4862 ORDERING 4872 By default, makeindex assumes word ordering; if the -l 488 option is in effect, letter ordering is used. In word ord- 489 ering, a blank precedes any letter in the alphabet, whereas 490 in letter ordering, it does not count at all. This is 491 illustrated by the following example: 492 493 word order letter order 494 sea lion seal 495 seal sea lion 496 4972 Numbers are always sorted in numeric order. For instance, 498 499 9 (nine), 123 500 10 (ten), see Derek, Bo 501 5022 Letters are first sorted without regard to case; when words 503 are identical, the uppercase version precedes its lowercase 504 counterpart. 505 5062 A special symbol is defined here to be any character not 507 appearing in the union of digits and the English alphabetic 508 characters. Patterns starting with special symbols precede 509 numbers, which precede patterns starting with letters. As a 510 special case, a string starting with a digit but mixed with 511 non-digits is considered to be a pattern starting with a 512 special character. 513 5142 SPECIAL EFFECTS 5152 Entries such as 516 517 \indexentry{alpha}{1} 518 \indexentry{alpha!beta}{3} 519 \indexentry{alpha!beta!gamma}{10} 520 521 in the input file will be converted to 522 523 \item alpha, 1 524 \subitem beta, 3 525 \subsubitem gamma, 10 526 527 in the output index file. Notice that the level symbol 528 (`!') is used above to delimit hierarchical levels. 529 5302 It is possible to make an item appear in a designated form 531 by using the actual (`@') operator. For instance, 532 533 \indexentry{alpha@{\it alpha\/}}{1} 534 535 will become 536 537 \item {\it alpha\/}, 1 538 539 after processing. The pattern preceding `@' is used as sort 540 key, whereas the one following it is written to the output 541 file. Note that two appearances of the same key, one with 542 and one without the actual operator, are regarded as dis- 543 tinct entries. 544 5452 The item, subitem, and subsubitem fields may have individual 546 sort keys: 547 548 \indexentry{aa@{\it aa\/}!bb@{\it bb\/}!cc@{\it cc\/}}{1} 549 5502 This will be converted to 551 552 \item {\it aa}, 1 553 \subitem {\it bb}, 3 554 \subsubitem {\it cc}, 10 555 5562 It is possible to encapsulate a page number with a desig- 557 nated command using the encap (`|') operator: 558 559 \indexentry{alpha|bold}{1} 560 561 will be converted to 562 563 \item alpha, \bold{1} 564 565 where, with a suitable definition for TeX, \bold{n} will 566 expand to {\bf n}. In this example, the three output attri- 567 butes associated with page encapsulation encap_prefix, 568 encap_infix, and encap_suffix, correspond to backslash, left 569 brace, and right brace, respectively. This mechanism allows 570 page numbers to be set in different fonts. For example, the 571 page where the definition of a keyword appears can be in one 572 font, the location of a primary example can be in another 573 font, and other appearances in yet a third font. 574 5752 The encap operator can also be used to create cross refer- 576 ences in the index: 577 578 \indexentry{alpha|see{beta}}{1} 579 580 will become 581 582 \item alpha, \see{beta}{1} 583 584 in the output file, where 585 586 \see{beta}{1} 587 588 will expand to 589 590 {\it see\/} beta 591 5922 Note that in a cross reference like this the page number 593 disappears. 594 5952 A pair of encap concatenated with range_open (`|(') and 596 range_close (`|)') creates an explicit page range: 597 598 \indexentry{alpha|(}{1} 599 \indexentry{alpha|)}{5} 600 601 will become 602 603 \item alpha, 1-5 604 6052 Intermediate pages indexed by the same key will be merged 606 into the range implicitly. This is especially useful when 607 an entire section about a particular subject is to be 608 indexed, in which case only the range opening and closing 609 operators need to be inserted at the beginning and end of 610 the section. Explicit page range formation can also include 611 an extra command to set the page range in a designated font: 612 613 \indexentry{alpha|(bold}{1} 614 \indexentry{alpha|)}{5} 615 616 will become 617 618 \item alpha, \bold{1--5} 619 6202 Several potential problems are worth mentioning. First, 621 entries like 622 623 \indexentry{alpha|(}{1} 624 \indexentry{alpha|bold}{3} 625 \indexentry{alpha|)}{5} 626 627 will be interpreted as 628 629 \item alpha, \bold{3}, 1--5 630 631 but with a warning message in the transcript about 632 encountering an inconsistent page encapsulator. An explicit 633 range beginning in a Roman page number and ending in Arabic 634 635 is also considered an error. In this instance, (if possi- 636 ble) the range is broken into two subranges, one in Roman 637 and the other in Arabic. For instance, 638 639 \indexentry{alpha|(}{i} 640 \indexentry{alpha}{iv} 641 \indexentry{alpha}{3} 642 \indexentry{alpha|)}{7} 643 644 will be turned into 645 646 \item alpha, i--iv, 3--7 647 648 with a warning message in the transcript file complaining 649 about an illegal range formation. 650 6512 Finally, every special symbol mentioned in this section may 652 be escaped by the quote operator (`"'). Thus 653 654 \indexentry{alpha"@beta}{1} 655 656 will actually become 657 658 \item alpha@beta, 1 659 660 as a result of executing makeindex. The quoting power of 661 quote is eliminated if it is immediately preceded by escape 662 (`\'). For example, 663 664 \indexentry{f\"ur}{1} 665 666 becomes 667 668 \item f\"ur, 1 669 670 which represents an umlaut-accented `u' to the TeX family of 671 processors. 672 6732 From version 2.11 of makeindex, the quote operator may quote 674 any character in the range 1 ... 255. Character 0 is 675 excluded because it is used internally in the makeindex 676 source code as a string terminator. With this change, sort 677 keys can be created for all eight-bit characters except 0. 6782 The sorting order is 679 680 punctuation characters (in ASCII order), 681 digits, 682 control characters (1 ... 31), 683 space (32), 684 letters (ignoring case), 685 characters 127 ... 255. 686 6872 Here is an example showing the indexing of all printable 6882 ASCII characters other than letters and digits, assuming the 689 default TeX format. For convenience, the page number refer- 690 ences are the corresponding ASCII ordinal values. 691 692 \indexentry{" @" (space)}{32} 693 \indexentry{"!@"! (exclamation point)}{33} 694 \indexentry{""@"" (quotation mark))}{34} 695 \indexentry{"#@"\# (sharp sign)}{35} 696 \indexentry{"$@"\$ (dollar sign)}{36} 697 \indexentry{"%@"\% (percent sign)}{37} 698 \indexentry{"&@"\& (ampersand)}{38} 699 \indexentry{"<@"$<$ (left angle bracket)}{60} 700 \indexentry{"=@"= (equals)}{61} 701 \indexentry{">@"$>$ (right angle bracket)}{62} 702 \indexentry{"?@"? (query)}{63} 703 \indexentry{"@@"@ (at sign)}{64} 704 \indexentry{"[@"[ (left square bracket)}{91} 705 \indexentry{"\@"\verb=\= (backslash)}{92} 706 \indexentry{"]@"] (right square bracket)}{93} 707 \indexentry{"^@"\verb=^= (caret)}{94} 708 \indexentry{"_@"\verb=_= (underscore)}{95} 709 \indexentry{"`@"\verb=~= (grave accent)}{96} 710 \indexentry{"{@"\"{ (left brace)}{123} 711 \indexentry{"|@"\verb="|= (vertical bar)}{124} 712 \indexentry{"}@"\"} (right brace)}{125} 713 \indexentry{"~@"\verb=~= (tilde)}{126} 714 7152 Characters in the actual fields following the `@' character 716 which have special significance to TeX must be represented 717 as control sequences, or as math mode characters. Note par- 718 ticularly how the entries for the at sign, left and right 719 braces, and the vertical bar, are coded. The index file 720 output by makeindex for this example looks like this: 721 722 \begin{theindex} 723 724 \item ! (exclamation point), 33 725 \item " (quotation mark)), 34 726 \item \# (sharp sign), 35 727 \item \$ (dollar sign), 36 728 \item \% (percent sign), 37 729 \item \& (ampersand), 38 730 \item $<$ (left angle bracket), 60 731 \item = (equals), 61 732 \item $>$ (right angle bracket), 62 733 \item ? (query), 63 734 \item @ (at sign), 64 735 \item [ (left square bracket), 91 736 \item \verb=\= (backslash), 92 737 \item ] (right square bracket), 93 738 \item \verb=^= (caret), 94 739 740 \item \verb=_= (underscore), 95 741 \item \verb=~= (grave accent), 96 742 \item \{ (left brace), 123 743 \item \verb=|= (vertical bar), 124 744 \item \} (right brace), 125 745 \item \verb=~= (tilde), 126 746 747 \indexspace 748 749 \item (space), 32 750 751 \end{theindex} 752 7532 FILES 754 /usr/local/bin/makeindex 755 executable file 756 757 /usr/local/lib/tex/macros/idxmac-amstex.tex 758 TeX macro file used by makeindex 759 760 /usr/local/lib/tex/macros/idxmac.tex 761 TeX macro file used by makeindex 762 763 /usr/local/lib/tex/macros/makeidx.doc 764 TeX macro file used by makeindex 765 766 /usr/local/lib/tex/macros/makeidx.sty 767 TeX macro file used by makeindex 768 7692 SEE ALSO 770 ditroff(1L), latex(1L), make.index (1L), qsort(3), tex(1L), 771 troff(1L) 772 7732 UCSF Enhanced troff/TRANSCRIPT - An Overview, R. P. C. Rodg- 774 ers and Conrad Huang, LSMB Technical Report 90-2, UCSF 7752 School of Pharmacy, San Francisco, 1990. 776 7772 Index Preparation and Processing, Pehong Chen and Michael A. 7782 Harrison, Software: Practice and Experience, 19(9), 897915, 7792 September 1988. 780 7812 Automating Index Preparation, Pehong Chen and Michael A. 7822 Harrison. Technical Report 87/347, Computer Science Divi- 783 sion, University of California, Berkeley, 1987 (a LaTeX 784 document supplied with makeindex). 785 7862 MakeIndex: An Index Processor for LaTeX, Leslie Lamport, 7872 February 1987 (a LaTeX document supplied with makeindex). 788 7892 Tools for Printing Indices, Jon L. Bentley and Brian W. Ker- 790 nighan, Electronic Publishing - Origination, Dissemination, 791 and Design, 1(1), 318, June 1988 (also available as: 792 7932 Computing Science Technical Report No. 128, AT&T Bell 7942 Laboratories, Murray Hill, NJ 07974, 1986). 795 7962 AUTHOR 7972 Pehong Chen, Chen & Harrison International Systems, Inc. 7982 Palo Alto, California, USA <chen@renoir.berkeley.edu>. 7992 Manual page extensively revised and corrected, and troff(1) 800 examples created by Rick P. C. Rodgers, UCSF School of Phar- 801 macy <rodgers@cca.ucsf.edu>. 802 8032 ACKNOWLEDGMENTS 8042 Leslie Lamport contributed significantly to the design. 8052 Michael Harrison provided valuable comments and suggestions. 8062 Nelson Beebe improved on the portable version, and maintains 807 the source distribution for the TeX Users Group. Andreas 8082 Brosig contributed to the German word ordering. The modifi- 809 cation to the -ms macros was derived from a method proposed 810 by Ravi Sethi of AT&T Bell Laboratories. The LOG and CON- 8112 TRIB files in the makeindex source distribution record other 812 contributions. 813