diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /indexing/makeindex |
Initial commit
Diffstat (limited to 'indexing/makeindex')
153 files changed, 32726 insertions, 0 deletions
diff --git a/indexing/makeindex/ACK b/indexing/makeindex/ACK new file mode 100644 index 0000000000..870339c54b --- /dev/null +++ b/indexing/makeindex/ACK @@ -0,0 +1,17 @@ + Acknowledgements + +The author would like to thank the copyright holders for agreeing to +release MakeIndex to the public domain and for allowing the author to +continue his support for this software. + +The author would also like to express his gratitude to the users of +MakeIndex for reporting bugs, and in many instances, for fixing them. +In particular, thanks must go to the contributors who have made +substantial contributions to the MakeIndex software. Their names are +listed in the CONTRIB file which comes with this release. + + + + Pehong Chen + 11/11/1989 + diff --git a/indexing/makeindex/CONTRIB b/indexing/makeindex/CONTRIB new file mode 100644 index 0000000000..a6ff1918ac --- /dev/null +++ b/indexing/makeindex/CONTRIB @@ -0,0 +1,24 @@ +Key contributors of this MakeIndex distribution include + + Pehong Chen chen@renoir.berkeley.edu + Leslie Lamport lamport@src.dec.com + +and, in reverse alphabetical order by last name, + + Klaus Zuenkler kl%falke@ztivax.siemens.com + Martha Wershofen-Mersbach grztex%dbngmd21.bitnet@net.bio.net + Art Werschulz werschulz@cs.columbia.edu + Ed Sznyter ews@pescadero.stanford.edu + Joachim Schrod schrod@iti.informatik.th-darmstadt.de + Rainer Schoepf schoepf@sc.zib-berlin.de + Rick Rodgers rodgers@maxwell.mmwb.ucsf.edu + Sebastian Rahtz spqr@ecs.southampton.ac.uk + Eberhard Mattes mattes@azu.informatik.uni-stuttgart.de + Charles Karney karney%ppc.mfenet@nmfecc.arpa + Mark James mark@bdblues.altair.fr + Anita Hoover anita@brahms.udel.edu + Michael Harrison harrison@berkeley.edu + Baron Grey baron@cs.ucla.edu + Andreas Brosig brosig@gmdzi.gmd.de + Johannes Braams braams@hlsdnl5.bitnet + Nelson Beebe beebe@math.utah.edu diff --git a/indexing/makeindex/COPYING b/indexing/makeindex/COPYING new file mode 100644 index 0000000000..20c03550f3 --- /dev/null +++ b/indexing/makeindex/COPYING @@ -0,0 +1,42 @@ + + MakeIndex Distribution Notice + + 11/11/1989 + + Copyright (C) 1989 by Chen & Harrison International Systems, Inc. + Copyright (C) 1988 by Olivetti Research Center + Copyright (C) 1987 by Regents of the University of California + + Author: + Pehong Chen (phc@renoir.berkeley.edu) + Chen & Harrison International Systems, Inc. + Palo Alto, California + USA + +Permission is hereby granted to make and distribute original copies of +this program provided that the copyright notice and this permission +notice are preserved and provided that the recipient is not asked to +waive or limit his right to redistribute copies as allowed by this +permission notice and provided that anyone who receives an executable +form of this program is granted access to a machine-readable form of +the source code for this program at a cost not greater than reasonable +reproduction, shipping, and handling costs. Executable forms of this +program distributed without the source code must be accompanied by a +conspicuous copy of this permission notice and a statement that tells +the recipient how to obtain the source code. + +Permission is granted to distribute modified versions of all or part +of this program under the conditions above with the additional +requirement that the entire modified work must be covered by a +permission notice identical to this permission notice. Anything +distributed with and usable only in conjunction with something derived +from this program, whose useful purpose is to extend or adapt or add +capabilities to this program, is to be considered a modified version +of this program under the requirement above. Ports of this program to +other systems not supported in the distribution are also considered +modified versions. All modified versions should be reported back to +the author. + +This program is distributed with no warranty of any sort. No +contributor accepts responsibility for the consequences of using this +program or for whether it serves any particular purpose. diff --git a/indexing/makeindex/FILES b/indexing/makeindex/FILES new file mode 100644 index 0000000000..c683e53ee0 --- /dev/null +++ b/indexing/makeindex/FILES @@ -0,0 +1,38 @@ + ----- Files sent under Automatic Mail Distribution ----- + + Copyright (C) 1989 by Chen & Harrison International Systems, Inc. + Copyright (C) 1988 by Olivetti Research Center + Copyright (C) 1987 by Regents of the University of California + +If you receive MakeIndex by ftp or from any distribution tape, you can +ignore this file because you should have the complete version. This +file explains what you should receive by mail on a file by file basis. +There is a shell script that will send the files listed below to you +automatically. This facility is intended for people with no access to +other distribution channels. + +What follows is a subset of the current MakeIndex distribution. It +contains the following files for important info about MakeIndex: + +FILES README CONTRIB ACK COPYING PORTING + +This distribution includes the file test.tex, which is a documentation +written by Leslie Lamport on the use of MakeIndex with LaTeX. Nelson +Beebe added index terms to the document, so that you can try out +MakeIndex with the test.idx file generated by running LaTeX on +test.tex. Also included is makeindex.l, which is a UNIX man page on +the general use of MakeIndex. + +You should also receice the following files, which comprise the full +MakeIndex source directory. + + Makefile.kcc Makefile.vms mkind.c scanid.h + Makefile.msc VMSmake.com mkind.h scanst.c +LOG Makefile.pcc genind.c qsort.c scanst.h +Makefile Makefile.unx genind.h scanid.c sortid.c + +Altogether, you should receive 26 messages, each containing one file, +from this automatic mail distribution of MakeIndex. + + Pehong Chen + 10/11/1989 diff --git a/indexing/makeindex/PORTING b/indexing/makeindex/PORTING new file mode 100644 index 0000000000..2f6daaf653 --- /dev/null +++ b/indexing/makeindex/PORTING @@ -0,0 +1,11 @@ + ----- MakeIndex Porting Note ----- + +You are welcome and encouraged to port MakeIndex to any system not +support under the current distribution. The standard way of doing +that is by adding patches with enclosed #ifdef ... #endif pairs. You +can invent your own variables with the OS_ prefix attached in the +front. Please report your port back to me, so that I can make it +available to other people. + + Pehong Chen + 11/11/1989 diff --git a/indexing/makeindex/README b/indexing/makeindex/README new file mode 100644 index 0000000000..0ae677040f --- /dev/null +++ b/indexing/makeindex/README @@ -0,0 +1,160 @@ +------------------------------------------------------------------------------ + MakeIndex General Release Information + + Copyright (C) 1989 by Chen & Harrison International Systems, Inc. + Copyright (C) 1988 by Olivetti Research Center + Copyright (C) 1987 by Regents of the University of California + + Author: Pehong Chen + +MakeIndex is a general purpose index processor. This release contains +a FILES file, this README file, a CONTRIB file, an ACK file, a COPYING +notice, a brief PORTING instruction, a doc directory, a paper +directory, a src directory, a lib directory, and a test directory. + +------------------------------------------------------------------------------ +Everyone should read COPYING before installing or distributing MakeIndex. + +------------------------------------------------------------------------------ +The CONTRIB file lists the names of people who have contributed to +to this release. + +------------------------------------------------------------------------------ +The ACK file contains the author's acknowledgements. + +------------------------------------------------------------------------------ +FILES is a note to people receiving MakeIndex from the automatic mail +distribution, which is done by the shell script "auto". + +------------------------------------------------------------------------------ +PORTING contains some information for people interested in porting +MakeIndex to systems not supported under the current distribution. + +------------------------------------------------------------------------------ +The doc directory contains + +deblank.awk AWK script used in the Makefile steps + +makeindex.hlp ASCII version of makeindex.l + +makeindex.info an Emacs (TOPS-20 and GNU) INFO node produced + automatically from makeindex.vms by vmshelp2 + (available from Utah) + +makeindex.l a UNIX man page + +makeindex.ps PostScript translation of makeindex.l + +makeindex.tex documentation for the use under LaTeX + by Leslie Lamport + +makeindex.vms VAX/VMS equivalent of makeindex.l suitable + for inclusion in a local help library + +------------------------------------------------------------------------------ +For a detailed discussion on the design of MakeIndex, please read + + Pehong Chen and Michael Harrison, ``Automating Index Preparation'', + Tech. Report No. 87/347, Computer Science Division, + University of California, Berkeley, March 1987. + +A version of this report is included in the paper directory. A +somewhat condensed version entitled + + ``Index Preparation and Processing'' + +appears in Software: Practice and Experience, 18(9):897-915, September 1988. + +------------------------------------------------------------------------------ + +The src directory contains the C source of MakeIndex. This current +version is known to compile and run on UNIX (BSD and System V, cc and +gcc), VAX/VMS (VMS cc), TOPS-20 (kcc-20 and pcc-20), and IBM PC DOS +(Microsoft C Version 5.0, Turbo C Version 2.0), Atari ST, Siemens +BS2000 (CCD-2000), and IBM MVS/XA (IBM-C370). Consult the files +README and LOG in the src directory for further details. + +Type make to compile under BSD UNIX. Makefiles or command scripts for +the other operating systems are included as well. Implementations of +Make for them are available as part of the Utah DVI driver +distribution (send e-mail to beebe@math.utah.edu). + +Early porting work was carried out by Charles Karney +(karney%ppc.mfenet@nmfecc.arpa) at Princeton University and David J. +Buerger (dbeurger%scu.bitnet@jade.berkeley.edu) at University of Santa +Clara. These efforts were independent of the port to PC DOS, TOPS-20, +VAX VMS, and the draft-ANSI C environment for version 2.3 carried out +by Nelson H.F. Beebe (beebe@math.utah.edu). That port is described +in the file LOG in the src directory. + +------------------------------------------------------------------------------ +The lib directory contains the file idxmac.tex, which is an excerpt of +LaTeX's macros for indexing. This file can be included in plain TeX +documents to generate the .idx file. Similarly, the file +idxmac-amstex.tex can be used with AmSTeX. Some hacking may be +necessary to incorporate it with other dialects. Some people have +complained not having the LaTeX sty file mentioned in +doc/makeindex.tex in their library, so a copy of makeidx.sty and +makeidx.doc is also included in the lib directory. + +The file showidx.sty provides a LaTeX document style option that +records index references on each page in marginal notes; this +facilitates checking that important phrases have been indexed, without +the need to continually consult the index. + +------------------------------------------------------------------------------ +The test directory contains several sets of test files: + +b209*.idx Miscellaneous tests that uncovered bugs at + makeindex version 2.09 which were fixed for + version 2.10. + +book.idx Raw index generated from ``The Technology War'', + David Brandin and Michael Harrison, + John Wiley and Sons, New York, 1988. + +tort.idx a host of odd raw index entries + +test.tex, test.idx a version of doc/makeindex.tex (due to Leslie + Lamport) that incorporates index entries + (prepared by Nelson Beebe). + This can be used both to test MakeIndex, as well as to + illustrate the production of an index for new users. + Read src/README for more info. + +ok-*.inx, ok-*.ilg Correct output for files without the ok- prefix. + +Makefile UNIX makefile to run regression tests on + ../src/makeindex + +vmsdiff.com VAX VMS command file to run differences; its + definition of the symbol MAKEINDEX must be + adapted for each site, since VAX VMS foreign + command symbols require an absolute file + directory name. + +------------------------------------------------------------------------------ +The troff directory contains + +troff.ist a sample style file +ixmac defines macros to be used for indexing under troff +sample.txt a sample troff document with embedded index commands +sample.idx raw index file +sample.ind the pre-formatted index file +makeind a shell script that creates the raw index file (.idx), + invokes makeindex which creates the final index file + (.ind). Note that + makeind sample.txt + will create sample.idx, sample.ilg, and sample.ind. + +------------------------------------------------------------------------------ + Pehong Chen + 11-Nov-1989 + + Nelson H.F. Beebe + 28-Jan-1988, 05-Jul-1991 + + Joachim Schrod + 21-Jun-1990 + +------------------------------------------------------------------------------ diff --git a/indexing/makeindex/auto b/indexing/makeindex/auto new file mode 100644 index 0000000000..fe52db4bed --- /dev/null +++ b/indexing/makeindex/auto @@ -0,0 +1,26 @@ +#!/bin/sh + +req=$* + +for i in FILES ACK CONTRIB COPYING PORTING README +do + mail -s $i $req < $i + echo "Done sending $i to $req." +done + +cd ./test +i=test.tex +mail -s $i $req < $i +echo "Done sending $i to $req." + +cd ../doc +i=makeindex.l +mail -s $i $req < $i +echo "Done sending $i to $req." + +cd ../src +for i in * +do + mail -s $i $req < $i + echo "Done sending $i to $req." +done diff --git a/indexing/makeindex/doc/Makefile b/indexing/makeindex/doc/Makefile new file mode 100644 index 0000000000..4a6cf8dd1d --- /dev/null +++ b/indexing/makeindex/doc/Makefile @@ -0,0 +1,127 @@ +#======================================================================= +# Make auxiliary documentation using nroff and LaTeX. makeindex.l is +# the nroff/troff input file for the UNIX manual pages. From it, we +# produce: +# makeindex.hlp (printable ASCII help file), +# makeindex.info (GNU Emacs INFO node file), +# makeindex.ps (PostScript version of typeset manual pages), and +# makeindex.vms (VAX VMS hierarchical help file), +# manpages.dvi (.dvi file of manual pages) +# +# Targets: +# all +# clean +# clobber +# distclean +# install +# makeindex.dvi +# makeindex.hlp +# makeindex.ps +# makeindex.info +# makeindex.vms +# manpages.dvi +# mostlyclean +# realclean +# reallyclean +# uninstall +# +# [26-May-1993] -- update for 2.12beta release (add GNU Project +# standard targets) +# [15-Aug-1991] +#======================================================================= + +CATDIR = $(MANTOP)/cat1 +CP = cp +LATEX = latex +MANTOP = /usr/local/man +MANDIR = $(MANTOP)/man1 +MANEXT = 1 +RM = /bin/rm -f +SHELL = /bin/sh + +all: makeindex.dvi makeindex.hlp makeindex.info makeindex.ps \ + makeindex.vms manpages.dvi + +clean mostlyclean: + $(RM) *~ + $(RM) \#* + $(RM) core + $(RM) makeindex.aux + $(RM) makeindex.dvi + $(RM) makeindex.log + +clobber distclean realclean reallyclean: clean + $(RM) makeindex.hlp + $(RM) makeindex.info + $(RM) makeindex.ps + $(RM) makeindex.vms + $(RM) manpages.dvi + +install: uninstall + $(CP) makeindex.l $(MANDIR)/makeindex.$(MANEXT) + chmod 774 $(MANDIR)/makeindex.$(MANEXT) + +makeindex.dvi: makeindex.tex + $(LATEX) makeindex.tex + $(LATEX) makeindex.tex + +makeindex.hlp: makeindex.l + nroff -man makeindex.l | col -b >makeindex.hlp + +# ====================================================================== +# NB: The vmshelp* and uhelp* convertors are available for anonymous ftp +# on math.utah.edu from ~ftp/pub/tex/pub/info or via e-mail from the +# tuglib server with requests "help" and "send index from +# ftp/pub/tex/pub/info" +# ====================================================================== +makeindex.info: makeindex.vms + vmshelp2 makeindex.vms >makeindex.info + +makeindex.ps: makeindex.l +# To convert a manual page to PostScript: +# on BSD: tbl | eqn | ditroff -man | psdit | psrev +# on AIX: tbl | eqn | psroff -t -man | psrev +# Omit psrev if your printer stacks pages face down. +# tbl and eqn are not required for makeindex.l. +# This pipeline is hidden in a private script: + man2ps <makeindex.l >makeindex.ps + +# Reduce makeindex.hlp to makeindex.vms with the help of sed and awk. +# Alas, the output of nroff recorded in makeindex.hlp is somewhat +# system dependent. The sed patterns here suffice for SunOS 4.1.1 +# and IBM RS/6000 AIX 3.1, but may require modifications on other +# UNIX systems. + +makeindex.vms: makeindex.hlp + echo '1 MAKEINDEX' >makeindex.vms + expand < makeindex.hlp | \ + sed -e '/^ *MAKEINDEX(1L).*MAKEINDEX(1L)/d' \ + -e '/^ *Page.*(printed.*)/d' \ + -e '/^Sun Release [0-9]/d' \ + -e 's/^ *INPUT STYLE SPECIFIERS/3 INPUT STYLE SPECIFIERS/' \ + -e 's/^ *OUTPUT STYLE SPECIFIERS/3 OUTPUT STYLE SPECIFIERS/' \ + -e 's/^ *TeX EXAMPLE/3 TeX EXAMPLE/' \ + -e 's/^ *TROFF EXAMPLE/3 TROFF EXAMPLE/' \ + -e 's/^ *CREATING THE INDEX FILE/3 CREATING THE INDEX FILE/' \ + -e 's/^ *COMPLETING THE INDEX/3 COMPLETING THE INDEX/' \ + -e 's/^ / /' \ + -e 's/^ \([A-Z][A-Z /]*\)$$/2 \1/' \ + -e 's/^\([A-Z][A-Z /]*\)$$/2 \1/' |\ + awk -f deblank.awk >> makeindex.vms + +# We create a .dvi file for the manual pages under a different name to +# avoid a collision with makeindex.dvi. GNU groff works quite nicely, +# and gives us a .dvi file that anyone can process, even if they do not +# have a PostScript printer. groff's font selection is a bit unusual; +# it wants a few Computer Modern fonts in magnifications 0.8 and 0.9. +# For manpages.dvi, it needs these additional font files: cmbx10.240pk +# cmbx10.270pk cmcsc10.240pk cmcsc10.270pk cmr10.240pk cmr10.270pk +# cmti10.240pk cmti10.270pk. If your DVI driver can substitute a nearby +# size, you should be able to manage without them. +manpages.dvi: makeindex.l + groff -Tdvi -man makeindex.l >manpages.dvi + +uninstall: + if [ -f $(CATDIR)/makeindex.1 ] ; then $(RM) $(CATDIR)/makeindex.1 ; fi + if [ -f $(MANDIR)/makeindex.1 ] ; then $(RM) $(MANDIR)/makeindex.1 ; fi + diff --git a/indexing/makeindex/doc/deblank.awk b/indexing/makeindex/doc/deblank.awk new file mode 100644 index 0000000000..3b48f325ce --- /dev/null +++ b/indexing/makeindex/doc/deblank.awk @@ -0,0 +1,14 @@ +# /u/beebe/tex/makeindex/2-10/makeindex/doc/deblank.awk, Sat Jul 6 12:06:09 1991 +# Edit by Nelson H. F. Beebe <beebe@rios.math.utah.edu> +# ======================================================================== +# Reduce consecutive blank lines to single blank line. +# Usage: +# awk -f deblank.awk <infile >outfile +# [06-Jul-1991] +# ======================================================================== +NF == 0 { nb++ } + +NF > 0 { if (nb > 0) print ""; + nb = 0; + print $0; + } diff --git a/indexing/makeindex/doc/makeindex.dvi b/indexing/makeindex/doc/makeindex.dvi Binary files differnew file mode 100644 index 0000000000..fada476cfc --- /dev/null +++ b/indexing/makeindex/doc/makeindex.dvi diff --git a/indexing/makeindex/doc/makeindex.hlp b/indexing/makeindex/doc/makeindex.hlp new file mode 100644 index 0000000000..51626e8096 --- /dev/null +++ b/indexing/makeindex/doc/makeindex.hlp @@ -0,0 +1,1056 @@ + + + +MAKEINDEX(1L) MISC. REFERENCE MANUAL PAGES MAKEINDEX(1L) + + + +NAME + makeindex - a general purpose, formatter-independent index + processor + +SYNOPSIS + makeindex [-c] [-g] [-i] [-l] [-o ind] [-p num] [-q] [-r] + [-s sfile] [-t log] [idx0 idx1 idx2...] + +DESCRIPTION + The program makeindex is a general purpose hierarchical + index generator; it accepts one or more input files (often + produced by a text formatter such as TeX (tex(1L)) or + troff(1), sorts the entries, and produces an output file + which can be formatted. The index can have up to three lev- + els (0, 1, and 2) of subitem nesting. The way in which + words are flagged for indexing within the main document is + specific to the formatter used; makeindex does not automate + the process of selecting these words. As the output index + is hierarchical, makeindex can be considered complimentary + to the awk(1)-based make.index(1L) system of Bentley and + Kernighan, which is specific to troff(1), generates non- + hierarchical indices, and employs a much simpler syntax for + indicating index entries. For illustration of use with + troff and TeX, see the section EXAMPLES below. + + The formats of the input and output files are specified in a + style file; by default, input is assumed to be a .idx file, + as generated by LaTeX. + + Unless specified explicitly, the base name of the first + input file (idx0) is used to determine the names of other + files. For each input file name specified, a file of that + name is sought. If this file is not found and the file name + has no extension, the extension .idx is appended. If no + file with this name is found, makeindex aborts. + + For important notes on how to select index keywords, see the + document by Lamport cited below. As an issue separate from + selecting index keywords, a systematic mechanism for placing + index terms in a document is suggested in Index Preparation + and Processing, a paper cited below. + +OPTIONS + -c Compress intermediate blanks (ignoring leading and + trailing blanks and tabs). By default, blanks in + the index key are retained. + + -g Employ German word ordering in the index, in + accord with rules set forth in DIN 5007. By + default, makeindex employs a word ordering in + which precedence is: symbols, numbers, uppercase + letters, lowercase letters. The sequence in + + + +Sun Release 4.1 Last change: 10 December 1991 1 + + + + + + +MAKEINDEX(1L) MISC. REFERENCE MANUAL PAGES MAKEINDEX(1L) + + + + German word ordering is: symbols, lowercase + letters, uppercase letters, numbers. Addition- + ally, this option enables makeindex to recognize + the German TeX-commands {"a, "o, "u and "s} as + {ae, oe, ue and ss} during the sorting of the + entries. The quote character must be redefined in + a style file (for example, redefine quote as '+'). + If the quote character is not redefined, makeindex + will produce an error message and abort. + + -i Take input from stdin. When this option is speci- + fied and -o is not, output is written to stdout. + + -l Letter ordering; by default, word ordering is used + (see the ORDERING section). + + -o ind Employ ind as the output index file. By default, + the file name is created by appending the exten- + sion .ind to the base name of the first input file + (idx0). + + -p num Set the starting page number of the output index + file to be num (useful when the index file is to + be formatted separately). The argument num may be + numerical or one of the following: + + any The starting page is the last source + page number plus 1. + + odd The starting page is the first odd page + following the last source page number. + + even The starting page is the first even page + following the last source page number. + + The last source page is obtained by searching + backward in the log file for the first instance of + a number included within paired square brackets + ([...]). If a page number is missing or the log + file is not found, no attempt will be made to set + the starting page number. The source log file + name is determined by appending the extension .log + to the base name of the first input file (idx0). + + -q Quiet mode; send no messages to stderr. By + default, progress and error messages are sent to + stderr as well as to the transcript file. + + -r Disable implicit page range formation; page ranges + must be created by using explicit range operators; + see SPECIAL EFFECTS below. By default, three or + more successive pages are automatically + + + +Sun Release 4.1 Last change: 10 December 1991 2 + + + + + + +MAKEINDEX(1L) MISC. REFERENCE MANUAL PAGES MAKEINDEX(1L) + + + + abbreviated as a range (e.g. 1-5). + + -s sty Employ sty as the style file (no default). The + environment variable INDEXSTYLE defines the path + where the style file should be found. + + -t log Employ log as the transcript file. By default, + the file name is created by appending the exten- + sion .ilg to the base name of the first input file + (idx0). + +STYLE FILE + The style file informs makeindex about the format of the + .idx input files and the intended format of the final output + file; examples appear below. This file can reside anywhere + in the path defined by the environment variable INDEXSTYLE. + The style file contains a list of <specifier, attribute> + pairs. There are two types of specifiers: input and output. + Pairs do not have to appear in any particular order. A line + begun by `%' is a comment. In the following list of specif- + iers and arguments, <string> is an arbitrary string delim- + ited by double quotes ("..."), <char> is a single letter + embraced by single quotes ('...'), and <number> is a nonne- + gative integer. The maximum length of a <string> is 2048. + A literal backslash or quote must be escaped (by a + backslash). Anything not specified in the style file will + be assigned a default value, which is shown at the head of + the rightmost column. + + INPUT STYLE SPECIFIERS + actual <char> '@' + Symbol indicating that the next + entry is to appear in the output + file. + + arg_close <char> '}' + Closing delimiter for the index + entry argument. + + arg_open <char> '{' + Opening delimiter for the index + entry argument. + + encap <char> '|' + Symbol indicating that the rest of + the argument list is to be used as + the encapsulating command for the + page number. + + escape <char> '\\' + Symbol which escapes the following + letter, unless its preceding letter + + + +Sun Release 4.1 Last change: 10 December 1991 3 + + + + + + +MAKEINDEX(1L) MISC. REFERENCE MANUAL PAGES MAKEINDEX(1L) + + + + is escape. Note: quote is used to + escape the letter which immediately + follows it, but if it is preceded + by escape, it is treated as a ordi- + nary character. These two symbols + must be distinct. + + keyword <string> "\\indexentry" + Command which tells makeindex that + its argument is an index entry. + + level <char> '!' + Delimiter denoting a new level of + subitem. + + quote <char> '"' + Note: quote is used to escape the + letter which immediately follows + it, but if it is preceded by + escape, it is treated as a ordinary + character. These two symbols must + be distinct. + + range_close <char> ')' + Closing delimiter indicating the + end of an explicit page range. + + range_open <char> '(' + Opening delimiter indicating the + beginning of an explicit page + range. + + OUTPUT STYLE SPECIFIERS + preamble <string> "\\begin{theindex}\n" + Preamble of output file. + + postamble <string> "\n\n\\end{theindex}\n" + Postamble of output file. + + setpage_prefix <string> "\n \\setcounter{page}{" + Prefix of command which sets the + starting page number. + + setpage_suffix <string> "}\n" + Suffix of command which sets the + starting page number. + + group_skip <string> "\n\n \\indexspace\n" + Vertical space to be inserted + before a new group begins. + + headings_flag <string> 0 + + + +Sun Release 4.1 Last change: 10 December 1991 4 + + + + + + +MAKEINDEX(1L) MISC. REFERENCE MANUAL PAGES MAKEINDEX(1L) + + + + Flag indicating treatment of new + group headers, which are inserted + when before a new group (symbols, + numbers, and the 26 letters): posi- + tive values cause an uppercase + letter to be inserted between pre- + fix and suffix, and negative values + cause a lowercase letter to be + inserted (default is 0, which pro- + duces no header). + + heading_prefix <string> "" + Header prefix to be inserted before + a new letter begins. + + symhead_positive <string> + "Symbols" + Heading for symbols to be inserted + if headings_flag is positive. + + symhead_negative <string> + "symbols" + Heading for symbols to be inserted + if headings_flag is negative. + + numhead_positive <string> + "Numbers" + Heading for numbers to be inserted + if headings_flag is positive. + + numhead_negative <string> + "numbers" + Heading for numbers to be inserted + if headings_flag is negative. + + item_0 <string> "\n \\item " + Command to be inserted between two + primary (level 0) items. + + item_1 <string> "\n \\subitem " + Command to be inserted between two + secondary (level 1) items. + + item_2 <string> "\n \\subsubitem " + Command to be inserted between two + level 2 items. + + item_01 <string> "\n \\subitem " + Command to be inserted between a + level 0 item and a level 1 item. + + item_x1 <string> "\n \\subitem " + + + +Sun Release 4.1 Last change: 10 December 1991 5 + + + + + + +MAKEINDEX(1L) MISC. REFERENCE MANUAL PAGES MAKEINDEX(1L) + + + + Command to be inserted between a + level 0 item and a level 1 item, + where the level 0 item does not + have associated page numbers. + + item_12 <string> "\n \\subsubitem " + Command to be inserted between a + level 1 item and a level 2 item. + + item_x2 <string> "\n \\subsubitem " + Command to be inserted between a + level 1 item and a level 2 item, + where the level 1 item does not + have associated page numbers. + + delim_0 <string> ", " + Delimiter to be inserted between a + level 0 key and its first page + number (default: comma followed by + a blank). + + delim_1 <string> ", " + Delimiter to be inserted between a + level 1 key and its first page + number (default: comma followed by + a blank). + + delim_2 <string> ", " + Delimiter to be inserted between a + level 2 key and its first page + number (default: comma followed by + a blank). + + delim_n <string> ", " + Delimiter to be inserted between + two page numbers for the same key + in any level (default: comma fol- + lowed by a blank). + + delim_r <string> "--" + Delimiter to be inserted between + the starting and ending page + numbers of a range. + + delim_t <string> "" + Delimiter to be inserted at the end + of a page list. This delimiter has + no effect on entries which have no + associated page list. + + encap_prefix <string> "\\" + First part of prefix for the + + + +Sun Release 4.1 Last change: 10 December 1991 6 + + + + + + +MAKEINDEX(1L) MISC. REFERENCE MANUAL PAGES MAKEINDEX(1L) + + + + command which encapsulates the page + number. + + encap_infix <string> "{" + Second part of prefix for the com- + mand which encapsulates the page + number. + + encap_suffix <string> "}". + Suffix for the command which encap- + sulates the page number. + + line_max <number> 72 + Maximum length of a line in the + output, beyond which a line wraps. + + indent_space <string> "\t\t" + Space to be inserted in front of a + wrapped line (default: two tabs). + + indent_length <number> 16 + Length of indent_space (default: + 16, equivalent to 2 tabs). + +EXAMPLES + TeX EXAMPLE + The following example shows a style file called book.ist, + which defines an index for a book which can be formatted + independently of the main source: + + preamble + "\\documentstyle[12pt]{book} + \\begin{document} + \\begin{theindex} + {\\small\n" + postamble + "\n\n} + \\end{theindex} + \\end{document}\n" + + Assuming that a particular book style requires the index (as + well as any chapters) to start from an odd page number, and + that the input file is named foo.idx, the following command + line produces output in file footmp.ind: + + makeindex -s book.ist -o footmp.ind -p odd foo + + Here a non-default output file name is used to avoid + clobbering the output for the book itself (presumably + foo.dvi, which would have been the default name for the + index output file!). + + + + +Sun Release 4.1 Last change: 10 December 1991 7 + + + + + + +MAKEINDEX(1L) MISC. REFERENCE MANUAL PAGES MAKEINDEX(1L) + + + + TROFF EXAMPLE + A sample control file for creating an index, which we will + assume resides in the file sample.ist: + + keyword "IX:" + preamble + ".\\\" start of index output + \".\\\" enter two column mode + .2C + .SH + .ce + INDEX + .XS + INDEX + .XE + .R + .ps 9p + .vs 11p + .sp + .de I1 + .ti 0.25i + .. + .de I2 + .ti 0.5i + .." + postamble "\n.\\\" end of index output" + setpage_prefix "\n.nr % " + setpage_suffix "" + group_skip "\n.sp 1.0" + headings_flag 1 + heading_prefix "\n.IS\n" + heading_suffix "\n.IE" + item_0 "\n.br\n" + item_1 "\n.I1\n" + item_2 "\n.I2\n" + item_01 "\n.I1\n" + item_x1 "\n.I1\n" + item_12 "\n.I2\n" + item_x2 "\n.I2\n" + delim_0 ", " + delim_1 ", " + delim_2 ", " + delim_r "-" + delim_t "." + encap_prefix "\\fB" + encap_infix "" + encap_suffix "\\fP" + indent_space "" + indent_length 0 + + The local macro package may require modification, as in this + example of an extension to the -ms macros (note that at some + + + +Sun Release 4.1 Last change: 10 December 1991 8 + + + + + + +MAKEINDEX(1L) MISC. REFERENCE MANUAL PAGES MAKEINDEX(1L) + + + + sites, this macro should replace a pre-existing macro of the + same name): + + . + .de IX + .ie '\\n(.z'' .tm IX: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 {\\n(PN} + .el \\!.IX \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 {\\n(PN} + .. + + (note that the string {\\n(PN} is separated from the rest of + the line by a tab. If your local macro package does not + contain this extension, just include those lines at the + beginning of your file. Here is a simple troff(1) input + file, which we will assume is named sample.txt: + + This is a sample file to test the \fImakeindex\fP(1L) + program, and see + .IX {indexing!programs!C language} + .IX {makeindex@\fImakeindex\fP(1L)} + .bp + .rs + .IX {Knuth} + .IX {typesetting!computer-aided} + how well it functions in the \fItroff\fP(1) environment. + + Note that index entries are indicated by the .IX macro, + which causes the following text to be written to stdout + along with the current page number. + + CREATING THE INDEX FILE IN THE BOURNE SHELL + To create an input file for makeindex, in the Bourne shell + environment, do the equivalent at your site of the command: + + psroff -ms -Tpsc -t sample.txt > /dev/null 2> sample.tmp + + Some sites will require ditroff instead of psroff. To + filter out any genuine error messages, invoke grep(1): + + grep '^IX: ' sample.tmp > sample.idx + + CREATING THE INDEX FILE USING UCSF ENHANCED TROFF/TRANSCRIPT + + With UCSF Enhanced troff/TRANSCRIPT, the -I option of + psroff(1L) can produce both formatter output and an index + file: + + psroff -ms -I sample.inp -Tpsc sample.txt + + If it is wished to suppress the formatter output: + + psroff -ms -I sample.inp -Tpsc -t sample.txt > /dev/null + + + + +Sun Release 4.1 Last change: 10 December 1991 9 + + + + + + +MAKEINDEX(1L) MISC. REFERENCE MANUAL PAGES MAKEINDEX(1L) + + + + COMPLETING THE INDEX + Any of the above procedures leaves the input for makeindex + in sample.inp. The next step is to invoke makeindex: + + makeindex -s sample.ist sample.idx + + This leaves troff(1)-ready output in the file sample.ind. + +ORDERING + By default, makeindex assumes word ordering; if the -l + option is in effect, letter ordering is used. In word ord- + ering, a blank precedes any letter in the alphabet, whereas + in letter ordering, it does not count at all. This is + illustrated by the following example: + + word order letter order + sea lion seal + seal sea lion + + Numbers are always sorted in numeric order. For instance, + + 9 (nine), 123 + 10 (ten), see Derek, Bo + + Letters are first sorted without regard to case; when words + are identical, the uppercase version precedes its lowercase + counterpart. + + A special symbol is defined here to be any character not + appearing in the union of digits and the English alphabetic + characters. Patterns starting with special symbols precede + numbers, which precede patterns starting with letters. As a + special case, a string starting with a digit but mixed with + non-digits is considered to be a pattern starting with a + special character. + +SPECIAL EFFECTS + Entries such as + + \indexentry{alpha}{1} + \indexentry{alpha!beta}{3} + \indexentry{alpha!beta!gamma}{10} + + in the input file will be converted to + + \item alpha, 1 + \subitem beta, 3 + \subsubitem gamma, 10 + + in the output index file. Notice that the level symbol + (`!') is used above to delimit hierarchical levels. + + + + +Sun Release 4.1 Last change: 10 December 1991 10 + + + + + + +MAKEINDEX(1L) MISC. REFERENCE MANUAL PAGES MAKEINDEX(1L) + + + + It is possible to make an item appear in a designated form + by using the actual (`@') operator. For instance, + + \indexentry{alpha@{\it alpha\/}}{1} + + will become + + \item {\it alpha\/}, 1 + + after processing. The pattern preceding `@' is used as sort + key, whereas the one following it is written to the output + file. Note that two appearances of the same key, one with + and one without the actual operator, are regarded as dis- + tinct entries. + + The item, subitem, and subsubitem fields may have individual + sort keys: + + \indexentry{aa@{\it aa\/}!bb@{\it bb\/}!cc@{\it cc\/}}{1} + + This will be converted to + + \item {\it aa}, 1 + \subitem {\it bb}, 3 + \subsubitem {\it cc}, 10 + + It is possible to encapsulate a page number with a desig- + nated command using the encap (`|') operator: + + \indexentry{alpha|bold}{1} + + will be converted to + + \item alpha, \bold{1} + + where, with a suitable definition for TeX, \bold{n} will + expand to {\bf n}. In this example, the three output attri- + butes associated with page encapsulation encap_prefix, + encap_infix, and encap_suffix, correspond to backslash, left + brace, and right brace, respectively. This mechanism allows + page numbers to be set in different fonts. For example, the + page where the definition of a keyword appears can be in one + font, the location of a primary example can be in another + font, and other appearances in yet a third font. + + The encap operator can also be used to create cross refer- + ences in the index: + + \indexentry{alpha|see{beta}}{1} + + will become + + + + +Sun Release 4.1 Last change: 10 December 1991 11 + + + + + + +MAKEINDEX(1L) MISC. REFERENCE MANUAL PAGES MAKEINDEX(1L) + + + + \item alpha, \see{beta}{1} + + in the output file, where + + \see{beta}{1} + + will expand to + + {\it see\/} beta + + Note that in a cross reference like this the page number + disappears. + + A pair of encap concatenated with range_open (`|(') and + range_close (`|)') creates an explicit page range: + + \indexentry{alpha|(}{1} + \indexentry{alpha|)}{5} + + will become + + \item alpha, 1-5 + + Intermediate pages indexed by the same key will be merged + into the range implicitly. This is especially useful when + an entire section about a particular subject is to be + indexed, in which case only the range opening and closing + operators need to be inserted at the beginning and end of + the section. Explicit page range formation can also include + an extra command to set the page range in a designated font: + + \indexentry{alpha|(bold}{1} + \indexentry{alpha|)}{5} + + will become + + \item alpha, \bold{1--5} + + Several potential problems are worth mentioning. First, + entries like + + \indexentry{alpha|(}{1} + \indexentry{alpha|bold}{3} + \indexentry{alpha|)}{5} + + will be interpreted as + + \item alpha, \bold{3}, 1--5 + + but with a warning message in the transcript about + encountering an inconsistent page encapsulator. An explicit + range beginning in a Roman page number and ending in Arabic + + + +Sun Release 4.1 Last change: 10 December 1991 12 + + + + + + +MAKEINDEX(1L) MISC. REFERENCE MANUAL PAGES MAKEINDEX(1L) + + + + is also considered an error. In this instance, (if possi- + ble) the range is broken into two subranges, one in Roman + and the other in Arabic. For instance, + + \indexentry{alpha|(}{i} + \indexentry{alpha}{iv} + \indexentry{alpha}{3} + \indexentry{alpha|)}{7} + + will be turned into + + \item alpha, i--iv, 3--7 + + with a warning message in the transcript file complaining + about an illegal range formation. + + Finally, every special symbol mentioned in this section may + be escaped by the quote operator (`"'). Thus + + \indexentry{alpha"@beta}{1} + + will actually become + + \item alpha@beta, 1 + + as a result of executing makeindex. The quoting power of + quote is eliminated if it is immediately preceded by escape + (`\'). For example, + + \indexentry{f\"ur}{1} + + becomes + + \item f\"ur, 1 + + which represents an umlaut-accented `u' to the TeX family of + processors. + + From version 2.11 of makeindex, the quote operator may quote + any character in the range 1 ... 255. Character 0 is + excluded because it is used internally in the makeindex + source code as a string terminator. With this change, sort + keys can be created for all eight-bit characters except 0. + The sorting order is + + punctuation characters (in ASCII order), + digits, + control characters (1 ... 31), + space (32), + letters (ignoring case), + characters 127 ... 255. + + + + +Sun Release 4.1 Last change: 10 December 1991 13 + + + + + + +MAKEINDEX(1L) MISC. REFERENCE MANUAL PAGES MAKEINDEX(1L) + + + + Here is an example showing the indexing of all printable + ASCII characters other than letters and digits, assuming the + default TeX format. For convenience, the page number refer- + ences are the corresponding ASCII ordinal values. + + \indexentry{" @" (space)}{32} + \indexentry{"!@"! (exclamation point)}{33} + \indexentry{""@"" (quotation mark)}{34} + \indexentry{"#@"\# (sharp sign)}{35} + \indexentry{"$@"\$ (dollar sign)}{36} + \indexentry{"%@"\% (percent sign)}{37} + \indexentry{"&@"\& (ampersand)}{38} + \indexentry{"<@"$<$ (left angle bracket)}{60} + \indexentry{"=@"= (equals)}{61} + \indexentry{">@"$>$ (right angle bracket)}{62} + \indexentry{"?@"? (query)}{63} + \indexentry{"@@"@ (at sign)}{64} + \indexentry{"[@"[ (left square bracket)}{91} + \indexentry{"\@"\verb=\= (backslash)}{92} + \indexentry{"]@"] (right square bracket)}{93} + \indexentry{"^@"\verb=^= (caret)}{94} + \indexentry{"_@"\verb=_= (underscore)}{95} + \indexentry{"`@"\verb=~= (grave accent)}{96} + \indexentry{"{@"\"{ (left brace)}{123} + \indexentry{"|@"\verb="|= (vertical bar)}{124} + \indexentry{"}@"\"} (right brace)}{125} + \indexentry{"~@"\verb=~= (tilde)}{126} + + Characters in the actual fields following the `@' character + which have special significance to TeX must be represented + as control sequences, or as math mode characters. Note par- + ticularly how the entries for the at sign, left and right + braces, and the vertical bar, are coded. The index file + output by makeindex for this example looks like this: + + \begin{theindex} + + \item ! (exclamation point), 33 + \item " (quotation mark), 34 + \item \# (sharp sign), 35 + \item \$ (dollar sign), 36 + \item \% (percent sign), 37 + \item \& (ampersand), 38 + \item $<$ (left angle bracket), 60 + \item = (equals), 61 + \item $>$ (right angle bracket), 62 + \item ? (query), 63 + \item @ (at sign), 64 + \item [ (left square bracket), 91 + \item \verb=\= (backslash), 92 + \item ] (right square bracket), 93 + \item \verb=^= (caret), 94 + + + +Sun Release 4.1 Last change: 10 December 1991 14 + + + + + + +MAKEINDEX(1L) MISC. REFERENCE MANUAL PAGES MAKEINDEX(1L) + + + + \item \verb=_= (underscore), 95 + \item \verb=~= (grave accent), 96 + \item \{ (left brace), 123 + \item \verb=|= (vertical bar), 124 + \item \} (right brace), 125 + \item \verb=~= (tilde), 126 + + \indexspace + + \item (space), 32 + + \end{theindex} + +FILES + /usr/local/bin/makeindex + executable file + + /usr/local/lib/tex/macros/idxmac-amstex.tex + TeX macro file used by makeindex + + /usr/local/lib/tex/macros/idxmac.tex + TeX macro file used by makeindex + + /usr/local/lib/tex/macros/makeidx.doc + TeX macro file used by makeindex + + /usr/local/lib/tex/macros/makeidx.sty + TeX macro file used by makeindex + +SEE ALSO + ditroff(1L), latex(1L), make.index (1L), qsort(3), tex(1L), + troff(1L) + + UCSF Enhanced troff/TRANSCRIPT - An Overview, R. P. C. Rodg- + ers and Conrad Huang, LSMB Technical Report 90-2, UCSF + School of Pharmacy, San Francisco, 1990. + + Index Preparation and Processing, Pehong Chen and Michael A. + Harrison, Software: Practice and Experience, 19(9), 897915, + September 1988. + + Automating Index Preparation, Pehong Chen and Michael A. + Harrison. Technical Report 87/347, Computer Science Divi- + sion, University of California, Berkeley, 1987 (a LaTeX + document supplied with makeindex). + + MakeIndex: An Index Processor for LaTeX, Leslie Lamport, + February 1987 (a LaTeX document supplied with makeindex). + + Tools for Printing Indices, Jon L. Bentley and Brian W. Ker- + nighan, Electronic Publishing - Origination, Dissemination, + and Design, 1(1), 318, June 1988 (also available as: + + + +Sun Release 4.1 Last change: 10 December 1991 15 + + + + + + +MAKEINDEX(1L) MISC. REFERENCE MANUAL PAGES MAKEINDEX(1L) + + + + Computing Science Technical Report No. 128, AT&T Bell + Laboratories, Murray Hill, NJ 07974, 1986). + +AUTHOR + Pehong Chen, Chen & Harrison International Systems, Inc. + Palo Alto, California, USA <chen@renoir.berkeley.edu>. + Manual page extensively revised and corrected, and troff(1) + examples created by Rick P. C. Rodgers, UCSF School of Phar- + macy <rodgers@cca.ucsf.edu>. + +ACKNOWLEDGMENTS + Leslie Lamport contributed significantly to the design. + Michael Harrison provided valuable comments and suggestions. + Nelson Beebe improved on the portable version, and maintains + the source distribution for the TeX Users Group. Andreas + Brosig contributed to the German word ordering. The modifi- + cation to the -ms macros was derived from a method proposed + by Ravi Sethi of AT&T Bell Laboratories. The LOG and CON- + TRIB files in the makeindex source distribution record other + contributions. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Sun Release 4.1 Last change: 10 December 1991 16 + + + diff --git a/indexing/makeindex/doc/makeindex.info b/indexing/makeindex/doc/makeindex.info new file mode 100644 index 0000000000..5c6019bbdd --- /dev/null +++ b/indexing/makeindex/doc/makeindex.info @@ -0,0 +1,1172 @@ +-*-Text-*- +***WARNING***: Do NOT edit this file. It was created automatically from +the corresponding .HLP file: + makeindex.vms +by the vmshelp2 utility on Tue Dec 10 07:34:30 1991 + +File: makeindex, Node: Top, Previous: MAKEINDEX, Up: (dir), Next: MAKEINDEX + +* Menu: + +* MAKEINDEX:: + +File: makeindex, Node: MAKEINDEX, Previous: Top, Up: Top, Next: Top +MAKEINDEX + + +* Menu: + +* NAME-[MAKEINDEX]:: +* SYNOPSIS-[MAKEINDEX]:: +* DESCRIPTION-[MAKEINDEX]:: +* The program makeindex is a general purpose hierarchical-[MAKEINDEX]:: +* Kernighan, which is specific to troff(1), generates non--[MAKEINDEX]:: +* The formats of the input and output files are specified in a-[MAKEINDEX]:: +* Unless specified explicitly, the base name of the first-[MAKEINDEX]:: +* For important notes on how to select index keywords, see the-[MAKEINDEX]:: +* OPTIONS-[MAKEINDEX]:: +* STYLE FILE-[MAKEINDEX]:: +* The style file informs makeindex about the format of the-[MAKEINDEX]:: +* The style file contains a list of <specifier, attribute>-[MAKEINDEX]:: +* Pairs do not have to appear in any particular order. A line-[MAKEINDEX]:: +* A literal backslash or quote must be escaped (by a-[MAKEINDEX]:: +* EXAMPLES-[MAKEINDEX]:: +* The following example shows a style file called book.ist,-[MAKEINDEX]:: +* Assuming that a particular book style requires the index (as-[MAKEINDEX]:: +* Here a non-default output file name is used to avoid-[MAKEINDEX]:: +* A sample control file for creating an index, which we will-[MAKEINDEX]:: +* The local macro package may require modification, as in this-[MAKEINDEX]:: +* Note that index entries are indicated by the .IX macro,-[MAKEINDEX]:: +* To create an input file for makeindex, in the Bourne shell-[MAKEINDEX]:: +* Some sites will require ditroff instead of psroff. To-[MAKEINDEX]:: +* With UCSF Enhanced troff/TRANSCRIPT, the -I option of-[MAKEINDEX]:: +* If it is wished to suppress the formatter output-[MAKEINDEX]:: +* Any of the above procedures leaves the input for makeindex-[MAKEINDEX]:: +* This leaves troff(1)-ready output in the file sample.ind.-[MAKEINDEX]:: +* ORDERING-[MAKEINDEX]:: +* By default, makeindex assumes word ordering; if the -l-[MAKEINDEX]:: +* Numbers are always sorted in numeric order. For instance,-[MAKEINDEX]:: +* Letters are first sorted without regard to case; when words-[MAKEINDEX]:: +* A special symbol is defined here to be any character not-[MAKEINDEX]:: +* SPECIAL EFFECTS-[MAKEINDEX]:: +* Entries such as-[MAKEINDEX]:: +* It is possible to make an item appear in a designated form-[MAKEINDEX]:: +* The item, subitem, and subsubitem fields may have individual-[MAKEINDEX]:: +* This will be converted to-[MAKEINDEX]:: +* It is possible to encapsulate a page number with a desig--[MAKEINDEX]:: +* The encap operator can also be used to create cross refer--[MAKEINDEX]:: +* Note that in a cross reference like this the page number-[MAKEINDEX]:: +* A pair of encap concatenated with range_open (`|(') and-[MAKEINDEX]:: +* Intermediate pages indexed by the same key will be merged-[MAKEINDEX]:: +* Several potential problems are worth mentioning. First,-[MAKEINDEX]:: +* Finally, every special symbol mentioned in this section may-[MAKEINDEX]:: +* From version 2.11 of makeindex, the quote operator may quote-[MAKEINDEX]:: +* The sorting order is-[MAKEINDEX]:: +* Here is an example showing the indexing of all printable-[MAKEINDEX]:: +* ASCII characters other than letters and digits, assuming the-[MAKEINDEX]:: +* Characters in the actual fields following the `@' character-[MAKEINDEX]:: +* FILES-[MAKEINDEX]:: +* SEE ALSO-[MAKEINDEX]:: +* UCSF Enhanced troff/TRANSCRIPT - An Overview, R. P. C. Rodg--[MAKEINDEX]:: +* School of Pharmacy, San Francisco, 1990.-[MAKEINDEX]:: +* Index Preparation and Processing, Pehong Chen and Michael A.-[MAKEINDEX]:: +* Harrison, Software-[MAKEINDEX]:: Practice and Experience, 19(9), 897915, +* September 1988.-[MAKEINDEX]:: +* Automating Index Preparation, Pehong Chen and Michael A.-[MAKEINDEX]:: +* Harrison. Technical Report 87/347, Computer Science Divi--[MAKEINDEX]:: +* MakeIndex-[MAKEINDEX]:: An Index Processor for LaTeX, Leslie Lamport, +* February 1987 (a LaTeX document supplied with makeindex).-[MAKEINDEX]:: +* Tools for Printing Indices, Jon L. Bentley and Brian W. Ker--[MAKEINDEX]:: +* Computing Science Technical Report No. 128, AT&T Bell-[MAKEINDEX]:: +* Laboratories, Murray Hill, NJ 07974, 1986).-[MAKEINDEX]:: +* AUTHOR-[MAKEINDEX]:: +* Pehong Chen, Chen & Harrison International Systems, Inc.-[MAKEINDEX]:: +* Palo Alto, California, USA <chen@renoir.berkeley.edu>.-[MAKEINDEX]:: +* Manual page extensively revised and corrected, and troff(1)-[MAKEINDEX]:: +* ACKNOWLEDGMENTS-[MAKEINDEX]:: +* Leslie Lamport contributed significantly to the design.-[MAKEINDEX]:: +* Michael Harrison provided valuable comments and suggestions.-[MAKEINDEX]:: +* Nelson Beebe improved on the portable version, and maintains-[MAKEINDEX]:: +* Brosig contributed to the German word ordering. The modifi--[MAKEINDEX]:: +* TRIB files in the makeindex source distribution record other-[MAKEINDEX]:: + +File: makeindex, Node: NAME-[MAKEINDEX], Previous: MAKEINDEX, Up: MAKEINDEX, Next: SYNOPSIS-[MAKEINDEX] +NAME + makeindex - a general purpose, formatter-independent index + processor + + +File: makeindex, Node: SYNOPSIS-[MAKEINDEX], Previous: NAME-[MAKEINDEX], Up: MAKEINDEX, Next: DESCRIPTION-[MAKEINDEX] +SYNOPSIS + makeindex [-c] [-g] [-i] [-l] [-o ind] [-p num] [-q] [-r] + [-s sfile] [-t log] [idx0 idx1 idx2...] + + +File: makeindex, Node: DESCRIPTION-[MAKEINDEX], Previous: SYNOPSIS-[MAKEINDEX], Up: MAKEINDEX, Next: The program makeindex is a general purpose hierarchical-[MAKEINDEX] +DESCRIPTION + +File: makeindex, Node: The program makeindex is a general purpose hierarchical-[MAKEINDEX], Previous: DESCRIPTION-[MAKEINDEX], Up: MAKEINDEX, Next: Kernighan, which is specific to troff(1), generates non--[MAKEINDEX] +The program makeindex is a general purpose hierarchical + index generator; it accepts one or more input files (often + produced by a text formatter such as TeX (tex(1L)) or + troff(1), sorts the entries, and produces an output file + which can be formatted. The index can have up to three lev- + els (0, 1, and 2) of subitem nesting. The way in which + words are flagged for indexing within the main document is + specific to the formatter used; makeindex does not automate + the process of selecting these words. As the output index + is hierarchical, makeindex can be considered complimentary + to the awk(1)-based make.index(1L) system of Bentley and + +File: makeindex, Node: Kernighan, which is specific to troff(1), generates non--[MAKEINDEX], Previous: The program makeindex is a general purpose hierarchical-[MAKEINDEX], Up: MAKEINDEX, Next: The formats of the input and output files are specified in a-[MAKEINDEX] +Kernighan, which is specific to troff(1), generates non- + hierarchical indices, and employs a much simpler syntax for + indicating index entries. For illustration of use with + troff and TeX, see the section EXAMPLES below. + + +File: makeindex, Node: The formats of the input and output files are specified in a-[MAKEINDEX], Previous: Kernighan, which is specific to troff(1), generates non--[MAKEINDEX], Up: MAKEINDEX, Next: Unless specified explicitly, the base name of the first-[MAKEINDEX] +The formats of the input and output files are specified in a + style file; by default, input is assumed to be a .idx file, + as generated by LaTeX. + + +File: makeindex, Node: Unless specified explicitly, the base name of the first-[MAKEINDEX], Previous: The formats of the input and output files are specified in a-[MAKEINDEX], Up: MAKEINDEX, Next: For important notes on how to select index keywords, see the-[MAKEINDEX] +Unless specified explicitly, the base name of the first + input file (idx0) is used to determine the names of other + files. For each input file name specified, a file of that + name is sought. If this file is not found and the file name + has no extension, the extension .idx is appended. If no + file with this name is found, makeindex aborts. + + +File: makeindex, Node: For important notes on how to select index keywords, see the-[MAKEINDEX], Previous: Unless specified explicitly, the base name of the first-[MAKEINDEX], Up: MAKEINDEX, Next: OPTIONS-[MAKEINDEX] +For important notes on how to select index keywords, see the + document by Lamport cited below. As an issue separate from + selecting index keywords, a systematic mechanism for placing + index terms in a document is suggested in Index Preparation + and Processing, a paper cited below. + + +File: makeindex, Node: OPTIONS-[MAKEINDEX], Previous: For important notes on how to select index keywords, see the-[MAKEINDEX], Up: MAKEINDEX, Next: STYLE FILE-[MAKEINDEX] +OPTIONS + -c Compress intermediate blanks (ignoring leading and + trailing blanks and tabs). By default, blanks in + the index key are retained. + + -g Employ German word ordering in the index, in + accord with rules set forth in DIN 5007. By + default, makeindex employs a word ordering in + which precedence is: symbols, numbers, uppercase + letters, lowercase letters. The sequence in + + German word ordering is: symbols, lowercase + letters, uppercase letters, numbers. Addition- + ally, this option enables makeindex to recognize + the German TeX-commands {"a, "o, "u and "s} as + {ae, oe, ue and ss} during the sorting of the + entries. The quote character must be redefined in + a style file (for example, redefine quote as '+'). + If the quote character is not redefined, makeindex + will produce an error message and abort. + + -i Take input from stdin. When this option is speci- + fied and -o is not, output is written to stdout. + + -l Letter ordering; by default, word ordering is used + (see the ORDERING section). + + -o ind Employ ind as the output index file. By default, + the file name is created by appending the exten- + sion .ind to the base name of the first input file + (idx0). + + -p num Set the starting page number of the output index + file to be num (useful when the index file is to + be formatted separately). The argument num may be + numerical or one of the following: + + any The starting page is the last source + page number plus 1. + + odd The starting page is the first odd page + following the last source page number. + + even The starting page is the first even page + following the last source page number. + + The last source page is obtained by searching + backward in the log file for the first instance of + a number included within paired square brackets + ([...]). If a page number is missing or the log + file is not found, no attempt will be made to set + the starting page number. The source log file + name is determined by appending the extension .log + to the base name of the first input file (idx0). + + -q Quiet mode; send no messages to stderr. By + default, progress and error messages are sent to + stderr as well as to the transcript file. + + -r Disable implicit page range formation; page ranges + must be created by using explicit range operators; + see SPECIAL EFFECTS below. By default, three or + more successive pages are automatically + + abbreviated as a range (e.g. 1-5). + + -s sty Employ sty as the style file (no default). The + environment variable INDEXSTYLE defines the path + where the style file should be found. + + -t log Employ log as the transcript file. By default, + the file name is created by appending the exten- + sion .ilg to the base name of the first input file + (idx0). + + +File: makeindex, Node: STYLE FILE-[MAKEINDEX], Previous: OPTIONS-[MAKEINDEX], Up: MAKEINDEX, Next: The style file informs makeindex about the format of the-[MAKEINDEX] +STYLE FILE + +File: makeindex, Node: The style file informs makeindex about the format of the-[MAKEINDEX], Previous: STYLE FILE-[MAKEINDEX], Up: MAKEINDEX, Next: The style file contains a list of <specifier, attribute>-[MAKEINDEX] +The style file informs makeindex about the format of the + .idx input files and the intended format of the final output + file; examples appear below. This file can reside anywhere + in the path defined by the environment variable INDEXSTYLE. + +File: makeindex, Node: The style file contains a list of <specifier, attribute>-[MAKEINDEX], Previous: The style file informs makeindex about the format of the-[MAKEINDEX], Up: MAKEINDEX, Next: Pairs do not have to appear in any particular order. A line-[MAKEINDEX] +The style file contains a list of <specifier, attribute> + pairs. There are two types of specifiers: input and output. + +File: makeindex, Node: Pairs do not have to appear in any particular order. A line-[MAKEINDEX], Previous: The style file contains a list of <specifier, attribute>-[MAKEINDEX], Up: MAKEINDEX, Next: A literal backslash or quote must be escaped (by a-[MAKEINDEX] +Pairs do not have to appear in any particular order. A line + begun by `%' is a comment. In the following list of specif- + iers and arguments, <string> is an arbitrary string delim- + ited by double quotes ("..."), <char> is a single letter + embraced by single quotes ('...'), and <number> is a nonne- + gative integer. The maximum length of a <string> is 2048. + +File: makeindex, Node: A literal backslash or quote must be escaped (by a-[MAKEINDEX], Previous: Pairs do not have to appear in any particular order. A line-[MAKEINDEX], Up: MAKEINDEX, Next: EXAMPLES-[MAKEINDEX] +A literal backslash or quote must be escaped (by a + backslash). Anything not specified in the style file will + be assigned a default value, which is shown at the head of + the rightmost column. + + +* Menu: + +* INPUT STYLE SPECIFIERS-[A literal backslash or quote must be escaped (by a-[MAKEINDEX]]:: +* OUTPUT STYLE SPECIFIERS-[A literal backslash or quote must be escaped (by a-[MAKEINDEX]]:: + +File: makeindex, Node: INPUT STYLE SPECIFIERS-[A literal backslash or quote must be escaped (by a-[MAKEINDEX]], Previous: A literal backslash or quote must be escaped (by a-[MAKEINDEX], Up: A literal backslash or quote must be escaped (by a-[MAKEINDEX], Next: OUTPUT STYLE SPECIFIERS-[A literal backslash or quote must be escaped (by a-[MAKEINDEX]] +INPUT STYLE SPECIFIERS + actual <char> '@' + Symbol indicating that the next + entry is to appear in the output + file. + + arg_close <char> '}' + Closing delimiter for the index + entry argument. + + arg_open <char> '{' + Opening delimiter for the index + entry argument. + + encap <char> '|' + Symbol indicating that the rest of + the argument list is to be used as + the encapsulating command for the + page number. + + escape <char> '\\' + Symbol which escapes the following + letter, unless its preceding letter + + is escape. Note: quote is used to + escape the letter which immediately + follows it, but if it is preceded + by escape, it is treated as a ordi- + nary character. These two symbols + must be distinct. + + keyword <string> "\\indexentry" + Command which tells makeindex that + its argument is an index entry. + + level <char> '!' + Delimiter denoting a new level of + subitem. + + quote <char> '"' + Note: quote is used to escape the + letter which immediately follows + it, but if it is preceded by + escape, it is treated as a ordinary + character. These two symbols must + be distinct. + + range_close <char> ')' + Closing delimiter indicating the + end of an explicit page range. + + range_open <char> '(' + Opening delimiter indicating the + beginning of an explicit page + range. + + +File: makeindex, Node: OUTPUT STYLE SPECIFIERS-[A literal backslash or quote must be escaped (by a-[MAKEINDEX]], Previous: INPUT STYLE SPECIFIERS-[A literal backslash or quote must be escaped (by a-[MAKEINDEX]], Up: A literal backslash or quote must be escaped (by a-[MAKEINDEX], Next: A literal backslash or quote must be escaped (by a-[MAKEINDEX] +OUTPUT STYLE SPECIFIERS + preamble <string> "\\begin{theindex}\n" + Preamble of output file. + + postamble <string> "\n\n\\end{theindex}\n" + Postamble of output file. + + setpage_prefix <string> "\n \\setcounter{page}{" + Prefix of command which sets the + starting page number. + + setpage_suffix <string> "}\n" + Suffix of command which sets the + starting page number. + + group_skip <string> "\n\n \\indexspace\n" + Vertical space to be inserted + before a new group begins. + + headings_flag <string> 0 + + Flag indicating treatment of new + group headers, which are inserted + when before a new group (symbols, + numbers, and the 26 letters): posi- + tive values cause an uppercase + letter to be inserted between pre- + fix and suffix, and negative values + cause a lowercase letter to be + inserted (default is 0, which pro- + duces no header). + + heading_prefix <string> "" + Header prefix to be inserted before + a new letter begins. + + symhead_positive <string> + "Symbols" + Heading for symbols to be inserted + if headings_flag is positive. + + symhead_negative <string> + "symbols" + Heading for symbols to be inserted + if headings_flag is negative. + + numhead_positive <string> + "Numbers" + Heading for numbers to be inserted + if headings_flag is positive. + + numhead_negative <string> + "numbers" + Heading for numbers to be inserted + if headings_flag is negative. + + item_0 <string> "\n \\item " + Command to be inserted between two + primary (level 0) items. + + item_1 <string> "\n \\subitem " + Command to be inserted between two + secondary (level 1) items. + + item_2 <string> "\n \\subsubitem " + Command to be inserted between two + level 2 items. + + item_01 <string> "\n \\subitem " + Command to be inserted between a + level 0 item and a level 1 item. + + item_x1 <string> "\n \\subitem " + + Command to be inserted between a + level 0 item and a level 1 item, + where the level 0 item does not + have associated page numbers. + + item_12 <string> "\n \\subsubitem " + Command to be inserted between a + level 1 item and a level 2 item. + + item_x2 <string> "\n \\subsubitem " + Command to be inserted between a + level 1 item and a level 2 item, + where the level 1 item does not + have associated page numbers. + + delim_0 <string> ", " + Delimiter to be inserted between a + level 0 key and its first page + number (default: comma followed by + a blank). + + delim_1 <string> ", " + Delimiter to be inserted between a + level 1 key and its first page + number (default: comma followed by + a blank). + + delim_2 <string> ", " + Delimiter to be inserted between a + level 2 key and its first page + number (default: comma followed by + a blank). + + delim_n <string> ", " + Delimiter to be inserted between + two page numbers for the same key + in any level (default: comma fol- + lowed by a blank). + + delim_r <string> "--" + Delimiter to be inserted between + the starting and ending page + numbers of a range. + + delim_t <string> "" + Delimiter to be inserted at the end + of a page list. This delimiter has + no effect on entries which have no + associated page list. + + encap_prefix <string> "\\" + First part of prefix for the + + command which encapsulates the page + number. + + encap_infix <string> "{" + Second part of prefix for the com- + mand which encapsulates the page + number. + + encap_suffix <string> "}". + Suffix for the command which encap- + sulates the page number. + + line_max <number> 72 + Maximum length of a line in the + output, beyond which a line wraps. + + indent_space <string> "\t\t" + Space to be inserted in front of a + wrapped line (default: two tabs). + + indent_length <number> 16 + Length of indent_space (default: + 16, equivalent to 2 tabs). + + +File: makeindex, Node: EXAMPLES-[MAKEINDEX], Previous: A literal backslash or quote must be escaped (by a-[MAKEINDEX], Up: MAKEINDEX, Next: The following example shows a style file called book.ist,-[MAKEINDEX] +EXAMPLES + +* Menu: + +* TeX EXAMPLE-[EXAMPLES-[MAKEINDEX]]:: + +File: makeindex, Node: TeX EXAMPLE-[EXAMPLES-[MAKEINDEX]], Previous: EXAMPLES-[MAKEINDEX], Up: EXAMPLES-[MAKEINDEX], Next: EXAMPLES-[MAKEINDEX] +TeX EXAMPLE + +File: makeindex, Node: The following example shows a style file called book.ist,-[MAKEINDEX], Previous: EXAMPLES-[MAKEINDEX], Up: MAKEINDEX, Next: Assuming that a particular book style requires the index (as-[MAKEINDEX] +The following example shows a style file called book.ist, + which defines an index for a book which can be formatted + independently of the main source: + + preamble + "\\documentstyle[12pt]{book} + \\begin{document} + \\begin{theindex} + {\\small\n" + postamble + "\n\n} + \\end{theindex} + \\end{document}\n" + + +File: makeindex, Node: Assuming that a particular book style requires the index (as-[MAKEINDEX], Previous: The following example shows a style file called book.ist,-[MAKEINDEX], Up: MAKEINDEX, Next: Here a non-default output file name is used to avoid-[MAKEINDEX] +Assuming that a particular book style requires the index (as + well as any chapters) to start from an odd page number, and + that the input file is named foo.idx, the following command + line produces output in file footmp.ind: + + makeindex -s book.ist -o footmp.ind -p odd foo + + +File: makeindex, Node: Here a non-default output file name is used to avoid-[MAKEINDEX], Previous: Assuming that a particular book style requires the index (as-[MAKEINDEX], Up: MAKEINDEX, Next: A sample control file for creating an index, which we will-[MAKEINDEX] +Here a non-default output file name is used to avoid + clobbering the output for the book itself (presumably + foo.dvi, which would have been the default name for the + index output file!). + + +* Menu: + +* TROFF EXAMPLE-[Here a non-default output file name is used to avoid-[MAKEINDEX]]:: + +File: makeindex, Node: TROFF EXAMPLE-[Here a non-default output file name is used to avoid-[MAKEINDEX]], Previous: Here a non-default output file name is used to avoid-[MAKEINDEX], Up: Here a non-default output file name is used to avoid-[MAKEINDEX], Next: Here a non-default output file name is used to avoid-[MAKEINDEX] +TROFF EXAMPLE + +File: makeindex, Node: A sample control file for creating an index, which we will-[MAKEINDEX], Previous: Here a non-default output file name is used to avoid-[MAKEINDEX], Up: MAKEINDEX, Next: The local macro package may require modification, as in this-[MAKEINDEX] +A sample control file for creating an index, which we will + assume resides in the file sample.ist: + + keyword "IX:" + preamble + ".\\\" start of index output + \".\\\" enter two column mode + .2C + .SH + .ce + INDEX + .XS + INDEX + .XE + .R + .ps 9p + .vs 11p + .sp + .de I1 + .ti 0.25i + .. + .de I2 + .ti 0.5i + .." + postamble "\n.\\\" end of index output" + setpage_prefix "\n.nr % " + setpage_suffix "" + group_skip "\n.sp 1.0" + headings_flag 1 + heading_prefix "\n.IS\n" + heading_suffix "\n.IE" + item_0 "\n.br\n" + item_1 "\n.I1\n" + item_2 "\n.I2\n" + item_01 "\n.I1\n" + item_x1 "\n.I1\n" + item_12 "\n.I2\n" + item_x2 "\n.I2\n" + delim_0 ", " + delim_1 ", " + delim_2 ", " + delim_r "-" + delim_t "." + encap_prefix "\\fB" + encap_infix "" + encap_suffix "\\fP" + indent_space "" + indent_length 0 + + +File: makeindex, Node: The local macro package may require modification, as in this-[MAKEINDEX], Previous: A sample control file for creating an index, which we will-[MAKEINDEX], Up: MAKEINDEX, Next: Note that index entries are indicated by the .IX macro,-[MAKEINDEX] +The local macro package may require modification, as in this + example of an extension to the -ms macros (note that at some + + sites, this macro should replace a pre-existing macro of the + same name): + + . + .de IX + .ie '\\n(.z'' .tm IX: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 {\\n(PN} + .el \\!.IX \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 {\\n(PN} + .. + + (note that the string {\\n(PN} is separated from the rest of + the line by a tab. If your local macro package does not + contain this extension, just include those lines at the + beginning of your file. Here is a simple troff(1) input + file, which we will assume is named sample.txt: + + This is a sample file to test the \fImakeindex\fP(1L) + program, and see + .IX {indexing!programs!C language} + .IX {makeindex@\fImakeindex\fP(1L)} + .bp + .rs + .IX {Knuth} + .IX {typesetting!computer-aided} + how well it functions in the \fItroff\fP(1) environment. + + +File: makeindex, Node: Note that index entries are indicated by the .IX macro,-[MAKEINDEX], Previous: The local macro package may require modification, as in this-[MAKEINDEX], Up: MAKEINDEX, Next: To create an input file for makeindex, in the Bourne shell-[MAKEINDEX] +Note that index entries are indicated by the .IX macro, + which causes the following text to be written to stdout + along with the current page number. + + +* Menu: + +* CREATING THE INDEX FILE IN THE BOURNE SHELL-[Note that index entries are indicated by the .IX macro,-[MAKEINDEX]]:: + +File: makeindex, Node: CREATING THE INDEX FILE IN THE BOURNE SHELL-[Note that index entries are indicated by the .IX macro,-[MAKEINDEX]], Previous: Note that index entries are indicated by the .IX macro,-[MAKEINDEX], Up: Note that index entries are indicated by the .IX macro,-[MAKEINDEX], Next: Note that index entries are indicated by the .IX macro,-[MAKEINDEX] +CREATING THE INDEX FILE IN THE BOURNE SHELL + +File: makeindex, Node: To create an input file for makeindex, in the Bourne shell-[MAKEINDEX], Previous: Note that index entries are indicated by the .IX macro,-[MAKEINDEX], Up: MAKEINDEX, Next: Some sites will require ditroff instead of psroff. To-[MAKEINDEX] +To create an input file for makeindex, in the Bourne shell + environment, do the equivalent at your site of the command: + + psroff -ms -Tpsc -t sample.txt > /dev/null 2> sample.tmp + + +File: makeindex, Node: Some sites will require ditroff instead of psroff. To-[MAKEINDEX], Previous: To create an input file for makeindex, in the Bourne shell-[MAKEINDEX], Up: MAKEINDEX, Next: With UCSF Enhanced troff/TRANSCRIPT, the -I option of-[MAKEINDEX] +Some sites will require ditroff instead of psroff. To + filter out any genuine error messages, invoke grep(1): + + grep '^IX: ' sample.tmp > sample.idx + + +* Menu: + +* CREATING THE INDEX FILE USING UCSF ENHANCED TROFF/TRANSCRIPT-[Some sites will require ditroff instead of psroff. To-[MAKEINDEX]]:: + +File: makeindex, Node: CREATING THE INDEX FILE USING UCSF ENHANCED TROFF/TRANSCRIPT-[Some sites will require ditroff instead of psroff. To-[MAKEINDEX]], Previous: Some sites will require ditroff instead of psroff. To-[MAKEINDEX], Up: Some sites will require ditroff instead of psroff. To-[MAKEINDEX], Next: Some sites will require ditroff instead of psroff. To-[MAKEINDEX] +CREATING THE INDEX FILE USING UCSF ENHANCED TROFF/TRANSCRIPT + + +File: makeindex, Node: With UCSF Enhanced troff/TRANSCRIPT, the -I option of-[MAKEINDEX], Previous: Some sites will require ditroff instead of psroff. To-[MAKEINDEX], Up: MAKEINDEX, Next: If it is wished to suppress the formatter output-[MAKEINDEX] +With UCSF Enhanced troff/TRANSCRIPT, the -I option of + psroff(1L) can produce both formatter output and an index + file: + + psroff -ms -I sample.inp -Tpsc sample.txt + + +File: makeindex, Node: If it is wished to suppress the formatter output-[MAKEINDEX], Previous: With UCSF Enhanced troff/TRANSCRIPT, the -I option of-[MAKEINDEX], Up: MAKEINDEX, Next: Any of the above procedures leaves the input for makeindex-[MAKEINDEX] +If it is wished to suppress the formatter output: + + psroff -ms -I sample.inp -Tpsc -t sample.txt > /dev/null + + +* Menu: + +* COMPLETING THE INDEX-[If it is wished to suppress the formatter output-[MAKEINDEX]]:: + +File: makeindex, Node: COMPLETING THE INDEX-[If it is wished to suppress the formatter output-[MAKEINDEX]], Previous: If it is wished to suppress the formatter output-[MAKEINDEX], Up: If it is wished to suppress the formatter output-[MAKEINDEX], Next: If it is wished to suppress the formatter output-[MAKEINDEX] +COMPLETING THE INDEX + +File: makeindex, Node: Any of the above procedures leaves the input for makeindex-[MAKEINDEX], Previous: If it is wished to suppress the formatter output-[MAKEINDEX], Up: MAKEINDEX, Next: This leaves troff(1)-ready output in the file sample.ind.-[MAKEINDEX] +Any of the above procedures leaves the input for makeindex + in sample.inp. The next step is to invoke makeindex: + + makeindex -s sample.ist sample.idx + + +File: makeindex, Node: This leaves troff(1)-ready output in the file sample.ind.-[MAKEINDEX], Previous: Any of the above procedures leaves the input for makeindex-[MAKEINDEX], Up: MAKEINDEX, Next: ORDERING-[MAKEINDEX] +This leaves troff(1)-ready output in the file sample.ind. + + +File: makeindex, Node: ORDERING-[MAKEINDEX], Previous: This leaves troff(1)-ready output in the file sample.ind.-[MAKEINDEX], Up: MAKEINDEX, Next: By default, makeindex assumes word ordering; if the -l-[MAKEINDEX] +ORDERING + +File: makeindex, Node: By default, makeindex assumes word ordering; if the -l-[MAKEINDEX], Previous: ORDERING-[MAKEINDEX], Up: MAKEINDEX, Next: Numbers are always sorted in numeric order. For instance,-[MAKEINDEX] +By default, makeindex assumes word ordering; if the -l + option is in effect, letter ordering is used. In word ord- + ering, a blank precedes any letter in the alphabet, whereas + in letter ordering, it does not count at all. This is + illustrated by the following example: + + word order letter order + sea lion seal + seal sea lion + + +File: makeindex, Node: Numbers are always sorted in numeric order. For instance,-[MAKEINDEX], Previous: By default, makeindex assumes word ordering; if the -l-[MAKEINDEX], Up: MAKEINDEX, Next: Letters are first sorted without regard to case; when words-[MAKEINDEX] +Numbers are always sorted in numeric order. For instance, + + 9 (nine), 123 + 10 (ten), see Derek, Bo + + +File: makeindex, Node: Letters are first sorted without regard to case; when words-[MAKEINDEX], Previous: Numbers are always sorted in numeric order. For instance,-[MAKEINDEX], Up: MAKEINDEX, Next: A special symbol is defined here to be any character not-[MAKEINDEX] +Letters are first sorted without regard to case; when words + are identical, the uppercase version precedes its lowercase + counterpart. + + +File: makeindex, Node: A special symbol is defined here to be any character not-[MAKEINDEX], Previous: Letters are first sorted without regard to case; when words-[MAKEINDEX], Up: MAKEINDEX, Next: SPECIAL EFFECTS-[MAKEINDEX] +A special symbol is defined here to be any character not + appearing in the union of digits and the English alphabetic + characters. Patterns starting with special symbols precede + numbers, which precede patterns starting with letters. As a + special case, a string starting with a digit but mixed with + non-digits is considered to be a pattern starting with a + special character. + + +File: makeindex, Node: SPECIAL EFFECTS-[MAKEINDEX], Previous: A special symbol is defined here to be any character not-[MAKEINDEX], Up: MAKEINDEX, Next: Entries such as-[MAKEINDEX] +SPECIAL EFFECTS + +File: makeindex, Node: Entries such as-[MAKEINDEX], Previous: SPECIAL EFFECTS-[MAKEINDEX], Up: MAKEINDEX, Next: It is possible to make an item appear in a designated form-[MAKEINDEX] +Entries such as + + \indexentry{alpha}{1} + \indexentry{alpha!beta}{3} + \indexentry{alpha!beta!gamma}{10} + + in the input file will be converted to + + \item alpha, 1 + \subitem beta, 3 + \subsubitem gamma, 10 + + in the output index file. Notice that the level symbol + (`!') is used above to delimit hierarchical levels. + + +File: makeindex, Node: It is possible to make an item appear in a designated form-[MAKEINDEX], Previous: Entries such as-[MAKEINDEX], Up: MAKEINDEX, Next: The item, subitem, and subsubitem fields may have individual-[MAKEINDEX] +It is possible to make an item appear in a designated form + by using the actual (`@') operator. For instance, + + \indexentry{alpha@{\it alpha\/}}{1} + + will become + + \item {\it alpha\/}, 1 + + after processing. The pattern preceding `@' is used as sort + key, whereas the one following it is written to the output + file. Note that two appearances of the same key, one with + and one without the actual operator, are regarded as dis- + tinct entries. + + +File: makeindex, Node: The item, subitem, and subsubitem fields may have individual-[MAKEINDEX], Previous: It is possible to make an item appear in a designated form-[MAKEINDEX], Up: MAKEINDEX, Next: This will be converted to-[MAKEINDEX] +The item, subitem, and subsubitem fields may have individual + sort keys: + + \indexentry{aa@{\it aa\/}!bb@{\it bb\/}!cc@{\it cc\/}}{1} + + +File: makeindex, Node: This will be converted to-[MAKEINDEX], Previous: The item, subitem, and subsubitem fields may have individual-[MAKEINDEX], Up: MAKEINDEX, Next: It is possible to encapsulate a page number with a desig--[MAKEINDEX] +This will be converted to + + \item {\it aa}, 1 + \subitem {\it bb}, 3 + \subsubitem {\it cc}, 10 + + +File: makeindex, Node: It is possible to encapsulate a page number with a desig--[MAKEINDEX], Previous: This will be converted to-[MAKEINDEX], Up: MAKEINDEX, Next: The encap operator can also be used to create cross refer--[MAKEINDEX] +It is possible to encapsulate a page number with a desig- + nated command using the encap (`|') operator: + + \indexentry{alpha|bold}{1} + + will be converted to + + \item alpha, \bold{1} + + where, with a suitable definition for TeX, \bold{n} will + expand to {\bf n}. In this example, the three output attri- + butes associated with page encapsulation encap_prefix, + encap_infix, and encap_suffix, correspond to backslash, left + brace, and right brace, respectively. This mechanism allows + page numbers to be set in different fonts. For example, the + page where the definition of a keyword appears can be in one + font, the location of a primary example can be in another + font, and other appearances in yet a third font. + + +File: makeindex, Node: The encap operator can also be used to create cross refer--[MAKEINDEX], Previous: It is possible to encapsulate a page number with a desig--[MAKEINDEX], Up: MAKEINDEX, Next: Note that in a cross reference like this the page number-[MAKEINDEX] +The encap operator can also be used to create cross refer- + ences in the index: + + \indexentry{alpha|see{beta}}{1} + + will become + + \item alpha, \see{beta}{1} + + in the output file, where + + \see{beta}{1} + + will expand to + + {\it see\/} beta + + +File: makeindex, Node: Note that in a cross reference like this the page number-[MAKEINDEX], Previous: The encap operator can also be used to create cross refer--[MAKEINDEX], Up: MAKEINDEX, Next: A pair of encap concatenated with range_open (`|(') and-[MAKEINDEX] +Note that in a cross reference like this the page number + disappears. + + +File: makeindex, Node: A pair of encap concatenated with range_open (`|(') and-[MAKEINDEX], Previous: Note that in a cross reference like this the page number-[MAKEINDEX], Up: MAKEINDEX, Next: Intermediate pages indexed by the same key will be merged-[MAKEINDEX] +A pair of encap concatenated with range_open (`|(') and + range_close (`|)') creates an explicit page range: + + \indexentry{alpha|(}{1} + \indexentry{alpha|)}{5} + + will become + + \item alpha, 1-5 + + +File: makeindex, Node: Intermediate pages indexed by the same key will be merged-[MAKEINDEX], Previous: A pair of encap concatenated with range_open (`|(') and-[MAKEINDEX], Up: MAKEINDEX, Next: Several potential problems are worth mentioning. First,-[MAKEINDEX] +Intermediate pages indexed by the same key will be merged + into the range implicitly. This is especially useful when + an entire section about a particular subject is to be + indexed, in which case only the range opening and closing + operators need to be inserted at the beginning and end of + the section. Explicit page range formation can also include + an extra command to set the page range in a designated font: + + \indexentry{alpha|(bold}{1} + \indexentry{alpha|)}{5} + + will become + + \item alpha, \bold{1--5} + + +File: makeindex, Node: Several potential problems are worth mentioning. First,-[MAKEINDEX], Previous: Intermediate pages indexed by the same key will be merged-[MAKEINDEX], Up: MAKEINDEX, Next: Finally, every special symbol mentioned in this section may-[MAKEINDEX] +Several potential problems are worth mentioning. First, + entries like + + \indexentry{alpha|(}{1} + \indexentry{alpha|bold}{3} + \indexentry{alpha|)}{5} + + will be interpreted as + + \item alpha, \bold{3}, 1--5 + + but with a warning message in the transcript about + encountering an inconsistent page encapsulator. An explicit + range beginning in a Roman page number and ending in Arabic + + is also considered an error. In this instance, (if possi- + ble) the range is broken into two subranges, one in Roman + and the other in Arabic. For instance, + + \indexentry{alpha|(}{i} + \indexentry{alpha}{iv} + \indexentry{alpha}{3} + \indexentry{alpha|)}{7} + + will be turned into + + \item alpha, i--iv, 3--7 + + with a warning message in the transcript file complaining + about an illegal range formation. + + +File: makeindex, Node: Finally, every special symbol mentioned in this section may-[MAKEINDEX], Previous: Several potential problems are worth mentioning. First,-[MAKEINDEX], Up: MAKEINDEX, Next: From version 2.11 of makeindex, the quote operator may quote-[MAKEINDEX] +Finally, every special symbol mentioned in this section may + be escaped by the quote operator (`"'). Thus + + \indexentry{alpha"@beta}{1} + + will actually become + + \item alpha@beta, 1 + + as a result of executing makeindex. The quoting power of + quote is eliminated if it is immediately preceded by escape + (`\'). For example, + + \indexentry{f\"ur}{1} + + becomes + + \item f\"ur, 1 + + which represents an umlaut-accented `u' to the TeX family of + processors. + + +File: makeindex, Node: From version 2.11 of makeindex, the quote operator may quote-[MAKEINDEX], Previous: Finally, every special symbol mentioned in this section may-[MAKEINDEX], Up: MAKEINDEX, Next: The sorting order is-[MAKEINDEX] +From version 2.11 of makeindex, the quote operator may quote + any character in the range 1 ... 255. Character 0 is + excluded because it is used internally in the makeindex + source code as a string terminator. With this change, sort + keys can be created for all eight-bit characters except 0. + +File: makeindex, Node: The sorting order is-[MAKEINDEX], Previous: From version 2.11 of makeindex, the quote operator may quote-[MAKEINDEX], Up: MAKEINDEX, Next: Here is an example showing the indexing of all printable-[MAKEINDEX] +The sorting order is + + punctuation characters (in ASCII order), + digits, + control characters (1 ... 31), + space (32), + letters (ignoring case), + characters 127 ... 255. + + +File: makeindex, Node: Here is an example showing the indexing of all printable-[MAKEINDEX], Previous: The sorting order is-[MAKEINDEX], Up: MAKEINDEX, Next: ASCII characters other than letters and digits, assuming the-[MAKEINDEX] +Here is an example showing the indexing of all printable + +File: makeindex, Node: ASCII characters other than letters and digits, assuming the-[MAKEINDEX], Previous: Here is an example showing the indexing of all printable-[MAKEINDEX], Up: MAKEINDEX, Next: Characters in the actual fields following the `@' character-[MAKEINDEX] +ASCII characters other than letters and digits, assuming the + default TeX format. For convenience, the page number refer- + ences are the corresponding ASCII ordinal values. + + \indexentry{" @" (space)}{32} + \indexentry{"!@"! (exclamation point)}{33} + \indexentry{""@"" (quotation mark)}{34} + \indexentry{"#@"\# (sharp sign)}{35} + \indexentry{"$@"\$ (dollar sign)}{36} + \indexentry{"%@"\% (percent sign)}{37} + \indexentry{"&@"\& (ampersand)}{38} + \indexentry{"<@"$<$ (left angle bracket)}{60} + \indexentry{"=@"= (equals)}{61} + \indexentry{">@"$>$ (right angle bracket)}{62} + \indexentry{"?@"? (query)}{63} + \indexentry{"@@"@ (at sign)}{64} + \indexentry{"[@"[ (left square bracket)}{91} + \indexentry{"\@"\verb=\= (backslash)}{92} + \indexentry{"]@"] (right square bracket)}{93} + \indexentry{"^@"\verb=^= (caret)}{94} + \indexentry{"_@"\verb=_= (underscore)}{95} + \indexentry{"`@"\verb=~= (grave accent)}{96} + \indexentry{"{@"\"{ (left brace)}{123} + \indexentry{"|@"\verb="|= (vertical bar)}{124} + \indexentry{"}@"\"} (right brace)}{125} + \indexentry{"~@"\verb=~= (tilde)}{126} + + +File: makeindex, Node: Characters in the actual fields following the `@' character-[MAKEINDEX], Previous: ASCII characters other than letters and digits, assuming the-[MAKEINDEX], Up: MAKEINDEX, Next: FILES-[MAKEINDEX] +Characters in the actual fields following the `@' character + which have special significance to TeX must be represented + as control sequences, or as math mode characters. Note par- + ticularly how the entries for the at sign, left and right + braces, and the vertical bar, are coded. The index file + output by makeindex for this example looks like this: + + \begin{theindex} + + \item ! (exclamation point), 33 + \item " (quotation mark), 34 + \item \# (sharp sign), 35 + \item \$ (dollar sign), 36 + \item \% (percent sign), 37 + \item \& (ampersand), 38 + \item $<$ (left angle bracket), 60 + \item = (equals), 61 + \item $>$ (right angle bracket), 62 + \item ? (query), 63 + \item @ (at sign), 64 + \item [ (left square bracket), 91 + \item \verb=\= (backslash), 92 + \item ] (right square bracket), 93 + \item \verb=^= (caret), 94 + + \item \verb=_= (underscore), 95 + \item \verb=~= (grave accent), 96 + \item \{ (left brace), 123 + \item \verb=|= (vertical bar), 124 + \item \} (right brace), 125 + \item \verb=~= (tilde), 126 + + \indexspace + + \item (space), 32 + + \end{theindex} + + +File: makeindex, Node: FILES-[MAKEINDEX], Previous: Characters in the actual fields following the `@' character-[MAKEINDEX], Up: MAKEINDEX, Next: SEE ALSO-[MAKEINDEX] +FILES + /usr/local/bin/makeindex + executable file + + /usr/local/lib/tex/macros/idxmac-amstex.tex + TeX macro file used by makeindex + + /usr/local/lib/tex/macros/idxmac.tex + TeX macro file used by makeindex + + /usr/local/lib/tex/macros/makeidx.doc + TeX macro file used by makeindex + + /usr/local/lib/tex/macros/makeidx.sty + TeX macro file used by makeindex + + +File: makeindex, Node: SEE ALSO-[MAKEINDEX], Previous: FILES-[MAKEINDEX], Up: MAKEINDEX, Next: UCSF Enhanced troff/TRANSCRIPT - An Overview, R. P. C. Rodg--[MAKEINDEX] +SEE ALSO + ditroff(1L), latex(1L), make.index (1L), qsort(3), tex(1L), + troff(1L) + + +File: makeindex, Node: UCSF Enhanced troff/TRANSCRIPT - An Overview, R. P. C. Rodg--[MAKEINDEX], Previous: SEE ALSO-[MAKEINDEX], Up: MAKEINDEX, Next: School of Pharmacy, San Francisco, 1990.-[MAKEINDEX] +UCSF Enhanced troff/TRANSCRIPT - An Overview, R. P. C. Rodg- + ers and Conrad Huang, LSMB Technical Report 90-2, UCSF + +File: makeindex, Node: School of Pharmacy, San Francisco, 1990.-[MAKEINDEX], Previous: UCSF Enhanced troff/TRANSCRIPT - An Overview, R. P. C. Rodg--[MAKEINDEX], Up: MAKEINDEX, Next: Index Preparation and Processing, Pehong Chen and Michael A.-[MAKEINDEX] +School of Pharmacy, San Francisco, 1990. + + +File: makeindex, Node: Index Preparation and Processing, Pehong Chen and Michael A.-[MAKEINDEX], Previous: School of Pharmacy, San Francisco, 1990.-[MAKEINDEX], Up: MAKEINDEX, Next: Harrison, Software-[MAKEINDEX] +Index Preparation and Processing, Pehong Chen and Michael A. + +File: makeindex, Node: Harrison, Software-[MAKEINDEX], Previous: Index Preparation and Processing, Pehong Chen and Michael A.-[MAKEINDEX], Up: MAKEINDEX, Next: September 1988.-[MAKEINDEX] +Harrison, Software: Practice and Experience, 19(9), 897915, + +File: makeindex, Node: September 1988.-[MAKEINDEX], Previous: Harrison, Software-[MAKEINDEX], Up: MAKEINDEX, Next: Automating Index Preparation, Pehong Chen and Michael A.-[MAKEINDEX] +September 1988. + + +File: makeindex, Node: Automating Index Preparation, Pehong Chen and Michael A.-[MAKEINDEX], Previous: September 1988.-[MAKEINDEX], Up: MAKEINDEX, Next: Harrison. Technical Report 87/347, Computer Science Divi--[MAKEINDEX] +Automating Index Preparation, Pehong Chen and Michael A. + +File: makeindex, Node: Harrison. Technical Report 87/347, Computer Science Divi--[MAKEINDEX], Previous: Automating Index Preparation, Pehong Chen and Michael A.-[MAKEINDEX], Up: MAKEINDEX, Next: MakeIndex-[MAKEINDEX] +Harrison. Technical Report 87/347, Computer Science Divi- + sion, University of California, Berkeley, 1987 (a LaTeX + document supplied with makeindex). + + +File: makeindex, Node: MakeIndex-[MAKEINDEX], Previous: Harrison. Technical Report 87/347, Computer Science Divi--[MAKEINDEX], Up: MAKEINDEX, Next: February 1987 (a LaTeX document supplied with makeindex).-[MAKEINDEX] +MakeIndex: An Index Processor for LaTeX, Leslie Lamport, + +File: makeindex, Node: February 1987 (a LaTeX document supplied with makeindex).-[MAKEINDEX], Previous: MakeIndex-[MAKEINDEX], Up: MAKEINDEX, Next: Tools for Printing Indices, Jon L. Bentley and Brian W. Ker--[MAKEINDEX] +February 1987 (a LaTeX document supplied with makeindex). + + +File: makeindex, Node: Tools for Printing Indices, Jon L. Bentley and Brian W. Ker--[MAKEINDEX], Previous: February 1987 (a LaTeX document supplied with makeindex).-[MAKEINDEX], Up: MAKEINDEX, Next: Computing Science Technical Report No. 128, AT&T Bell-[MAKEINDEX] +Tools for Printing Indices, Jon L. Bentley and Brian W. Ker- + nighan, Electronic Publishing - Origination, Dissemination, + and Design, 1(1), 318, June 1988 (also available as: + + +File: makeindex, Node: Computing Science Technical Report No. 128, AT&T Bell-[MAKEINDEX], Previous: Tools for Printing Indices, Jon L. Bentley and Brian W. Ker--[MAKEINDEX], Up: MAKEINDEX, Next: Laboratories, Murray Hill, NJ 07974, 1986).-[MAKEINDEX] +Computing Science Technical Report No. 128, AT&T Bell + +File: makeindex, Node: Laboratories, Murray Hill, NJ 07974, 1986).-[MAKEINDEX], Previous: Computing Science Technical Report No. 128, AT&T Bell-[MAKEINDEX], Up: MAKEINDEX, Next: AUTHOR-[MAKEINDEX] +Laboratories, Murray Hill, NJ 07974, 1986). + + +File: makeindex, Node: AUTHOR-[MAKEINDEX], Previous: Laboratories, Murray Hill, NJ 07974, 1986).-[MAKEINDEX], Up: MAKEINDEX, Next: Pehong Chen, Chen & Harrison International Systems, Inc.-[MAKEINDEX] +AUTHOR + +File: makeindex, Node: Pehong Chen, Chen & Harrison International Systems, Inc.-[MAKEINDEX], Previous: AUTHOR-[MAKEINDEX], Up: MAKEINDEX, Next: Palo Alto, California, USA <chen@renoir.berkeley.edu>.-[MAKEINDEX] +Pehong Chen, Chen & Harrison International Systems, Inc. + +File: makeindex, Node: Palo Alto, California, USA <chen@renoir.berkeley.edu>.-[MAKEINDEX], Previous: Pehong Chen, Chen & Harrison International Systems, Inc.-[MAKEINDEX], Up: MAKEINDEX, Next: Manual page extensively revised and corrected, and troff(1)-[MAKEINDEX] +Palo Alto, California, USA <chen@renoir.berkeley.edu>. + +File: makeindex, Node: Manual page extensively revised and corrected, and troff(1)-[MAKEINDEX], Previous: Palo Alto, California, USA <chen@renoir.berkeley.edu>.-[MAKEINDEX], Up: MAKEINDEX, Next: ACKNOWLEDGMENTS-[MAKEINDEX] +Manual page extensively revised and corrected, and troff(1) + examples created by Rick P. C. Rodgers, UCSF School of Phar- + macy <rodgers@cca.ucsf.edu>. + + +File: makeindex, Node: ACKNOWLEDGMENTS-[MAKEINDEX], Previous: Manual page extensively revised and corrected, and troff(1)-[MAKEINDEX], Up: MAKEINDEX, Next: Leslie Lamport contributed significantly to the design.-[MAKEINDEX] +ACKNOWLEDGMENTS + +File: makeindex, Node: Leslie Lamport contributed significantly to the design.-[MAKEINDEX], Previous: ACKNOWLEDGMENTS-[MAKEINDEX], Up: MAKEINDEX, Next: Michael Harrison provided valuable comments and suggestions.-[MAKEINDEX] +Leslie Lamport contributed significantly to the design. + +File: makeindex, Node: Michael Harrison provided valuable comments and suggestions.-[MAKEINDEX], Previous: Leslie Lamport contributed significantly to the design.-[MAKEINDEX], Up: MAKEINDEX, Next: Nelson Beebe improved on the portable version, and maintains-[MAKEINDEX] +Michael Harrison provided valuable comments and suggestions. + +File: makeindex, Node: Nelson Beebe improved on the portable version, and maintains-[MAKEINDEX], Previous: Michael Harrison provided valuable comments and suggestions.-[MAKEINDEX], Up: MAKEINDEX, Next: Brosig contributed to the German word ordering. The modifi--[MAKEINDEX] +Nelson Beebe improved on the portable version, and maintains + the source distribution for the TeX Users Group. Andreas + +File: makeindex, Node: Brosig contributed to the German word ordering. The modifi--[MAKEINDEX], Previous: Nelson Beebe improved on the portable version, and maintains-[MAKEINDEX], Up: MAKEINDEX, Next: TRIB files in the makeindex source distribution record other-[MAKEINDEX] +Brosig contributed to the German word ordering. The modifi- + cation to the -ms macros was derived from a method proposed + by Ravi Sethi of AT&T Bell Laboratories. The LOG and CON- + +File: makeindex, Node: TRIB files in the makeindex source distribution record other-[MAKEINDEX], Previous: Brosig contributed to the German word ordering. The modifi--[MAKEINDEX], Up: MAKEINDEX, Next: MAKEINDEX +TRIB files in the makeindex source distribution record other + contributions. + +Tag table: +File: makeindex, Node: Top210 +File: makeindex, Node: MAKEINDEX319 +File: makeindex, Node: NAME-[MAKEINDEX]5198 +File: makeindex, Node: SYNOPSIS-[MAKEINDEX]5388 +File: makeindex, Node: DESCRIPTION-[MAKEINDEX]5625 +File: makeindex, Node: The program makeindex is a general purpose hierarchical-[MAKEINDEX]5863 +File: makeindex, Node: Kernighan, which is specific to troff(1), generates non--[MAKEINDEX]6773 +File: makeindex, Node: The formats of the input and output files are specified in a-[MAKEINDEX]7285 +File: makeindex, Node: Unless specified explicitly, the base name of the first-[MAKEINDEX]7711 +File: makeindex, Node: For important notes on how to select index keywords, see the-[MAKEINDEX]8348 +File: makeindex, Node: OPTIONS-[MAKEINDEX]8806 +File: makeindex, Node: STYLE FILE-[MAKEINDEX]12379 +File: makeindex, Node: The style file informs makeindex about the format of the-[MAKEINDEX]12615 +File: makeindex, Node: The style file contains a list of <specifier, attribute>-[MAKEINDEX]13090 +File: makeindex, Node: Pairs do not have to appear in any particular order. A line-[MAKEINDEX]13491 +File: makeindex, Node: A literal backslash or quote must be escaped (by a-[MAKEINDEX]14140 +File: makeindex, Node: INPUT STYLE SPECIFIERS-[A literal backslash or quote must be escaped (by a-[MAKEINDEX]]14815 +File: makeindex, Node: OUTPUT STYLE SPECIFIERS-[A literal backslash or quote must be escaped (by a-[MAKEINDEX]]17463 +File: makeindex, Node: EXAMPLES-[MAKEINDEX]23832 +File: makeindex, Node: TeX EXAMPLE-[EXAMPLES-[MAKEINDEX]]24130 +File: makeindex, Node: The following example shows a style file called book.ist,-[MAKEINDEX]24327 +File: makeindex, Node: Assuming that a particular book style requires the index (as-[MAKEINDEX]24905 +File: makeindex, Node: Here a non-default output file name is used to avoid-[MAKEINDEX]25469 +File: makeindex, Node: TROFF EXAMPLE-[Here a non-default output file name is used to avoid-[MAKEINDEX]]26074 +File: makeindex, Node: A sample control file for creating an index, which we will-[MAKEINDEX]26429 +File: makeindex, Node: The local macro package may require modification, as in this-[MAKEINDEX]27700 +File: makeindex, Node: Note that index entries are indicated by the .IX macro,-[MAKEINDEX]28967 +File: makeindex, Node: CREATING THE INDEX FILE IN THE BOURNE SHELL-[Note that index entries are indicated by the .IX macro,-[MAKEINDEX]]29585 +File: makeindex, Node: To create an input file for makeindex, in the Bourne shell-[MAKEINDEX]29970 +File: makeindex, Node: Some sites will require ditroff instead of psroff. To-[MAKEINDEX]30430 +File: makeindex, Node: CREATING THE INDEX FILE USING UCSF ENHANCED TROFF/TRANSCRIPT-[Some sites will require ditroff instead of psroff. To-[MAKEINDEX]]31083 +File: makeindex, Node: With UCSF Enhanced troff/TRANSCRIPT, the -I option of-[MAKEINDEX]31486 +File: makeindex, Node: If it is wished to suppress the formatter output-[MAKEINDEX]31920 +File: makeindex, Node: COMPLETING THE INDEX-[If it is wished to suppress the formatter output-[MAKEINDEX]]32422 +File: makeindex, Node: Any of the above procedures leaves the input for makeindex-[MAKEINDEX]32748 +File: makeindex, Node: This leaves troff(1)-ready output in the file sample.ind.-[MAKEINDEX]33167 +File: makeindex, Node: ORDERING-[MAKEINDEX]33400 +File: makeindex, Node: By default, makeindex assumes word ordering; if the -l-[MAKEINDEX]33684 +File: makeindex, Node: Numbers are always sorted in numeric order. For instance,-[MAKEINDEX]34335 +File: makeindex, Node: Letters are first sorted without regard to case; when words-[MAKEINDEX]34725 +File: makeindex, Node: A special symbol is defined here to be any character not-[MAKEINDEX]35139 +File: makeindex, Node: SPECIAL EFFECTS-[MAKEINDEX]35719 +File: makeindex, Node: Entries such as-[MAKEINDEX]35923 +File: makeindex, Node: It is possible to make an item appear in a designated form-[MAKEINDEX]36514 +File: makeindex, Node: The item, subitem, and subsubitem fields may have individual-[MAKEINDEX]37214 +File: makeindex, Node: This will be converted to-[MAKEINDEX]37561 +File: makeindex, Node: It is possible to encapsulate a page number with a desig--[MAKEINDEX]37958 +File: makeindex, Node: The encap operator can also be used to create cross refer--[MAKEINDEX]38943 +File: makeindex, Node: Note that in a cross reference like this the page number-[MAKEINDEX]39481 +File: makeindex, Node: A pair of encap concatenated with range_open (`|(') and-[MAKEINDEX]39834 +File: makeindex, Node: Intermediate pages indexed by the same key will be merged-[MAKEINDEX]40325 +File: makeindex, Node: Several potential problems are worth mentioning. First,-[MAKEINDEX]41148 +File: makeindex, Node: Finally, every special symbol mentioned in this section may-[MAKEINDEX]42279 +File: makeindex, Node: From version 2.11 of makeindex, the quote operator may quote-[MAKEINDEX]43036 +File: makeindex, Node: The sorting order is-[MAKEINDEX]43543 +File: makeindex, Node: Here is an example showing the indexing of all printable-[MAKEINDEX]44021 +File: makeindex, Node: ASCII characters other than letters and digits, assuming the-[MAKEINDEX]44320 +File: makeindex, Node: Characters in the actual fields following the `@' character-[MAKEINDEX]45783 +File: makeindex, Node: FILES-[MAKEINDEX]47194 +File: makeindex, Node: SEE ALSO-[MAKEINDEX]47829 +File: makeindex, Node: UCSF Enhanced troff/TRANSCRIPT - An Overview, R. P. C. Rodg--[MAKEINDEX]48135 +File: makeindex, Node: School of Pharmacy, San Francisco, 1990.-[MAKEINDEX]48444 +File: makeindex, Node: Index Preparation and Processing, Pehong Chen and Michael A.-[MAKEINDEX]48764 +File: makeindex, Node: Harrison, Software-[MAKEINDEX]49001 +File: makeindex, Node: September 1988.-[MAKEINDEX]49250 +File: makeindex, Node: Automating Index Preparation, Pehong Chen and Michael A.-[MAKEINDEX]49504 +File: makeindex, Node: Harrison. Technical Report 87/347, Computer Science Divi--[MAKEINDEX]49798 +File: makeindex, Node: MakeIndex-[MAKEINDEX]50134 +File: makeindex, Node: February 1987 (a LaTeX document supplied with makeindex).-[MAKEINDEX]50467 +File: makeindex, Node: Tools for Printing Indices, Jon L. Bentley and Brian W. Ker--[MAKEINDEX]50753 +File: makeindex, Node: Computing Science Technical Report No. 128, AT&T Bell-[MAKEINDEX]51214 +File: makeindex, Node: Laboratories, Murray Hill, NJ 07974, 1986).-[MAKEINDEX]51519 +File: makeindex, Node: AUTHOR-[MAKEINDEX]51734 +File: makeindex, Node: Pehong Chen, Chen & Harrison International Systems, Inc.-[MAKEINDEX]52002 +File: makeindex, Node: Palo Alto, California, USA <chen@renoir.berkeley.edu>.-[MAKEINDEX]52275 +File: makeindex, Node: Manual page extensively revised and corrected, and troff(1)-[MAKEINDEX]52608 +File: makeindex, Node: ACKNOWLEDGMENTS-[MAKEINDEX]52944 +File: makeindex, Node: Leslie Lamport contributed significantly to the design.-[MAKEINDEX]53238 +File: makeindex, Node: Michael Harrison provided valuable comments and suggestions.-[MAKEINDEX]53532 +File: makeindex, Node: Nelson Beebe improved on the portable version, and maintains-[MAKEINDEX]53871 +File: makeindex, Node: Brosig contributed to the German word ordering. The modifi--[MAKEINDEX]54272 +File: makeindex, Node: TRIB files in the makeindex source distribution record other-[MAKEINDEX]54735 + +End tag table diff --git a/indexing/makeindex/doc/makeindex.l b/indexing/makeindex/doc/makeindex.l new file mode 100644 index 0000000000..b3c85d9680 --- /dev/null +++ b/indexing/makeindex/doc/makeindex.l @@ -0,0 +1,1204 @@ +.if t .ds LX L\\h'-0.36m'\\v'-0.15v'\\s-2A\\s+2\\h'-0.15m'\\v'0.15v'T\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X +.if n .ds LX LaTeX +.if t .ds TX T\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X +.if n .ds TX TeX +.ds Ts T\s-2RAN\s+2S\s-2CRIPT\s+2 +.if t .ds Uc \fIU\\h'-0.12m'C\\v'0.27m'\\h'-.23m'S\\h'-0.11m'F\\v'-0.27m'\fP +.if n .ds Uc UCSF +.ds Et \\f(boE\\h'-0.1667m'\\v'-0.20v'T\\v'0.20v'\\h'-0.125m'T\\fP +.TH MAKEINDEX 1L "10 December 1991" +.\"===================================================================== +.SH NAME +makeindex \- a general purpose, formatter-independent index processor +.\"===================================================================== +.SH SYNOPSIS +.B makeindex +.BR [ \-c ] +.BR [ \-g ] +.BR [ \-i ] +.BR [ \-l ] +.BR [ \-o +.IR ind ] +.BR [ \-p +.IR num ] +.BR [ \-q ] +.BR [ \-r ] +.BR [ \-s +.IR sfile ] +.BR [ \-t +.IR log ] +.BI [ idx0 +.I idx1 +.IR idx2 .\|.\|.] +.\"===================================================================== +.SH DESCRIPTION +The program +.I makeindex +is a general purpose hierarchical index generator; it accepts one or +more input files (often produced by a text formatter such as \*(TX +.RI ( tex (1L)) +or +.IR troff (1), +sorts the entries, and produces an output file which can be formatted. +The index can have up to three levels (0, 1, and 2) of subitem nesting. +The way in which words are flagged for indexing within the main document +is specific to the formatter used; +.I makeindex +does +.I not +automate the process of selecting these words. As the output index +is hierarchical, +.I makeindex +can be considered complimentary to the +.IR awk (1)-based +.IR make.index (1L) +system of Bentley and Kernighan, which is specific to +.IR troff (1), +generates non-hierarchical indices, and employs a much simpler syntax +for indicating index entries. For illustration of use with +.I troff +and +.IR \*(TX , +see the section \s-2EXAMPLES\s+2 below. +.LP +The formats of the input and output files are +specified in a style file; by default, input is assumed to be a +.I \&.idx +file, as generated by \*(LX. +.LP +Unless specified explicitly, the base name of the first input file +.RI ( idx0 ) +is used to determine the names of other files. For each input file +name specified, a file of that name is sought. If this file is not +found and the file name has no extension, the extension +.I \&.idx +is appended. If no file with this name is found, +.I makeindex +aborts. +.LP +If exactly one input file was given and no explicit style file was +specified using +.BR \-s , +.I makeindex +uses a file with the extension +.I \&.mst +as default style file (when present). +.LP +For important notes on how to select index keywords, see the document +by Lamport cited below. As an issue separate from selecting index +keywords, a systematic mechanism for placing index terms in a document +is suggested in +.IR "Index Preparation and Processing" , +a paper cited below. +.\"===================================================================== +.SH OPTIONS +.TP 10 +.B \-c +Compress intermediate blanks (ignoring leading and trailing blanks and +tabs). By default, blanks in the index key are retained. +.TP 10 +.B \-g +Employ German word ordering in the index, in accord with rules set forth +in DIN 5007. By default, +.I makeindex +employs a word ordering in which precedence is: symbols, numbers, +uppercase letters, lowercase letters. The sequence in German word +ordering is: symbols, lowercase letters, uppercase letters, numbers. +Additionally, this option enables +.I makeindex +to recognize the German \*(TX-commands {"a, "o, "u and "s} as {ae, oe, +ue and ss} during the sorting of the entries. The quote character +must be redefined in a style file (for example, redefine quote +as '+'). If the quote character is not redefined, +.I makeindex +will produce an error message and abort. +.TP 10 +.B \-i +Take input from +.IR stdin . +When this option is specified and +.B \-o +is not, output is written to +.IR stdout . +.TP 10 +.B \-l +Letter ordering; by default, word ordering is used (see +the \s-2ORDERING\s+2 section). +.TP 10 +.BI \-o " ind" +Employ +.I ind +as the output index file. By default, the file name +is created by appending the extension +.I .ind +to the base name of +the first input file +.RI ( idx0 ). +.TP 10 +.BI \-p " num" +Set the starting page number of the output index file to be +.I num +(useful when the index file is to be formatted separately). The +argument +.I num +may be numerical or one of the following: +.RS +.TP 10 +.I any +The starting page is the last source page number plus 1. +.TP +.I odd +The starting page is the first odd page following the last source page +number. +.TP +.I even +The starting page is the first even page following the last source +page number. +.RE +.IP +The last source page is obtained by searching backward in the log file +for the first instance of a number included within paired square +brackets +.RB ( [ .\|.\|. ] ). +If a page number is missing or the log file is not found, no attempt +will be made to set the starting page number. The source log file +name is determined by appending the extension +.I \&.log +to the base name of the first input file +.RI ( idx0 ). +.TP 10 +.B \-q +Quiet mode; send no messages to +.IR stderr . +By default, progress +and error messages are sent to +.I stderr +as well as to the +transcript file. +.TP 10 +.B \-r +Disable implicit page range formation; page ranges must be created by +using explicit range operators; see \s-2SPECIAL EFFECTS\s+2 below. By +default, three or more successive pages are automatically abbreviated +as a range (e.g. 1\(em5). +.TP 10 +.BR \-s " sty" +Employ +.I sty +as the style file (no default). The environment +variable \s-2INDEXSTYLE\s+2 defines the path where the style file +should be found. +.TP 10 +.BR \-t " log" +Employ +.I log +as the transcript file. By default, the file name is +created by appending the extension +.I .ilg +to the base name of the +first input file +.RI ( idx0 ). +.\"===================================================================== +.SH "STYLE FILE" +The style file informs +.I makeindex +about the format of the +.I \&.idx +input files and the intended format of the final output file; examples +appear below. This file can reside anywhere in the path defined by +the environment variable \s-2INDEXSTYLE\s+2. The style file contains +a list of +.RI < specifier , " attribute" > +pairs. There are two types of specifiers: input and output. +Pairs do not have to appear in any particular order. +A line begun by `%' is a comment. In the following list of +specifiers and arguments, <string> is an arbitrary string delimited by +double quotes (".\|.\|."), <char> is a single letter embraced by +single quotes ('.\|.\|.'), and <number> is a nonnegative integer. +The maximum length of a <string> is 2048. A literal backslash or +quote must be escaped (by a backslash). Anything not specified in the +style file will be assigned a default value, which is shown at the +head of the rightmost column. +.\"---------------------------------------------------------------------- +.SS "INPUT STYLE SPECIFIERS" +.TP 25 +.BR actual " <char>" +\'@\' +.RS +Symbol indicating that the next entry is to appear in the output file. +.RE +.TP +.BR arg_close " <char>" +\'}\' +.RS +Closing delimiter for the index entry argument. +.RE +.TP +.BR arg_open " <char>" +\'{\' +.RS +Opening delimiter for the index entry argument. +.RE +.TP +.BR encap " <char>" +\'|\' +.RS +Symbol indicating that the rest of the argument list +is to be used as the encapsulating command for the page number. +.RE +.TP +.BR escape " <char>" +\'\\\\\' +.RS +Symbol which escapes the following letter, unless its preceding letter +is +.BR escape . +Note: +.B quote +is used to escape the letter which immediately follows it, but if it is +preceded by +.BR escape , +it is treated as a ordinary character. These two symbols +.I must +be distinct. +.RE +.TP +.BR keyword " <string>" +"\\\\indexentry" +.RS +Command which tells +.I makeindex +that its argument is an index entry. +.RE +.TP +.BR level " <char>" +\'!\' +.RS +Delimiter denoting a new level of subitem. +.RE +.TP +.BR quote " <char>" +\'"\' +.RS +Note: +.B quote +is used to escape the letter which immediately follows it, but if it is +preceded by +.BR escape , +it is treated as a ordinary character. These two symbols +.I must +be distinct. +.RE +.TP +.BR range_close " <char>" +\')\' +.RS +Closing delimiter indicating the end of an explicit page range. +.RE +.TP +.BR range_open " <char>" +\'(\' +.RS +Opening delimiter indicating the beginning of an explicit page range. +.RE +.\"--------------------------------------------------------------------- +.SS "OUTPUT STYLE SPECIFIERS" +.TP 25 +.BR preamble " <string>" +"\\\\begin{theindex}\\n" +.RS +Preamble of output file. +.RE +.TP +.BR postamble " <string>" +"\\n\\n\\\\end{theindex}\\n" +.RS +Postamble of output file. +.RE +.TP +.BR setpage_prefix " <string>" +"\\n \\\\setcounter{page}{" +.RS +Prefix of command which sets the starting page number. +.RE +.TP +.BR setpage_suffix " <string>" +"}\\n" +.RS +Suffix of command which sets the starting page number. +.RE +.TP +.BR group_skip " <string>" +"\\n\\n \\\\indexspace\\n" +.RS +Vertical space to be inserted before a new group begins. +.RE +.TP +.BR headings_flag " <string>" +0 +.RS +Flag indicating treatment of new group headers, which are inserted +when before a new group (symbols, numbers, and the 26 letters): +positive values cause an uppercase letter to be inserted between +prefix and suffix, and negative values cause a lowercase letter to be +inserted (default is 0, which produces no header). +.RE +.TP +.BR heading_prefix " <string>" +"" +.RS +Header prefix to be inserted before a new letter begins. +.RE +.TP +.BR symhead_positive " <string>" +"Symbols" +.RS +Heading for symbols to be inserted if +.B headings_flag +is positive. +.RE +.TP +.BR symhead_negative " <string>" +"symbols" +.RS +Heading for symbols to be inserted if +.B headings_flag +is negative. +.RE +.TP +.BR numhead_positive " <string>" +"Numbers" +.RS +Heading for numbers to be inserted if +.B headings_flag +is positive. +.RE +.TP +.BR numhead_negative " <string>" +"numbers" +.RS +Heading for numbers to be inserted if +.B headings_flag +is negative. +.RE +.TP +.BR item_0 " <string>" +"\\n \\\\item " +.RS +Command to be inserted between two primary (level 0) items. +.RE +.TP +.BR item_1 " <string>" +"\\n \\\\subitem " +.RS +Command to be inserted between two secondary (level 1) items. +.RE +.TP +.BR item_2 " <string>" +"\\n \\\\subsubitem " +.RS +Command to be inserted between two level 2 items. +.RE +.TP +.B item_01 " <string>" +"\\n \\\\subitem " +.RS +Command to be inserted between a level 0 item and a level 1 item. +.RE +.TP +.BR item_x1 " <string>" +"\\n \\\\subitem " +.RS +Command to be inserted between a level 0 item and a level 1 item, +where the level 0 item does not have associated page numbers. +.RE +.TP +.BR item_12 " <string>" +"\\n \\\\subsubitem " +.RS +Command to be inserted between a level 1 item and a level 2 item. +.RE +.TP +.BR item_x2 " <string>" +"\\n \\\\subsubitem " +.RS +Command to be inserted between a level 1 item and a level 2 item, +where the level 1 item does not have associated page numbers. +.RE +.TP +.BR delim_0 " <string>" +", " +.RS +Delimiter to be inserted between a level 0 key and its first page number +(default: comma followed by a blank). +.RE +.TP +.BR delim_1 " <string>" +", " +.RS +Delimiter to be inserted between a level 1 key and its first page number +(default: comma followed by a blank). +.RE +.TP +.BR delim_2 " <string>" +", " +.RS +Delimiter to be inserted between a level 2 key and its first page number +(default: comma followed by a blank). +.RE +.TP +.BR delim_n " <string>" +", " +.RS +Delimiter to be inserted between two page numbers for the same key +in any level (default: comma followed by a blank). +.RE +.TP +.BR delim_r " <string>" +"--" +.RS +Delimiter to be inserted between the starting and ending page numbers +of a range. +.RE +.TP +.BR delim_t " <string>" +"" +.RS +Delimiter to be inserted at the end of a page list. This delimiter +has no effect on entries which have no associated page list. +.RE +.TP +.BR encap_prefix " <string>" +"\\\\" +.RS +First part of prefix for the command which encapsulates the page number. +.RE +.TP +.BR encap_infix " <string>" +"{" +.RS +Second part of prefix for the command which encapsulates the page +number. +.RE +.TP +.BR encap_suffix " <string>" +"}". +.RS +Suffix for the command which encapsulates the page number. +.RE +.TP +.BR line_max " <number>" +72 +.RS +Maximum length of a line in the output, beyond which a line wraps. +.RE +.TP +.BR indent_space " <string>" +"\\t\\t" +.RS +Space to be inserted in front of a wrapped line (default: two tabs). +.RE +.TP +.BR indent_length " <number>" +16 +.RS +Length of +.B indent_space +(default: 16, equivalent to 2 tabs). +.RE +.TP +.BR suffix_2p " <string>" +"" +.RS +Delimiter to replace the range delimiter and the second page number of +a two page list. When present, it overrides +.BR delim_r . +Example: "f.". +.RE +.TP +.BR suffix_3p " <string>" +"" +.RS +Delimiter to replace the range delimiter and the second page number of +a three page list. When present, it overrides +.B delim_r +and +.BR suffix_mp . +Example: "ff.". +.RE +.TP +.BR suffix_mp " <string>" +"" +.RS +Delimiter to replace the range delimiter and the second page number of +a multiple page list (three or more pages). When present, it overrides +.BR delim_r . +Example: "f.". +.RE +.\"===================================================================== +.SH EXAMPLES +.\"--------------------------------------------------------------------- +.SS "\*(TX EXAMPLE" +The following example shows a style file called +.IR book.ist , +which defines an index for a book which can be formatted independently +of the main source: +.LP +.RS +.nf +\fCpreamble +"\\\\documentstyle[12pt]{book} +\\\\begin{document} +\\\\begin{theindex} +{\\\\small\\n" +postamble +"\\n\\n} +\\\\end{theindex} +\\\\end{document}\\n\fP" +.fi +.RE +.LP +Assuming that a particular book style requires the index (as well as any +chapters) to start from an odd page number, and that the input file is +named +.IR foo.idx , +the following command line produces output in file +.IR footmp.ind : +.LP +.RS +\fCmakeindex \-s book.ist \-o footmp.ind \-p odd foo\fP +.RE +.LP +Here a non-default output file name is used to avoid clobbering the +output for the book itself (presumably +.IR foo.dvi , +which would have been the default name for the index output file!). +.\"--------------------------------------------------------------------- +.SS "TROFF EXAMPLE" +A sample control file for creating an index, which we will assume +resides in the file +.IR sample.ist : +.LP +.RS +.nf +\&\fCkeyword "IX:" +\&preamble +\&".\\\\\\" start of index output +\&\\".\\\\\\" enter two column mode +\&.2C +\&.SH +\&.ce +\&INDEX +\&.XS +\&INDEX +\&.XE +\&.R +\&.ps 9p +\&.vs 11p +\&.sp +\&.de I1 +\&.ti 0.25i +\&.. +\&.de I2 +\&.ti 0.5i +\&.." +\&postamble "\\n.\\\\\\" end of index output" +\&setpage_prefix "\\n.nr % " +\&setpage_suffix "" +\&group_skip "\\n.sp 1.0" +\&headings_flag 1 +\&heading_prefix "\\n.IS\\n" +\&heading_suffix "\\n.IE" +\&item_0 "\\n.br\\n" +\&item_1 "\\n.I1\\n" +\&item_2 "\\n.I2\\n" +\&item_01 "\\n.I1\\n" +\&item_x1 "\\n.I1\\n" +\&item_12 "\\n.I2\\n" +\&item_x2 "\\n.I2\\n" +\&delim_0 ", " +\&delim_1 ", " +\&delim_2 ", " +\&delim_r "-" +\&delim_t "." +\&encap_prefix "\\\\fB" +\&encap_infix "" +\&encap_suffix "\\\\fP" +\&indent_space "" +\&indent_length 0\fP +.fi +.RE +.LP +The local macro package may require modification, as in this example +of an extension to the +.B \-ms +macros (note that at some sites, this macro should +.I replace +a pre-existing macro of the same name): +.LP +.RS +.nf +\fC\&.\" IX - index words to stderr +\&.de IX +\&.ie '\\\\n(.z'' .tm IX: \\\\$1 \\\\$2 \\\\$3 \\\\$4 \\\\$5 \\\\$6 \\\\$7 \\\\$8 \\\\$9 {\\\\n(PN} +\&.el \\\\!.IX \\\\$1 \\\\$2 \\\\$3 \\\\$4 \\\\$5 \\\\$6 \\\\$7 \\\\$8 \\\\$9 {\\\\n(PN} +\&..\fP +.fi +.RE +.LP +(note that the string {\fC\\\\n(PN\fP} is separated from the rest of the +line by a tab. +If your local macro package does not contain this extension, +just include those lines at the beginning of your file. +Here is a simple +.IR troff (1) +input file, which we will assume is named +.IR sample.txt : +.LP +.RS +.nf +\fC\&This is a sample file to test the \\fImakeindex\\fP(1L) +\&program, and see +\&.IX {indexing!programs!C language} +\&.IX {makeindex@\\fImakeindex\\fP(1L)} +\&.bp +\&.rs +\&.IX {Knuth} +\&.IX {typesetting!computer-aided} +\&how well it functions in the \\fItroff\\fP(1) environment.\fP +.fi +.RE +.LP +Note that index entries are indicated by the +.B .IX +macro, which +causes the following text to be written to +.I stdout +along with the +current page number. +.\"--------------------------------------------------------------------- +.SS "CREATING THE INDEX FILE IN THE BOURNE SHELL" +To create an input file for +.IR makeindex , +.B "in the Bourne shell" +environment, do the equivalent at your site of the command: +.LP +.nf +\fCpsroff -ms -Tpsc -t sample.txt > /dev/null 2> sample.tmp\fP +.fi +.LP +Some sites will require +.I ditroff +instead of +.IR psroff . +To filter out any genuine error messages, invoke +.IR grep (1): +.LP +.RS +\fCgrep '^IX: ' sample.tmp > sample.idx\fP +.RE +.\"--------------------------------------------------------------------- +.SS "CREATING THE INDEX FILE USING \*(Uc ENHANCED TROFF/\*(Ts" +With \*(Uc Enhanced troff/\*(Ts, the +.B \-I +option of +.IR psroff (1L) +can produce both formatter output and an index file: +.LP +.RS +\fCpsroff -ms -I sample.inp -Tpsc sample.txt\fP +.RE +.LP +If it is wished to suppress the formatter output: +.RS +.LP +.nf +\fCpsroff -ms -I sample.inp -Tpsc -t sample.txt > /dev/null\fP +.fi +.RE +.\"--------------------------------------------------------------------- +.SS "COMPLETING THE INDEX" +Any of the above procedures leaves the input for +.I makeindex +in +.IR sample.inp . +The next step is to invoke +.IR makeindex : +.LP +.RS +\fCmakeindex -s sample.ist sample.idx\fP +.RE +.LP +This leaves +.IR troff (1)-ready +output in the file +.IR sample.ind . +.\"===================================================================== +.SH "ORDERING" +By default, +.I makeindex +assumes +.IR "word ordering" ; +if the +.B \-l +option is in effect, +.I "letter ordering" +is used. In word ordering, a blank precedes any letter in the +alphabet, whereas in letter ordering, it does not count at all. This +is illustrated by the following example: +.LP +.RS +\fIword order letter order\fP +.br +sea lion seal +.br +seal sea lion +.RE +.LP +Numbers are always sorted in numeric order. For instance, +.LP +.RS +9 (nine), 123 +.br +10 (ten), see Derek, Bo +.RE +.LP +Letters are first sorted without regard to case; when words are +identical, the uppercase version precedes its lowercase counterpart. +.LP +A special symbol is defined here to be any character not appearing in +the union of digits and the English alphabetic characters. Patterns +starting with special symbols precede numbers, which precede patterns +starting with letters. As a special case, a string starting with a +digit but mixed with non-digits is considered to be a pattern starting +with a special character. +.\"===================================================================== +.SH "SPECIAL EFFECTS" +Entries such as +.LP +.RS +.nf +\fC\\indexentry{alpha}{1} +\\indexentry{alpha!beta}{3} +\\indexentry{alpha!beta!gamma}{10}\fP +.fi +.RE +.LP +in the input file will be converted to +.LP +.RS +.nf +\fC\\item alpha, 1 +\0\0\0\\subitem beta, 3 +\0\0\0\0\0\0\\subsubitem gamma, 10\fP +.fi +.RE +.LP +in the output index file. +Notice that the +.B level +symbol (`!') is used above to delimit +hierarchical levels. +.LP +It is possible to make an item appear in a designated form by +using the +.B actual +(`@') operator. For instance, +.LP +.RS +\fC\\indexentry{alpha@{\\it alpha\\/}}{1}\fP +.RE +.LP +will become +.LP +.RS +\fC\\item {\\it alpha\\/}, 1\fP +.RE +.LP +after processing. The pattern preceding `@' is +used as sort key, whereas the one following it is written to the +output file. Note that two appearances of the same key, one with and +one without the +.B actual +operator, are regarded as +.I distinct +entries. +.LP +The item, subitem, and subsubitem fields may have individual sort keys: +.LP +.RS +.nf +\fC\\indexentry{aa@{\\it aa\\/}!bb@{\\it bb\\/}!cc@{\\it cc\\/}}{1}\fP +.fi +.RE +.LP +This will be converted to +.LP +.RS +.nf +\fC\\item {\\it aa}, 1 +\0\0\0\\subitem {\\it bb}, 3 +\0\0\0\0\0\0\\subsubitem {\\it cc}, 10\fP +.fi +.RE +.LP +It is possible to encapsulate a page number with a designated +command using the +.B encap +(`|') operator: +.LP +.RS +\fC\\indexentry{alpha|bold}{1}\fP +.RE +.LP +will be converted to +.LP +.RS +\fC\\item alpha, \\bold{1}\fP +.RE +.LP +where, with a suitable definition for \*(TX, \fC\\bold{n}\fP +will expand to \fC{\\bf n}\fP. +In this example, the three output attributes associated with page +encapsulation +.BR encap_prefix , +.BR encap_infix , +and +.BR encap_suffix , +correspond to backslash, left brace, and right brace, respectively. +This mechanism allows page numbers to be set in different fonts. For +example, the page where the definition of a keyword appears can be in +one font, the location of a primary example can be in another font, +and other appearances in yet a third font. +.LP +The +.B encap +operator can also be used to create cross references in +the index: +.LP +.RS +\fC\\indexentry{alpha|see{beta}}{1}\fP +.RE +.LP +will become +.LP +.RS +\fC\\item alpha, \\see{beta}{1}\fP +.RE +.LP +in the output file, where +.LP +.RS +\fC\\see{beta}{1}\fP +.RE +.LP +will expand to +.LP +.RS +\fC{\\it see\\/} beta\fP +.RE +.LP +Note that in a cross reference like this the page number disappears. +.LP +A pair of +.B encap +concatenated with +.B range_open +(`|(') and +.B range_close +(`|)') creates an explicit page range: +.LP +.RS +.nf +\fC\\indexentry{alpha|(}{1} +\\indexentry{alpha|)}{5}\fP +.fi +.RE +.LP +will become +.LP +.RS +\fC\\item alpha, 1\(em5\fP +.RE +.LP +Intermediate pages indexed by the same key will be merged into the +range implicitly. This is especially useful when an entire section +about a particular subject is to be indexed, in which case only the +range opening and closing operators need to be inserted at the +beginning and end of the section. Explicit page range formation can +also include an extra command to set the page range in a designated +font: +.LP +.RS +.nf +\fC\\indexentry{alpha|(bold}{1} +\\indexentry{alpha|)}{5}\fP +.fi +.RE +.LP +will become +.LP +.RS +\fC\\item alpha, \\bold{1--5}\fP +.RE +.LP +Several potential problems are worth mentioning. First, entries like +.LP +.RS +.nf +\fC\\indexentry{alpha|(}{1} +\\indexentry{alpha|bold}{3} +\\indexentry{alpha|)}{5}\fP +.fi +.RE +.LP +will be interpreted as +.LP +.RS +\fC\\item alpha, \\bold{3}, 1--5\fP +.RE +.LP +but with a warning message in the transcript about encountering an +inconsistent page encapsulator. +An explicit range beginning in a Roman page number and ending +in Arabic is also considered an error. In this instance, (if +possible) the range is broken into two subranges, one in Roman and the +other in Arabic. For instance, +.LP +.RS +.nf +\fC\\indexentry{alpha|(}{i} +\\indexentry{alpha}{iv} +\\indexentry{alpha}{3} +\\indexentry{alpha|)}{7}\fP +.fi +.RE +.LP +will be turned into +.LP +.RS +\fC\\item alpha, i--iv, 3--7\fP +.RE +.LP +with a warning message in the transcript file complaining about an +illegal range formation. +.LP +Finally, every special symbol mentioned in this section may be +escaped by the +.B quote +operator (`"'). Thus +.LP +.RS +\fC\\indexentry{alpha"@beta}{1}\fP +.RE +.LP +will actually become +.LP +.RS +\fC\\item alpha@beta, 1\fP +.RE +.LP +as a result of executing +.IR makeindex . +The quoting power of +.B quote +is eliminated if it is immediately preceded +by +.B escape +(`\\'). For example, +.LP +.RS +\fC\\indexentry{f\\"ur}{1}\fP +.RE +.LP +becomes +.LP +.RS +\fC\\item f\\"ur, 1\fP +.RE +.LP +which represents an umlaut-accented `u' to the \*(TX family of +processors. +.PP +From version 2.11 of +.IR makeindex , +the +.B quote +operator may quote +.I any +character in the range 1 .\|.\|. 255. Character 0 is excluded because +it is used internally in the +.I makeindex +source code as a string terminator. With this change, sort keys can +be created for all eight-bit characters except 0. The sorting order +is +.RS +.nf + +punctuation characters (in ASCII order), +digits, +control characters (1 .\|.\|. 31), +space (32), +letters (ignoring case), +characters 127 .\|.\|. 255. + +.fi +.RE +Here is an example showing the indexing of all printable ASCII +characters other than letters and digits, assuming the default +\*(TX format. For convenience, the page number references are +the corresponding ASCII ordinal values. +.RS +.nf + +\fC\\indexentry{" @" (space)}{32} +\\indexentry{"!@"! (exclamation point)}{33} +\\indexentry{""@"" (quotation mark)}{34} +\\indexentry{"#@"\\# (sharp sign)}{35} +\\indexentry{"$@"\\$ (dollar sign)}{36} +\\indexentry{"%@"\\% (percent sign)}{37} +\\indexentry{"&@"\\& (ampersand)}{38} +\\indexentry{"<@"$<$ (left angle bracket)}{60} +\\indexentry{"=@"= (equals)}{61} +\\indexentry{">@"$>$ (right angle bracket)}{62} +\\indexentry{"?@"? (query)}{63} +\\indexentry{"@@"@ (at sign)}{64} +\\indexentry{"[@"[ (left square bracket)}{91} +\\indexentry{"\\@"\\verb=\\= (backslash)}{92} +\\indexentry{"]@"] (right square bracket)}{93} +\\indexentry{"^@"\\verb=^= (caret)}{94} +\\indexentry{"_@"\\verb=_= (underscore)}{95} +\\indexentry{"`@"\\verb=~= (grave accent)}{96} +\\indexentry{"{@"\\"{ (left brace)}{123} +\\indexentry{"|@"\\verb="|= (vertical bar)}{124} +\\indexentry{"}@"\\"} (right brace)}{125} +\\indexentry{"~@"\\verb=~= (tilde)}{126}\fP + +.fi +.RE +Characters in the actual fields following the `@' character which +have special significance to \*(TX must be represented as control +sequences, or as math mode characters. Note particularly how the +entries for the at sign, left and right braces, and the vertical +bar, are coded. The index file output by +.I makeindex +for this example looks like this: +.RS +.nf + +\fC\\begin{theindex} + + \\item ! (exclamation point), 33 + \\item " (quotation mark), 34 + \\item \\# (sharp sign), 35 + \\item \\$ (dollar sign), 36 + \\item \\% (percent sign), 37 + \\item \\& (ampersand), 38 + \\item $<$ (left angle bracket), 60 + \\item = (equals), 61 + \\item $>$ (right angle bracket), 62 + \\item ? (query), 63 + \\item @ (at sign), 64 + \\item [ (left square bracket), 91 + \\item \\verb=\\= (backslash), 92 + \\item ] (right square bracket), 93 + \\item \\verb=^= (caret), 94 + \\item \\verb=_= (underscore), 95 + \\item \\verb=~= (grave accent), 96 + \\item \\{ (left brace), 123 + \\item \\verb=|= (vertical bar), 124 + \\item \\} (right brace), 125 + \\item \\verb=~= (tilde), 126 + + \\indexspace + + \\item (space), 32 + +\\end{theindex}\fP +.fi +.RE +.\"===================================================================== +.SH "FILES" +.TP 2.2i +.I /usr/local/bin/makeindex +executable file +.TP +.I /usr/local/lib/tex/macros/idxmac-amstex.tex +\*(TX macro file used by +.I makeindex +.TP +.I /usr/local/lib/tex/macros/idxmac.tex +\*(TX macro file used by +.I makeindex +.TP +.I /usr/local/lib/tex/macros/makeidx.doc +\*(TX macro file used by +.I makeindex +.TP +.I /usr/local/lib/tex/macros/makeidx.sty +\*(TX macro file used by +.I makeindex +.\"===================================================================== +.SH "SEE ALSO" +ditroff(1L), +latex(1L), +make.index (1L), +qsort(3), +tex(1L), +troff(1L) +.LP +.IR "\*(Uc Enhanced troff/\*(Ts \(em An Overview" , +R. P. C. Rodgers and Conrad Huang, LSMB Technical Report 90-2, +UCSF School of Pharmacy, San Francisco, 1990. +.LP +.IR "Index Preparation and Processing" , +Pehong Chen and Michael A. Harrison, +.IR "Software: Practice and Experience" , +.BR 19 (9), +897\(en915, +September 1988. +.LP +.IR "Automating Index Preparation" , +Pehong Chen and Michael A. Harrison. Technical Report 87/347, +Computer Science Division, University of California, Berkeley, 1987 +(a \*(LX document supplied with +.IR makeindex ). +.LP +.IR "MakeIndex: An Index Processor for \*(LX" , +Leslie Lamport, February 1987 (a \*(LX document supplied +with +.IR makeindex ). +.LP +.IR "Tools for Printing Indices" , +Jon L. Bentley and Brian W. Kernighan, +.IR "Electronic Publishing \(em Origination, Dissemination, and Design" , +1(1), 3\(en18, June 1988 (also available as: Computing Science +Technical Report No. 128, +AT&T Bell Laboratories, Murray Hill, NJ 07974, 1986). +.\"===================================================================== +.SH "AUTHOR" +Pehong Chen, Chen & Harrison International Systems, Inc. +Palo Alto, California, USA <chen@renoir.berkeley.edu>. +.br +Manual page extensively revised and corrected, and +.IR troff (1) +examples created by Rick P. C. Rodgers, UCSF School +of Pharmacy <rodgers@cca.ucsf.edu>. +.\"===================================================================== +.SH ACKNOWLEDGMENTS +Leslie Lamport contributed significantly to the design. +Michael Harrison provided valuable comments and suggestions. +Nelson Beebe improved on the portable version, and maintains the +source distribution for the \*(TX Users Group. +Andreas Brosig contributed to the German word ordering. +The modification to the +.B \-ms +macros was derived from a method proposed by Ravi Sethi of AT&T +Bell Laboratories. +The +.I LOG +and +.I CONTRIB +files in the +.I makeindex +source distribution record other contributions. diff --git a/indexing/makeindex/doc/makeindex.l.orig b/indexing/makeindex/doc/makeindex.l.orig new file mode 100644 index 0000000000..aac4034cd8 --- /dev/null +++ b/indexing/makeindex/doc/makeindex.l.orig @@ -0,0 +1,1167 @@ +.if t .ds LX L\\h'-0.36m'\\v'-0.15v'\\s-2A\\s+2\\h'-0.15m'\\v'0.15v'T\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X +.if n .ds LX LaTeX +.if t .ds TX T\\h'-0.1667m'\\v'0.20v'E\\v'-0.20v'\\h'-0.125m'X +.if n .ds TX TeX +.ds Ts T\s-2RAN\s+2S\s-2CRIPT\s+2 +.if t .ds Uc \fIU\\h'-0.12m'C\\v'0.27m'\\h'-.23m'S\\h'-0.11m'F\\v'-0.27m'\fP +.if n .ds Uc UCSF +.ds Et \\f(boE\\h'-0.1667m'\\v'-0.20v'T\\v'0.20v'\\h'-0.125m'T\\fP +.TH MAKEINDEX 1L "10 December 1991" +.\"===================================================================== +.SH NAME +makeindex \- a general purpose, formatter-independent index processor +.\"===================================================================== +.SH SYNOPSIS +.B makeindex +.BR [ \-c ] +.BR [ \-g ] +.BR [ \-i ] +.BR [ \-l ] +.BR [ \-o +.IR ind ] +.BR [ \-p +.IR num ] +.BR [ \-q ] +.BR [ \-r ] +.BR [ \-s +.IR sfile ] +.BR [ \-t +.IR log ] +.BI [ idx0 +.I idx1 +.IR idx2 .\|.\|.] +.\"===================================================================== +.SH DESCRIPTION +The program +.I makeindex +is a general purpose hierarchical index generator; it accepts one or +more input files (often produced by a text formatter such as \*(TX +.RI ( tex (1L)) +or +.IR troff (1), +sorts the entries, and produces an output file which can be formatted. +The index can have up to three levels (0, 1, and 2) of subitem nesting. +The way in which words are flagged for indexing within the main document +is specific to the formatter used; +.I makeindex +does +.I not +automate the process of selecting these words. As the output index +is hierarchical, +.I makeindex +can be considered complimentary to the +.IR awk (1)-based +.IR make.index (1L) +system of Bentley and Kernighan, which is specific to +.IR troff (1), +generates non-hierarchical indices, and employs a much simpler syntax +for indicating index entries. For illustration of use with +.I troff +and +.IR \*(TX , +see the section \s-2EXAMPLES\s+2 below. +.LP +The formats of the input and output files are +specified in a style file; by default, input is assumed to be a +.I \&.idx +file, as generated by \*(LX. +.LP +Unless specified explicitly, the base name of the first input file +.RI ( idx0 ) +is used to determine the names of other files. For each input file +name specified, a file of that name is sought. If this file is not +found and the file name has no extension, the extension +.I \&.idx +is appended. If no file with this name is found, +.I makeindex +aborts. +.LP +For important notes on how to select index keywords, see the document +by Lamport cited below. As an issue separate from selecting index +keywords, a systematic mechanism for placing index terms in a document +is suggested in +.IR "Index Preparation and Processing" , +a paper cited below. +.\"===================================================================== +.SH OPTIONS +.TP 10 +.B \-c +Compress intermediate blanks (ignoring leading and trailing blanks and +tabs). By default, blanks in the index key are retained. +.TP 10 +.B \-g +Employ German word ordering in the index, in accord with rules set forth +in DIN 5007. By default, +.I makeindex +employs a word ordering in which precedence is: symbols, numbers, +uppercase letters, lowercase letters. The sequence in German word +ordering is: symbols, lowercase letters, uppercase letters, numbers. +Additionally, this option enables +.I makeindex +to recognize the German \*(TX-commands {"a, "o, "u and "s} as {ae, oe, +ue and ss} during the sorting of the entries. The quote character +must be redefined in a style file (for example, redefine quote +as '+'). If the quote character is not redefined, +.I makeindex +will produce an error message and abort. +.TP 10 +.B \-i +Take input from +.IR stdin . +When this option is specified and +.B \-o +is not, output is written to +.IR stdout . +.TP 10 +.B \-l +Letter ordering; by default, word ordering is used (see +the \s-2ORDERING\s+2 section). +.TP 10 +.BI \-o " ind" +Employ +.I ind +as the output index file. By default, the file name +is created by appending the extension +.I .ind +to the base name of +the first input file +.RI ( idx0 ). +.TP 10 +.BI \-p " num" +Set the starting page number of the output index file to be +.I num +(useful when the index file is to be formatted separately). The +argument +.I num +may be numerical or one of the following: +.RS +.TP 10 +.I any +The starting page is the last source page number plus 1. +.TP +.I odd +The starting page is the first odd page following the last source page +number. +.TP +.I even +The starting page is the first even page following the last source +page number. +.RE +.IP +The last source page is obtained by searching backward in the log file +for the first instance of a number included within paired square +brackets +.RB ( [ .\|.\|. ] ). +If a page number is missing or the log file is not found, no attempt +will be made to set the starting page number. The source log file +name is determined by appending the extension +.I \&.log +to the base name of the first input file +.RI ( idx0 ). +.TP 10 +.B \-q +Quiet mode; send no messages to +.IR stderr . +By default, progress +and error messages are sent to +.I stderr +as well as to the +transcript file. +.TP 10 +.B \-r +Disable implicit page range formation; page ranges must be created by +using explicit range operators; see \s-2SPECIAL EFFECTS\s+2 below. By +default, three or more successive pages are automatically abbreviated +as a range (e.g. 1\(em5). +.TP 10 +.BR \-s " sty" +Employ +.I sty +as the style file (no default). The environment +variable \s-2INDEXSTYLE\s+2 defines the path where the style file +should be found. +.TP 10 +.BR \-t " log" +Employ +.I log +as the transcript file. By default, the file name is +created by appending the extension +.I .ilg +to the base name of the +first input file +.RI ( idx0 ). +.\"===================================================================== +.SH "STYLE FILE" +The style file informs +.I makeindex +about the format of the +.I \&.idx +input files and the intended format of the final output file; examples +appear below. This file can reside anywhere in the path defined by +the environment variable \s-2INDEXSTYLE\s+2. The style file contains +a list of +.RI < specifier , " attribute" > +pairs. There are two types of specifiers: input and output. +Pairs do not have to appear in any particular order. +A line begun by `%' is a comment. In the following list of +specifiers and arguments, <string> is an arbitrary string delimited by +double quotes (".\|.\|."), <char> is a single letter embraced by +single quotes ('.\|.\|.'), and <number> is a nonnegative integer. +The maximum length of a <string> is 2048. A literal backslash or +quote must be escaped (by a backslash). Anything not specified in the +style file will be assigned a default value, which is shown at the +head of the rightmost column. +.\"---------------------------------------------------------------------- +.SS "INPUT STYLE SPECIFIERS" +.TP 25 +.BR actual " <char>" +\'@\' +.RS +Symbol indicating that the next entry is to appear in the output file. +.RE +.TP +.BR arg_close " <char>" +\'}\' +.RS +Closing delimiter for the index entry argument. +.RE +.TP +.BR arg_open " <char>" +\'{\' +.RS +Opening delimiter for the index entry argument. +.RE +.TP +.BR encap " <char>" +\'|\' +.RS +Symbol indicating that the rest of the argument list +is to be used as the encapsulating command for the page number. +.RE +.TP +.BR escape " <char>" +\'\\\\\' +.RS +Symbol which escapes the following letter, unless its preceding letter +is +.BR escape . +Note: +.B quote +is used to escape the letter which immediately follows it, but if it is +preceded by +.BR escape , +it is treated as a ordinary character. These two symbols +.I must +be distinct. +.RE +.TP +.BR keyword " <string>" +"\\\\indexentry" +.RS +Command which tells +.I makeindex +that its argument is an index entry. +.RE +.TP +.BR level " <char>" +\'!\' +.RS +Delimiter denoting a new level of subitem. +.RE +.TP +.BR quote " <char>" +\'"\' +.RS +Note: +.B quote +is used to escape the letter which immediately follows it, but if it is +preceded by +.BR escape , +it is treated as a ordinary character. These two symbols +.I must +be distinct. +.RE +.TP +.BR range_close " <char>" +\')\' +.RS +Closing delimiter indicating the end of an explicit page range. +.RE +.TP +.BR range_open " <char>" +\'(\' +.RS +Opening delimiter indicating the beginning of an explicit page range. +.RE +.\"--------------------------------------------------------------------- +.SS "OUTPUT STYLE SPECIFIERS" +.TP 25 +.BR preamble " <string>" +"\\\\begin{theindex}\\n" +.RS +Preamble of output file. +.RE +.TP +.BR postamble " <string>" +"\\n\\n\\\\end{theindex}\\n" +.RS +Postamble of output file. +.RE +.TP +.BR setpage_prefix " <string>" +"\\n \\\\setcounter{page}{" +.RS +Prefix of command which sets the starting page number. +.RE +.TP +.BR setpage_suffix " <string>" +"}\\n" +.RS +Suffix of command which sets the starting page number. +.RE +.TP +.BR group_skip " <string>" +"\\n\\n \\\\indexspace\\n" +.RS +Vertical space to be inserted before a new group begins. +.RE +.TP +.BR headings_flag " <string>" +0 +.RS +Flag indicating treatment of new group headers, which are inserted +when before a new group (symbols, numbers, and the 26 letters): +positive values cause an uppercase letter to be inserted between +prefix and suffix, and negative values cause a lowercase letter to be +inserted (default is 0, which produces no header). +.RE +.TP +.BR heading_prefix " <string>" +"" +.RS +Header prefix to be inserted before a new letter begins. +.RE +.TP +.BR symhead_positive " <string>" +"Symbols" +.RS +Heading for symbols to be inserted if +.B headings_flag +is positive. +.RE +.TP +.BR symhead_negative " <string>" +"symbols" +.RS +Heading for symbols to be inserted if +.B headings_flag +is negative. +.RE +.TP +.BR numhead_positive " <string>" +"Numbers" +.RS +Heading for numbers to be inserted if +.B headings_flag +is positive. +.RE +.TP +.BR numhead_negative " <string>" +"numbers" +.RS +Heading for numbers to be inserted if +.B headings_flag +is negative. +.RE +.TP +.BR item_0 " <string>" +"\\n \\\\item " +.RS +Command to be inserted between two primary (level 0) items. +.RE +.TP +.BR item_1 " <string>" +"\\n \\\\subitem " +.RS +Command to be inserted between two secondary (level 1) items. +.RE +.TP +.BR item_2 " <string>" +"\\n \\\\subsubitem " +.RS +Command to be inserted between two level 2 items. +.RE +.TP +.B item_01 " <string>" +"\\n \\\\subitem " +.RS +Command to be inserted between a level 0 item and a level 1 item. +.RE +.TP +.BR item_x1 " <string>" +"\\n \\\\subitem " +.RS +Command to be inserted between a level 0 item and a level 1 item, +where the level 0 item does not have associated page numbers. +.RE +.TP +.BR item_12 " <string>" +"\\n \\\\subsubitem " +.RS +Command to be inserted between a level 1 item and a level 2 item. +.RE +.TP +.BR item_x2 " <string>" +"\\n \\\\subsubitem " +.RS +Command to be inserted between a level 1 item and a level 2 item, +where the level 1 item does not have associated page numbers. +.RE +.TP +.BR delim_0 " <string>" +", " +.RS +Delimiter to be inserted between a level 0 key and its first page number +(default: comma followed by a blank). +.RE +.TP +.BR delim_1 " <string>" +", " +.RS +Delimiter to be inserted between a level 1 key and its first page number +(default: comma followed by a blank). +.RE +.TP +.BR delim_2 " <string>" +", " +.RS +Delimiter to be inserted between a level 2 key and its first page number +(default: comma followed by a blank). +.RE +.TP +.BR delim_n " <string>" +", " +.RS +Delimiter to be inserted between two page numbers for the same key +in any level (default: comma followed by a blank). +.RE +.TP +.BR delim_r " <string>" +"--" +.RS +Delimiter to be inserted between the starting and ending page numbers +of a range. +.RE +.TP +.BR delim_t " <string>" +"" +.RS +Delimiter to be inserted at the end of a page list. This delimiter +has no effect on entries which have no associated page list. +.RE +.TP +.BR encap_prefix " <string>" +"\\\\" +.RS +First part of prefix for the command which encapsulates the page number. +.RE +.TP +.BR encap_infix " <string>" +"{" +.RS +Second part of prefix for the command which encapsulates the page +number. +.RE +.TP +.BR encap_suffix " <string>" +"}". +.RS +Suffix for the command which encapsulates the page number. +.RE +.TP +.BR line_max " <number>" +72 +.RS +Maximum length of a line in the output, beyond which a line wraps. +.RE +.TP +.BR indent_space " <string>" +"\\t\\t" +.RS +Space to be inserted in front of a wrapped line (default: two tabs). +.RE +.TP +.BR indent_length " <number>" +16 +.RS +Length of +.B indent_space +(default: 16, equivalent to 2 tabs). +.RE +.\"===================================================================== +.SH EXAMPLES +.\"--------------------------------------------------------------------- +.SS "\*(TX EXAMPLE" +The following example shows a style file called +.IR book.ist , +which defines an index for a book which can be formatted independently +of the main source: +.LP +.RS +.nf +\fCpreamble +"\\\\documentstyle[12pt]{book} +\\\\begin{document} +\\\\begin{theindex} +{\\\\small\\n" +postamble +"\\n\\n} +\\\\end{theindex} +\\\\end{document}\\n\fP" +.fi +.RE +.LP +Assuming that a particular book style requires the index (as well as any +chapters) to start from an odd page number, and that the input file is +named +.IR foo.idx , +the following command line produces output in file +.IR footmp.ind : +.LP +.RS +\fCmakeindex \-s book.ist \-o footmp.ind \-p odd foo\fP +.RE +.LP +Here a non-default output file name is used to avoid clobbering the +output for the book itself (presumably +.IR foo.dvi , +which would have been the default name for the index output file!). +.\"--------------------------------------------------------------------- +.SS "TROFF EXAMPLE" +A sample control file for creating an index, which we will assume +resides in the file +.IR sample.ist : +.LP +.RS +.nf +\&\fCkeyword "IX:" +\&preamble +\&".\\\\\\" start of index output +\&\\".\\\\\\" enter two column mode +\&.2C +\&.SH +\&.ce +\&INDEX +\&.XS +\&INDEX +\&.XE +\&.R +\&.ps 9p +\&.vs 11p +\&.sp +\&.de I1 +\&.ti 0.25i +\&.. +\&.de I2 +\&.ti 0.5i +\&.." +\&postamble "\\n.\\\\\\" end of index output" +\&setpage_prefix "\\n.nr % " +\&setpage_suffix "" +\&group_skip "\\n.sp 1.0" +\&headings_flag 1 +\&heading_prefix "\\n.IS\\n" +\&heading_suffix "\\n.IE" +\&item_0 "\\n.br\\n" +\&item_1 "\\n.I1\\n" +\&item_2 "\\n.I2\\n" +\&item_01 "\\n.I1\\n" +\&item_x1 "\\n.I1\\n" +\&item_12 "\\n.I2\\n" +\&item_x2 "\\n.I2\\n" +\&delim_0 ", " +\&delim_1 ", " +\&delim_2 ", " +\&delim_r "-" +\&delim_t "." +\&encap_prefix "\\\\fB" +\&encap_infix "" +\&encap_suffix "\\\\fP" +\&indent_space "" +\&indent_length 0\fP +.fi +.RE +.LP +The local macro package may require modification, as in this example +of an extension to the +.B \-ms +macros (note that at some sites, this macro should +.I replace +a pre-existing macro of the same name): +.LP +.RS +.nf +\fC\&.\" IX - index words to stderr +\&.de IX +\&.ie '\\\\n(.z'' .tm IX: \\\\$1 \\\\$2 \\\\$3 \\\\$4 \\\\$5 \\\\$6 \\\\$7 \\\\$8 \\\\$9 {\\\\n(PN} +\&.el \\\\!.IX \\\\$1 \\\\$2 \\\\$3 \\\\$4 \\\\$5 \\\\$6 \\\\$7 \\\\$8 \\\\$9 {\\\\n(PN} +\&..\fP +.fi +.RE +.LP +(note that the string {\fC\\\\n(PN\fP} is separated from the rest of the +line by a tab. +If your local macro package does not contain this extension, +just include those lines at the beginning of your file. +Here is a simple +.IR troff (1) +input file, which we will assume is named +.IR sample.txt : +.LP +.RS +.nf +\fC\&This is a sample file to test the \\fImakeindex\\fP(1L) +\&program, and see +\&.IX {indexing!programs!C language} +\&.IX {makeindex@\\fImakeindex\\fP(1L)} +\&.bp +\&.rs +\&.IX {Knuth} +\&.IX {typesetting!computer-aided} +\&how well it functions in the \\fItroff\\fP(1) environment.\fP +.fi +.RE +.LP +Note that index entries are indicated by the +.B .IX +macro, which +causes the following text to be written to +.I stdout +along with the +current page number. +.\"--------------------------------------------------------------------- +.SS "CREATING THE INDEX FILE IN THE BOURNE SHELL" +To create an input file for +.IR makeindex , +.B "in the Bourne shell" +environment, do the equivalent at your site of the command: +.LP +.nf +\fCpsroff -ms -Tpsc -t sample.txt > /dev/null 2> sample.tmp\fP +.fi +.LP +Some sites will require +.I ditroff +instead of +.IR psroff . +To filter out any genuine error messages, invoke +.IR grep (1): +.LP +.RS +\fCgrep '^IX: ' sample.tmp > sample.idx\fP +.RE +.\"--------------------------------------------------------------------- +.SS "CREATING THE INDEX FILE USING \*(Uc ENHANCED TROFF/\*(Ts" +With \*(Uc Enhanced troff/\*(Ts, the +.B \-I +option of +.IR psroff (1L) +can produce both formatter output and an index file: +.LP +.RS +\fCpsroff -ms -I sample.inp -Tpsc sample.txt\fP +.RE +.LP +If it is wished to suppress the formatter output: +.RS +.LP +.nf +\fCpsroff -ms -I sample.inp -Tpsc -t sample.txt > /dev/null\fP +.fi +.RE +.\"--------------------------------------------------------------------- +.SS "COMPLETING THE INDEX" +Any of the above procedures leaves the input for +.I makeindex +in +.IR sample.inp . +The next step is to invoke +.IR makeindex : +.LP +.RS +\fCmakeindex -s sample.ist sample.idx\fP +.RE +.LP +This leaves +.IR troff (1)-ready +output in the file +.IR sample.ind . +.\"===================================================================== +.SH "ORDERING" +By default, +.I makeindex +assumes +.IR "word ordering" ; +if the +.B \-l +option is in effect, +.I "letter ordering" +is used. In word ordering, a blank precedes any letter in the +alphabet, whereas in letter ordering, it does not count at all. This +is illustrated by the following example: +.LP +.RS +\fIword order letter order\fP +.br +sea lion seal +.br +seal sea lion +.RE +.LP +Numbers are always sorted in numeric order. For instance, +.LP +.RS +9 (nine), 123 +.br +10 (ten), see Derek, Bo +.RE +.LP +Letters are first sorted without regard to case; when words are +identical, the uppercase version precedes its lowercase counterpart. +.LP +A special symbol is defined here to be any character not appearing in +the union of digits and the English alphabetic characters. Patterns +starting with special symbols precede numbers, which precede patterns +starting with letters. As a special case, a string starting with a +digit but mixed with non-digits is considered to be a pattern starting +with a special character. +.\"===================================================================== +.SH "SPECIAL EFFECTS" +Entries such as +.LP +.RS +.nf +\fC\\indexentry{alpha}{1} +\\indexentry{alpha!beta}{3} +\\indexentry{alpha!beta!gamma}{10}\fP +.fi +.RE +.LP +in the input file will be converted to +.LP +.RS +.nf +\fC\\item alpha, 1 +\0\0\0\\subitem beta, 3 +\0\0\0\0\0\0\\subsubitem gamma, 10\fP +.fi +.RE +.LP +in the output index file. +Notice that the +.B level +symbol (`!') is used above to delimit +hierarchical levels. +.LP +It is possible to make an item appear in a designated form by +using the +.B actual +(`@') operator. For instance, +.LP +.RS +\fC\\indexentry{alpha@{\\it alpha\\/}}{1}\fP +.RE +.LP +will become +.LP +.RS +\fC\\item {\\it alpha\\/}, 1\fP +.RE +.LP +after processing. The pattern preceding `@' is +used as sort key, whereas the one following it is written to the +output file. Note that two appearances of the same key, one with and +one without the +.B actual +operator, are regarded as +.I distinct +entries. +.LP +The item, subitem, and subsubitem fields may have individual sort keys: +.LP +.RS +.nf +\fC\\indexentry{aa@{\\it aa\\/}!bb@{\\it bb\\/}!cc@{\\it cc\\/}}{1}\fP +.fi +.RE +.LP +This will be converted to +.LP +.RS +.nf +\fC\\item {\\it aa}, 1 +\0\0\0\\subitem {\\it bb}, 3 +\0\0\0\0\0\0\\subsubitem {\\it cc}, 10\fP +.fi +.RE +.LP +It is possible to encapsulate a page number with a designated +command using the +.B encap +(`|') operator: +.LP +.RS +\fC\\indexentry{alpha|bold}{1}\fP +.RE +.LP +will be converted to +.LP +.RS +\fC\\item alpha, \\bold{1}\fP +.RE +.LP +where, with a suitable definition for \*(TX, \fC\\bold{n}\fP +will expand to \fC{\\bf n}\fP. +In this example, the three output attributes associated with page +encapsulation +.BR encap_prefix , +.BR encap_infix , +and +.BR encap_suffix , +correspond to backslash, left brace, and right brace, respectively. +This mechanism allows page numbers to be set in different fonts. For +example, the page where the definition of a keyword appears can be in +one font, the location of a primary example can be in another font, +and other appearances in yet a third font. +.LP +The +.B encap +operator can also be used to create cross references in +the index: +.LP +.RS +\fC\\indexentry{alpha|see{beta}}{1}\fP +.RE +.LP +will become +.LP +.RS +\fC\\item alpha, \\see{beta}{1}\fP +.RE +.LP +in the output file, where +.LP +.RS +\fC\\see{beta}{1}\fP +.RE +.LP +will expand to +.LP +.RS +\fC{\\it see\\/} beta\fP +.RE +.LP +Note that in a cross reference like this the page number disappears. +.LP +A pair of +.B encap +concatenated with +.B range_open +(`|(') and +.B range_close +(`|)') creates an explicit page range: +.LP +.RS +.nf +\fC\\indexentry{alpha|(}{1} +\\indexentry{alpha|)}{5}\fP +.fi +.RE +.LP +will become +.LP +.RS +\fC\\item alpha, 1\(em5\fP +.RE +.LP +Intermediate pages indexed by the same key will be merged into the +range implicitly. This is especially useful when an entire section +about a particular subject is to be indexed, in which case only the +range opening and closing operators need to be inserted at the +beginning and end of the section. Explicit page range formation can +also include an extra command to set the page range in a designated +font: +.LP +.RS +.nf +\fC\\indexentry{alpha|(bold}{1} +\\indexentry{alpha|)}{5}\fP +.fi +.RE +.LP +will become +.LP +.RS +\fC\\item alpha, \\bold{1--5}\fP +.RE +.LP +Several potential problems are worth mentioning. First, entries like +.LP +.RS +.nf +\fC\\indexentry{alpha|(}{1} +\\indexentry{alpha|bold}{3} +\\indexentry{alpha|)}{5}\fP +.fi +.RE +.LP +will be interpreted as +.LP +.RS +\fC\\item alpha, \\bold{3}, 1--5\fP +.RE +.LP +but with a warning message in the transcript about encountering an +inconsistent page encapsulator. +An explicit range beginning in a Roman page number and ending +in Arabic is also considered an error. In this instance, (if +possible) the range is broken into two subranges, one in Roman and the +other in Arabic. For instance, +.LP +.RS +.nf +\fC\\indexentry{alpha|(}{i} +\\indexentry{alpha}{iv} +\\indexentry{alpha}{3} +\\indexentry{alpha|)}{7}\fP +.fi +.RE +.LP +will be turned into +.LP +.RS +\fC\\item alpha, i--iv, 3--7\fP +.RE +.LP +with a warning message in the transcript file complaining about an +illegal range formation. +.LP +Finally, every special symbol mentioned in this section may be +escaped by the +.B quote +operator (`"'). Thus +.LP +.RS +\fC\\indexentry{alpha"@beta}{1}\fP +.RE +.LP +will actually become +.LP +.RS +\fC\\item alpha@beta, 1\fP +.RE +.LP +as a result of executing +.IR makeindex . +The quoting power of +.B quote +is eliminated if it is immediately preceded +by +.B escape +(`\\'). For example, +.LP +.RS +\fC\\indexentry{f\\"ur}{1}\fP +.RE +.LP +becomes +.LP +.RS +\fC\\item f\\"ur, 1\fP +.RE +.LP +which represents an umlaut-accented `u' to the \*(TX family of +processors. +.PP +From version 2.11 of +.IR makeindex , +the +.B quote +operator may quote +.I any +character in the range 1 .\|.\|. 255. Character 0 is excluded because +it is used internally in the +.I makeindex +source code as a string terminator. With this change, sort keys can +be created for all eight-bit characters except 0. The sorting order +is +.RS +.nf + +punctuation characters (in ASCII order), +digits, +control characters (1 .\|.\|. 31), +space (32), +letters (ignoring case), +characters 127 .\|.\|. 255. + +.fi +.RE +Here is an example showing the indexing of all printable ASCII +characters other than letters and digits, assuming the default +\*(TX format. For convenience, the page number references are +the corresponding ASCII ordinal values. +.RS +.nf + +\fC\\indexentry{" @" (space)}{32} +\\indexentry{"!@"! (exclamation point)}{33} +\\indexentry{""@"" (quotation mark)}{34} +\\indexentry{"#@"\\# (sharp sign)}{35} +\\indexentry{"$@"\\$ (dollar sign)}{36} +\\indexentry{"%@"\\% (percent sign)}{37} +\\indexentry{"&@"\\& (ampersand)}{38} +\\indexentry{"<@"$<$ (left angle bracket)}{60} +\\indexentry{"=@"= (equals)}{61} +\\indexentry{">@"$>$ (right angle bracket)}{62} +\\indexentry{"?@"? (query)}{63} +\\indexentry{"@@"@ (at sign)}{64} +\\indexentry{"[@"[ (left square bracket)}{91} +\\indexentry{"\\@"\\verb=\\= (backslash)}{92} +\\indexentry{"]@"] (right square bracket)}{93} +\\indexentry{"^@"\\verb=^= (caret)}{94} +\\indexentry{"_@"\\verb=_= (underscore)}{95} +\\indexentry{"`@"\\verb=~= (grave accent)}{96} +\\indexentry{"{@"\\"{ (left brace)}{123} +\\indexentry{"|@"\\verb="|= (vertical bar)}{124} +\\indexentry{"}@"\\"} (right brace)}{125} +\\indexentry{"~@"\\verb=~= (tilde)}{126}\fP + +.fi +.RE +Characters in the actual fields following the `@' character which +have special significance to \*(TX must be represented as control +sequences, or as math mode characters. Note particularly how the +entries for the at sign, left and right braces, and the vertical +bar, are coded. The index file output by +.I makeindex +for this example looks like this: +.RS +.nf + +\fC\\begin{theindex} + + \\item ! (exclamation point), 33 + \\item " (quotation mark), 34 + \\item \\# (sharp sign), 35 + \\item \\$ (dollar sign), 36 + \\item \\% (percent sign), 37 + \\item \\& (ampersand), 38 + \\item $<$ (left angle bracket), 60 + \\item = (equals), 61 + \\item $>$ (right angle bracket), 62 + \\item ? (query), 63 + \\item @ (at sign), 64 + \\item [ (left square bracket), 91 + \\item \\verb=\\= (backslash), 92 + \\item ] (right square bracket), 93 + \\item \\verb=^= (caret), 94 + \\item \\verb=_= (underscore), 95 + \\item \\verb=~= (grave accent), 96 + \\item \\{ (left brace), 123 + \\item \\verb=|= (vertical bar), 124 + \\item \\} (right brace), 125 + \\item \\verb=~= (tilde), 126 + + \\indexspace + + \\item (space), 32 + +\\end{theindex}\fP +.fi +.RE +.\"===================================================================== +.SH "FILES" +.TP 2.2i +.I /usr/local/bin/makeindex +executable file +.TP +.I /usr/local/lib/tex/macros/idxmac-amstex.tex +\*(TX macro file used by +.I makeindex +.TP +.I /usr/local/lib/tex/macros/idxmac.tex +\*(TX macro file used by +.I makeindex +.TP +.I /usr/local/lib/tex/macros/makeidx.doc +\*(TX macro file used by +.I makeindex +.TP +.I /usr/local/lib/tex/macros/makeidx.sty +\*(TX macro file used by +.I makeindex +.\"===================================================================== +.SH "SEE ALSO" +ditroff(1L), +latex(1L), +make.index (1L), +qsort(3), +tex(1L), +troff(1L) +.LP +.IR "\*(Uc Enhanced troff/\*(Ts \(em An Overview" , +R. P. C. Rodgers and Conrad Huang, LSMB Technical Report 90-2, +UCSF School of Pharmacy, San Francisco, 1990. +.LP +.IR "Index Preparation and Processing" , +Pehong Chen and Michael A. Harrison, +.IR "Software: Practice and Experience" , +.BR 19 (9), +897\(en915, +September 1988. +.LP +.IR "Automating Index Preparation" , +Pehong Chen and Michael A. Harrison. Technical Report 87/347, +Computer Science Division, University of California, Berkeley, 1987 +(a \*(LX document supplied with +.IR makeindex ). +.LP +.IR "MakeIndex: An Index Processor for \*(LX" , +Leslie Lamport, February 1987 (a \*(LX document supplied +with +.IR makeindex ). +.LP +.IR "Tools for Printing Indices" , +Jon L. Bentley and Brian W. Kernighan, +.IR "Electronic Publishing \(em Origination, Dissemination, and Design" , +1(1), 3\(en18, June 1988 (also available as: Computing Science +Technical Report No. 128, +AT&T Bell Laboratories, Murray Hill, NJ 07974, 1986). +.\"===================================================================== +.SH "AUTHOR" +Pehong Chen, Chen & Harrison International Systems, Inc. +Palo Alto, California, USA <chen@renoir.berkeley.edu>. +.br +Manual page extensively revised and corrected, and +.IR troff (1) +examples created by Rick P. C. Rodgers, UCSF School +of Pharmacy <rodgers@cca.ucsf.edu>. +.\"===================================================================== +.SH ACKNOWLEDGMENTS +Leslie Lamport contributed significantly to the design. +Michael Harrison provided valuable comments and suggestions. +Nelson Beebe improved on the portable version, and maintains the +source distribution for the \*(TX Users Group. +Andreas Brosig contributed to the German word ordering. +The modification to the +.B \-ms +macros was derived from a method proposed by Ravi Sethi of AT&T +Bell Laboratories. +The +.I LOG +and +.I CONTRIB +files in the +.I makeindex +source distribution record other contributions. diff --git a/indexing/makeindex/doc/makeindex.pdf b/indexing/makeindex/doc/makeindex.pdf Binary files differnew file mode 100644 index 0000000000..7bca29363c --- /dev/null +++ b/indexing/makeindex/doc/makeindex.pdf diff --git a/indexing/makeindex/doc/makeindex.ps b/indexing/makeindex/doc/makeindex.ps new file mode 100644 index 0000000000..1e58e51b0c --- /dev/null +++ b/indexing/makeindex/doc/makeindex.ps @@ -0,0 +1,4885 @@ +%!PS-Adobe-1.0 +%%Creator: cs.utah.edu:beebe (Nelson Beebe,220 S Phy,5254,) +%%Title: stdin (ditroff) +%%CreationDate: Tue Dec 10 07:36:30 1991 +%%EndComments +% Start of psdit.pro -- prolog for ditroff translator +% Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved. +% GOVERNMENT END USERS: See Notice file in TranScript library directory +% -- probably /usr/lib/ps/Notice +% RCS: $Header: psdit.pro,v 2.2 87/11/17 16:40:42 byron Rel $ +/$DITroff 140 dict def $DITroff begin +/fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def +/xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto + /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F + /pagesave save def}def +/PB{save /psv exch def currentpoint translate + resolution 72 div dup neg scale 0 0 moveto}def +/PE{psv restore}def +/m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def +/tan{dup sin exch cos div}bind def +/point{resolution 72 div mul}bind def +/dround {transform round exch round exch itransform}bind def +/xT{/devname exch def}def +/xr{/mh exch def /my exch def /resolution exch def}def +/xp{}def +/xs{docsave restore end}def +/xt{}def +/xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not + {fonts slotno fontname findfont put fontnames slotno fontname put}if}def +/xH{/fontheight exch def F}bind def +/xS{/fontslant exch def F}bind def +/s{/fontsize exch def /fontheight fontsize def F}bind def +/f{/fontnum exch def F}bind def +/F{fontheight 0 le {/fontheight fontsize def}if + fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore + fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if + makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def +/X{exch currentpoint exch pop moveto show}bind def +/N{3 1 roll moveto show}bind def +/Y{exch currentpoint pop exch moveto show}bind def +/S /show load def +/ditpush{}def/ditpop{}def +/AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def +/AN{4 2 roll moveto 0 exch ashow}bind def +/AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def +/AS{0 exch ashow}bind def +/MX{currentpoint exch pop moveto}bind def +/MY{currentpoint pop exch moveto}bind def +/MXY /moveto load def +/cb{pop}def % action on unknown char -- nothing for now +/n{}def/w{}def +/p{pop showpage pagesave restore /pagesave save def}def +/abspoint{currentpoint exch pop add exch currentpoint pop add exch}def +/dstroke{currentpoint stroke moveto}bind def +/Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def +/arcellipse{oldmat currentmatrix pop + currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def + rad 0 rad -180 180 arc oldmat setmatrix}def +/Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke + grestore diamh 0 rmoveto}def +/De{gsave /diamv exch def /diamh exch def arcellipse dstroke + grestore diamh 0 rmoveto}def +/Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def + /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def + /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add + 2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def +/Barray 200 array def % 200 values in a wiggle +/D~{mark}def +/D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop + /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and + {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def + Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put + Bcontrol Blen 2 sub 2 copy get 2 mul put + Bcontrol Blen 1 sub 2 copy get 2 mul put + /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub + {/i exch def + Bcontrol i get 3 div Bcontrol i 1 add get 3 div + Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div + Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div + /Xbi Xcont Bcontrol i 2 add get 2 div add def + /Ybi Ycont Bcontrol i 3 add get 2 div add def + /Xcont Xcont Bcontrol i 2 add get add def + /Ycont Ycont Bcontrol i 3 add get add def + Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto + }for dstroke}if}def +end +/ditstart{$DITroff begin + /nfonts 60 def % NFONTS makedev/ditroff dependent! + /fonts[nfonts{0}repeat]def + /fontnames[nfonts{()}repeat]def +/docsave save def +}def + +% character outcalls +/oc {/pswid exch def /cc exch def /name exch def + /ditwid pswid fontsize mul resolution mul 72000 div def + /ditsiz fontsize resolution mul 72 div def + ocprocs name known{ocprocs name get exec}{name cb} + ifelse}def +/fractm [.65 0 0 .6 0 0] def +/fraction + {/fden exch def /fnum exch def gsave /cf currentfont def + cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto + fnum show rmoveto currentfont cf setfont(\244)show setfont fden show + grestore ditwid 0 rmoveto} def +/oce {grestore ditwid 0 rmoveto}def +/dm {ditsiz mul}def +/ocprocs 50 dict def ocprocs begin +(14){(1)(4)fraction}def +(12){(1)(2)fraction}def +(34){(3)(4)fraction}def +(13){(1)(3)fraction}def +(23){(2)(3)fraction}def +(18){(1)(8)fraction}def +(38){(3)(8)fraction}def +(58){(5)(8)fraction}def +(78){(7)(8)fraction}def +(sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def +(is){gsave 0 .15 dm rmoveto(\362)show oce}def +(->){gsave 0 .02 dm rmoveto(\256)show oce}def +(<-){gsave 0 .02 dm rmoveto(\254)show oce}def +(==){gsave 0 .05 dm rmoveto(\272)show oce}def +end +% DIThacks fonts for some special chars +50 dict dup begin +/FontType 3 def +/FontName /DIThacks def +/FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def +/FontBBox [-220 -280 900 900] def% a lie but ... +/Encoding 256 array def +0 1 255{Encoding exch /.notdef put}for +Encoding + dup 8#040/space put %space + dup 8#110/rc put %right ceil + dup 8#111/lt put %left top curl + dup 8#112/bv put %bold vert + dup 8#113/lk put %left mid curl + dup 8#114/lb put %left bot curl + dup 8#115/rt put %right top curl + dup 8#116/rk put %right mid curl + dup 8#117/rb put %right bot curl + dup 8#120/rf put %right floor + dup 8#121/lf put %left floor + dup 8#122/lc put %left ceil + dup 8#140/sq put %square + dup 8#141/bx put %box + dup 8#142/ci put %circle + dup 8#143/br put %box rule + dup 8#144/rn put %root extender + dup 8#145/vr put %vertical rule + dup 8#146/ob put %outline bullet + dup 8#147/bu put %bullet + dup 8#150/ru put %rule + dup 8#151/ul put %underline + pop +/DITfd 100 dict def +/BuildChar{0 begin + /cc exch def /fd exch def + /charname fd /Encoding get cc get def + /charwid fd /Metrics get charname get def + /charproc fd /CharProcs get charname get def + charwid 0 fd /FontBBox get aload pop setcachedevice + 40 setlinewidth + newpath 0 0 moveto gsave charproc grestore + end}def +/BuildChar load 0 DITfd put +%/UniqueID 5 def +/CharProcs 50 dict def +CharProcs begin +/space{}def +/.notdef{}def +/ru{500 0 rls}def +/rn{0 750 moveto 500 0 rls}def +/vr{20 800 moveto 0 -770 rls}def +/bv{20 800 moveto 0 -1000 rls}def +/br{20 770 moveto 0 -1040 rls}def +/ul{0 -250 moveto 500 0 rls}def +/ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def +/bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def +/sq{80 0 rmoveto currentpoint dround newpath moveto + 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def +/bx{80 0 rmoveto currentpoint dround newpath moveto + 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def +/ci{355 333 rmoveto currentpoint newpath 333 0 360 arc + 50 setlinewidth stroke}def + +/lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def +/lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def +/rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def +/rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def +/lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub + currentpoint stroke moveto + 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def +/rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub + currentpoint stroke moveto + 20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def +/lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def +/rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def +/lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def +/rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def +end + +/Metrics 50 dict def Metrics begin +/.notdef 0 def +/space 500 def +/ru 500 def +/br 0 def +/lt 250 def +/lb 250 def +/rt 250 def +/rb 250 def +/lk 250 def +/rk 250 def +/rc 250 def +/lc 250 def +/rf 250 def +/lf 250 def +/bv 250 def +/ob 350 def +/bu 350 def +/ci 750 def +/bx 750 def +/sq 750 def +/rn 500 def +/ul 500 def +/vr 0 def +end + +DITfd begin +/s2 500 def /s4 250 def /s3 333 def +/a4p{arcto pop pop pop pop}def +/2cx{2 copy exch}def +/rls{rlineto stroke}def +/currx{currentpoint pop}def +/dround{transform round exch round exch itransform} def +end +end +/DIThacks exch definefont pop + +ditstart +(psc)xT +576 1 1 xr +1(Times-Roman)xf 1 f +2(Times-Italic)xf 2 f +3(Times-Bold)xf 3 f +4(Times-BoldItalic)xf 4 f +5(Helvetica)xf 5 f +6(Helvetica-Bold)xf 6 f +7(Courier)xf 7 f +8(Courier-Bold)xf 8 f +9(Symbol)xf 9 f +10(DIThacks)xf 10 f +10 s +1 f +xi +%%EndProlog + +%%Page: 11 11 +10 s 0 xH 0 xS 1 f +555 384(MAKEINDEX)N +1054(\()X +1094(1L)X +1196(\))X +1954(UNIX)X +2175(Programmer's)X +2654(Manual)X +3631(MAKEINDEX)X +4130(\()X +4170(1L)X +4272(\))X +3 f +9 s +555 768(ACKNOWLEDGMENTS)N +1 f +10 s +843 864(Leslie)N +1062(Lamport)X +1361(contributed)X +1749(signi\256cantly)X +2167(to)X +2252(the)X +2372(design.)X +2643(Michael)X +2928(Harrison)X +3231(provided)X +3538(valuable)X +3832(comments)X +4183(and)X +843 960(suggestions.)N +1279(Nelson)X +1529(Beebe)X +1753(improved)X +2083(on)X +2186(the)X +2307(portable)X +2593(version,)X +2872(and)X +3010(maintains)X +3343(the)X +3463(source)X +3695(distribution)X +4085(for)X +4201(the)X +843 1056(T)N +879 1075(E)N +918 1056(X)N +998(Users)X +1203(Group.)X +1470(Andreas)X +1760(Brosig)X +1995(contributed)X +2382(to)X +2466(the)X +2585(German)X +2865(word)X +3051(ordering.)X +3384(The)X +3530(modi\256cation)X +3955(to)X +4038(the)X +3 f +9 f +4157(-)X +3 f +4201(ms)X +1 f +843 1152(macros)N +1105(was)X +1260(derived)X +1531(from)X +1717(a)X +1783(method)X +2053(proposed)X +2377(by)X +2487(Ravi)X +2667(Sethi)X +2860(of)X +2956(AT&T)X +3203(Bell)X +3365(Laboratories.)X +3840(The)X +2 f +3994(LOG)X +1 f +4183(and)X +2 f +843 1248(CONTRIB)N +1 f +1196(\256les)X +1349(in)X +1431(the)X +2 f +1549(makeindex)X +1 f +1913(source)X +2143(distribution)X +2531(record)X +2757(other)X +2942(contributions.)X +555 6144(7th)N +677(Edition)X +2121(10)X +2221(December)X +2572(1991)X +4219(11)X + +11 p +%%Page: 10 10 +10 s 0 xH 0 xS 1 f +555 384(MAKEINDEX)N +1054(\()X +1094(1L)X +1196(\))X +1954(UNIX)X +2175(Programmer's)X +2654(Manual)X +3631(MAKEINDEX)X +4130(\()X +4170(1L)X +4272(\))X +7 f +1227 768(\\item)N +1515($<$)X +1707(\(left)X +1995(angle)X +2283(bracket\),)X +2763(60)X +1227 864(\\item)N +1515(=)X +1611(\(equals\),)X +2091(61)X +1227 960(\\item)N +1515($>$)X +1707(\(right)X +2043(angle)X +2331(bracket\),)X +2811(62)X +1227 1056(\\item)N +1515(?)X +1611(\(query\),)X +2043(63)X +1227 1152(\\item)N +1515(@)X +1611(\(at)X +1803(sign\),)X +2139(64)X +1227 1248(\\item)N +1515([)X +1611(\(left)X +1899(square)X +2235(bracket\),)X +2715(91)X +1227 1344(\\item)N +1515(\\verb=\\=)X +1947(\(backslash\),)X +2571(92)X +1227 1440(\\item)N +1515(])X +1611(\(right)X +1947(square)X +2283(bracket\),)X +2763(93)X +1227 1536(\\item)N +1515(\\verb=\303=)X +1947(\(caret\),)X +2379(94)X +1227 1632(\\item)N +1515(\\verb=_=)X +1947(\(underscore\),)X +2619(95)X +1227 1728(\\item)N +1515(\\verb=\304=)X +1947(\(grave)X +2283(accent\),)X +2715(96)X +1227 1824(\\item)N +1515(\\{)X +1659(\(left)X +1947(brace\),)X +2331(123)X +1227 1920(\\item)N +1515(\\verb=)X +9 f +(|)S +7 f +(=)S +1915(\(vertical)X +2395(bar\),)X +2683(124)X +1227 2016(\\item)N +1515(\\})X +1659(\(right)X +1995(brace\),)X +2379(125)X +1227 2112(\\item)N +1515(\\verb=\304=)X +1947(\(tilde\),)X +2379(126)X +1227 2304(\\indexspace)N +1227 2496(\\item)N +1611(\(space\),)X +2043(32)X +1131 2688(\\end{theindex})N +3 f +9 s +555 2822(FILES)N +2 f +10 s +843 2918(/usr/local/bin/makeindex)N +1 f +2110(executable)X +2474(\256le)X +2 f +843 3052(/usr/local/lib/tex/macros/idxmac-amstex.tex)N +1 f +2110 3148(T)N +2146 3167(E)N +2185 3148(X)N +2263(macro)X +2484(\256le)X +2606(used)X +2773(by)X +2 f +2873(makeindex)X +843 3282(/usr/local/lib/tex/macros/idxmac.tex)N +1 f +2110(T)X +2146 3301(E)N +2185 3282(X)N +2263(macro)X +2484(\256le)X +2606(used)X +2773(by)X +2 f +2873(makeindex)X +843 3416(/usr/local/lib/tex/macros/makeidx.doc)N +1 f +2110(T)X +2146 3435(E)N +2185 3416(X)N +2263(macro)X +2484(\256le)X +2606(used)X +2773(by)X +2 f +2873(makeindex)X +843 3550(/usr/local/lib/tex/macros/makeidx.sty)N +1 f +2110(T)X +2146 3569(E)N +2185 3550(X)N +2263(macro)X +2484(\256le)X +2606(used)X +2773(by)X +2 f +2873(makeindex)X +3 f +9 s +555 3684(SEE)N +709(ALSO)X +1 f +10 s +843 3780(ditroff\(1L\),)N +1231(latex\(1L\),)X +1570(make.index)X +1962(\(1L\),)X +2145(qsort\(3\),)X +2439(tex\(1L\),)X +2720(troff\(1L\))X +2 f +843 3914(U)N +892(C)X +927 3935(S)N +959(F)X +1032 3914(Enhanced)N +1377(troff/T)X +8 s +1580(RAN)X +10 s +1701(S)X +8 s +(CRIPT)S +10 s +1943(\320)X +2038(An)X +2151(Overview)X +1 f +2466(,)X +2510(R.)X +2607(P.)X +2695(C.)X +2792(Rodgers)X +3083(and)X +3223(Conrad)X +3483(Huang,)X +3741(LSMB)X +3982(Technical)X +843 4010(Report)N +1081(90-2,)X +1268(UCSF)X +1487(School)X +1729(of)X +1816(Pharmacy,)X +2177(San)X +2317(Francisco,)X +2669(1990.)X +2 f +843 4144(Index)N +1043(Preparation)X +1455(and)X +1596(Processing)X +1 f +1959(,)X +2000(Pehong)X +2261(Chen)X +2451(and)X +2588(Michael)X +2872(A.)X +2971(Harrison,)X +2 f +3293(Software:)X +3625(Practice)X +3918(and)X +4058(Experi-)X +843 4240(ence)N +1 f +998(,)X +3 f +1038(19)X +1 f +(\(9\),)S +1252(897\261915,)X +1572(September)X +1935(1988.)X +2 f +843 4374(Automating)N +1245(Index)X +1453(Preparation)X +1 f +1851(,)X +1900(Pehong)X +2169(Chen)X +2366(and)X +2510(Michael)X +2801(A.)X +2907(Harrison.)X +3256(Technical)X +3601(Report)X +3847(87/347,)X +4117(Com-)X +843 4470(puter)N +1031(Science)X +1303(Division,)X +1620(University)X +1980(of)X +2069(California,)X +2436(Berkeley,)X +2768(1987)X +2950(\(a)X +3035(L)X +8 s +3056 4456(A)N +10 s +3090 4470(T)N +3126 4489(E)N +3165 4470(X)N +3245(document)X +3583(supplied)X +3876(with)X +2 f +4040(makein-)X +843 4566(dex)N +1 f +962(\).)X +2 f +843 4700 0.3472(MakeIndex:)AN +1260(An)X +1381(Index)X +1592(Processor)X +1949(for)X +2074(L)X +8 s +2090 4686(A)N +10 s +2117 4700(T)N +2148 4719(E)N +2187 4700(X)N +1 f +2243(,)X +2295(Leslie)X +2523(Lamport,)X +2851(February)X +3173(1987)X +3365(\(a)X +3460(L)X +8 s +3481 4686(A)N +10 s +3515 4700(T)N +3551 4719(E)N +3590 4700(X)N +3680(document)X +4028(supplied)X +843 4796(with)N +2 f +1005(makeindex)X +1 f +1356(\).)X +2 f +843 4930(Tools)N +1044(for)X +1161(Printing)X +1451(Indices)X +1 f +1690(,)X +1734(Jon)X +1869(L.)X +1962(Bentley)X +2235(and)X +2375(Brian)X +2577(W.)X +2697(Kernighan,)X +2 f +3080(Electronic)X +3438(Publishing)X +3808(\320)X +3902(Origination,)X +843 5026(Dissemination,)N +1347(and)X +1489(Design)X +1 f +1723(,)X +1765(1\(1\),)X +1941(3\26118,)X +2143(June)X +2312(1988)X +2494(\(also)X +2671(available)X +2982(as:)X +3092(Computing)X +3472(Science)X +3743(Technical)X +4081(Report)X +843 5122(No.)N +981(128,)X +1141(AT&T)X +1379(Bell)X +1532(Laboratories,)X +1978(Murray)X +2239(Hill,)X +2403(NJ)X +2512(07974,)X +2752(1986\).)X +3 f +9 s +555 5256(AUTHOR)N +1 f +10 s +843 5352(Pehong)N +1162(Chen,)X +1430(Chen)X +1678(&)X +1819(Harrison)X +2179(International)X +2668(Systems,)X +3033(Inc.)X +3255(Palo)X +3476(Alto,)X +3716(California,)X +4139(USA)X +843 5448 0.1611(<chen@renoir.berkeley.edu>.)AN +843 5544(Manual)N +1123(page)X +1310(extensively)X +1710(revised)X +1977(and)X +2128(corrected,)X +2482(and)X +2 f +2632(troff)X +1 f +2776(\(1\))X +2904(examples)X +3241(created)X +3508(by)X +3622(Rick)X +3807(P.)X +3905(C.)X +4012(Rodgers,)X +843 5640(UCSF)N +1062(School)X +1304(of)X +1391(Pharmacy)X +1732 0.1790(<rodgers@cca.ucsf.edu>.)AX +555 6144(7th)N +677(Edition)X +2121(10)X +2221(December)X +2572(1991)X +4219(10)X + +11 p +%%Page: 9 9 +10 s 0 xH 0 xS 1 f +555 384(MAKEINDEX)N +1054(\()X +1094(1L)X +1196(\))X +1954(UNIX)X +2175(Programmer's)X +2654(Manual)X +3631(MAKEINDEX)X +4130(\()X +4170(1L)X +4272(\))X +7 f +1131 768(\\item)N +1419(f\\"ur,)X +1755(1)X +1 f +843 902(which)N +1059(represents)X +1405(an)X +1501(umlaut-accented)X +2052(`u')X +2166(to)X +2248(the)X +2366(T)X +2402 921(E)N +2441 902(X)N +2519(family)X +2748(of)X +2835(processors.)X +843 1036(From)N +1051(version)X +1321(2.11)X +1495(of)X +2 f +1596(makeindex)X +1 f +1947(,)X +2001(the)X +3 f +2133(quote)X +1 f +2358(operator)X +2660(may)X +2832(quote)X +2 f +3044(any)X +1 f +3194(character)X +3524(in)X +3620(the)X +3752(range)X +3965(1)X +4039(.)X +4072(.)X +4105(.)X +4159(255.)X +843 1132(Character)N +1183(0)X +1250(is)X +1330(excluded)X +1647(because)X +1929(it)X +2000(is)X +2080(used)X +2253(internally)X +2586(in)X +2674(the)X +2 f +2798(makeindex)X +1 f +3168(source)X +3404(code)X +3582(as)X +3675(a)X +3737(string)X +3945(terminator.)X +843 1228(With)N +1023(this)X +1158(change,)X +1426(sort)X +1566(keys)X +1733(can)X +1865(be)X +1961(created)X +2214(for)X +2328(all)X +2428(eight-bit)X +2719(characters)X +3066(except)X +3296(0.)X +3396(The)X +3541(sorting)X +3783(order)X +3973(is)X +1131 1420(punctuation)N +1529(characters)X +1876(\(in)X +1985(ASCII)X +2214(order\),)X +1131 1516(digits,)N +1131 1612(control)N +1378(characters)X +1725(\(1)X +1812(.)X +1845(.)X +1878(.)X +1918(31\),)X +1131 1708(space)N +1330(\(32\),)X +1131 1804(letters)N +1347(\(ignoring)X +1665(case\),)X +1131 1900(characters)N +1478(127)X +1618(.)X +1651(.)X +1684(.)X +1724(255.)X +843 2092(Here)N +1030(is)X +1113(an)X +1219(example)X +1521(showing)X +1822(the)X +1949(indexing)X +2258(of)X +2354(all)X +2463(printable)X +2777(ASCII)X +3015(characters)X +3371(other)X +3565(than)X +3732(letters)X +3957(and)X +4102(digits,)X +843 2188(assuming)N +1179(the)X +1310(default)X +1566(T)X +1602 2207(E)N +1641 2188(X)N +1732(format.)X +2019(For)X +2163(convenience,)X +2618(the)X +2749(page)X +2934(number)X +3212 0.3889(references)AX +3577(are)X +3709(the)X +3840(corresponding)X +843 2284(ASCII)N +1072(ordinal)X +1319(values.)X +7 f +1131 2476(\\indexentry{")N +1803(@")X +1995(\(space\)}{32})X +1131 2572(\\indexentry{"!@"!)N +1995(\(exclamation)X +2619(point\)}{33})X +1131 2668(\\indexentry{""@"")N +1995(\(quotation)X +2523(mark\)}{34})X +1131 2764(\\indexentry{"#@"\\#)N +2043(\(sharp)X +2379(sign\)}{35})X +1131 2860(\\indexentry{"$@"\\$)N +2043(\(dollar)X +2427(sign\)}{36})X +1131 2956(\\indexentry{"%@"\\%)N +2043(\(percent)X +2475(sign\)}{37})X +1131 3052(\\indexentry{"&@"\\&)N +2043(\(ampersand\)}{38})X +1131 3148(\\indexentry{"<@"$<$)N +2091(\(left)X +2379(angle)X +2667(bracket\)}{60})X +1131 3244(\\indexentry{"=@"=)N +1995(\(equals\)}{61})X +1131 3340(\\indexentry{">@"$>$)N +2091(\(right)X +2427(angle)X +2715(bracket\)}{62})X +1131 3436(\\indexentry{"?@"?)N +1995(\(query\)}{63})X +1131 3532(\\indexentry{"@@"@)N +1995(\(at)X +2187(sign\)}{64})X +1131 3628(\\indexentry{"[@"[)N +1995(\(left)X +2283(square)X +2619(bracket\)}{91})X +1131 3724(\\indexentry{"\\@"\\verb=\\=)N +2331(\(backslash\)}{92})X +1131 3820(\\indexentry{"]@"])N +1995(\(right)X +2331(square)X +2667(bracket\)}{93})X +1131 3916(\\indexentry{"\303@"\\verb=\303=)N +2331(\(caret\)}{94})X +1131 4012(\\indexentry{"_@"\\verb=_=)N +2331(\(underscore\)}{95})X +1131 4108(\\indexentry{"`@"\\verb=\304=)N +2331(\(grave)X +2667(accent\)}{96})X +1131 4204(\\indexentry{"{@"\\"{)N +2091(\(left)X +2379(brace\)}{123})X +1131 4300(\\indexentry{")N +9 f +(|)S +7 f +(@"\\verb=")S +9 f +(|)S +7 f +(=)S +2315(\(vertical)X +2795(bar\)}{124})X +1131 4396(\\indexentry{"}@"\\"})N +2091(\(right)X +2427(brace\)}{125})X +1131 4492(\\indexentry{"\304@"\\verb=\304=)N +2331(\(tilde\)}{126})X +1 f +843 4684(Characters)N +1211(in)X +1297(the)X +1419(actual)X +1635(\256elds)X +1832(following)X +2167(the)X +2288(`@')X +2439(character)X +2758(which)X +2977(have)X +3152(special)X +3398(signi\256cance)X +3804(to)X +3889(T)X +3925 4703(E)N +3964 4684(X)N +4045(must)X +4223(be)X +843 4780(represented)N +1238(as)X +1329(control)X +1580(sequences,)X +1950(or)X +2041(as)X +2132(math)X +2316(mode)X +2518(characters.)X +2909(Note)X +3089(particularly)X +3483(how)X +3645(the)X +3766(entries)X +4003(for)X +4120(the)X +4241(at)X +843 4876(sign,)N +1027(left)X +1165(and)X +1312(right)X +1494(braces,)X +1751(and)X +1898(the)X +2027(vertical)X +2299(bar,)X +2453(are)X +2583(coded.)X +2846(The)X +3002(index)X +3210(\256le)X +3342(output)X +3576(by)X +2 f +3686(makeindex)X +1 f +4060(for)X +4184(this)X +843 4972(example)N +1135(looks)X +1328(like)X +1468(this:)X +7 f +1131 5164(\\begin{theindex})N +1227 5356(\\item)N +1515(!)X +1611(\(exclamation)X +2235(point\),)X +2619(33)X +1227 5452(\\item)N +1515(")X +1611(\(quotation)X +2139(mark\),)X +2475(34)X +1227 5548(\\item)N +1515(\\#)X +1659(\(sharp)X +1995(sign\),)X +2331(35)X +1227 5644(\\item)N +1515(\\$)X +1659(\(dollar)X +2043(sign\),)X +2379(36)X +1227 5740(\\item)N +1515(\\%)X +1659(\(percent)X +2091(sign\),)X +2427(37)X +1227 5836(\\item)N +1515(\\&)X +1659(\(ampersand\),)X +2283(38)X +1 f +555 6220(7th)N +677(Edition)X +2121(10)X +2221(December)X +2572(1991)X +4259(9)X + +10 p +%%Page: 8 8 +10 s 0 xH 0 xS 1 f +555 384(MAKEINDEX)N +1054(\()X +1094(1L)X +1196(\))X +1954(UNIX)X +2175(Programmer's)X +2654(Manual)X +3631(MAKEINDEX)X +4130(\()X +4170(1L)X +4272(\))X +843 768(will)N +987(expand)X +1239(to)X +7 f +1131 902({\\it)N +1371(see\\/})X +1707(beta)X +1 f +843 1036(Note)N +1019(that)X +1159(in)X +1241(a)X +1297(cross)X +1482 0.4531(reference)AX +1803(like)X +1943(this)X +2078(the)X +2196(page)X +2368(number)X +2633(disappears.)X +843 1170(A)N +921(pair)X +1066(of)X +3 f +1153(encap)X +1 f +1373(concatenated)X +1813(with)X +3 f +1975(range_open)X +1 f +2395(\(`)X +9 f +2449(|)X +1 f +(\('\))S +2566(and)X +3 f +2702(range_close)X +1 f +3123(\(`)X +9 f +3177(|)X +1 f +(\)'\))S +3294(creates)X +3538(an)X +3634(explicit)X +3894(page)X +4066(range:)X +7 f +1131 1304(\\indexentry{alpha)N +9 f +(|)S +7 f +(\(}{1})S +1131 1400(\\indexentry{alpha)N +9 f +(|)S +7 f +(\)}{5})S +1 f +843 1534(will)N +987(become)X +7 f +1131 1668(\\item)N +1419(alpha,)X +1755(1\3205)X +1 f +843 1802(Intermediate)N +1277(pages)X +1488(indexed)X +1770(by)X +1878(the)X +2004(same)X +2197(key)X +2341(will)X +2493(be)X +2597(merged)X +2866(into)X +3018(the)X +3144(range)X +3351(implicitly.)X +3729(This)X +3898(is)X +3978(especially)X +843 1898(useful)N +1060(when)X +1255(an)X +1352(entire)X +1556(section)X +1804(about)X +2003(a)X +2060(particular)X +2388(subject)X +2635(is)X +2708(to)X +2790(be)X +2886(indexed,)X +3180(in)X +3262(which)X +3478(case)X +3637(only)X +3799(the)X +3917(range)X +4116(open-)X +843 1994(ing)N +970(and)X +1111(closing)X +1367(operators)X +1691(need)X +1868(to)X +1955(be)X +2056(inserted)X +2335(at)X +2417(the)X +2539(beginning)X +2883(and)X +3023(end)X +3163(of)X +3254(the)X +3376(section.)X +3667(Explicit)X +3944(page)X +4120(range)X +843 2090(formation)N +1179(can)X +1311(also)X +1460(include)X +1716(an)X +1812(extra)X +1993(command)X +2329(to)X +2411(set)X +2520(the)X +2638(page)X +2810(range)X +3009(in)X +3091(a)X +3147(designated)X +3510(font:)X +7 f +1131 2224(\\indexentry{alpha)N +9 f +(|)S +7 f +(\(bold}{1})S +1131 2320(\\indexentry{alpha)N +9 f +(|)S +7 f +(\)}{5})S +1 f +843 2454(will)N +987(become)X +7 f +1131 2588(\\item)N +1419(alpha,)X +1755(\\bold{1--5})X +1 f +843 2722(Several)N +1104(potential)X +1404(problems)X +1722(are)X +1841(worth)X +2048(mentioning.)X +2472(First,)X +2658(entries)X +2892(like)X +7 f +1131 2856(\\indexentry{alpha)N +9 f +(|)S +7 f +(\(}{1})S +1131 2952(\\indexentry{alpha)N +9 f +(|)S +7 f +(bold}{3})S +1131 3048(\\indexentry{alpha)N +9 f +(|)S +7 f +(\)}{5})S +1 f +843 3182(will)N +987(be)X +1083(interpreted)X +1451(as)X +7 f +1131 3316(\\item)N +1419(alpha,)X +1755(\\bold{3},)X +2235(1--5)X +1 f +843 3450(but)N +976(with)X +1149(a)X +1216(warning)X +1510(message)X +1813(in)X +1906(the)X +2035(transcript)X +2368(about)X +2576(encountering)X +3025(an)X +3131(inconsistent)X +3543(page)X +3725(encapsulator.)X +4201(An)X +843 3546(explicit)N +1105(range)X +1306(beginning)X +1648(in)X +1732(a)X +1790(Roman)X +2043(page)X +2217(number)X +2484(and)X +2622(ending)X +2862(in)X +2946(Arabic)X +3187(is)X +3262(also)X +3412(considered)X +3781(an)X +3878(error.)X +4096(In)X +4184(this)X +843 3642(instance,)N +1151(\(if)X +1252(possible\))X +1566(the)X +1689(range)X +1893(is)X +1971(broken)X +2219(into)X +2368(two)X +2513(subranges,)X +2879(one)X +3020(in)X +3107(Roman)X +3363(and)X +3504(the)X +3627(other)X +3817(in)X +3904(Arabic.)X +4188(For)X +843 3738(instance,)N +7 f +1131 3872(\\indexentry{alpha)N +9 f +(|)S +7 f +(\(}{i})S +1131 3968(\\indexentry{alpha}{iv})N +1131 4064(\\indexentry{alpha}{3})N +1131 4160(\\indexentry{alpha)N +9 f +(|)S +7 f +(\)}{7})S +1 f +843 4294(will)N +987(be)X +1083(turned)X +1308(into)X +7 f +1131 4428(\\item)N +1419(alpha,)X +1755(i--iv,)X +2091(3--7)X +1 f +843 4562(with)N +1005(a)X +1061(warning)X +1344(message)X +1636(in)X +1718(the)X +1836(transcript)X +2159(\256le)X +2281(complaining)X +2701(about)X +2899(an)X +2995(illegal)X +3215(range)X +3414(formation.)X +843 4696(Finally,)N +1109(every)X +1308(special)X +1551(symbol)X +1806(mentioned)X +2164(in)X +2246(this)X +2381(section)X +2628(may)X +2786(be)X +2882(escaped)X +3157(by)X +3257(the)X +3 f +3375(quote)X +1 f +3586(operator)X +3874(\(`"'\).)X +4075(Thus)X +7 f +1131 4830(\\indexentry{alpha"@beta}{1})N +1 f +843 4964(will)N +987(actually)X +1261(become)X +7 f +1131 5098(\\item)N +1419(alpha@beta,)X +2043(1)X +1 f +843 5232(as)N +931(a)X +988(result)X +1187(of)X +1275(executing)X +2 f +1608(makeindex)X +1 f +1959(.)X +2020(The)X +2166(quoting)X +2431(power)X +2653(of)X +3 f +2740(quote)X +1 f +2951(is)X +3024(eliminated)X +3382(if)X +3451(it)X +3515(is)X +3588(immediately)X +4008(preceded)X +843 5328(by)N +3 f +943(escape)X +1 f +1186(\(`\\'\).)X +1376(For)X +1507(example,)X +7 f +1131 5462(\\indexentry{f\\"ur}{1})N +1 f +843 5596(becomes)N +555 6144(7th)N +677(Edition)X +2121(10)X +2221(December)X +2572(1991)X +4259(8)X + +9 p +%%Page: 7 7 +10 s 0 xH 0 xS 1 f +555 384(MAKEINDEX)N +1054(\()X +1094(1L)X +1196(\))X +1954(UNIX)X +2175(Programmer's)X +2654(Manual)X +3631(MAKEINDEX)X +4130(\()X +4170(1L)X +4272(\))X +843 768(A)N +928(special)X +1178(symbol)X +1440(is)X +1520(de\256ned)X +1783(here)X +1948(to)X +2036(be)X +2138(any)X +2280(character)X +2602(not)X +2730(appearing)X +3073(in)X +3161(the)X +3285(union)X +3493(of)X +3586(digits)X +3789(and)X +3931(the)X +4055(English)X +843 864(alphabetic)N +1208(characters.)X +1610(Patterns)X +1903(starting)X +2178(with)X +2355(special)X +2613(symbols)X +2914(precede)X +3200(numbers,)X +3530(which)X +3760(precede)X +4045(patterns)X +843 960(starting)N +1105(with)X +1269(letters.)X +1526(As)X +1636(a)X +1693(special)X +1937(case,)X +2117(a)X +2174(string)X +2377(starting)X +2638(with)X +2801(a)X +2858(digit)X +3025(but)X +3148(mixed)X +3369(with)X +3532(non-digits)X +3877(is)X +3951(considered)X +843 1056(to)N +925(be)X +1021(a)X +1077(pattern)X +1320(starting)X +1580(with)X +1742(a)X +1798(special)X +2041(character.)X +3 f +9 s +555 1190(SPECIAL)N +885(EFFECTS)X +1 f +10 s +843 1286(Entries)N +1090(such)X +1257(as)X +7 f +1131 1420(\\indexentry{alpha}{1})N +1131 1516(\\indexentry{alpha!beta}{3})N +1131 1612(\\indexentry{alpha!beta!gamma}{10})N +1 f +843 1746(in)N +925(the)X +1043(input)X +1227(\256le)X +1349(will)X +1493(be)X +1589(converted)X +1926(to)X +7 f +1131 1880(\\item)N +1419(alpha,)X +1755(1)X +1275 1976(\\subitem)N +1707(beta,)X +1995(3)X +1419 2072(\\subsubitem)N +1995(gamma,)X +2331(10)X +1 f +843 2206(in)N +925(the)X +1043(output)X +1267(index)X +1465(\256le.)X +1627(Notice)X +1861(that)X +2001(the)X +3 f +2119(level)X +1 f +2295(symbol)X +2550(\(`!'\))X +2705(is)X +2778(used)X +2945(above)X +3157(to)X +3239(delimit)X +3485(hierarchical)X +3885(levels.)X +843 2340(It)N +912(is)X +985(possible)X +1267(to)X +1349(make)X +1543(an)X +1639(item)X +1801(appear)X +2036(in)X +2118(a)X +2174(designated)X +2537(form)X +2713(by)X +2813(using)X +3006(the)X +3 f +3124(actual)X +1 f +3353(\(`@'\))X +3555(operator.)X +3883(For)X +4014(instance,)X +7 f +1131 2474(\\indexentry{alpha@{\\it)N +2235(alpha\\/}}{1})X +1 f +843 2608(will)N +987(become)X +7 f +1131 2742(\\item)N +1419({\\it)X +1659(alpha\\/},)X +2187(1)X +1 f +843 2876(after)N +1016(processing.)X +1424(The)X +1573(pattern)X +1820(preceding)X +2161(`@')X +2313(is)X +2390(used)X +2561(as)X +2652(sort)X +2796(key,)X +2956(whereas)X +3244(the)X +3366(one)X +3506(following)X +3841(it)X +3909(is)X +3986(written)X +4237(to)X +843 2972(the)N +965(output)X +1193(\256le.)X +1359(Note)X +1539(that)X +1683(two)X +1827 0.3250(appearances)AX +2245(of)X +2336(the)X +2458(same)X +2647(key,)X +2807(one)X +2947(with)X +3113(and)X +3252(one)X +3391(without)X +3658(the)X +3 f +3779(actual)X +1 f +4011(operator,)X +843 3068(are)N +962(regarded)X +1264(as)X +2 f +1351(distinct)X +1 f +1606(entries.)X +843 3202(The)N +988(item,)X +1170(subitem,)X +1463(and)X +1599(subsubitem)X +1983(\256elds)X +2176(may)X +2334(have)X +2506(individual)X +2850(sort)X +2990(keys:)X +7 f +1131 3336(\\indexentry{aa@{\\it)N +2091(aa\\/}!bb@{\\it)X +2763(bb\\/}!cc@{\\it)X +3435(cc\\/}}{1})X +1 f +843 3470(This)N +1005(will)X +1149(be)X +1245(converted)X +1582(to)X +7 f +1131 3604(\\item)N +1419({\\it)X +1659(aa},)X +1899(1)X +1275 3700(\\subitem)N +1707({\\it)X +1947(bb},)X +2187(3)X +1419 3796(\\subsubitem)N +1995({\\it)X +2235(cc},)X +2475(10)X +1 f +843 3930(It)N +912(is)X +985(possible)X +1267(to)X +1349(encapsulate)X +1744(a)X +1800(page)X +1972(number)X +2237(with)X +2399(a)X +2455(designated)X +2818(command)X +3154(using)X +3347(the)X +3 f +3465(encap)X +1 f +3685(\(`)X +9 f +3739(|)X +1 f +('\))S +3829(operator:)X +7 f +1131 4064(\\indexentry{alpha)N +9 f +(|)S +7 f +(bold}{1})S +1 f +843 4198(will)N +987(be)X +1083(converted)X +1420(to)X +7 f +1131 4332(\\item)N +1419(alpha,)X +1755(\\bold{1})X +1 f +843 4466(where,)N +1090(with)X +1262(a)X +1328(suitable)X +1607(de\256nition)X +1943(for)X +2067(T)X +2103 4485(E)N +2142 4466(X,)N +7 f +2278(\\bold{n})X +1 f +2692(will)X +2846(expand)X +3107(to)X +7 f +3226({\\bf)X +3475(n})X +1 f +(.)S +3640(In)X +3736(this)X +3880(example,)X +4201(the)X +843 4562(three)N +1034(output)X +1268(attributes)X +1596(associated)X +1956(with)X +2128(page)X +2310(encapsulation)X +3 f +2780(encap_pre\256x)X +1 f +(,)S +3 f +3269(encap_in\256x)X +1 f +3659(,)X +3708(and)X +3 f +3853(encap_suf\256x)X +1 f +4279(,)X +843 4658(correspond)N +1222(to)X +1306(backslash,)X +1660(left)X +1789(brace,)X +2006(and)X +2144(right)X +2317(brace,)X +2534(respectively.)X +2984(This)X +3148(mechanism)X +3535(allows)X +3766(page)X +3940(numbers)X +4237(to)X +843 4754(be)N +946(set)X +1062(in)X +1151(different)X +1455(fonts.)X +1682(For)X +1820(example,)X +2139(the)X +2264(page)X +2442(where)X +2665(the)X +2789(de\256nition)X +3121(of)X +3214(a)X +3276(keyword)X +3583(appears)X +3855(can)X +3993(be)X +4095(in)X +4183(one)X +843 4850(font,)N +1012(the)X +1130(location)X +1408(of)X +1495(a)X +1551(primary)X +1825(example)X +2117(can)X +2249(be)X +2345(in)X +2427(another)X +2688(font,)X +2857(and)X +2993(other)X +3178 0.3250(appearances)AX +3592(in)X +3674(yet)X +3792(a)X +3848(third)X +4019(font.)X +843 4984(The)N +3 f +988(encap)X +1 f +1208(operator)X +1496(can)X +1628(also)X +1777(be)X +1873(used)X +2040(to)X +2122(create)X +2335(cross)X +2520 0.3889(references)AX +2872(in)X +2954(the)X +3072(index:)X +7 f +1131 5118(\\indexentry{alpha)N +9 f +(|)S +7 f +(see{beta}}{1})S +1 f +843 5252(will)N +987(become)X +7 f +1131 5386(\\item)N +1419(alpha,)X +1755(\\see{beta}{1})X +1 f +843 5520(in)N +925(the)X +1043(output)X +1267(\256le,)X +1409(where)X +7 f +1131 5654(\\see{beta}{1})N +1 f +555 6144(7th)N +677(Edition)X +2121(10)X +2221(December)X +2572(1991)X +4259(7)X + +8 p +%%Page: 6 6 +10 s 0 xH 0 xS 1 f +555 384(MAKEINDEX)N +1054(\()X +1094(1L)X +1196(\))X +1954(UNIX)X +2175(Programmer's)X +2654(Manual)X +3631(MAKEINDEX)X +4130(\()X +4170(1L)X +4272(\))X +7 f +1131 768(.el)N +1323(\\\\!.IX)X +1659(\\\\$1)X +1899(\\\\$2)X +2139(\\\\$3)X +2379(\\\\$4)X +2619(\\\\$5)X +2859(\\\\$6)X +3099(\\\\$7)X +3339(\\\\$8)X +3579(\\\\$9)X +3819({\\\\n\(PN})X +1131 864(..)N +1 f +843 998(\(note)N +1030(that)X +1172(the)X +1292(string)X +1496({)X +7 f +1534(\\\\n\(PN)X +1 f +(})S +1882(is)X +1957(separated)X +2283(from)X +2461(the)X +2581(rest)X +2719(of)X +2808(the)X +2928(line)X +3070(by)X +3172(a)X +3230(tab.)X +3390(If)X +3466(your)X +3635(local)X +3813(macro)X +4035(package)X +843 1094(does)N +1022(not)X +1156(contain)X +1424(this)X +1571(extension,)X +1930(just)X +2077(include)X +2345(those)X +2546(lines)X +2729(at)X +2818(the)X +2947(beginning)X +3298(of)X +3396(your)X +3574(\256le.)X +3747(Here)X +3935(is)X +4019(a)X +4086(simple)X +2 f +843 1190(troff)N +1 f +987(\(1\))X +1101(input)X +1285(\256le,)X +1427(which)X +1643(we)X +1757(will)X +1901(assume)X +2157(is)X +2230(named)X +2 f +2464(sample.txt)X +1 f +2798(:)X +7 f +1131 1324(This)N +1371(is)X +1515(a)X +1611(sample)X +1947(file)X +2187(to)X +2331(test)X +2571(the)X +2763(\\fImakeindex\\fP\(1L\))X +1131 1420(program,)N +1563(and)X +1755(see)X +1131 1516(.IX)N +1323({indexing!programs!C)X +2331(language})X +1131 1612(.IX)N +1323({makeindex@\\fImakeindex\\fP\(1L\)})X +1131 1708(.bp)N +1131 1804(.rs)N +1131 1900(.IX)N +1323({Knuth})X +1131 1996(.IX)N +1323({typesetting!computer-aided})X +1131 2092(how)N +1323(well)X +1563(it)X +1707(functions)X +2187(in)X +2331(the)X +2523(\\fItroff\\fP\(1\))X +3243(environment.)X +1 f +843 2226(Note)N +1029(that)X +1179(index)X +1387(entries)X +1630(are)X +1758(indicated)X +2081(by)X +2190(the)X +3 f +2317(.IX)X +1 f +2455(macro,)X +2705(which)X +2930(causes)X +3169(the)X +3296(following)X +3636(text)X +3785(to)X +3876(be)X +3981(written)X +4237(to)X +2 f +843 2322(stdout)N +1 f +1058(along)X +1256(with)X +1418(the)X +1536(current)X +1784(page)X +1956(number.)X +3 f +843 2456(CREATING)N +1294(THE)X +1482(INDEX)X +1760(FILE)X +1966(IN)X +2075(THE)X +2263(BOURNE)X +2625(SHELL)X +1 f +843 2552(To)N +958(create)X +1177(an)X +1279(input)X +1469(\256le)X +1597(for)X +2 f +1717(makeindex)X +1 f +2068(,)X +3 f +2114(in)X +2206(the)X +2339(Bourne)X +2618(shell)X +1 f +2799(environment,)X +3250(do)X +3356(the)X +3480(equivalent)X +3840(at)X +3924(your)X +4096(site)X +4232(of)X +843 2648(the)N +961(command:)X +7 f +843 2782(psroff)N +1179(-ms)X +1371(-Tpsc)X +1659(-t)X +1803(sample.txt)X +2331(>)X +2427(/dev/null)X +2907(2>)X +3051(sample.tmp)X +1 f +843 2916(Some)N +1045(sites)X +1207(will)X +1351(require)X +2 f +1599(ditroff)X +1 f +1818(instead)X +2065(of)X +2 f +2152(psroff)X +1 f +2345(.)X +2405(To)X +2514(\256lter)X +2685(out)X +2807(any)X +2943(genuine)X +3217(error)X +3394(messages,)X +3737(invoke)X +2 f +3975(grep)X +1 f +4129(\(1\):)X +7 f +1131 3050(grep)N +1371('\303IX:)X +1659(')X +1755(sample.tmp)X +2283(>)X +2379(sample.idx)X +3 f +843 3184(CREATING)N +1294(THE)X +1482(INDEX)X +1760(FILE)X +1966(USING)X +2 f +2239(U)X +2288(C)X +2323 3205(S)N +2355(F)X +3 f +2424 3184(ENHANCED)N +2902(TROFF/T)X +8 s +3248(RAN)X +10 s +3386(S)X +8 s +3430(CRIPT)X +10 s +1 f +843 3280(With)N +2 f +1025(U)X +1074(C)X +1109 3301(S)N +1141(F)X +1 f +1212 3280(Enhanced)N +1551(troff/T)X +8 s +1765(RAN)X +10 s +1900(S)X +8 s +1944(CRIPT)X +10 s +2126(,)X +2168(the)X +3 f +9 f +2288(-)X +3 f +2332(I)X +1 f +2385(option)X +2611(of)X +2 f +2700(psroff)X +1 f +2893(\(1L\))X +3058(can)X +3192(produce)X +3473(both)X +3637(formatter)X +3958(output)X +4183(and)X +843 3376(an)N +939(index)X +1137(\256le:)X +7 f +1131 3510(psroff)N +1467(-ms)X +1659(-I)X +1803(sample.inp)X +2331(-Tpsc)X +2619(sample.txt)X +1 f +843 3644(If)N +917(it)X +981(is)X +1054(wished)X +1301(to)X +1383(suppress)X +1679(the)X +1797(formatter)X +2116(output:)X +7 f +1131 3778(psroff)N +1467(-ms)X +1659(-I)X +1803(sample.inp)X +2331(-Tpsc)X +2619(-t)X +2763(sample.txt)X +3291(>)X +3387(/dev/null)X +3 f +843 3912(COMPLETING)N +1418(THE)X +1606(INDEX)X +1 f +843 4008(Any)N +1002(of)X +1090(the)X +1209(above)X +1421(procedures)X +1794(leaves)X +2015(the)X +2133(input)X +2317(for)X +2 f +2431(makeindex)X +1 f +2795(in)X +2 f +2877(sample.inp)X +1 f +3233(.)X +3293(The)X +3438(next)X +3596(step)X +3745(is)X +3818(to)X +3900(invoke)X +2 f +4138(mak-)X +843 4104(eindex)N +1 f +1060(:)X +7 f +1131 4238(makeindex)N +1611(-s)X +1755(sample.ist)X +2283(sample.idx)X +1 f +843 4372(This)N +1005(leaves)X +2 f +1226(troff)X +1 f +1370(\(1\)-ready)X +1690(output)X +1914(in)X +1996(the)X +2114(\256le)X +2 f +2236(sample.ind)X +1 f +2592(.)X +3 f +9 s +555 4506(ORDERING)N +1 f +10 s +843 4602(By)N +958(default,)X +2 f +1222(makeindex)X +1 f +1587(assumes)X +2 f +1875(word)X +2060(ordering)X +1 f +2347(;)X +2390(if)X +2460(the)X +3 f +9 f +2579(-)X +3 f +2623(l)X +1 f +2666(option)X +2891(is)X +2965(in)X +3048(effect,)X +2 f +3273(letter)X +3463(ordering)X +1 f +3764(is)X +3838(used.)X +4046(In)X +4134(word)X +843 4698(ordering,)N +1165(a)X +1230(blank)X +1437(precedes)X +1748(any)X +1893(letter)X +2087(in)X +2178(the)X +2305(alphabet,)X +2626(whereas)X +2919(in)X +3010(letter)X +3204(ordering,)X +3525(it)X +3598(does)X +3774(not)X +3905(count)X +4112(at)X +4199(all.)X +843 4794(This)N +1005(is)X +1078(illustrated)X +1418(by)X +1518(the)X +1636(following)X +1967(example:)X +2 f +1131 4928(word)N +1315(order)X +1933(letter)X +2122(order)X +1 f +1131 5024(sea)N +1254(lion)X +1858(seal)X +1131 5120(seal)N +1816(sea)X +1939(lion)X +843 5254(Numbers)N +1157(are)X +1276(always)X +1519(sorted)X +1735(in)X +1817(numeric)X +2100(order.)X +2330(For)X +2461(instance,)X +1131 5388(9)N +1191(\(nine\),)X +1443(123)X +1131 5484(10)N +1231(\(ten\),)X +1423(see)X +1546(Derek,)X +1783(Bo)X +843 5618(Letters)N +1089(are)X +1211(\256rst)X +1358(sorted)X +1577(without)X +1844(regard)X +2073(to)X +2158(case;)X +2342(when)X +2539(words)X +2758(are)X +2880(identical,)X +3198(the)X +3318(uppercase)X +3662(version)X +3920(precedes)X +4224(its)X +843 5714(lowercase)N +1185(counterpart.)X +555 6144(7th)N +677(Edition)X +2121(10)X +2221(December)X +2572(1991)X +4259(6)X + +7 p +%%Page: 5 5 +10 s 0 xH 0 xS 1 f +555 384(MAKEINDEX)N +1054(\()X +1094(1L)X +1196(\))X +1954(UNIX)X +2175(Programmer's)X +2654(Manual)X +3631(MAKEINDEX)X +4130(\()X +4170(1L)X +4272(\))X +3 f +843 768(TROFF)N +1134(EXAMPLE)X +1 f +843 864(A)N +921(sample)X +1168(control)X +1415(\256le)X +1537(for)X +1651(creating)X +1930(an)X +2026(index,)X +2244(which)X +2460(we)X +2574(will)X +2718(assume)X +2974(resides)X +3217(in)X +3299(the)X +3417(\256le)X +2 f +3539(sample.ist)X +1 f +3868(:)X +7 f +1131 998(keyword)N +1515("IX:")X +1131 1094(preamble)N +1131 1190(".\\\\\\")N +1467(start)X +1755(of)X +1899(index)X +2187(output)X +1131 1286(\\".\\\\\\")N +1515(enter)X +1803(two)X +1995(column)X +2331(mode)X +1131 1382(.2C)N +1131 1478(.SH)N +1131 1574(.ce)N +1131 1670(INDEX)N +1131 1766(.XS)N +1131 1862(INDEX)N +1131 1958(.XE)N +1131 2054(.R)N +1131 2150(.ps)N +1323(9p)X +1131 2246(.vs)N +1323(11p)X +1131 2342(.sp)N +1131 2438(.de)N +1323(I1)X +1131 2534(.ti)N +1323(0.25i)X +1131 2630(..)N +1131 2726(.de)N +1323(I2)X +1131 2822(.ti)N +1323(0.5i)X +1131 2918(..")N +1131 3014(postamble)N +1611("\\n.\\\\\\")X +2043(end)X +2235(of)X +2379(index)X +2667(output")X +1131 3110(setpage_prefix)N +1851("\\n.nr)X +2187(%)X +2283(")X +1131 3206(setpage_suffix)N +1851("")X +1131 3302(group_skip)N +1659("\\n.sp)X +1995(1.0")X +1131 3398(headings_flag)N +1803(1)X +1131 3494(heading_prefix)N +1851("\\n.IS\\n")X +1131 3590(heading_suffix)N +1851("\\n.IE")X +1131 3686(item_0)N +1467("\\n.br\\n")X +1131 3782(item_1)N +1467("\\n.I1\\n")X +1131 3878(item_2)N +1467("\\n.I2\\n")X +1131 3974(item_01)N +1515("\\n.I1\\n")X +1131 4070(item_x1)N +1515("\\n.I1\\n")X +1131 4166(item_12)N +1515("\\n.I2\\n")X +1131 4262(item_x2)N +1515("\\n.I2\\n")X +1131 4358(delim_0)N +1515(",)X +1659(")X +1131 4454(delim_1)N +1515(",)X +1659(")X +1131 4550(delim_2)N +1515(",)X +1659(")X +1131 4646(delim_r)N +1515("-")X +1131 4742(delim_t)N +1515(".")X +1131 4838(encap_prefix)N +1755("\\\\fB")X +1131 4934(encap_infix)N +1707("")X +1131 5030(encap_suffix)N +1755("\\\\fP")X +1131 5126(indent_space)N +1755("")X +1131 5222(indent_length)N +1803(0)X +1 f +843 5356(The)N +993(local)X +1174(macro)X +1400(package)X +1689(may)X +1852(require)X +2105(modi\256cation,)X +2554(as)X +2646(in)X +2733(this)X +2873(example)X +3170(of)X +3262(an)X +3362(extension)X +3693(to)X +3779(the)X +3 f +9 f +3901(-)X +3 f +3945(ms)X +1 f +4067(macros)X +843 5452(\(note)N +1028(that)X +1168(at)X +1246(some)X +1435(sites,)X +1617(this)X +1752(macro)X +1973(should)X +2 f +2206(replace)X +1 f +2467(a)X +2523(pre-existing)X +2926(macro)X +3147(of)X +3234(the)X +3352(same)X +3537(name\):)X +7 f +1131 5586(.)N +1131 5682(.de)N +1323(IX)X +1131 5778(.ie)N +1323('\\\\n\(.z'')X +1803(.tm)X +1995(IX:)X +2187(\\\\$1)X +2427(\\\\$2)X +2667(\\\\$3)X +2907(\\\\$4)X +3147(\\\\$5)X +3387(\\\\$6)X +3627(\\\\$7)X +3867(\\\\$8)X +4107(\\\\$9)X +4347({\\\\n\(PN})X +1 f +555 6162(7th)N +677(Edition)X +2121(10)X +2221(December)X +2572(1991)X +4259(5)X + +6 p +%%Page: 4 4 +10 s 0 xH 0 xS 1 f +555 384(MAKEINDEX)N +1054(\()X +1094(1L)X +1196(\))X +1954(UNIX)X +2175(Programmer's)X +2654(Manual)X +3631(MAKEINDEX)X +4130(\()X +4170(1L)X +4272(\))X +3 f +843 768(delim_1)N +1 f +1134(<string>)X +1843(",)X +1916(")X +1843 864(Delimiter)N +2183(to)X +2278(be)X +2387(inserted)X +2674(between)X +2975(a)X +3044(level)X +3233(1)X +3306(key)X +3455(and)X +3604(its)X +3712(\256rst)X +3869(page)X +4054(number)X +1843 960(\(default:)N +2135(comma)X +2391(followed)X +2696(by)X +2796(a)X +2852(blank\).)X +3 f +843 1094(delim_2)N +1 f +1134(<string>)X +1843(",)X +1916(")X +1843 1190(Delimiter)N +2183(to)X +2278(be)X +2387(inserted)X +2674(between)X +2975(a)X +3044(level)X +3233(2)X +3306(key)X +3455(and)X +3604(its)X +3712(\256rst)X +3869(page)X +4054(number)X +1843 1286(\(default:)N +2135(comma)X +2391(followed)X +2696(by)X +2796(a)X +2852(blank\).)X +3 f +843 1420(delim_n)N +1 f +1138(<string>)X +1843(",)X +1916(")X +1843 1516(Delimiter)N +2173(to)X +2258(be)X +2357(inserted)X +2634(between)X +2924(two)X +3066(page)X +3240(numbers)X +3538(for)X +3654(the)X +3774(same)X +3961(key)X +4099(in)X +4183(any)X +1843 1612(level)N +2019(\(default:)X +2311(comma)X +2567(followed)X +2872(by)X +2972(a)X +3028(blank\).)X +3 f +843 1746(delim_r)N +1 f +1130(<string>)X +1843("--")X +1843 1842(Delimiter)N +2174(to)X +2260(be)X +2360(inserted)X +2638(between)X +2930(the)X +3052(starting)X +3316(and)X +3456(ending)X +3698(page)X +3874(numbers)X +4173(of)X +4263(a)X +1843 1938(range.)N +3 f +843 2072(delim_t)N +1 f +1121(<string>)X +1843("")X +1843 2168(Delimiter)N +2184(to)X +2280(be)X +2390(inserted)X +2678(at)X +2770(the)X +2902(end)X +3052(of)X +3153(a)X +3223(page)X +3409(list.)X +3580(This)X +3756(delimiter)X +4079(has)X +4219(no)X +1843 2264(effect)N +2047(on)X +2147(entries)X +2381(which)X +2597(have)X +2769(no)X +2869(associated)X +3219(page)X +3391(list.)X +3 f +843 2398(encap_pre\256x)N +1 f +1303(<string>)X +1843("\\\\")X +1843 2494(First)N +2009(part)X +2154(of)X +2241(pre\256x)X +2448(for)X +2562(the)X +2680(command)X +3016(which)X +3232(encapsulates)X +3658(the)X +3776(page)X +3948(number.)X +3 f +843 2628(encap_in\256x)N +1 f +1253(<string>)X +1843("{")X +1843 2724(Second)N +2128(part)X +2301(of)X +2416(pre\256x)X +2651(for)X +2793(the)X +2939(command)X +3303(which)X +3547(encapsulates)X +4001(the)X +4147(page)X +1843 2820(number.)N +3 f +843 2954(encap_suf\256x)N +1 f +1289(<string>)X +1843("}".)X +1843 3050(Suf\256x)N +2058(for)X +2172(the)X +2290(command)X +2626(which)X +2842(encapsulates)X +3268(the)X +3386(page)X +3558(number.)X +3 f +843 3184(line_max)N +1 f +1174(<number>)X +1843(72)X +1843 3280(Maximum)N +2196(length)X +2416(of)X +2503(a)X +2559(line)X +2699(in)X +2781(the)X +2899(output,)X +3143(beyond)X +3399(which)X +3615(a)X +3671(line)X +3811(wraps.)X +3 f +843 3414(indent_space)N +1 f +1307(<string>)X +1843("\\t\\t")X +1843 3510(Space)N +2055(to)X +2137(be)X +2233(inserted)X +2507(in)X +2589(front)X +2765(of)X +2852(a)X +2908(wrapped)X +3205(line)X +3345(\(default:)X +3637(two)X +3777(tabs\).)X +3 f +843 3644(indent_length)N +1 f +1333(<number>)X +1843(16)X +1843 3740(Length)N +2090(of)X +3 f +2177(indent_space)X +1 f +2641(\(default:)X +2933(16,)X +3053(equivalent)X +3407(to)X +3489(2)X +3549(tabs\).)X +3 f +9 s +555 3874(EXAMPLES)N +10 s +843 3970(T)N +883 3989(E)N +926 3970(X)N +1004(EXAMPLE)X +1 f +843 4066(The)N +993(following)X +1329(example)X +1626(shows)X +1851(a)X +1912(style)X +2088(\256le)X +2214(called)X +2 f +2430(book.ist)X +1 f +2688(,)X +2732(which)X +2952(de\256nes)X +3203(an)X +3303(index)X +3505(for)X +3623(a)X +3683(book)X +3867(which)X +4087(can)X +4223(be)X +843 4162(formatted)N +1175(independently)X +1649(of)X +1736(the)X +1854(main)X +2034(source:)X +7 f +1131 4296(preamble)N +1131 4392("\\\\documentstyle[12pt]{book})N +1131 4488(\\\\begin{document})N +1131 4584(\\\\begin{theindex})N +1131 4680({\\\\small\\n")N +1131 4776(postamble)N +1131 4872("\\n\\n})N +1131 4968(\\\\end{theindex})N +1131 5064(\\\\end{document}\\n)N +1 f +(")S +843 5198(Assuming)N +1189(that)X +1331(a)X +1389(particular)X +1719(book)X +1901(style)X +2074(requires)X +2355(the)X +2475(index)X +2675(\(as)X +2790(well)X +2949(as)X +3037(any)X +3174(chapters\))X +3490(to)X +3573(start)X +3732(from)X +3909(an)X +4006(odd)X +4147(page)X +843 5294(number,)N +1144(and)X +1296(that)X +1452(the)X +1586(input)X +1786(\256le)X +1924(is)X +2013(named)X +2 f +2263(foo.idx)X +1 f +2490(,)X +2546(the)X +2680(following)X +3027(command)X +3379(line)X +3535(produces)X +3861(output)X +4100(in)X +4197(\256le)X +2 f +843 5390(footmp.ind)N +1 f +1194(:)X +7 f +1131 5524(makeindex)N +9 f +1659(-)X +7 f +1703(s)X +1799(book.ist)X +9 f +2279(-)X +7 f +2323(o)X +2419(footmp.ind)X +9 f +2995(-)X +7 f +3039(p)X +3135(odd)X +3375(foo)X +1 f +843 5658(Here)N +1025(a)X +1086(non-default)X +1481(output)X +1710(\256le)X +1837(name)X +2036(is)X +2114(used)X +2285(to)X +2371(avoid)X +2573(clobbering)X +2940(the)X +3062(output)X +3290(for)X +3408(the)X +3530(book)X +3714(itself)X +3898(\(presumably)X +2 f +843 5754(foo.dvi)N +1 f +1070(,)X +1110(which)X +1326(would)X +1546(have)X +1718(been)X +1890(the)X +2008(default)X +2251(name)X +2445(for)X +2559(the)X +2677(index)X +2875(output)X +3099(\256le!\).)X +555 6144(7th)N +677(Edition)X +2121(10)X +2221(December)X +2572(1991)X +4259(4)X + +5 p +%%Page: 3 3 +10 s 0 xH 0 xS 1 f +555 384(MAKEINDEX)N +1054(\()X +1094(1L)X +1196(\))X +1954(UNIX)X +2175(Programmer's)X +2654(Manual)X +3631(MAKEINDEX)X +4130(\()X +4170(1L)X +4272(\))X +3 f +843 768(OUTPUT)N +1196(STYLE)X +1477(SPECIFIERS)X +843 902(preamble)N +1 f +1188(<string>)X +1843("\\\\begin{theindex}\\n")X +1843 998(Preamble)N +2166(of)X +2253(output)X +2477(\256le.)X +3 f +843 1132(postamble)N +1 f +1214(<string>)X +1843("\\n\\n\\\\end{theindex}\\n")X +1843 1228(Postamble)N +2196(of)X +2283(output)X +2507(\256le.)X +3 f +843 1362(setpage_pre\256x)N +1 f +1357(<string>)X +1843("\\n)X +1978(\\\\setcounter{page}{")X +1843 1458(Pre\256x)N +2054(of)X +2141(command)X +2477(which)X +2693(sets)X +2833(the)X +2951(starting)X +3211(page)X +3383(number.)X +3 f +843 1592(setpage_suf\256x)N +1 f +1343(<string>)X +1843("}\\n")X +1843 1688(Suf\256x)N +2058(of)X +2145(command)X +2481(which)X +2697(sets)X +2837(the)X +2955(starting)X +3215(page)X +3387(number.)X +3 f +843 1822(group_skip)N +1 f +1248(<string>)X +1843("\\n\\n)X +2040(\\\\indexspace\\n")X +1843 1918(Vertical)N +2122(space)X +2321(to)X +2403(be)X +2499(inserted)X +2773(before)X +2999(a)X +3055(new)X +3209(group)X +3416(begins.)X +3 f +843 2052(headings_\257ag)N +1 f +1328(<string>)X +1843(0)X +1843 2148(Flag)N +2017(indicating)X +2369(treatment)X +2704(of)X +2803(new)X +2968(group)X +3186(headers,)X +3483(which)X +3710(are)X +3840(inserted)X +4125(when)X +1843 2244(before)N +2076(a)X +2138(new)X +2298(group)X +2511(\(symbols,)X +2850(numbers,)X +3172(and)X +3314(the)X +3438(26)X +3544(letters\):)X +3815(positive)X +4094(values)X +1843 2340(cause)N +2044(an)X +2142(uppercase)X +2485(letter)X +2671(to)X +2754(be)X +2851(inserted)X +3126(between)X +3415(pre\256x)X +3623(and)X +3760(suf\256x,)X +3983(and)X +4120(nega-)X +1843 2436(tive)N +1990(values)X +2222(cause)X +2428(a)X +2491(lowercase)X +2840(letter)X +3032(to)X +3120(be)X +3222(inserted)X +3502(\(default)X +3778(is)X +3857(0,)X +3943(which)X +4165(pro-)X +1843 2532(duces)N +2046(no)X +2146(header\).)X +3 f +843 2666(heading_pre\256x)N +1 f +1373(<string>)X +1843("")X +1843 2762(Header)N +2096(pre\256x)X +2303(to)X +2385(be)X +2481(inserted)X +2755(before)X +2981(a)X +3037(new)X +3191(letter)X +3376(begins.)X +3 f +843 2896(symhead_positive)N +1 f +1467(<string>)X +1843("Symbols")X +1843 2992(Heading)N +2135(for)X +2249(symbols)X +2535(to)X +2617(be)X +2713(inserted)X +2987(if)X +3 f +3056(headings_\257ag)X +1 f +3541(is)X +3614(positive.)X +3 f +843 3126(symhead_negative)N +1 f +1490(<string>)X +1843("symbols")X +1843 3222(Heading)N +2135(for)X +2249(symbols)X +2535(to)X +2617(be)X +2713(inserted)X +2987(if)X +3 f +3056(headings_\257ag)X +1 f +3541(is)X +3614(negative.)X +3 f +843 3356(numhead_positive)N +1 f +1484(<string>)X +1843("Numbers")X +1843 3452(Heading)N +2135(for)X +2249(numbers)X +2545(to)X +2627(be)X +2723(inserted)X +2997(if)X +3 f +3066(headings_\257ag)X +1 f +3551(is)X +3624(positive.)X +3 f +843 3586(numhead_negative)N +1 f +1507(<string>)X +1843("numbers")X +1843 3682(Heading)N +2135(for)X +2249(numbers)X +2545(to)X +2627(be)X +2723(inserted)X +2997(if)X +3 f +3066(headings_\257ag)X +1 f +3551(is)X +3624(negative.)X +3 f +843 3816(item_0)N +1 f +1095(<string>)X +1843("\\n)X +1978(\\\\item)X +2184(")X +1843 3912(Command)N +2196(to)X +2278(be)X +2374(inserted)X +2648(between)X +2936(two)X +3076(primary)X +3350(\(level)X +3553(0\))X +3640(items.)X +3 f +843 4046(item_1)N +1 f +1095(<string>)X +1843("\\n)X +2038(\\\\subitem)X +2355(")X +1843 4142(Command)N +2196(to)X +2278(be)X +2374(inserted)X +2648(between)X +2936(two)X +3076(secondary)X +3422(\(level)X +3625(1\))X +3712(items.)X +3 f +843 4276(item_2)N +1 f +1095(<string>)X +1843("\\n)X +2078(\\\\subsubitem)X +2506(")X +1843 4372(Command)N +2196(to)X +2278(be)X +2374(inserted)X +2648(between)X +2936(two)X +3076(level)X +3252(2)X +3312(items.)X +3 f +843 4506(item_01)N +1155(<string>)X +1 f +1843("\\n)X +2018(\\\\subitem)X +2335(")X +1843 4602(Command)N +2196(to)X +2278(be)X +2374(inserted)X +2648(between)X +2936(a)X +2992(level)X +3168(0)X +3228(item)X +3390(and)X +3526(a)X +3582(level)X +3758(1)X +3818(item.)X +3 f +843 4736(item_x1)N +1 f +1135(<string>)X +1843("\\n)X +2018(\\\\subitem)X +2335(")X +1843 4832(Command)N +2204(to)X +2294(be)X +2398(inserted)X +2680(between)X +2975(a)X +3038(level)X +3221(0)X +3288(item)X +3457(and)X +3600(a)X +3663(level)X +3846(1)X +3913(item,)X +4102(where)X +1843 4928(the)N +1961(level)X +2137(0)X +2197(item)X +2359(does)X +2526(not)X +2648(have)X +2820(associated)X +3170(page)X +3342(numbers.)X +3 f +843 5062(item_12)N +1 f +1135(<string>)X +1843("\\n)X +2018(\\\\subsubitem)X +2446(")X +1843 5158(Command)N +2196(to)X +2278(be)X +2374(inserted)X +2648(between)X +2936(a)X +2992(level)X +3168(1)X +3228(item)X +3390(and)X +3526(a)X +3582(level)X +3758(2)X +3818(item.)X +3 f +843 5292(item_x2)N +1 f +1135(<string>)X +1843("\\n)X +2018(\\\\subsubitem)X +2446(")X +1843 5388(Command)N +2204(to)X +2294(be)X +2398(inserted)X +2680(between)X +2975(a)X +3038(level)X +3221(1)X +3288(item)X +3457(and)X +3600(a)X +3663(level)X +3846(2)X +3913(item,)X +4102(where)X +1843 5484(the)N +1961(level)X +2137(1)X +2197(item)X +2359(does)X +2526(not)X +2648(have)X +2820(associated)X +3170(page)X +3342(numbers.)X +3 f +843 5618(delim_0)N +1 f +1134(<string>)X +1843(",)X +1916(")X +1843 5714(Delimiter)N +2183(to)X +2278(be)X +2387(inserted)X +2674(between)X +2975(a)X +3044(level)X +3233(0)X +3306(key)X +3455(and)X +3604(its)X +3712(\256rst)X +3869(page)X +4054(number)X +1843 5810(\(default:)N +2135(comma)X +2391(followed)X +2696(by)X +2796(a)X +2852(blank\).)X +555 6194(7th)N +677(Edition)X +2121(10)X +2221(December)X +2572(1991)X +4259(3)X + +4 p +%%Page: 2 2 +10 s 0 xH 0 xS 1 f +555 384(MAKEINDEX)N +1054(\()X +1094(1L)X +1196(\))X +1954(UNIX)X +2175(Programmer's)X +2654(Manual)X +3631(MAKEINDEX)X +4130(\()X +4170(1L)X +4272(\))X +3 f +9 f +843 768(-)N +3 f +887(q)X +1 f +1243(Quiet)X +1446(mode;)X +1671(send)X +1843(no)X +1948(messages)X +2276(to)X +2 f +2363(stderr)X +1 f +2561(.)X +2626(By)X +2744(default,)X +3012(progress)X +3309(and)X +3450(error)X +3632(messages)X +3960(are)X +4084(sent)X +4237(to)X +2 f +1243 864(stderr)N +1 f +1454(as)X +1541(well)X +1699(as)X +1786(to)X +1868(the)X +1986(transcript)X +2309(\256le.)X +3 f +9 f +843 998(-)N +3 f +887(r)X +1 f +1243(Disable)X +1519(implicit)X +1798(page)X +1981(range)X +2191(formation;)X +2560(page)X +2743(ranges)X +2983(must)X +3168(be)X +3274(created)X +3537(by)X +3647(using)X +3850(explicit)X +4120(range)X +1243 1094(operators;)N +1608(see)X +8 s +1751(SPECIAL)X +2051(EFFECTS)X +10 s +2363(below.)X +2643(By)X +2780(default,)X +3067(three)X +3272(or)X +3383(more)X +3592(successive)X +3974(pages)X +4200(are)X +1243 1190(automatically)N +1699(abbreviated)X +2094(as)X +2181(a)X +2237(range)X +2436(\(e.g.)X +2599(1\3205\).)X +3 f +9 f +843 1324(-)N +3 f +887(s)X +1 f +938(sty)X +1243(Employ)X +2 f +1527(sty)X +1 f +1647(as)X +1744(the)X +1872(style)X +2053(\256le)X +2185(\(no)X +2322(default\).)X +2642(The)X +2797(environment)X +3232(variable)X +8 s +3517(INDEXSTYLE)X +10 s +3944(de\256nes)X +4201(the)X +1243 1420(path)N +1401(where)X +1618(the)X +1736(style)X +1907(\256le)X +2029(should)X +2262(be)X +2358(found.)X +3 f +9 f +843 1554(-)N +3 f +887(t)X +1 f +934(log)X +1243(Employ)X +2 f +1520(log)X +1 f +1646(as)X +1737(the)X +1859(transcript)X +2186(\256le.)X +2352(By)X +2469(default,)X +2736(the)X +2858(\256le)X +2984(name)X +3182(is)X +3259(created)X +3516(by)X +3620(appending)X +3977(the)X +4098(exten-)X +1243 1650(sion)N +2 f +1396(.ilg)X +1 f +1520(to)X +1602(the)X +1720(base)X +1883(name)X +2077(of)X +2164(the)X +2282(\256rst)X +2426(input)X +2610(\256le)X +2732(\()X +2 f +2759(idx0)X +1 f +2904(\).)X +3 f +9 s +555 1784(STYLE)N +809(FILE)X +1 f +10 s +843 1880(The)N +990(style)X +1163(\256le)X +1287(informs)X +2 f +1558(makeindex)X +1 f +1924(about)X +2123(the)X +2242(format)X +2477(of)X +2565(the)X +2 f +2684(.idx)X +1 f +2823(input)X +3008(\256les)X +3162(and)X +3299(the)X +3418(intended)X +3715(format)X +3950(of)X +4038(the)X +4157(\256nal)X +843 1976(output)N +1072(\256le;)X +1221(examples)X +1549(appear)X +1789(below.)X +2050(This)X +2217(\256le)X +2344(can)X +2481(reside)X +2698(anywhere)X +3036(in)X +3123(the)X +3246(path)X +3408(de\256ned)X +3668(by)X +3772(the)X +3894(environment)X +843 2072(variable)N +8 s +1124(INDEXSTYLE)X +10 s +1521(.)X +1587(The)X +1738(style)X +1915(\256le)X +2043(contains)X +2336(a)X +2398(list)X +2521(of)X +2614(<)X +2 f +2659(speci\256er)X +1 f +2938(,)X +2 f +2983(attribute)X +1 f +3265(>)X +3335(pairs.)X +3556(There)X +3769(are)X +3893(two)X +4038(types)X +4232(of)X +843 2168(speci\256ers:)N +1192(input)X +1380(and)X +1520(output.)X +1788(Pairs)X +1972(do)X +2076(not)X +2202(have)X +2378(to)X +2464(appear)X +2703(in)X +2789(any)X +2929(particular)X +3261(order.)X +3495(A)X +3577(line)X +3721(begun)X +3940(by)X +4043(`%')X +4187(is)X +4263(a)X +843 2264(comment.)N +1212(In)X +1310(the)X +1439(following)X +1781(list)X +1909(of)X +2007(speci\256ers)X +2341(and)X +2488(arguments,)X +2873(<string>)X +3176(is)X +3260(an)X +3367(arbitrary)X +3675(string)X +3887(delimited)X +4219(by)X +843 2360(double)N +1083(quotes)X +1314(\(".)X +1407(.)X +1440(."\),)X +1561(<char>)X +1811(is)X +1885(a)X +1942(single)X +2154(letter)X +2340(embraced)X +2674(by)X +2775(single)X +2987(quotes)X +3217(\('.)X +3304(.)X +3337(.'\),)X +3452(and)X +3589(<number>)X +3945(is)X +4019(a)X +4076(nonne-)X +843 2456(gative)N +1065(integer.)X +1354(The)X +1505(maximum)X +1855(length)X +2081(of)X +2174(a)X +2236(<string>)X +2533(is)X +2611(2048.)X +2836(A)X +2919(literal)X +3131(backslash)X +3468(or)X +3560(quote)X +3763(must)X +3943(be)X +4044(escaped)X +843 2552(\(by)N +971(a)X +1028(backslash\).)X +1428(Anything)X +1751(not)X +1874(speci\256ed)X +2180(in)X +2263(the)X +2381(style)X +2552(\256le)X +2674(will)X +2818(be)X +2914(assigned)X +3210(a)X +3266(default)X +3509(value,)X +3723(which)X +3939(is)X +4012(shown)X +4241(at)X +843 2648(the)N +961(head)X +1133(of)X +1220(the)X +1338(rightmost)X +1664(column.)X +3 f +843 2782(INPUT)N +1112(STYLE)X +1393(SPECIFIERS)X +843 2916(actual)N +1 f +1072(<char>)X +1843(\302@\302)X +1843 3012(Symbol)N +2111(indicating)X +2451(that)X +2591(the)X +2709(next)X +2867(entry)X +3052(is)X +3125(to)X +3207(appear)X +3442(in)X +3524(the)X +3642(output)X +3866(\256le.)X +3 f +843 3146(arg_close)N +1 f +1184(<char>)X +1843(\302}\302)X +1843 3242(Closing)N +2111(delimiter)X +2420(for)X +2534(the)X +2652(index)X +2850(entry)X +3035(argument.)X +3 f +843 3376(arg_open)N +1 f +1183(<char>)X +1843(\302{\302)X +1843 3472(Opening)N +2139(delimiter)X +2448(for)X +2562(the)X +2680(index)X +2878(entry)X +3063(argument.)X +3 f +843 3606(encap)N +1 f +1063(<char>)X +1843(\302)X +9 f +1870(|)X +1 f +(\302)S +1843 3702(Symbol)N +2126(indicating)X +2481(that)X +2636(the)X +2769(rest)X +2920(of)X +3022(the)X +3155(argument)X +3493(list)X +3625(is)X +3713(to)X +3809(be)X +3919(used)X +4100(as)X +4201(the)X +1843 3798(encapsulating)N +2304(command)X +2640(for)X +2754(the)X +2872(page)X +3044(number.)X +3 f +843 3932(escape)N +1 f +1086(<char>)X +1843(\302\\\\\302)X +1843 4028(Symbol)N +2128(which)X +2361(escapes)X +2643(the)X +2777(following)X +3124(letter,)X +3345(unless)X +3581(its)X +3692(preceding)X +4045(letter)X +4246(is)X +3 f +1843 4124(escape)N +1 f +2066(.)X +2129(Note:)X +3 f +2330(quote)X +1 f +2544(is)X +2620(used)X +2790(to)X +2875(escape)X +3112(the)X +3232(letter)X +3419(which)X +3637(immediately)X +4059(follows)X +1843 4220(it,)N +1928(but)X +2051(if)X +2121(it)X +2186(is)X +2260(preceded)X +2572(by)X +3 f +2673(escape)X +1 f +2896(,)X +2937(it)X +3002(is)X +3076(treated)X +3316(as)X +3403(a)X +3459(ordinary)X +3751(character.)X +4107(These)X +1843 4316(two)N +1983(symbols)X +2 f +2269(must)X +1 f +2440(be)X +2536(distinct.)X +3 f +843 4450(keyword)N +1 f +1161(<string>)X +1843("\\\\indexentry")X +1843 4546(Command)N +2196(which)X +2412(tells)X +2 f +2565(makeindex)X +1 f +2929(that)X +3069(its)X +3164(argument)X +3487(is)X +3560(an)X +3656(index)X +3854(entry.)X +3 f +843 4680(level)N +1 f +1019(<char>)X +1843(\302!\302)X +1843 4776(Delimiter)N +2170(denoting)X +2470(a)X +2526(new)X +2680(level)X +2856(of)X +2943(subitem.)X +3 f +843 4910(quote)N +1 f +1054(<char>)X +1843(\302"\302)X +1843 5006(Note:)N +3 f +2044(quote)X +1 f +2258(is)X +2334(used)X +2504(to)X +2589(escape)X +2827(the)X +2948(letter)X +3136(which)X +3355(immediately)X +3778(follows)X +4040(it,)X +4126(but)X +4250(if)X +1843 5102(it)N +1919(is)X +2004(preceded)X +2327(by)X +3 f +2438(escape)X +1 f +2661(,)X +2712(it)X +2787(is)X +2871(treated)X +3121(as)X +3219(a)X +3286(ordinary)X +3589(character.)X +3956(These)X +4179(two)X +1843 5198(symbols)N +2 f +2129(must)X +1 f +2300(be)X +2396(distinct.)X +3 f +843 5332(range_close)N +1 f +1264(<char>)X +1843(\302\)\302)X +1843 5428(Closing)N +2111(delimiter)X +2420(indicating)X +2760(the)X +2878(end)X +3014(of)X +3101(an)X +3197(explicit)X +3457(page)X +3629(range.)X +3 f +843 5562(range_open)N +1 f +1263(<char>)X +1843(\302\(\302)X +1843 5658(Opening)N +2139(delimiter)X +2448(indicating)X +2788(the)X +2906(beginning)X +3246(of)X +3333(an)X +3429(explicit)X +3689(page)X +3861(range.)X +555 6144(7th)N +677(Edition)X +2121(10)X +2221(December)X +2572(1991)X +4259(2)X + +3 p +%%Page: 1 1 +10 s 0 xH 0 xS 1 f +555 384(MAKEINDEX)N +1054(\()X +1094(1L)X +1196(\))X +1954(UNIX)X +2175(Programmer's)X +2654(Manual)X +3631(MAKEINDEX)X +4130(\()X +4170(1L)X +4272(\))X +3 f +9 s +555 768(NAME)N +1 f +10 s +843 864(makeindex)N +9 f +1215(-)X +1 f +1279(a)X +1335(general)X +1592(purpose,)X +1886(formatter-independent)X +2624(index)X +2822(processor)X +3 f +9 s +555 998(SYNOPSIS)N +10 s +843 1094(makeindex)N +1236([)X +1 f +9 f +1263(-)X +1 f +1307(c)X +3 f +1343(])X +1390([)X +1 f +9 f +1417(-)X +1 f +1461(g)X +3 f +(])S +1548([)X +1 f +9 f +1575(-)X +1 f +1619(i)X +3 f +1641(])X +1688([)X +1 f +9 f +1715(-)X +1 f +1759(l)X +3 f +1781(])X +1828([)X +1 f +9 f +1855(-)X +1 f +1899(o)X +2 f +1959(ind)X +1 f +2068(])X +3 f +2115([)X +1 f +9 f +2142(-)X +1 f +2186(p)X +2 f +2246(num)X +1 f +2391(])X +3 f +2438([)X +1 f +9 f +2465(-)X +1 f +2509(q)X +3 f +(])S +2596([)X +1 f +9 f +2623(-)X +1 f +2667(r)X +3 f +2694(])X +2741([)X +1 f +9 f +2768(-)X +1 f +2812(s)X +2 f +2863(s\256le)X +1 f +2999(])X +3 f +3046([)X +1 f +9 f +3073(-)X +1 f +3117(t)X +2 f +3159(log)X +1 f +3268(])X +3 f +3315([)X +2 f +3342(idx0)X +3500(idx1)X +3658(idx2)X +1 f +3803(.)X +3836(.)X +3869(.])X +3 f +9 s +555 1228(DESCRIPTION)N +1 f +10 s +843 1324(The)N +989(program)X +2 f +1282(makeindex)X +1 f +1647(is)X +1721(a)X +1778(general)X +2035(purpose)X +2309(hierarchical)X +2709(index)X +2907(generator;)X +3253(it)X +3317(accepts)X +3574(one)X +3710(or)X +3797(more)X +3982(input)X +4166(\256les)X +843 1420(\(often)N +1056(produced)X +1376(by)X +1477(a)X +1534(text)X +1675(formatter)X +1995(such)X +2162(as)X +2249(T)X +2285 1439(E)N +2324 1420(X)N +2402(\()X +2 f +2429(tex)X +1 f +2530(\(1L\)\))X +2720(or)X +2 f +2807(troff)X +1 f +2951(\(1\),)X +3085(sorts)X +3256(the)X +3374(entries,)X +3628(and)X +3764(produces)X +4074(an)X +4170(out-)X +843 1516(put)N +973(\256le)X +1103(which)X +1327(can)X +1467(be)X +1571(formatted.)X +1951(The)X +2104(index)X +2310(can)X +2450(have)X +2630(up)X +2738(to)X +2828(three)X +3017(levels)X +3232(\(0,)X +3347(1,)X +3435(and)X +3579(2\))X +3674(of)X +3768(subitem)X +4048(nesting.)X +843 1612(The)N +998(way)X +1162(in)X +1254(which)X +1480(words)X +1706(are)X +1835(\257agged)X +2100(for)X +2223(indexing)X +2532(within)X +2765(the)X +2892(main)X +3081(document)X +3426(is)X +3508(speci\256c)X +3782(to)X +3873(the)X +4000(formatter)X +843 1708(used;)N +2 f +1036(makeindex)X +1 f +1404(does)X +2 f +1575(not)X +1 f +1701(automate)X +2019(the)X +2140(process)X +2404(of)X +2494(selecting)X +2802(these)X +2990(words.)X +3249(As)X +3361(the)X +3482(output)X +3709(index)X +3910(is)X +3986(hierarchi-)X +843 1804(cal,)N +2 f +985(makeindex)X +1 f +1356(can)X +1495(be)X +1598(considered)X +1973(complimentary)X +2485(to)X +2574(the)X +2 f +2699(awk)X +1 f +2835(\(1\)-based)X +2 f +3166(make.index)X +1 f +3537(\(1L\))X +3707(system)X +3956(of)X +4050(Bentley)X +843 1900(and)N +997(Kernighan,)X +1394(which)X +1628(is)X +1719(speci\256c)X +2002(to)X +2 f +2102(troff)X +1 f +2246(\(1\),)X +2398(generates)X +2739(non-hierarchical)X +3303(indices,)X +3587(and)X +3740(employs)X +4048(a)X +4121(much)X +843 1996(simpler)N +1104(syntax)X +1334(for)X +1449(indicating)X +1790(index)X +1989(entries.)X +2264(For)X +2396(illustration)X +2763(of)X +2851(use)X +2979(with)X +2 f +3142(troff)X +1 f +3300(and)X +2 f +3437(T)X +3468 2015(E)N +3507 1996(X)N +1 f +3563(,)X +3604(see)X +3728(the)X +3847(section)X +8 s +4090(EXAM-)X +843 2092(PLES)N +10 s +1013(below.)X +843 2226(The)N +995(formats)X +1267(of)X +1361(the)X +1486(input)X +1677(and)X +1820(output)X +2051(\256les)X +2211(are)X +2337(speci\256ed)X +2649(in)X +2738(a)X +2800(style)X +2977(\256le;)X +3127(by)X +3233(default,)X +3502(input)X +3692(is)X +3771(assumed)X +4073(to)X +4161(be)X +4263(a)X +2 f +843 2322(.idx)N +1 f +981(\256le,)X +1123(as)X +1210(generated)X +1543(by)X +1643(L)X +8 s +1664 2308(A)N +10 s +1698 2322(T)N +1734 2341(E)N +1773 2322(X.)N +843 2456(Unless)N +1090(speci\256ed)X +1404(explicitly,)X +1755(the)X +1882(base)X +2054(name)X +2256(of)X +2351(the)X +2477(\256rst)X +2629(input)X +2821(\256le)X +2951(\()X +2 f +2978(idx0)X +1 f +3123(\))X +3178(is)X +3259(used)X +3434(to)X +3524(determine)X +3873(the)X +3999(names)X +4232(of)X +843 2552(other)N +1030(\256les.)X +1225(For)X +1358(each)X +1528(input)X +1714(\256le)X +1838(name)X +2034(speci\256ed,)X +2361(a)X +2419(\256le)X +2543(of)X +2632(that)X +2774(name)X +2970(is)X +3045(sought.)X +3320(If)X +3396(this)X +3533(\256le)X +3657(is)X +3732(not)X +3856(found)X +4064(and)X +4201(the)X +843 2648(\256le)N +972(name)X +1173(has)X +1307(no)X +1413(extension,)X +1766(the)X +1890(extension)X +2 f +2223(.idx)X +1 f +2367(is)X +2446(appended.)X +2820(If)X +2900(no)X +3006(\256le)X +3134(with)X +3302(this)X +3443(name)X +3643(is)X +3722(found,)X +2 f +3955(makeindex)X +1 f +843 2744(aborts.)N +843 2878(For)N +982(important)X +1321(notes)X +1518(on)X +1625(how)X +1790(to)X +1879(select)X +2089(index)X +2294(keywords,)X +2653(see)X +2783(the)X +2908(document)X +3251(by)X +3358(Lamport)X +3661(cited)X +3844(below.)X +4107(As)X +4223(an)X +843 2974(issue)N +1028(separate)X +1317(from)X +1498(selecting)X +1808(index)X +2011(keywords,)X +2368(a)X +2429(systematic)X +2792(mechanism)X +3182(for)X +3301(placing)X +3562(index)X +3765(terms)X +3968(in)X +4055(a)X +4116(docu-)X +843 3070(ment)N +1023(is)X +1096(suggested)X +1432(in)X +2 f +1514(Index)X +1713(Preparation)X +2124(and)X +2264(Processing)X +1 f +2627(,)X +2667(a)X +2723(paper)X +2922(cited)X +3098(below.)X +3 f +9 s +555 3204(OPTIONS)N +10 s +9 f +843 3300(-)N +3 f +887(c)X +1 f +1243(Compress)X +1599(intermediate)X +2036(blanks)X +2281(\(ignoring)X +2614(leading)X +2885(and)X +3036(trailing)X +3302(blanks)X +3546(and)X +3697(tabs\).)X +3928(By)X +4056(default,)X +1243 3396(blanks)N +1472(in)X +1554(the)X +1672(index)X +1870(key)X +2006(are)X +2125(retained.)X +3 f +9 f +843 3530(-)N +3 f +887(g)X +1 f +1243(Employ)X +1523(German)X +1809(word)X +2001(ordering)X +2300(in)X +2389(the)X +2514(index,)X +2739(in)X +2828(accord)X +3070(with)X +3239(rules)X +3422(set)X +3538(forth)X +3721(in)X +3810(DIN)X +3980(5007.)X +4206(By)X +1243 3626(default,)N +2 f +1527(makeindex)X +1 f +1912(employs)X +2224(a)X +2301(word)X +2507(ordering)X +2820(in)X +2923(which)X +3159 0.3750(precedence)AX +3562(is:)X +3677(symbols,)X +4003(numbers,)X +1243 3722(uppercase)N +1604(letters,)X +1859(lowercase)X +2220(letters.)X +2494(The)X +2657(sequence)X +2990(in)X +3090(German)X +3387(word)X +3590(ordering)X +3900(is:)X +4013(symbols,)X +1243 3818(lowercase)N +1593(letters,)X +1837(uppercase)X +2187(letters,)X +2431(numbers.)X +2774(Additionally,)X +3225(this)X +3367(option)X +3598(enables)X +2 f +3866(makeindex)X +1 f +4237(to)X +1243 3914(recognize)N +1586(the)X +1714(German)X +2003(T)X +2039 3933(E)N +2078 3914(X-commands)N +2540({"a,)X +2697("o,)X +2820("u)X +2923(and)X +3069("s})X +3201(as)X +3298({ae,)X +3458(oe,)X +3584(ue)X +3689(and)X +3834(ss})X +3963(during)X +4201(the)X +1243 4010(sorting)N +1500(of)X +1602(the)X +1735(entries.)X +2024(The)X +2184(quote)X +2397(character)X +2728(must)X +2918(be)X +3029(rede\256ned)X +3363(in)X +3460(a)X +3531(style)X +3716(\256le)X +3852(\(for)X +4007(example,)X +1243 4106(rede\256ne)N +1524(quote)X +1724(as)X +1813('+'\).)X +2001(If)X +2077(the)X +2197(quote)X +2397(character)X +2715(is)X +2790(not)X +2914(rede\256ned,)X +2 f +3255(makeindex)X +1 f +3620(will)X +3765(produce)X +4045(an)X +4142(error)X +1243 4202(message)N +1535(and)X +1671(abort.)X +3 f +9 f +843 4336(-)N +3 f +887(i)X +1 f +1243(Take)X +1424(input)X +1608(from)X +2 f +1784(stdin)X +1 f +1946(.)X +2006(When)X +2218(this)X +2353(option)X +2577(is)X +2650(speci\256ed)X +2955(and)X +3 f +9 f +3091(-)X +3 f +3135(o)X +1 f +3195(is)X +3268(not,)X +3410(output)X +3634(is)X +3707(written)X +3954(to)X +2 f +4036(stdout)X +1 f +4238(.)X +3 f +9 f +843 4470(-)N +3 f +887(l)X +1 f +1243(Letter)X +1455(ordering;)X +1769(by)X +1869(default,)X +2132(word)X +2317(ordering)X +2609(is)X +2682(used)X +2849(\(see)X +2999(the)X +8 s +3113(ORDERING)X +10 s +3463(section\).)X +3 f +9 f +843 4604(-)N +3 f +887(o)X +2 f +947(ind)X +1 f +1243(Employ)X +2 f +1528(ind)X +1 f +1662(as)X +1761(the)X +1891(output)X +2127(index)X +2337(\256le.)X +2511(By)X +2636(default,)X +2910(the)X +3039(\256le)X +3172(name)X +3377(is)X +3461(created)X +3725(by)X +3836(appending)X +4201(the)X +1243 4700(extension)N +2 f +1570(.ind)X +1 f +1712(to)X +1794(the)X +1912(base)X +2075(name)X +2269(of)X +2356(the)X +2474(\256rst)X +2618(input)X +2802(\256le)X +2924(\()X +2 f +2951(idx0)X +1 f +3096(\).)X +3 f +9 f +843 4834(-)N +3 f +887(p)X +2 f +951(num)X +1 f +1243(Set)X +1367(the)X +1487(starting)X +1749(page)X +1923(number)X +2190(of)X +2278(the)X +2397(output)X +2622(index)X +2821(\256le)X +2944(to)X +3027(be)X +2 f +3124(num)X +1 f +3283(\(useful)X +3527(when)X +3722(the)X +3841(index)X +4040(\256le)X +4163(is)X +4237(to)X +1243 4930(be)N +1339(formatted)X +1671(separately\).)X +2084(The)X +2229(argument)X +2 f +2552(num)X +1 f +2710(may)X +2868(be)X +2964(numerical)X +3305(or)X +3392(one)X +3528(of)X +3615(the)X +3733(following:)X +2 f +1243 5064(any)N +1 f +1643(The)X +1788(starting)X +2048(page)X +2220(is)X +2293(the)X +2411(last)X +2542(source)X +2772(page)X +2944(number)X +3209(plus)X +3362(1.)X +2 f +1243 5198(odd)N +1 f +1643(The)X +1788(starting)X +2048(page)X +2220(is)X +2293(the)X +2411(\256rst)X +2555(odd)X +2695(page)X +2867(following)X +3198(the)X +3316(last)X +3447(source)X +3677(page)X +3849(number.)X +2 f +1243 5332(even)N +1 f +1643(The)X +1788(starting)X +2048(page)X +2220(is)X +2293(the)X +2411(\256rst)X +2555(even)X +2727(page)X +2899(following)X +3230(the)X +3348(last)X +3479(source)X +3709(page)X +3881(number.)X +1243 5466(The)N +1390(last)X +1523(source)X +1755(page)X +1929(is)X +2003(obtained)X +2300(by)X +2401(searching)X +2730(backward)X +3064(in)X +3147(the)X +3266(log)X +3389(\256le)X +3512(for)X +3627(the)X +3746(\256rst)X +3891(instance)X +4175(of)X +4263(a)X +1243 5562(number)N +1513(included)X +1814(within)X +2043(paired)X +2268(square)X +2502(brackets)X +2794(\()X +3 f +2821([)X +1 f +2848(.)X +2881(.)X +2914(.)X +3 f +(])S +1 f +2961(\).)X +3052(If)X +3130(a)X +3190(page)X +3366(number)X +3635(is)X +3712(missing)X +3984(or)X +4075(the)X +4197(log)X +1243 5658(\256le)N +1370(is)X +1447(not)X +1573(found,)X +1804(no)X +1908(attempt)X +2172(will)X +2320(be)X +2420(made)X +2618(to)X +2704(set)X +2817(the)X +2939(starting)X +3203(page)X +3379(number.)X +3688(The)X +3837(source)X +4071(log)X +4197(\256le)X +1243 5754(name)N +1448(is)X +1532(determined)X +1924(by)X +2035(appending)X +2400(the)X +2529(extension)X +2 f +2867(.log)X +1 f +3020(to)X +3113(the)X +3242(base)X +3416(name)X +3621(of)X +3719(the)X +3848(\256rst)X +4003(input)X +4197(\256le)X +1243 5850(\()N +2 f +1270(idx0)X +1 f +1415(\).)X +555 6234(7th)N +677(Edition)X +2121(10)X +2221(December)X +2572(1991)X +4259(1)X + +2 p +%%Trailer +xt + +xs diff --git a/indexing/makeindex/doc/makeindex.tex b/indexing/makeindex/doc/makeindex.tex new file mode 100644 index 0000000000..960ac29509 --- /dev/null +++ b/indexing/makeindex/doc/makeindex.tex @@ -0,0 +1,475 @@ +% makeindex.tex -- released 17 February 1987 +% Copyright(c) 1987 by Leslie Lamport +% for LaTeX version 2.09 +% +\documentstyle[11pt]{article} + +%&v&\verb|#|& +%&i&\verb|\index{#}|& +%&t&{\tt #}& +\newcommand{\MakeIndex}{{\it MakeIndex\/}} +\newcommand{\fn}{} +\newcommand{\ff} + + +% Definition of the iexample environment and \sindex command. +% They are used as follows: +% \begin{iexample} +% Page 7 & \verb|\index{foo}|\\ +% Page 22 & \verb|\index{bar}| +% \sindex +% bar, 22 \\ +% foo, 7 +% \end{iexample} +\newenvironment{iexample}{\begin{quote} + \begin{tabular}[t]{@{}ll||@{\hspace{1em}}}}{\end{tabbing}\end{minipage} + \end{quote}} +\newcommand{\sindex}{\end{tabular}\hspace{1em}\begin{minipage}[t]{\textwidth} + \begin{tabbing}} + +\newcommand{\sitem}{\hspace*{20pt}} +\newcommand{\ssitem}{\hspace*{30pt}} + + +\title{\MakeIndex: An Index Processor For \LaTeX} + +\author{Leslie Lamport} +\date{17 February 1987} +\begin{document} +\maketitle + +\section{How to Use \MakeIndex} + +\MakeIndex\ is a program for +making an index in a document generated with \LaTeX. The first step in +producing the index is to put the necessary \verb|\index| commands in +your document, as described in the next section. Here, I describe how +to generate the index after the \verb|\index| commands are in place. + +Let's suppose that the root file of your document is {\tt myfile.tex}. +You must make the following changes to your document: +\begin{itemize} + +\item Add the {\tt makeidx} document-style option to the list of +options in the \verb|\documentstyle| command. (See page 21 of the +\LaTeX\ manual.) + +\item Put a \verb|\makeindex| command in the preamble (between the + \linebreak%%%%% +\verb|\documentstyle| and \verb|\begin{document}| commands). + +\item Put a \verb|\printindex| command where you want the index to +appear---usually at the end, right before the \verb|\end{document}| +command. +\end{itemize} +You then run \LaTeX\ on your entire document, causing it to +generate the file {\tt myfile.idx}, which I will call the {\tt idx} file. +Next, run the \MakeIndex\ program by +typing the following Unix command: +\begin{quote} + {\tt makeindex myfile.idx} +\end{quote} +This produces the file {\tt myfile.ind}, which I will call the {\tt +ind} file. If \MakeIndex\ generated no error messages, you can now rerun +\LaTeX\ on your document and the index will appear. (You can remove +the \verb|\makeindex| command first so the {\tt idx} file is not +regenerated.) If there were error messages, see +Section~\ref{sec:errors}. + +By reading the index, you may discover additional mistakes. These should be +corrected by changing the appropriate \verb|\index| commands in the +document and regenerating the {\tt ind} file. If there are +problems that cannot be corrected in this way, you can always edit +the {\tt ind} file directly. However, such editing is to be +avoided because it must be repeated every time you generate a new +version of the index. + + +\section{How to Generate Index Entries} + +\subsection{When, Why, What, and How to Index} + +It's tempting to generate the index as you write the document. Resist +the temptation. It is virtually impossible to obtain any consistency +in an index that is generated in this way. + +An index is there to help the reader find what he's looking for. With +this in mind, common sense can help in figuring out what should be in +the index and how it should be organized. Since it's often hard to +distinguish common sense from equally common nonsense, professional +advice is useful. Many style guides discuss indexing; the pamphlet +{\em Indexing Your Book\/} by Sina Spiker (The University of Wisconsin +Press, 1954) is, according to its subtitle, ``A Practical +Guide for Authors''. + +Unfortunately, these guides to indexing seem to have been written when +high tech meant using a ball-point pen instead of a quill, so their +advice on the mechanics of creating an index revolve around how to +stack your $3\times 5$ index cards. You'll have to figure out your own +method of using the computer to lighten the chore. An alphabetical +list of every word in your document, with duplicates removed, is not a +bad place to start. If your system has Howard Trickey's {\tt delatex} +program, then the following Unix command generates such a list from the +file {\tt myfile.tex} and puts it on the file {\tt foo}: +\begin{quote} +\tt delatex myfile.tex | sort -uf > foo +\end{quote} + +The computer is only a tool; it can't write the index for you. It may +be easy to choose which words are important and mechanically generate +an index citing every occurrence of those words, but the resulting +index will not be as useful to the reader as one prepared with more +care. + + + + +\subsection{The Basics} + +Each \verb|\index| command causes \LaTeX\ to write an entry on the {\tt +idx} file. The following example shows some simple +\verb|\index| commands and the index entries that they produce. The +page number refers to the page containing the text where the +\verb|\index| command appears.\footnote{To avoid any ambiguity if a +page break occurs right at an {\tt \symbol{'134}index} command, it's a +good idea to attach the command to a word instead of putting it between +words.} +\begin{iexample} +Page ii & \verb|\index{Alpha}| \\ +Page viii: & \verb|\index{alpha}| \\ +Page ix: & \verb|\index{alpha}| \\ + & \verb|\index{Alphabet}| \\ +Page 22: & \verb|\index{alpha}| \\ + & \verb|\index{alphas}| \\ +Page 23: & \verb|\index{alphabet}| \\ + & \verb|\index{alphabet}| \\ +Page 24: & \verb|\index{alpha bet}| +\sindex +Alpha, ii \\ +alpha, viii, ix, 22 \\ +alpha bet, 24\\ +Alphabet, ix\\ +alphabet, 23\\ +alphas, 22 +\end{iexample} +Note that the duplicate \verb|\index{alphabet}| commands on +page 23 produce only one ``23'' in the index. + + +To produce a subentry, the argument of the \verb|\index| +command should contain both the main entry and the subentry, separated +by a \verb|!| character. +\begin{iexample} +Page 7: & \verb|\index{gnat!size of}| \\ +Page 32: & \verb|\index{gnat}| \\ +Page 35: & \verb|\index{gnat!anatomy}| \\ + & \verb|\index{gnus!good}| \\ +Page 38: & \verb|\index{gnus!bad}| \\ + & +\sindex +gnat, 32 \\ +\sitem anatomy, 35 \\ +\sitem size of, 7\\ +gnus \\ +\sitem bad, 38\\ +\sitem good, 35 +\end{iexample} +You can also have subsubentries. +\begin{iexample} +Page 8: & \verb|\index{bites!animal!gnats}| \\ +Page 10: & \verb|\index{bites!animal!gnus}| \\ +Page 12 : & \verb|\index{bites!vegetable}| \\ + & \\ + & +\sindex +bites \\ +\sitem animal \\ +\ssitem gnats, 8 \\ +\ssitem gnus, 10 \\ +\sitem vegetable, 12 +\end{iexample} +\LaTeX\ and \MakeIndex\ support only three levels of indexing; you +can't have subsubsubentries. + + +To specify a page range, put an \verb/\index{...|(}/ +command at the beginning of the range and an \verb/\index{...|)}/ +command at the end of the range. +\begin{iexample} +Page vi: & \verb/\index{gnat|(}/ \\ +Page x: & \verb/\index{gnat|)}/ \\ +Page 22: & \verb|\index{gnat}| \\ + & \verb/\index{gnus!bad|(}/ \\ + & \verb/\index{gnus!bad|)}/ \\ +Page 28: & \verb/\index{gnus!good|(}/ \\ +Page 30: & \verb|\index{gnus!good}| \\ +Page 32: & \verb/\index{gnus!good|)}/ +\sindex +gnat, vi--x, 22 \\ +gnus \\ +\sitem bad, 22\\ +\sitem good, 28--32 +\end{iexample} +Note that \MakeIndex\ does the right thing when both ends of the range +fall on the same page.\footnote{The use of ``28ff.'' rather than +``28--32'' is frowned upon by the experts.} + +Sometimes, you want to add a cross-reference with no page +number. This is done as follows; +\begin{iexample} +Page 2: & \verb|\index{at}| \\ +Page 2: & \verb/\index{at!bat|see{bat, at}}/ +\sindex +at, 2 \\ +\sitem bat, {\em see\/} bat, at +\end{iexample} +Since the ``see'' entry does not print any page number, it doesn't +matter where the \verb/\index{...|see{...}}/ command goes, so +long as it follows the \verb|\begin{document}| command. You +might want to put all such cross-referencing commands in one place. + + +If you specify an entry of the form $\sigma$\verb|@|$\tau$, the string +$\sigma$ determines the alphabetical position of the entry, while the +string $\tau$ produces the text of the entry. +\begin{iexample} +Page 44: & \verb|\index{twenty}| \\ +Page 46: & \verb|\index{twenty-one}| \\ +Page 55: & \verb|\index{twenty@xx}| +\sindex +twenty, 44 \\ +xx, 55 \\ +twenty-one, 46 +\end{iexample} +This feature is useful because the argument of the \verb|\index| +command provides the actual input string that \LaTeX\ uses to generate +the index entry. In the following example, the input \verb|$\alpha$| +produces the symbol $\alpha$, +\begin{iexample} +Page 12: & \verb|\index{alphas}| \\ +Page 13: & \verb|\index{alpha}| \\ +Page 14: & \verb|\index{alpha@$\alpha$}| +\sindex +alpha, 13 \\ +$\alpha$, 14 \\ +alphas, 12 +\end{iexample} +Similarly, the command \verb|\index{gnu@{\bf gnu}}| produces +a boldface {\bf gnu} index entry. + +In some indexes, certain page numbers are specially formatted---for +example, an italic page number may indicate the primary reference, and +an {\em n\/} after a page number may denote that the item appears in a +footnote on that page. \MakeIndex\ makes it easy to format an +individual page number any way you want. For any string of characters +$\sigma$, the command \verb/\index{...|/$\sigma$\verb|}| produces a +page number of the form \verb|\|$\sigma$\verb|{|$n$\verb|}|. +Similarly, the command \verb/\index{...|(/$\sigma$\verb|}| may produce +a page number of the form \verb|\|$\sigma$\verb|{|$n$--$m$\verb|}|. +Thus, suppose the document contains the following command definitions: +\begin{quote} +\verb|\newcommand{\ii}[1]{{\it #1}}| \\ +\verb|\newcommand{\nn}[1]{#1n}| +\end{quote} +We could then have: +\begin{iexample} +Page 3: & \verb/\index{gnat|ii}/ \\ +Page 4: & \verb/\index{gnat|nn}/ \\ +Page 5: & \verb/\index{gnu}/ \\ +Page 44: & \verb/\index{gnu|(ii}/ \\ +Page 46: & \verb/\index{gnu|)}/ +\sindex +gnat, {\em 3}, 4n \\ +gnu, 5, {\em 44--46} +\end{iexample} +The ``see'' option is a special case of this facility, where the +\verb|\see| command is predefined by the {\tt makeidx} document-style +option. + + +\subsection{The Fine Print} + +Commands in an index entry are expanded when the index is typeset, +not when the {\tt idx} file is written. Hence, the command +\verb|\index{\gnu}| produces an entry that is alphabetized by +\verb|\gnu|, regardless of how the \verb|\gnu| command is defined. + +Recall that special characters like \verb|\| may appear in the argument +of an \verb|\index| command only if that command is not itself +contained in the argument of another command. This is most likely to +be a problem when indexing items in a footnote. Even in this case, +robust commands can be placed in the ``\verb|@|'' part of an entry, as +in \verb|\index{gnu@{\it gnu}}|, and fragile commands can be used +if protected with the \verb|\protect| command.\footnote{In +versions of \LaTeX\ released before 3 February 1987, you must +use the {\tt\symbol{'134}string} command instead of +{\tt\symbol{'134}protect}.} + +Remember that the argument of an \verb|\index| command must always have +matching braces, where the brace in a \verb|\{| or \verb|\}| command +counts. + +\MakeIndex\ assumes that all page numbers are either arabic or lower-case +roman numerals; it assumes that pages numbered with roman numerals +precede those numbered with arabic numerals. + +To put a \verb|!|, \verb|@|, or \verb/|/ character in an index entry, +{\em quote\/} it by preceding the character with a \verb|"|. More +precisely, any a character is said to be quoted if it follows an +unquoted \verb|"| that is not part of a \verb|\"| command. A quoted +\verb|!|, \verb|@|, or \verb/|/ character is treated like an +ordinary character rather than having its usual meaning. The +\verb|"| preceding a quoted character is deleted before the +entries are alphabetized. +\begin{iexample} +Page 2: & \verb|\index{exclaim ("!)}| \\ +Page 3: & \verb|\index{exclaim ("!)!loudly}| \\ +Page 4: & \verb|\index{fur@f\"{u}r}| \\ +Page 5: & \verb|\index{quote (\verb+""+)}| +\sindex +exclaim (!), 2 \\ +\sitem loudly, 3\\ +f\"{u}r, 4\\ +quote (\verb+""+), 5 +\end{iexample} + + +\MakeIndex\ regards spaces as ordinary characters when alphabetizing the +entries and deciding whether two entries are the same. Thus, letting +``\verb*| |'' denote a space character, the commands +\verb*|\index{gnu}|, \verb*|\index{ gnu}|, and \verb*|\index{gnu }| +produce three separate entries, the first appearing near the beginning +of the index, since \verb*| | comes before any letter in \MakeIndex's +``alphabetical'' order. All three entries look the same when +printed, since \LaTeX\ ignores extra spaces in the input. Similarly, + \verb*|\index{a space}| and \verb*|\index{a space}| produce two +different entries that look the same when printed. Do not +split the argument of an \verb|\index| command across lines in the +input file. + + + +\section{Error Messages} \label{sec:errors} + +\MakeIndex\ types out on the terminal the number of lines read and +written and how many errors were found. Message to identify the error +are written on a file with extension {\tt ilg}. There are two phases +in which \MakeIndex\ can produce error messages: when it is reading the +{\tt idx} file, and when it is writing the {\tt ind} file. Each error +message prints the nature of the error followed by a line number, +identifying where in the file the error occurs. In the reading phase, +the line number refers to the {\tt idx} file; in the writing phase, it +refers to the {\tt ind} file. + +\subsection{Errors in Reading Phase} + +\subsubsection*{\tt Extra `!' at position ...} + +The \verb|\index| command's argument has more than two unquoted +\verb|!| characters. Perhaps some of them should be quoted. + +\subsubsection*{\tt Extra `@' at position ...} + +The \verb|\index| command argument has two or more unquoted \verb|@| +characters with no intervening \verb|!|. Perhaps one of the \verb|@| +characters should be quoted. + +\subsubsection*{\tt Extra `|' at position ...} + +The \verb|\index| command's argument has more than one unquoted \verb|!| +characters. Perhaps the extras should be quoted. + +\subsubsection*{\tt Illegal null field} + +The \verb|\index| command argument doesn't make sense because some +string is null that shouldn't be. The command \verb|\index{!big}| will +produce this error, since it specifies a subentry ``big'' with no +entry. Similarly, the command \verb|\index{@big}| is incorrect because +it specifies a null string for alphabetizing. + +%\subsubsection*{\tt No \symbol{'134}indexentry} +% +%Each line of an {\tt idx} file written by \LaTeX\ should contain an +%\verb|\indexentry| command. \MakeIndex\ has found a line in the {\tt idx} +%file that does not contain an \verb|\indexentry| command. The {\tt +%idx} file has probably been corrupted. +% +%\subsubsection*{\tt Missing \symbol{'173}} +% +%\MakeIndex\ believes that the braces in the argument of the \verb|\index| +%command are not properly matched. Since \LaTeX\ must +%have thought that the braces were properly matched, the problem +%is probably due to a corrupted {\tt idx} file. +% +%\subsubsection*{\tt Missing \symbol{'175}} +% +%See ``{\tt Missing \symbol{'173}}'' error. + +\subsubsection*{\tt Argument ... too long (max 1024).} + +Your document contained an \verb|\index| command with a very long +argument. You probably forgot the right brace that was supposed +to delimit the argument. + +\subsubsection*{Other errors} + +\MakeIndex\ can produce a variety of other error messages indicating +that something is seriously wrong with the {\tt idx} file. If you +get one, it probably means that the {\tt idx} file was corrupted in +some way. If \LaTeX\ did not generate any errors when it created +the {\tt idx} file, then it is highly unlikely to have produced +a bad {\tt idx} file. If it did, you'll have to examine the +{\tt idx} file to figure out what went wrong. + + +\subsection{Errors in Writing Phase} + +\subsubsection*{\tt Unmatched range opening operator} + +An \verb/\index{...|(}/ command was not followed by a matching + \linebreak%%%%% +\verb/\index{...|)}/ command. The ``\verb|...|'' in the two +commands must be completely identical. + + +\subsubsection*{\tt Unmatched range closing operator } + +An \verb/\index{...|(}/ command was not preceded by a matching + \linebreak%%%%% +\verb/\index{...|)}/ command. + +\subsubsection*{\tt Extra range opening operator } + +Two \verb/\index{...|(}/ commands appear in the document with no intervening +\verb/\index{...|)}/ command. + + + +\subsubsection*{\tt Inconsistent page encapsulator ... within range} + +\MakeIndex\ has been instructed to include a page range for an entry +and a single page number within that range that is formatted +differently---for example, by having a +\verb+\index{gnu|ii}+ command between a \verb+\index{gnu|(}+ +and a \verb+\index{gnu|)}+ command. + + +\subsubsection*{\tt Conflicting entries} + +\MakeIndex\ thinks it has been instructed to print the same page number +twice in two different ways---for example, by the commands +\verb|\index{gnu}| and \verb/\index{gnu|(see{...}}/ appearing on the +same page. + + + +\section*{Acknowledgements} + +\MakeIndex\ is a C program written by Pehong Chen, with a little +advice from me. It was inspired by a program written by Mike Urban, +which was based on a program written by Marshall Rose. Perhaps someday +someone will rewrite \MakeIndex\ in Web, making it available to all +\LaTeX\ users. + +\end{document} + diff --git a/indexing/makeindex/doc/makeindex.vms b/indexing/makeindex/doc/makeindex.vms new file mode 100644 index 0000000000..50ff4d7175 --- /dev/null +++ b/indexing/makeindex/doc/makeindex.vms @@ -0,0 +1,812 @@ +1 MAKEINDEX + +2 NAME + makeindex - a general purpose, formatter-independent index + processor + +2 SYNOPSIS + makeindex [-c] [-g] [-i] [-l] [-o ind] [-p num] [-q] [-r] + [-s sfile] [-t log] [idx0 idx1 idx2...] + +2 DESCRIPTION + The program makeindex is a general purpose hierarchical + index generator; it accepts one or more input files (often + produced by a text formatter such as TeX (tex(1L)) or + troff(1), sorts the entries, and produces an output file + which can be formatted. The index can have up to three lev- + els (0, 1, and 2) of subitem nesting. The way in which + words are flagged for indexing within the main document is + specific to the formatter used; makeindex does not automate + the process of selecting these words. As the output index + is hierarchical, makeindex can be considered complimentary + to the awk(1)-based make.index(1L) system of Bentley and + Kernighan, which is specific to troff(1), generates non- + hierarchical indices, and employs a much simpler syntax for + indicating index entries. For illustration of use with + troff and TeX, see the section EXAMPLES below. + + The formats of the input and output files are specified in a + style file; by default, input is assumed to be a .idx file, + as generated by LaTeX. + + Unless specified explicitly, the base name of the first + input file (idx0) is used to determine the names of other + files. For each input file name specified, a file of that + name is sought. If this file is not found and the file name + has no extension, the extension .idx is appended. If no + file with this name is found, makeindex aborts. + + For important notes on how to select index keywords, see the + document by Lamport cited below. As an issue separate from + selecting index keywords, a systematic mechanism for placing + index terms in a document is suggested in Index Preparation + and Processing, a paper cited below. + +2 OPTIONS + -c Compress intermediate blanks (ignoring leading and + trailing blanks and tabs). By default, blanks in + the index key are retained. + + -g Employ German word ordering in the index, in + accord with rules set forth in DIN 5007. By + default, makeindex employs a word ordering in + which precedence is: symbols, numbers, uppercase + letters, lowercase letters. The sequence in + + German word ordering is: symbols, lowercase + letters, uppercase letters, numbers. Addition- + ally, this option enables makeindex to recognize + the German TeX-commands {"a, "o, "u and "s} as + {ae, oe, ue and ss} during the sorting of the + entries. The quote character must be redefined in + a style file (for example, redefine quote as '+'). + If the quote character is not redefined, makeindex + will produce an error message and abort. + + -i Take input from stdin. When this option is speci- + fied and -o is not, output is written to stdout. + + -l Letter ordering; by default, word ordering is used + (see the ORDERING section). + + -o ind Employ ind as the output index file. By default, + the file name is created by appending the exten- + sion .ind to the base name of the first input file + (idx0). + + -p num Set the starting page number of the output index + file to be num (useful when the index file is to + be formatted separately). The argument num may be + numerical or one of the following: + + any The starting page is the last source + page number plus 1. + + odd The starting page is the first odd page + following the last source page number. + + even The starting page is the first even page + following the last source page number. + + The last source page is obtained by searching + backward in the log file for the first instance of + a number included within paired square brackets + ([...]). If a page number is missing or the log + file is not found, no attempt will be made to set + the starting page number. The source log file + name is determined by appending the extension .log + to the base name of the first input file (idx0). + + -q Quiet mode; send no messages to stderr. By + default, progress and error messages are sent to + stderr as well as to the transcript file. + + -r Disable implicit page range formation; page ranges + must be created by using explicit range operators; + see SPECIAL EFFECTS below. By default, three or + more successive pages are automatically + + abbreviated as a range (e.g. 1-5). + + -s sty Employ sty as the style file (no default). The + environment variable INDEXSTYLE defines the path + where the style file should be found. + + -t log Employ log as the transcript file. By default, + the file name is created by appending the exten- + sion .ilg to the base name of the first input file + (idx0). + +2 STYLE FILE + The style file informs makeindex about the format of the + .idx input files and the intended format of the final output + file; examples appear below. This file can reside anywhere + in the path defined by the environment variable INDEXSTYLE. + The style file contains a list of <specifier, attribute> + pairs. There are two types of specifiers: input and output. + Pairs do not have to appear in any particular order. A line + begun by `%' is a comment. In the following list of specif- + iers and arguments, <string> is an arbitrary string delim- + ited by double quotes ("..."), <char> is a single letter + embraced by single quotes ('...'), and <number> is a nonne- + gative integer. The maximum length of a <string> is 2048. + A literal backslash or quote must be escaped (by a + backslash). Anything not specified in the style file will + be assigned a default value, which is shown at the head of + the rightmost column. + +3 INPUT STYLE SPECIFIERS + actual <char> '@' + Symbol indicating that the next + entry is to appear in the output + file. + + arg_close <char> '}' + Closing delimiter for the index + entry argument. + + arg_open <char> '{' + Opening delimiter for the index + entry argument. + + encap <char> '|' + Symbol indicating that the rest of + the argument list is to be used as + the encapsulating command for the + page number. + + escape <char> '\\' + Symbol which escapes the following + letter, unless its preceding letter + + is escape. Note: quote is used to + escape the letter which immediately + follows it, but if it is preceded + by escape, it is treated as a ordi- + nary character. These two symbols + must be distinct. + + keyword <string> "\\indexentry" + Command which tells makeindex that + its argument is an index entry. + + level <char> '!' + Delimiter denoting a new level of + subitem. + + quote <char> '"' + Note: quote is used to escape the + letter which immediately follows + it, but if it is preceded by + escape, it is treated as a ordinary + character. These two symbols must + be distinct. + + range_close <char> ')' + Closing delimiter indicating the + end of an explicit page range. + + range_open <char> '(' + Opening delimiter indicating the + beginning of an explicit page + range. + +3 OUTPUT STYLE SPECIFIERS + preamble <string> "\\begin{theindex}\n" + Preamble of output file. + + postamble <string> "\n\n\\end{theindex}\n" + Postamble of output file. + + setpage_prefix <string> "\n \\setcounter{page}{" + Prefix of command which sets the + starting page number. + + setpage_suffix <string> "}\n" + Suffix of command which sets the + starting page number. + + group_skip <string> "\n\n \\indexspace\n" + Vertical space to be inserted + before a new group begins. + + headings_flag <string> 0 + + Flag indicating treatment of new + group headers, which are inserted + when before a new group (symbols, + numbers, and the 26 letters): posi- + tive values cause an uppercase + letter to be inserted between pre- + fix and suffix, and negative values + cause a lowercase letter to be + inserted (default is 0, which pro- + duces no header). + + heading_prefix <string> "" + Header prefix to be inserted before + a new letter begins. + + symhead_positive <string> + "Symbols" + Heading for symbols to be inserted + if headings_flag is positive. + + symhead_negative <string> + "symbols" + Heading for symbols to be inserted + if headings_flag is negative. + + numhead_positive <string> + "Numbers" + Heading for numbers to be inserted + if headings_flag is positive. + + numhead_negative <string> + "numbers" + Heading for numbers to be inserted + if headings_flag is negative. + + item_0 <string> "\n \\item " + Command to be inserted between two + primary (level 0) items. + + item_1 <string> "\n \\subitem " + Command to be inserted between two + secondary (level 1) items. + + item_2 <string> "\n \\subsubitem " + Command to be inserted between two + level 2 items. + + item_01 <string> "\n \\subitem " + Command to be inserted between a + level 0 item and a level 1 item. + + item_x1 <string> "\n \\subitem " + + Command to be inserted between a + level 0 item and a level 1 item, + where the level 0 item does not + have associated page numbers. + + item_12 <string> "\n \\subsubitem " + Command to be inserted between a + level 1 item and a level 2 item. + + item_x2 <string> "\n \\subsubitem " + Command to be inserted between a + level 1 item and a level 2 item, + where the level 1 item does not + have associated page numbers. + + delim_0 <string> ", " + Delimiter to be inserted between a + level 0 key and its first page + number (default: comma followed by + a blank). + + delim_1 <string> ", " + Delimiter to be inserted between a + level 1 key and its first page + number (default: comma followed by + a blank). + + delim_2 <string> ", " + Delimiter to be inserted between a + level 2 key and its first page + number (default: comma followed by + a blank). + + delim_n <string> ", " + Delimiter to be inserted between + two page numbers for the same key + in any level (default: comma fol- + lowed by a blank). + + delim_r <string> "--" + Delimiter to be inserted between + the starting and ending page + numbers of a range. + + delim_t <string> "" + Delimiter to be inserted at the end + of a page list. This delimiter has + no effect on entries which have no + associated page list. + + encap_prefix <string> "\\" + First part of prefix for the + + command which encapsulates the page + number. + + encap_infix <string> "{" + Second part of prefix for the com- + mand which encapsulates the page + number. + + encap_suffix <string> "}". + Suffix for the command which encap- + sulates the page number. + + line_max <number> 72 + Maximum length of a line in the + output, beyond which a line wraps. + + indent_space <string> "\t\t" + Space to be inserted in front of a + wrapped line (default: two tabs). + + indent_length <number> 16 + Length of indent_space (default: + 16, equivalent to 2 tabs). + +2 EXAMPLES +3 TeX EXAMPLE + The following example shows a style file called book.ist, + which defines an index for a book which can be formatted + independently of the main source: + + preamble + "\\documentstyle[12pt]{book} + \\begin{document} + \\begin{theindex} + {\\small\n" + postamble + "\n\n} + \\end{theindex} + \\end{document}\n" + + Assuming that a particular book style requires the index (as + well as any chapters) to start from an odd page number, and + that the input file is named foo.idx, the following command + line produces output in file footmp.ind: + + makeindex -s book.ist -o footmp.ind -p odd foo + + Here a non-default output file name is used to avoid + clobbering the output for the book itself (presumably + foo.dvi, which would have been the default name for the + index output file!). + +3 TROFF EXAMPLE + A sample control file for creating an index, which we will + assume resides in the file sample.ist: + + keyword "IX:" + preamble + ".\\\" start of index output + \".\\\" enter two column mode + .2C + .SH + .ce + INDEX + .XS + INDEX + .XE + .R + .ps 9p + .vs 11p + .sp + .de I1 + .ti 0.25i + .. + .de I2 + .ti 0.5i + .." + postamble "\n.\\\" end of index output" + setpage_prefix "\n.nr % " + setpage_suffix "" + group_skip "\n.sp 1.0" + headings_flag 1 + heading_prefix "\n.IS\n" + heading_suffix "\n.IE" + item_0 "\n.br\n" + item_1 "\n.I1\n" + item_2 "\n.I2\n" + item_01 "\n.I1\n" + item_x1 "\n.I1\n" + item_12 "\n.I2\n" + item_x2 "\n.I2\n" + delim_0 ", " + delim_1 ", " + delim_2 ", " + delim_r "-" + delim_t "." + encap_prefix "\\fB" + encap_infix "" + encap_suffix "\\fP" + indent_space "" + indent_length 0 + + The local macro package may require modification, as in this + example of an extension to the -ms macros (note that at some + + sites, this macro should replace a pre-existing macro of the + same name): + + . + .de IX + .ie '\\n(.z'' .tm IX: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 {\\n(PN} + .el \\!.IX \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 {\\n(PN} + .. + + (note that the string {\\n(PN} is separated from the rest of + the line by a tab. If your local macro package does not + contain this extension, just include those lines at the + beginning of your file. Here is a simple troff(1) input + file, which we will assume is named sample.txt: + + This is a sample file to test the \fImakeindex\fP(1L) + program, and see + .IX {indexing!programs!C language} + .IX {makeindex@\fImakeindex\fP(1L)} + .bp + .rs + .IX {Knuth} + .IX {typesetting!computer-aided} + how well it functions in the \fItroff\fP(1) environment. + + Note that index entries are indicated by the .IX macro, + which causes the following text to be written to stdout + along with the current page number. + +3 CREATING THE INDEX FILE IN THE BOURNE SHELL + To create an input file for makeindex, in the Bourne shell + environment, do the equivalent at your site of the command: + + psroff -ms -Tpsc -t sample.txt > /dev/null 2> sample.tmp + + Some sites will require ditroff instead of psroff. To + filter out any genuine error messages, invoke grep(1): + + grep '^IX: ' sample.tmp > sample.idx + +3 CREATING THE INDEX FILE USING UCSF ENHANCED TROFF/TRANSCRIPT + + With UCSF Enhanced troff/TRANSCRIPT, the -I option of + psroff(1L) can produce both formatter output and an index + file: + + psroff -ms -I sample.inp -Tpsc sample.txt + + If it is wished to suppress the formatter output: + + psroff -ms -I sample.inp -Tpsc -t sample.txt > /dev/null + +3 COMPLETING THE INDEX + Any of the above procedures leaves the input for makeindex + in sample.inp. The next step is to invoke makeindex: + + makeindex -s sample.ist sample.idx + + This leaves troff(1)-ready output in the file sample.ind. + +2 ORDERING + By default, makeindex assumes word ordering; if the -l + option is in effect, letter ordering is used. In word ord- + ering, a blank precedes any letter in the alphabet, whereas + in letter ordering, it does not count at all. This is + illustrated by the following example: + + word order letter order + sea lion seal + seal sea lion + + Numbers are always sorted in numeric order. For instance, + + 9 (nine), 123 + 10 (ten), see Derek, Bo + + Letters are first sorted without regard to case; when words + are identical, the uppercase version precedes its lowercase + counterpart. + + A special symbol is defined here to be any character not + appearing in the union of digits and the English alphabetic + characters. Patterns starting with special symbols precede + numbers, which precede patterns starting with letters. As a + special case, a string starting with a digit but mixed with + non-digits is considered to be a pattern starting with a + special character. + +2 SPECIAL EFFECTS + Entries such as + + \indexentry{alpha}{1} + \indexentry{alpha!beta}{3} + \indexentry{alpha!beta!gamma}{10} + + in the input file will be converted to + + \item alpha, 1 + \subitem beta, 3 + \subsubitem gamma, 10 + + in the output index file. Notice that the level symbol + (`!') is used above to delimit hierarchical levels. + + It is possible to make an item appear in a designated form + by using the actual (`@') operator. For instance, + + \indexentry{alpha@{\it alpha\/}}{1} + + will become + + \item {\it alpha\/}, 1 + + after processing. The pattern preceding `@' is used as sort + key, whereas the one following it is written to the output + file. Note that two appearances of the same key, one with + and one without the actual operator, are regarded as dis- + tinct entries. + + The item, subitem, and subsubitem fields may have individual + sort keys: + + \indexentry{aa@{\it aa\/}!bb@{\it bb\/}!cc@{\it cc\/}}{1} + + This will be converted to + + \item {\it aa}, 1 + \subitem {\it bb}, 3 + \subsubitem {\it cc}, 10 + + It is possible to encapsulate a page number with a desig- + nated command using the encap (`|') operator: + + \indexentry{alpha|bold}{1} + + will be converted to + + \item alpha, \bold{1} + + where, with a suitable definition for TeX, \bold{n} will + expand to {\bf n}. In this example, the three output attri- + butes associated with page encapsulation encap_prefix, + encap_infix, and encap_suffix, correspond to backslash, left + brace, and right brace, respectively. This mechanism allows + page numbers to be set in different fonts. For example, the + page where the definition of a keyword appears can be in one + font, the location of a primary example can be in another + font, and other appearances in yet a third font. + + The encap operator can also be used to create cross refer- + ences in the index: + + \indexentry{alpha|see{beta}}{1} + + will become + + \item alpha, \see{beta}{1} + + in the output file, where + + \see{beta}{1} + + will expand to + + {\it see\/} beta + + Note that in a cross reference like this the page number + disappears. + + A pair of encap concatenated with range_open (`|(') and + range_close (`|)') creates an explicit page range: + + \indexentry{alpha|(}{1} + \indexentry{alpha|)}{5} + + will become + + \item alpha, 1-5 + + Intermediate pages indexed by the same key will be merged + into the range implicitly. This is especially useful when + an entire section about a particular subject is to be + indexed, in which case only the range opening and closing + operators need to be inserted at the beginning and end of + the section. Explicit page range formation can also include + an extra command to set the page range in a designated font: + + \indexentry{alpha|(bold}{1} + \indexentry{alpha|)}{5} + + will become + + \item alpha, \bold{1--5} + + Several potential problems are worth mentioning. First, + entries like + + \indexentry{alpha|(}{1} + \indexentry{alpha|bold}{3} + \indexentry{alpha|)}{5} + + will be interpreted as + + \item alpha, \bold{3}, 1--5 + + but with a warning message in the transcript about + encountering an inconsistent page encapsulator. An explicit + range beginning in a Roman page number and ending in Arabic + + is also considered an error. In this instance, (if possi- + ble) the range is broken into two subranges, one in Roman + and the other in Arabic. For instance, + + \indexentry{alpha|(}{i} + \indexentry{alpha}{iv} + \indexentry{alpha}{3} + \indexentry{alpha|)}{7} + + will be turned into + + \item alpha, i--iv, 3--7 + + with a warning message in the transcript file complaining + about an illegal range formation. + + Finally, every special symbol mentioned in this section may + be escaped by the quote operator (`"'). Thus + + \indexentry{alpha"@beta}{1} + + will actually become + + \item alpha@beta, 1 + + as a result of executing makeindex. The quoting power of + quote is eliminated if it is immediately preceded by escape + (`\'). For example, + + \indexentry{f\"ur}{1} + + becomes + + \item f\"ur, 1 + + which represents an umlaut-accented `u' to the TeX family of + processors. + + From version 2.11 of makeindex, the quote operator may quote + any character in the range 1 ... 255. Character 0 is + excluded because it is used internally in the makeindex + source code as a string terminator. With this change, sort + keys can be created for all eight-bit characters except 0. + The sorting order is + + punctuation characters (in ASCII order), + digits, + control characters (1 ... 31), + space (32), + letters (ignoring case), + characters 127 ... 255. + + Here is an example showing the indexing of all printable + ASCII characters other than letters and digits, assuming the + default TeX format. For convenience, the page number refer- + ences are the corresponding ASCII ordinal values. + + \indexentry{" @" (space)}{32} + \indexentry{"!@"! (exclamation point)}{33} + \indexentry{""@"" (quotation mark)}{34} + \indexentry{"#@"\# (sharp sign)}{35} + \indexentry{"$@"\$ (dollar sign)}{36} + \indexentry{"%@"\% (percent sign)}{37} + \indexentry{"&@"\& (ampersand)}{38} + \indexentry{"<@"$<$ (left angle bracket)}{60} + \indexentry{"=@"= (equals)}{61} + \indexentry{">@"$>$ (right angle bracket)}{62} + \indexentry{"?@"? (query)}{63} + \indexentry{"@@"@ (at sign)}{64} + \indexentry{"[@"[ (left square bracket)}{91} + \indexentry{"\@"\verb=\= (backslash)}{92} + \indexentry{"]@"] (right square bracket)}{93} + \indexentry{"^@"\verb=^= (caret)}{94} + \indexentry{"_@"\verb=_= (underscore)}{95} + \indexentry{"`@"\verb=~= (grave accent)}{96} + \indexentry{"{@"\"{ (left brace)}{123} + \indexentry{"|@"\verb="|= (vertical bar)}{124} + \indexentry{"}@"\"} (right brace)}{125} + \indexentry{"~@"\verb=~= (tilde)}{126} + + Characters in the actual fields following the `@' character + which have special significance to TeX must be represented + as control sequences, or as math mode characters. Note par- + ticularly how the entries for the at sign, left and right + braces, and the vertical bar, are coded. The index file + output by makeindex for this example looks like this: + + \begin{theindex} + + \item ! (exclamation point), 33 + \item " (quotation mark), 34 + \item \# (sharp sign), 35 + \item \$ (dollar sign), 36 + \item \% (percent sign), 37 + \item \& (ampersand), 38 + \item $<$ (left angle bracket), 60 + \item = (equals), 61 + \item $>$ (right angle bracket), 62 + \item ? (query), 63 + \item @ (at sign), 64 + \item [ (left square bracket), 91 + \item \verb=\= (backslash), 92 + \item ] (right square bracket), 93 + \item \verb=^= (caret), 94 + + \item \verb=_= (underscore), 95 + \item \verb=~= (grave accent), 96 + \item \{ (left brace), 123 + \item \verb=|= (vertical bar), 124 + \item \} (right brace), 125 + \item \verb=~= (tilde), 126 + + \indexspace + + \item (space), 32 + + \end{theindex} + +2 FILES + /usr/local/bin/makeindex + executable file + + /usr/local/lib/tex/macros/idxmac-amstex.tex + TeX macro file used by makeindex + + /usr/local/lib/tex/macros/idxmac.tex + TeX macro file used by makeindex + + /usr/local/lib/tex/macros/makeidx.doc + TeX macro file used by makeindex + + /usr/local/lib/tex/macros/makeidx.sty + TeX macro file used by makeindex + +2 SEE ALSO + ditroff(1L), latex(1L), make.index (1L), qsort(3), tex(1L), + troff(1L) + + UCSF Enhanced troff/TRANSCRIPT - An Overview, R. P. C. Rodg- + ers and Conrad Huang, LSMB Technical Report 90-2, UCSF + School of Pharmacy, San Francisco, 1990. + + Index Preparation and Processing, Pehong Chen and Michael A. + Harrison, Software: Practice and Experience, 19(9), 897915, + September 1988. + + Automating Index Preparation, Pehong Chen and Michael A. + Harrison. Technical Report 87/347, Computer Science Divi- + sion, University of California, Berkeley, 1987 (a LaTeX + document supplied with makeindex). + + MakeIndex: An Index Processor for LaTeX, Leslie Lamport, + February 1987 (a LaTeX document supplied with makeindex). + + Tools for Printing Indices, Jon L. Bentley and Brian W. Ker- + nighan, Electronic Publishing - Origination, Dissemination, + and Design, 1(1), 318, June 1988 (also available as: + + Computing Science Technical Report No. 128, AT&T Bell + Laboratories, Murray Hill, NJ 07974, 1986). + +2 AUTHOR + Pehong Chen, Chen & Harrison International Systems, Inc. + Palo Alto, California, USA <chen@renoir.berkeley.edu>. + Manual page extensively revised and corrected, and troff(1) + examples created by Rick P. C. Rodgers, UCSF School of Phar- + macy <rodgers@cca.ucsf.edu>. + +2 ACKNOWLEDGMENTS + Leslie Lamport contributed significantly to the design. + Michael Harrison provided valuable comments and suggestions. + Nelson Beebe improved on the portable version, and maintains + the source distribution for the TeX Users Group. Andreas + Brosig contributed to the German word ordering. The modifi- + cation to the -ms macros was derived from a method proposed + by Ravi Sethi of AT&T Bell Laboratories. The LOG and CON- + TRIB files in the makeindex source distribution record other + contributions. diff --git a/indexing/makeindex/doc/manpages.dvi b/indexing/makeindex/doc/manpages.dvi Binary files differnew file mode 100644 index 0000000000..2d081feef7 --- /dev/null +++ b/indexing/makeindex/doc/manpages.dvi diff --git a/indexing/makeindex/ist/din.ist b/indexing/makeindex/ist/din.ist new file mode 100644 index 0000000000..8e4a23eea4 --- /dev/null +++ b/indexing/makeindex/ist/din.ist @@ -0,0 +1,45 @@ +% +% +% This file is part of +% MakeIndex - A formatter and format independent index processor +% +% Author: Gabor Herr +% +% +% $Log: din.ist,v $ +% Revision 1.1 1991/12/13 16:45:51 schrod +% Initial revision +% +% Revision 1.1 1991/08/26 17:49:03 herr +% Initial revision +% +% +% german DIN 5007 sort rules for TeX and LaTeX + +% sort rules for TeX-style umlaut-macros +sort_rule "\\\"A" "ae" +sort_rule "\\\"a" "ae" +sort_rule "\\\"O" "oe" +sort_rule "\\\"o" "oe" +sort_rule "\\\"U" "ue" +sort_rule "\\\"u" "ue" +sort_rule "\\ss({})?" "ss" + +% sort rules for german LaTeX-style umlaut-macros +sort_rule "\"A" "ae" +sort_rule "\"a" "ae" +sort_rule "\"O" "oe" +sort_rule "\"o" "oe" +sort_rule "\"U" "ue" +sort_rule "\"u" "ue" +sort_rule "\"s" "ss" + +% define merge rules: +include "german/umlaut.ist" % don't remove umlaut-macros +include "tex.ist" % handle TeX and +include "latex.ist" % LaTeX stuff + +% define sort rules +include "german/digit.ist" % sort rules for digits +include "german/special.ist" % sort rules for special characters +include "icase.ist" % we sort case insensitive diff --git a/indexing/makeindex/ist/icase.ist b/indexing/makeindex/ist/icase.ist new file mode 100644 index 0000000000..9cec882fa8 --- /dev/null +++ b/indexing/makeindex/ist/icase.ist @@ -0,0 +1,44 @@ +% +% +% This file is part of +% MakeIndex - A formatter and format independent index processor +% +% Author: Gabor Herr +% +% +% $Log: icase.ist,v $ +% Revision 1.1 1991/12/13 16:39:39 schrod +% Initial revision +% +% Revision 1.1 1991/08/26 17:46:55 herr +% Initial revision +% +% +% rules for case insensitive letter sort + +sort_rule "A" "a" +sort_rule "B" "b" +sort_rule "C" "c" +sort_rule "D" "d" +sort_rule "E" "e" +sort_rule "F" "f" +sort_rule "G" "g" +sort_rule "H" "h" +sort_rule "I" "i" +sort_rule "J" "j" +sort_rule "K" "k" +sort_rule "L" "l" +sort_rule "M" "m" +sort_rule "N" "n" +sort_rule "O" "o" +sort_rule "P" "p" +sort_rule "Q" "q" +sort_rule "R" "r" +sort_rule "S" "s" +sort_rule "T" "t" +sort_rule "U" "u" +sort_rule "V" "v" +sort_rule "W" "w" +sort_rule "X" "x" +sort_rule "Y" "y" +sort_rule "Z" "z" diff --git a/indexing/makeindex/ist/latex.ist b/indexing/makeindex/ist/latex.ist new file mode 100644 index 0000000000..f29e66b23b --- /dev/null +++ b/indexing/makeindex/ist/latex.ist @@ -0,0 +1,20 @@ +% +% +% This file is part of +% MakeIndex - A formatter and format independent index processor +% +% Author: Gabor Herr +% +% +% $Log: latex.ist,v $ +% Revision 1.1 1991/12/13 16:39:45 schrod +% Initial revision +% +% Revision 1.1 1991/08/26 17:47:40 herr +% Initial revision +% +% +% merge rules to handle LaTeX macros + +% save the LaTeX logo +merge_rule "\\LaTeX" "LaTeX" diff --git a/indexing/makeindex/ist/math.ist b/indexing/makeindex/ist/math.ist new file mode 100644 index 0000000000..e6b8866ec1 --- /dev/null +++ b/indexing/makeindex/ist/math.ist @@ -0,0 +1,97 @@ +% +% +% This file is part of +% MakeIndex - A formatter and format independent index processor +% +% Author: Gabor Herr +% +% +% $Log: math.ist,v $ +% Revision 1.1 1991/12/13 16:39:49 schrod +% Initial revision +% +% Revision 1.1 1991/08/27 12:07:11 herr +% Initial revision +% +% +% merge rules for TeX math-mode macros + +% first remove enclosing '$'-characters +*merge_rule "\$(.*)\$" "\1" + +% function-name macros will be sorted like the function they stay for +merge_rule "\\log" "log" +merge_rule "\\lg" "lg" +merge_rule "\\ln" "ln" +merge_rule "\\lim" "lim" +merge_rule "\\limsup" "limsup" +merge_rule "\\liminf" "liminf" +merge_rule "\\sin" "sin" +merge_rule "\\arcsin" "arcsin" +merge_rule "\\sinh" "sinh" +merge_rule "\\cos" "cos" +merge_rule "\\arccos" "arccos" +merge_rule "\\cosh" "cosh" +merge_rule "\\tan" "tan" +merge_rule "\\arctan" "arctan" +merge_rule "\\tanh" "tanh" +merge_rule "\\cot" "cot" +merge_rule "\\coth" "coth" +merge_rule "\\sec" "sec" +merge_rule "\\csc" "csc" +merge_rule "\\max" "max" +merge_rule "\\min" "min" +merge_rule "\\sup" "sup" +merge_rule "\\inf" "inf" +merge_rule "\\arg" "arg" +merge_rule "\\ker" "ker" +merge_rule "\\dim" "dim" +merge_rule "\\hom" "hom" +merge_rule "\\det" "det" +merge_rule "\\exp" "exp" +merge_rule "\\Pr" "Pr" +merge_rule "\\gcd" "gcd" +merge_rule "\\deg" "deg" + +% the pronounciation of Greek letters decides their sort order +merge_rule "\\alpha" "alpha" +merge_rule "\\beta" "beta" +merge_rule "\\gamma" "gamma" +merge_rule "\\delta" "delta" +merge_rule "\\epsilon" "epsilon" +merge_rule "\\zeta" "zeta" +merge_rule "\\eta" "eta" +merge_rule "\\theta" "theta" +merge_rule "\\iota" "iota" +merge_rule "\\kappa" "kappa" +merge_rule "\\lambda" "lambda" +merge_rule "\\mu" "mu" +merge_rule "\\nu" "nu" +merge_rule "\\xi" "xi" +merge_rule "\\pi" "pi" +merge_rule "\\rho" "rho" +merge_rule "\\sigma" "sigma" +merge_rule "\\tau" "tau" +merge_rule "\\upsilon" "upsilon" +merge_rule "\\phi" "phi" +merge_rule "\\chi" "chi" +merge_rule "\\psi" "psi" +merge_rule "\\omega" "omega" +merge_rule "\\varepsilon" "epsilon" +merge_rule "\\vartheta" "theta" +merge_rule "\\varpi" "pi" +merge_rule "\\varrho" "rho" +merge_rule "\\varsigma" "sigma" +merge_rule "\\varphi" "phi" +merge_rule "\\Gamma" "Gamma" +merge_rule "\\Delta" "Delta" +merge_rule "\\Theta" "Theta" +merge_rule "\\Lambda" "Lambda" +merge_rule "\\Xi" "Xi" +merge_rule "\\Pi" "Pi" +merge_rule "\\Sigma" "Sigma" +merge_rule "\\Upsilon" "Upsilon" +merge_rule "\\Phi" "Phi" +merge_rule "\\Psi" "Psi" +merge_rule "\\Omega" "Omega" +merge_rule "\\aleph" "aleph" diff --git a/indexing/makeindex/ist/mkind.ist b/indexing/makeindex/ist/mkind.ist new file mode 100644 index 0000000000..c705d59808 --- /dev/null +++ b/indexing/makeindex/ist/mkind.ist @@ -0,0 +1,32 @@ +% +% +% This file is part of +% MakeIndex - A formatter and format independent index processor +% +% Author: Gabor Herr +% +% +% $Log: mkind.ist,v $ +% Revision 1.1 1991/12/13 16:39:53 schrod +% Initial revision +% +% Revision 1.1 1991/08/26 17:50:38 herr +% Initial revision +% +% +% MakeIndex 2.x 'word ordering' + +% words beginning with a digit should sorted like special characters +sort_rule "\b.*" "&" +*sort_rule "[0-9].*" "\b&" + +% define merge rules +include "tex.ist" +include "latex.ist" + +% define sort rules +include "english/digit.ist" +include "english/special.ist" +include "icase.ist" + + diff --git a/indexing/makeindex/ist/puncts.ist b/indexing/makeindex/ist/puncts.ist new file mode 100644 index 0000000000..db2aa70002 --- /dev/null +++ b/indexing/makeindex/ist/puncts.ist @@ -0,0 +1,57 @@ +% +% +% This file is part of +% MakeIndex - A formatter and format independent index processor +% +% Author: Gabor Herr +% +% +% $Log: puncts.ist,v $ +% Revision 1.2 1991/12/18 16:19:35 schrod +% Corrected typo in space sort rule. +% +% Revision 1.1 1991/08/26 17:49:18 herr +% Initial revision +% +% +% sort rules for punctuations + +% special characters come first +sort_rule "\." "\b\." +sort_rule "\:" "\b\:" +sort_rule "\," "\b\," +sort_rule "\;" "\b\;" +sort_rule "\!" "\b\!" +sort_rule "\?" "\b\?" +sort_rule "\'" "\b\'" +sort_rule "\`" "\b\`" +sort_rule "\"" "\b\"" +sort_rule "\+" "\b\+" +sort_rule "\-" "\b\-" +sort_rule "\%" "\b\%" +sort_rule "\&" "\b\&" +sort_rule "\/" "\b\/" +sort_rule "\(" "\b\(" +sort_rule "\)" "\b\)" +sort_rule "\@" "\b\@" +sort_rule "\ " "\b\ " + +% special characters build a sort group +sort_group "\b." 110 +sort_group "\b:" 110 +sort_group "\b," 110 +sort_group "\b;" 110 +sort_group "\b!" 110 +sort_group "\b?" 110 +sort_group "\b'" 110 +sort_group "\b`" 110 +sort_group "\b\"" 110 +sort_group "\b+" 110 +sort_group "\b-" 110 +sort_group "\b%" 110 +sort_group "\b&" 110 +sort_group "\b/" 110 +sort_group "\b(" 110 +sort_group "\b)" 110 +sort_group "\b@" 110 +sort_group "\b " 110 diff --git a/indexing/makeindex/ist/tex.ist b/indexing/makeindex/ist/tex.ist new file mode 100644 index 0000000000..fa69f24ab6 --- /dev/null +++ b/indexing/makeindex/ist/tex.ist @@ -0,0 +1,33 @@ +% +% +% This file is part of +% MakeIndex - A formatter and format independent index processor +% +% Author: Gabor Herr +% +% +% $Log: tex.ist,v $ +% Revision 1.1 1991/12/13 16:40:01 schrod +% Initial revision +% +% Revision 1.1 1991/08/26 17:48:31 herr +% Initial revision +% +% +% merge rules to handle TeX macros + +% save printable macros +merge_rule "\\TeX" "TeX" + +% handle mathematical formulas +include "math.ist" + +% remove all other macros... +merge_rule "\\[A-Za-z]+[\t ]?" "" + +% remove TeX grouping symbols +merge_rule "{" "" +merge_rule "}" "" + +% white space is treated as one token +merge_rule "[ \t\n]+" " " diff --git a/indexing/makeindex/lib/idxmac-amstex.tex b/indexing/makeindex/lib/idxmac-amstex.tex new file mode 100644 index 0000000000..09d5c2e094 --- /dev/null +++ b/indexing/makeindex/lib/idxmac-amstex.tex @@ -0,0 +1,323 @@ + +% /u/lex2/agw/ibc/ibc.sty, Thu Jul 9 10:02:23 1987, edit by agw + +\documentstyle{amsppt} + +\font\twelverm=cmr12 +\font\twelvebf=cmbx12 + +\def\makeatletter{\catcode`\@=11\relax} +\def\makeatother{\catcode`\@=12\relax} +\makeatletter + +\def\B@{B } \def\D@{D } +\def\askstyle{\immediate\write\sixt@@n{Do you want B(ook style) + or D(raft style)? (Type B or D, follow by <return>:) }\loop + \read\m@ne to\ans@ + \xdef\next{\def\noexpand\Ans@{\ans@}}% + \uppercase\expandafter{\next}% + \ifx\Ans@\B@\badans@false\bookstyle\else + \ifx\Ans@\D@\badans@false\draftstyle\else + \badans@true\fi\fi + \ifbadans@\immediate\write\sixt@@n{Type B or D, follow by <return>: }% + \repeat} + +\def\bookstyle{\hsize=28truepc\vsize=46truepc} +\def\draftstyle{\magnification 1200\parindent=10pt\baselineskip=15pt} +\askstyle + +\newif\iftitle % for title pages of chapters +\titlefalse % in case we start in the middle of a chapter + +\def\chapterbeg#1#2{ + \global\titletrue + \vfill\eject + \null\vskip 8 truepc + \centerline{\twelverm Chapter #1} + \line{\hrulefill} + \centerline{\twelvebf #2} + \global\def\chaptertitle{#1. \lowercase{#2}} + \global\def\currentsectiontitle{\lowercase{#2}} + \message{#1. #2: } + \null\vskip 9 truepc +} + +\def\unnumberedchapterbeg#1{ + \global\titletrue + \null\vskip 8 truepc + \vskip 12 pt + \line{\hrulefill} + \centerline{\twelvebf #1} + \global\def\chaptertitle{\lowercase{#1}} + \global\def\currentsectiontitle{\lowercase{#1}} + \message{#1} + \null\vskip 9 truepc +} + +\def\sectionbeg#1#2\medskip{ + \vskip 2 truepc + \centerline{\bf #1. #2} + \nopagebreak\vskip 1truepc\nopagebreak + \global\def\currentsectiontitle{#1. \lowercase{#2}} + \message{#1. #2} +} + +\newif\if@nobreak \@nobreakfalse +\newif\ifignore +\def\@makeother#1{\catcode`#112\relax} +\def\newwrite{\alloc@7\write\chardef\sixt@@n} +\newwrite\@unused +\def\typeout#1{{\let\protect\string\immediate\write\@unused{#1}}} + +\newdimen\@savsk +\newcount\@savsf + +\def\@bsphack{\@savsk\lastskip + \ifhmode\@savsf\spacefactor\fi} + +\def\@esphack{\relax\ifhmode\spacefactor\@savsf + {}\ifdim \@savsk >\z@ \global\ignoretrue \ignorespaces + \fi \fi} + +\def\@sanitize{\@makeother\ \@makeother\\\@makeother\$\@makeother\&% +\@makeother\#\@makeother\^\@makeother\^^K\@makeother\_\@makeother\^^A% +\@makeother\%\@makeother\~} + +\def\makeindex{\newwrite\@indexfile + \immediate\openout\@indexfile=\jobname.idx + \def\index{\@bsphack\begingroup\@sanitize\@wrindex\@indexfile} + \typeout{Writing index file \jobname.idx }} + +\def\thepage{\the\pageno} + +\def\@wrindex#1#2{\let\thepage\relax + \xdef\gtempa{\write#1{\string + \indexentry{#2}{\thepage}}}\endgroup\gtempa + \if@nobreak \ifvmode\@nobreak\fi\fi\@esphack} + +\def\index{\@bsphack\begingroup\@sanitize\@index} +\def\@index#1{\endgroup\@esphack} + +\def\@idxitem{\par\hangindent 40pt} +\def\subitem{\par\hangindent 40pt \hskip 20pt} +\def\subsubitem{\par\hangindent 40pt \hskip 30pt} +\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax} + +\def\beginindex{\begingroup\let\item\@idxitem\begindoublecolumns} +\def\endindex{\enddoublecolumns\endgroup} + +\newbox\partialpage +\newdimen\pagewidth \pagewidth=\hsize +\newdimen\pageheight \pageheight=\vsize +\newdimen\colwidth \colwidth=\pagewidth \divide\colwidth by 2 +\newdimen\twicecolheight \twicecolheight=\pageheight + \multiply\twicecolheight by 2 + \advance\twicecolheight by 1truepc % well, a little more than twice +\def\begindoublecolumns{\begingroup + \output={\global\setbox\partialpage=\vbox{\unvbox255\bigskip}}\eject + \raggedright + \output={\splitcolumns} + \hsize=\colwidth + \vsize=\twicecolheight + \let\item\@idxitem} +\def\enddoublecolumns{\output={\balancecolumns}\eject + \endgroup \pagegoal=\vsize} +\def\splitcolumns{\splittopskip=\topskip \splitmaxdepth=\maxdepth + \dimen@=\pageheight \advance\dimen@ by-\ht\partialpage + \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ + \unvbox255 \penalty\outputpenalty + \doublecolumnout} +\def\doublecolumnout{\shipout\vbox{% + \hsize=\pagewidth + \iftitle\else\makeheadline\fi% + \unvbox\partialpage + \wd0=\colwidth \wd2=\colwidth + \hbox to\pagewidth{\box0\hfil\box2} + \iftitle\makefootline\global\titlefalse\fi + \hsize=\colwidth} + \advancepageno + \global\def\sectiontitle{\currentsectiontitle} + \ifnum\outputpenalty>-\@MM \else\dosupereject\fi} + +\def\balancecolumns{\setbox0=\vbox{\unvbox255} \dimen@=\ht0 + \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip + \divide\dimen@ by2 \splittopskip=\topskip + {\vbadness=10000 \loop \global\setbox3=\copy0 + \global\setbox1=\vsplit3 to\dimen@ + \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt \repeat} + \setbox0=\vbox to\dimen@{\unvbox1} + \setbox2=\vbox to\dimen@{\unvbox3} + \doublecolumnout} + +\output={\ibcoutput} + +\def\leftheadline{\eightbf\folio\hfil\smc\chaptertitle} +\def\rightheadline{\smc\sectiontitle\hfil\eightbf\folio} +\headline={\ifodd\pageno\rightheadline\else\leftheadline\fi} + +\def\leftfootline{\eightbf\folio\hfil} +\def\rightfootline{\eightbf\hfil\folio} +\footline={\ifodd\pageno\rightfootline\else\leftfootline\fi} + +\def\ibcoutput{\shipout\vbox{% + \iftitle\else\makeheadline\fi + \pagebody + \iftitle\makefootline\global\titlefalse\fi} + \advancepageno + \global\def\sectiontitle{\currentsectiontitle} + \ifnum\outputpenalty>-\@MM \else\dosupereject\fi} + +\def\Y@{Y } \def\N@{N } +\def\makingindex{\immediate\write\sixt@@n{Do you want to make an +index? (Type Y or N, follow by <return>:) }\loop + \read\m@ne to\ans@ + \xdef\next{\def\noexpand\Ans@{\ans@}}% + \uppercase\expandafter{\next}% + \ifx\Ans@\Y@\badans@false\makeindex\else + \ifx\Ans@\N@\badans@false\else + \badans@true\fi\fi + \ifbadans@\immediate\write\sixt@@n{Type Y or N, follow by <return>: }% + \repeat} +\makingindex + +\makeatother + +% various abbreviations ... form Greg and Henryk + +\define\a{\operatorname{a}} +\define\avg{\operatorname{avg}} +\define\card{\operatorname{card}} +\define\codim{\operatorname{codim}} +\define\comp{\operatorname{comp}} +\define\cost{\operatorname{cost}} +\define\trace{\operatorname{trace}} +\define\diam{\operatorname{diam}} +\define\dist{\operatorname{dist}} +\define\e{\varepsilon} +\define\E{\operatorname{E}} +\define\error{\operatorname{error}} +\define\non{\operatorname{non}} +\define\nor{\operatorname{nor}} +\define\sspan{\operatorname{span}} +\define\var{\operatorname{var}} +\define\ER{\operatorname{ER}} +\define\HH{\operatorname{H}} +\define\ter{\operatorname{ter}} +\define\pre{\operatorname{pre}} +\define\prob{\operatorname{prob}} +\define\prerel{\operatorname{pre-rel}} +\define\rad{\operatorname{rad}} +\define\ran{\operatorname{ran}} +\define\wor{\operatorname{wor}} +\define\rel{\operatorname{rel}} +\define\REL{\operatorname{REL}} +\define\per{\operatorname{per}} +\define\sign{\operatorname{sign}} +\define\infp{\operatornamewithlimits{inf\vphantom{p}}} +\define\maxp{\operatornamewithlimits{max\vphantom{p}}} +\define\Prob{\operatorname{Prob}} +\def\reals{\operatorname{I\negthinspace\bold R}} +\def\Re{\reals} +\def\complexes{\operatorname{\bold C}} +\define\ofi{\overline \phi } +\define\ofig{\overline {\phi^*}} +\define\ofis{\overline {\phi^s}} +\define\on{\overline N } +\define\norm{||Sf-\phi_n(N_n(f))||} +\define\norg{||Sf-\phi_n^*\,(N_n(f))||} +\define\nors{||Sf-\phi_n^s\,(N_n(f))||} +\define\ong{\overline {N^*}} +\define\ongg{\overline {N^{**}}} +\define\nnn{N^{\non}} +\define\kr{\operatorname{kr}} +\define\mr{\operatorname{mr}} +\define\gmr{\operatorname{gmr}} +\def\bullet{\raise.5ex\hbox{\bf .}} +\def\liminf{\mathop{\underline{\text{lim}}}} + +% various abbreviations ... from Art + +\def\epsilon{\varepsilon} +\def\COMP{\operatorname{\hbox{\smc comp}}} +\def\esssup{\operatornamewithlimits{ess\ sup}} +\def\FEM{\operatorname{\hbox{\smc fem}}} +\def\FEMQ{\operatorname{\hbox{\smc femq}}} +\def\interior{\operatorname{int}} +\def\lin{\operatorname{lin}} +\def\range{\operatorname{ran}} +\def\SPLINE{\operatorname{\hbox{\smc spline}}} +\def\ter{\operatorname{ter}} +\def\volume{\operatorname{vol}} +\define\Lstd{\Lambda^{\operatorname{std}}} +\define\MFEM{\operatorname{\hbox{\smc mfem}}} + +%\def\reals{\Bbb R} +%\def\complexes{\Bbb C} +\def\reals{\operatorname{I\negthinspace\bold R}} + +%---For remarks and the like +\define\demonp#1{\demo\nofrills{#1\usualspace}} + +%---Start a new section +\define\subsection#1{\par\vskip 1pc\noindent{\bf #1} + \nopagebreak\medskip\nopagebreak} + +%---Start and end the Notes & Remarks/Exercises (smaller type, single space) +\define\startNRE{\bgroup\eightpoint\parindent=5pt} +\define\endNRE{\egroup} +\define\NR #1 {\noindent{\bf NR #1: }} % Notes and Remarks +\define\Ex #1 {\noindent{\bf E #1: }} % Exercises + +% angle brackets for inner products +\define\<{\langle} +\define\>{\rangle} + +% Script letters and other useful control sequences +\define\Sscr{{\Cal S}} +\define\Tscr{{\Cal T}} +\define\Sn{{\Cal S}_{n,k}} +\define\Tn{{\Cal T}_n} +\define\Snset{\{\Sn\}_{n=1}^\infty} +\define\Tnset{\{\Tn\}_{n=1}^\infty} + +\define\phisn{\phi^{\operatorname{s}}_{n,k}} + +% Needed for References + +\define\BabAz{Babu\u ska and Aziz~[72]} +\define\Bakhvalov{Bakhvalov~[77]} +\define\Carasso{Carasso and Stone~[75]} +\define\Ciarlet{Ciarlet~[78]} +\define\CiarletRaviart{Ciarlet and Raviart~[72]} +\define\Dunford{Dunford and Schwartz~[63]} +\define\Dunn{Dunn~[67]} +\define\Emel{Emelyanov and Ilin~[67]} +\define\Fried{Fried~[73]} +\define\Gehatia{Gehatia and Wiff~[70]} +\define\Gelfand{Gel'fand and Vilenkin~[64]} +\define\Hadamard{Hadamard~[52]} +\define\Hammerlin{H\"ammerlin and Hoffman~[83]} +\define\Kuo{Kuo~[75]} +\define\Lattes{Lattes and Lions~[69]} +\define\Morozov{Morozov~[85]} +\define\OdRed{Oden and Reddy~[76]} +\define\Pinkus{Pinkus~[85]} +\define\Poggio{Poggio, Torre, and Koch~[85]} +\define\Pour{Pour-El and Richards~[83]} +\define\Rokhlin{Rokhlin~[86]} +\define\Shilov{Shilov and Fan Dyk Tin~[67]} +\define\Skorohod{Skorohod~[74]} +\define\Tikhonov{Tikhonov~[63]} +\define\TikhonovArsenin{Tikhonov and Arsenin~[77]} +\define\GTOA{GOTA} +\define\Twomey{Twomey~[77]} +\define\GregVarying{Wasilkowski~[86]} %needed? +\define\WWAvg{Wasilkowski and Wo\'zniakowski~[84]} %needed? +\define\SecondOrder{Werschulz~[82]} +\define\Fredholm{Werschulz~[85]} +\define\Indef{Werschulz~[86a]} +\define\IllPosed{Werschulz~[86b]} +\define\Fembad{Werschulz~[87a]} +\define\AprilAGW{Werschulz~[87b]} +\define\Resid{Werschulz~[87c]} +\define\Zen{Zeni\v sek~[72]} diff --git a/indexing/makeindex/lib/idxmac.tex b/indexing/makeindex/lib/idxmac.tex new file mode 100644 index 0000000000..3782293b69 --- /dev/null +++ b/indexing/makeindex/lib/idxmac.tex @@ -0,0 +1,200 @@ +% +% idxmac.tex +% +% Most of the code in this file are excerpts from latex.tex and manmac.tex. +% The actual style of the index environment \beginindex ... \endindex +% at the end of this file is left empty. +% +% +\def\makeatletter{\catcode`\@=11\relax} +\def\makeatother{\catcode`\@=12\relax} +\makeatletter +\newif\if@filesw \@fileswtrue +\newif\if@nobreak \@nobreakfalse +\def\@makeother#1{\catcode`#112\relax} +\def\newwrite{\alloc@7\write\chardef\sixt@@n} +\newwrite\@unused +\def\typeout#1{{\let\protect\string\immediate\write\@unused{#1}}} + +% **************************************** +% * PAGE NUMBERING * +% **************************************** +% +% Page numbers are produced by a page counter, used just like any other +% counter. The only difference is that \c@page contains the number of +% the next page to be output (the one currently being produced), rather +% than one minus it. Thus, it is normally initialized to 1 rather than +% 0. \c@page is defined to be \count0, rather than a count assigned by +% \newcount. +% +% The user sets the pagenumber style with the \pagenumbering{FOO} +% command, which sets the page counter to 1 and defines \thepage to be +% \FOO. For example, \pagenumbering{roman} causes pages to be numbered +% i, ii, etc. + +% Numbering commands for definitions of \theCOUNTER and \list arguments. +% \fnsymbol produces the standard footnoting symbols: asterisk, dagger, etc. +% They can be used only in math mode. + +\def\arabic#1{\@arabic{\@nameuse{c@#1}}} +\def\roman#1{\@roman{\@nameuse{c@#1}}} +\def\Roman#1{\@Roman{\@nameuse{c@#1}}} +\def\alph#1{\@alph{\@nameuse{c@#1}}} +\def\Alph#1{\@Alph{\@nameuse{c@#1}}} +\def\fnsymbol#1{\@fnsymbol{\@nameuse{c@#1}}} + +\def\@arabic#1{\ifnum #1>0 \number #1\fi} +\def\@roman#1{\romannumeral #1} +\def\@Roman#1{\expandafter\uppercase\expandafter{\romannumeral #1}} +\def\@alph#1{\ifcase#1\or a\or b\or c\or d\else\@ialph{#1}\fi} +\def\@ialph#1{\ifcase#1\or \or \or \or \or e\or f\or g\or h\or i\or j\or + k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or + z\else\@ctrerr\fi} +\def\@Alph#1{\ifcase#1\or A\or B\or C\or D\else\@Ialph{#1}\fi} +\def\@Ialph#1{\ifcase#1\or \or \or \or \or E\or F\or G\or H\or I\or J\or + K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or + Z\else\@ctrerr\fi} +\def\@fnsymbol#1{\ifcase#1\or *\or \dagger\or \ddagger\or + \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger + \or \ddagger\ddagger \else\@ctrerr\fi\relax} + +\countdef\c@page=0 \c@page=1 +\def\cl@page{} +\def\pagenumbering#1{\global\c@page \@ne \gdef\thepage{\csname @#1\endcsname + \c@page}} +\pagenumbering{arabic} + +% \@bsphack ... \@esphack +% used by macros such as \index and \begin{@float} ... \end{@float} +% that want to be invisible -- i.e., +% not leave any extra space when used in the middle of text. Such +% a macro should begin with \@bsphack and end with \@esphack +% The macro in question should not create any text, nor change the +% mode. +% +% \@bsphack == +% BEGIN +% \dimen\@savsk := \lastskip +% if hmode then \@savsf := \spacefactor fi +% END +% +% \@esphack == +% BEGIN +% if hmode +% then \spacefactor := \@savsf +% if \dimen\@savsk > 0pt then \ignorespaces +% \global\ignoretrue fi +% fi +% END +% + +\newdimen\@savsk +\newcount\@savsf + +\def\@bsphack{\@savsk\lastskip + \ifhmode\@savsf\spacefactor\fi} + +\def\@esphack{\relax\ifhmode\spacefactor\@savsf + {}\ifdim \@savsk >\z@ \global\ignoretrue \ignorespaces + \fi \fi} + +% The command \@sanitize changes the catcode of all special characters +% except for braces to 'other'. It can be used for commands like +% \index that want to write their arguments verbatim. Needless to +% say, this command should only be executed within a group, or chaos +% will ensue. + +\def\@sanitize{\@makeother\ \@makeother\\\@makeother\$\@makeother\&% +\@makeother\#\@makeother\^\@makeother\^^K\@makeother\_\@makeother\^^A% +\@makeother\%\@makeother\~} + +% **************************************** +% * INDEX COMMANDS * +% **************************************** +% +% \makeindex == +% BEGIN +% if \@filesw = T +% then open file \jobname.IDX as \indexfile +% \index == BEGIN \@bsphack +% \begingroup +% re-\catcode special characters to 'other' +% \wrindex +% fi +% END +% +% \wrindex{ITEM} == +% BEGIN +% write of {\indexentry{ITEM}{page number}} +% \endgroup +% \@esphack +% END + +% INITIALIZATION: +% +% \index == BEGIN \@bsphack +% \begingroup +% re-\catcode special characters (in case '%' there) +% \index +% END +% +% \index{ITEM} == BEGIN \endgroup \@esphack END +% +\def\makeindex{\if@filesw \newwrite\@indexfile + \immediate\openout\@indexfile=\jobname.idx + \def\index{\@bsphack\begingroup\@sanitize\@wrindex\@indexfile} + \typeout{Writing index file \jobname.idx }\fi} + +\def\@wrindex#1#2{\let\thepage\relax + \xdef\gtempa{\write#1{\string + \indexentry{#2}{\thepage}}}\endgroup\gtempa + \if@nobreak \ifvmode\@nobreak\fi\fi\@esphack} + +\def\index{\@bsphack\begingroup\@sanitize\@index} +\def\@index#1{\endgroup\@esphack} + +\def\makeglossary{\if@@filesw \newwrite\@glossaryfile + \immediate\openout\@glossaryfile=\jobname.glo + \def\glossary{\@bsphack\begingroup\@sanitize\@wrindex\@glossaryfile}\typeout + {Writing glossary file \jobname.glo }\fi} + +\def\glossary{\@bsphack\begingroup\@sanitize\index} + +\newdimen\pagewidth +\pagewidth=\hsize +\newbox\partialpage +\def\begindoublecolumns{\begingroup + \output={\global\setbox\partialpage=\vbox{\unvbox255\bigskip}}\eject + \output={\doublecolumnout} \hsize=14pc \vsize=89pc + \let\item\@idxitem} +\def\enddoublecolumns{\output={\balancecolumns}\eject + \endgroup \pagegoal=\vsize} +\def\doublecolumnout{\splittopskip=\topskip \splitmaxdepth=\maxdepth + \dimen@=44pc \advance\dimen@ by-\ht\partialpage + \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ + \onepageout\pagesofar + \unvbox255 \penalty\outputpenalty} +\def\pagesofar{\unvbox\partialpage + \wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}} +\def\balancecolumns{\setbox0=\vbox{\unvbox255} \dimen@=\ht0 + \advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip + \divide\dimen@ by2 \splittopskip=\topskip + {\vbadness=10000 \loop \global\setbox3=\copy0 + \global\setbox1=\vsplit3 to\dimen@ + \ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt \repeat} + \setbox0=\vbox to\dimen@{\unvbox1} + \setbox2=\vbox to\dimen@{\unvbox3} + \pagesofar} + +\def\@idxitem{\par\hangindent 40pt} +\def\subitem{\par\hangindent 40pt \hskip 20pt} +\def\subsubitem{\par\hangindent 40pt \hskip 30pt} +\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax} + +\def\beginindex{\begingroup\let\item\@idxitem +% Output opening routines go here +} +\def\endindex{ +% Output closing routines go here. +\endgroup} +\makeatother diff --git a/indexing/makeindex/lib/makeidx.doc b/indexing/makeindex/lib/makeidx.doc new file mode 100644 index 0000000000..6c501bd890 --- /dev/null +++ b/indexing/makeindex/lib/makeidx.doc @@ -0,0 +1,9 @@ +% MAKEIDX DOCUMENT-STYLE OPTION FOR ARTICLE STYLE +% RELEASED 20 January 1987 -- for LaTeX version 2.09 +% Copyright (C) 1987 by Leslie Lamport, all rights reserved + +% Defines the \see and \printindex commands. + +\def\see#1#2{{\em see\/} #1} + +\def\printindex{\@input{\jobname.ind}} diff --git a/indexing/makeindex/lib/makeidx.sty b/indexing/makeindex/lib/makeidx.sty new file mode 100644 index 0000000000..ab41d11a23 --- /dev/null +++ b/indexing/makeindex/lib/makeidx.sty @@ -0,0 +1,5 @@ +% makeidx.sty 20-Jan-87 + +\def\see#1#2{{\em see\/} #1} +\def\printindex{\@input{\jobname.ind}} + diff --git a/indexing/makeindex/lib/showidx.sty b/indexing/makeindex/lib/showidx.sty new file mode 100644 index 0000000000..4a6a57ff53 --- /dev/null +++ b/indexing/makeindex/lib/showidx.sty @@ -0,0 +1,41 @@ +% showidx.sty 29-Oct-85 + +\newinsert\@margin +\newinsert\indexbox +\dimen\indexbox=\maxdimen +\def\@showidx#1{\insert\indexbox{\small + \hsize\marginparwidth + \hangindent\marginparsep \parindent\z@ + \everypar{}\let\par\@@par \parfillskip\@flushglue + \lineskip\normallineskip + \baselineskip .8\normalbaselineskip\sloppy + \raggedright \leavevmode + \vrule height .7\normalbaselineskip width \z@ #1\vrule + height \z@ depth .3\normalbaselineskip width \z@}} + +\def\@leftidx{\hskip-\marginparsep \hskip-\marginparwidth} +\def\@rightidx{\hskip\columnwidth \hskip\marginparsep} +\def\@mkidx{\vbox to 0pt{\hbox{\if@twocolumn + \if@firstcolumn \@leftidx \else \@rightidx \fi + \else \if@twoside \ifodd\c@page \@rightidx + \else \@leftidx \fi + \else \@rightidx \fi + \fi + \box\indexbox}\vss}} +\def\raggedbottom{\def\@textbottom{\vskip + \z@ plus.0001fil}\let\@texttop\@mkidx} +\def\flushbottom{\let\@textbottom\relax \let\@texttop\@mkidx} + +\def\@wrindex#1#2{\let\thepage\relax + \xdef\@gtempa{\write#1{\string + \indexentry{#2}{\thepage}}}\endgroup\@gtempa + \@showidx{#2}\if@nobreak \ifvmode\nobreak\fi\fi\@esphack} +\def\@index#1{\@showidx{#1}\endgroup\@esphack} + +\def\index{\@bsphack\begingroup\@sanitize\catcode"20=10\relax\@index} +\def\makeindex{\if@filesw \newwrite\@indexfile + \immediate\openout\@indexfile=\jobname.idx + \def\index{\@bsphack\begingroup\@sanitize + \catcode"20=10 \@wrindex\@indexfile}\typeout + {Writing index file \jobname.idx }\fi} +\flushbottom diff --git a/indexing/makeindex/paper/Makefile b/indexing/makeindex/paper/Makefile new file mode 100644 index 0000000000..84352c859b --- /dev/null +++ b/indexing/makeindex/paper/Makefile @@ -0,0 +1,17 @@ +LATEX = latex +RM = /bin/rm -f +SHELL = /bin/sh + +all: ind.dvi + +ind.dvi: ind.tex fig1.tex + $(LATEX) ind + +clean mostlyclean: + $(RM) core + $(RM) *~ + $(RM) \#* + $(RM) ind.dvi + $(RM) ind.log + +clobber distclean realclean reallyclean: clean diff --git a/indexing/makeindex/paper/README b/indexing/makeindex/paper/README new file mode 100644 index 0000000000..af469f7c29 --- /dev/null +++ b/indexing/makeindex/paper/README @@ -0,0 +1,26 @@ +PreScript: +I have replaced the PostScript figure, fig1.ps, with a LaTeX picture +mode equivalent that will permit this document to be formatted and +printed at any TeX installation. + Nelson H.F. Beebe + Beebe@math.utah.edu + [08-Jul-1991] + +This directory contains a paper which describes design tradeoffs of +MakeIndex. It is written in LaTeX and contains a figure in PostScript +specifed in the psfig format. Run LaTeX on the file ind.tex to obtain +a DVI file. All style files involved are included in this directory. +To print it, you need to have a PostScript-based printer and the +DVI-to-PostScript driver must understand the psfig format. A +PostScipt version of this paper, ind.ps, can be printed directly to a +PostScript printer. + +This paper appears in Software: Practice and Experience, Vol 19, No. +9, Sep. 1988, pp. 897-915. A more complete version is available as +Computer Science Tech. Report 87/347, University of California, +Berkeley, March 1987. + + + Pehong Chen + phc@renoir.berkeley.edu + 10/1/1988 diff --git a/indexing/makeindex/paper/fig1.ps b/indexing/makeindex/paper/fig1.ps new file mode 100644 index 0000000000..9bef97a1e8 --- /dev/null +++ b/indexing/makeindex/paper/fig1.ps @@ -0,0 +1,252 @@ +%! +% converted gremlin output +%%BoundingBox: 140 -35 440 250 + +0.5 0.5 scale +300 -50 translate + +/Helvetica findfont 14 scalefont setfont + +280 46 moveto +0 1 rmoveto +(III) show + +0.3 setlinewidth +newpath 360 280 moveto + 356.49 274.49 lineto + 360 276.49 lineto + 363.51 274.49 lineto + 360 280 lineto +stroke + +newpath 360 280 moveto + 360 100 lineto +stroke + +newpath 312 64 moveto + 306.49 67.51 lineto + 308.49 64 lineto + 306.49 60.49 lineto + 312 64 lineto +stroke + +newpath 268 64 moveto + 308 64 lineto +stroke + +340 48 moveto +0 1 rmoveto +(Index) show + +320 72 moveto +0 1 rmoveto +(Alphabetized) show + +newpath 312 100 moveto + 312 28 lineto + 404 28 lineto + 404 100 lineto + 312 100 lineto +stroke + +436 332 moveto +0 1 rmoveto +(IV) show + +376 184 moveto +0 1 rmoveto +(IV) show + +284 124 moveto +0 1 rmoveto +(III) show + +184 128 moveto +0 1 rmoveto +(III) show + +300 256 moveto +0 1 rmoveto +(II) show + +296 396 moveto +0 1 rmoveto +(II) show + +136 396 moveto +0 1 rmoveto +(I) show + +newpath 480 328 moveto + 474.49 331.51 lineto + 476.49 328 lineto + 474.49 324.49 lineto + 480 328 lineto +stroke + +newpath 404 328 moveto + 476 328 lineto +stroke + +504 316 moveto +0 1 rmoveto +(Index) show + +504 336 moveto +0 1 rmoveto +(Final) show + +newpath 480 360 moveto + 480 296 lineto + 556 296 lineto + 556 360 lineto + 480 360 lineto +stroke + +192 52 moveto +0 1 rmoveto +(Processor) show + +204 76 moveto +0 1 rmoveto +(Index) show + +newpath 160 160 moveto + 188 100 lineto +stroke + +newpath 192 96 moveto + 190.59 102.38 lineto + 189.52 98.48 lineto + 185.62 97.41 lineto + 192 96 lineto +stroke + +newpath 288 160 moveto + 260 100 lineto +stroke + +newpath 256 96 moveto + 261.98 98.64 lineto + 257.95 98.92 lineto + 256.14 102.53 lineto + 256 96 lineto +stroke + +newpath 336 288 moveto + 292 228 lineto +stroke + +newpath 288 224 moveto + 293.98 226.64 lineto + 289.95 226.92 lineto + 288.14 230.53 lineto + 288 224 lineto +stroke + +newpath 224 64 45.2548 0 360 arc stroke + +144 168 moveto +0 1 rmoveto +(Style) show + +140 188 moveto +0 1 rmoveto +(Output) show + +144 204 moveto +0 1 rmoveto +(Input) show + +276 172 moveto +0 1 rmoveto +(File) show + +272 188 moveto +0 1 rmoveto +(Index) show + +276 204 moveto +0 1 rmoveto +(Raw) show + +newpath 256 224 moveto + 256 160 lineto + 320 160 lineto + 320 224 lineto + 256 224 lineto +stroke + +newpath 128 224 moveto + 128 160 lineto + 192 160 lineto + 192 224 lineto + 128 224 lineto +stroke + +332 324 moveto +0 1 rmoveto +(Formatter) show + +newpath 264 420 moveto + 320 360 lineto +stroke + +newpath 324 356 moveto + 322.59 362.38 lineto + 321.52 358.48 lineto + 317.62 357.41 lineto + 324 356 lineto +stroke + +newpath 260 424 moveto + 261.41 417.62 lineto + 262.48 421.52 lineto + 266.38 422.59 lineto + 260 424 lineto +stroke + +newpath 360 328 45.2548 0 360 arc stroke + +204 440 moveto +0 1 rmoveto +(Source) show + +192 468 moveto +0 1 rmoveto +(Document) show + +newpath 180 420 moveto + 124 364 lineto +stroke + +newpath 120 360 moveto + 126.38 361.41 lineto + 122.48 362.48 lineto + 121.41 366.38 lineto + 120 360 lineto +stroke + +newpath 184 424 moveto + 177.55 422.99 lineto + 181.37 421.68 lineto + 182.19 417.72 lineto + 184 424 lineto +stroke + +newpath 185.33 424 moveto + 185.33 488 lineto + 260.01 488 lineto + 260.01 424 lineto + 185.33 424 lineto +stroke + +68 308 moveto +0 1 rmoveto +(Editor) show + +52 332 moveto +0 1 rmoveto +(Interactive) show + +newpath 88 328 45.2548 0 360 arc stroke diff --git a/indexing/makeindex/paper/fig1.tex b/indexing/makeindex/paper/fig1.tex new file mode 100644 index 0000000000..7a0d3ef03e --- /dev/null +++ b/indexing/makeindex/paper/fig1.tex @@ -0,0 +1,65 @@ +\setlength{\unitlength}{0.6pt} +\newcommand{\ctext}[1]{\makebox(0,0){#1}} + + \begin{picture}(600,500)(0,0) + \small + \put(90,330){\circle{90}} + \put(90,335){\ctext{Interactive}} + \put(90,315){\ctext{Editor}} + + \put(120,360){\vector(1,1){65}} + \put(185,425){\vector(-1,-1){65}} + \put(140,400){\ctext{I}} + + \put(185,425){\framebox(75,75){}} + \put(225,475){\ctext{Document}} + \put(225,445){\ctext{Source}} + + \put(260,425){\vector(1,-1){70}} + \put(330,355){\vector(-1,1){70}} + \put(300,400){\ctext{II}} + + \put(360,330){\circle{90}} + \put(360,330){\ctext{Formatter}} + + \put(400,330){\vector(1,0){80}} + \put(440,340){\ctext{IV}} + + \put(335,295){\vector(-1,-1){65}} + \put(310,260){\ctext{II}} + + \put(480,295){\framebox(75,65){}} + \put(520,346){\ctext{Final}} + \put(520,321){\ctext{Index}} + + \put(130,160){\framebox(65,65){}} + \put(160,205){\ctext{Input}} + \put(160,190){\ctext{Output}} + \put(160,175){\ctext{Style}} + + \put(160,160){\vector(1,-2){35}} + \put(190,135){\ctext{III}} + + \put(255,160){\framebox(65,65){}} + \put(290,205){\ctext{Raw}} + \put(290,190){\ctext{Index}} + \put(290,175){\ctext{File}} + + \put(290,160){\vector(-1,-2){35}} + \put(290,130){\ctext{III}} + + \put(225,65){\circle{90}} + \put(225,80){\ctext{Index}} + \put(225,55){\ctext{Processor}} + + \put(260,65){\vector(1,0){40}} + \put(285,55){\ctext{III}} + + \put(300,30){\framebox(110,70){}} + \put(355,75){\ctext{Alphabetized}} + \put(355,55){\ctext{Index}} + + \put(360,100){\vector(0,1){195}} + \put(375,190){\ctext{IV}} + + \end{picture} diff --git a/indexing/makeindex/paper/ind.bbl b/indexing/makeindex/paper/ind.bbl new file mode 100644 index 0000000000..c18c03c487 --- /dev/null +++ b/indexing/makeindex/paper/ind.bbl @@ -0,0 +1,147 @@ +\begin{thebibliography}{10} + +\bibitem{seybold} +\newblock {\em The Seybold Report on Publishing Systems}. +\newblock Seybold Publications Inc., Media, Pennsylvania. +\newblock Published 22 times a year. + +\bibitem{knuth:pgm} +Donald~E. Knuth. +\newblock {\em {\TeX}: The Program}, volume~B of {\em Computers \& + Typesetting}. +\newblock Addison-Wesley Publishing Company, Reading, Massachusetts, 1986. + +\bibitem{knuth:lp} +Donald~E. Knuth. +\newblock Literate programming. +\newblock {\em The Computer Journal}, 27(2):97--111, May 1984. + +\bibitem{chicago:style} +\newblock {\em The Chicago Manual of Style}, 13th edition, 1982. +\newblock University of Chicago Press, Chicago, Illinois. + +\bibitem{phc:int} +Pehong Chen and Michael~A. Harrison. +\newblock Integrating noninteractive document processors into an interactive + environment. +\newblock Technical Report 87/349, Computer Science Division, University of + California, Berkeley, California, April 1987. +\newblock Submitted for publication. + +\bibitem{brandin:war} +David~H. Brandin and Michael~A. Harrison. +\newblock {\em The Technology War}. +\newblock John Wiley and Sons, Inc., New York, New York, 1987. + +\bibitem{traub:ibc} +J.~F. Traub, G.~W. Wasilkowski, and H.~Wo\'zniakowski. +\newblock {\em Information-Based Complexity}. +\newblock Academic Press, New York, New York, 1988. + +\bibitem{hutchins:dm} +Edwin~L. Hutchins, James~D. Hollan, and Donald~A. Norman. +\newblock Direct manipulation interfaces. +\newblock In D.~A. Norman and S.~W. Draper, editors, {\em User-Centered System + Design}, pages 87--124 (Chapter 5), Hillsdale, New Jersey, 1986. Lawrence + Erlbaum Associates, Inc. + +\bibitem{shneiderman:dm} +Ben Shneiderman. +\newblock Direct manipulation: A step beyond programming languages. +\newblock {\em IEEE Computer}, 16(8):57--69, August 1983. + +\bibitem{lamport:latex} +Leslie Lamport. +\newblock {\em {\Lit}: A Document Preparation System. User's Guide and + Reference Manual}. +\newblock Addison-Wesley Publishing Company, Reading, Massachusetts, 1986. + +\bibitem{knuth:tex} +Donald~E. Knuth. +\newblock {\em The {\TeX} Book}. +\newblock Addison-Wesley Publishing Company, Reading, Massachusetts, 1984. +\newblock Reprinted as Vol. A of {\it Computers \& Typesetting\/}, 1986. + +\bibitem{reid:phd} +Brian~K. Reid. +\newblock {\em Scribe: A document specification language and its compiler}. +\newblock PhD thesis, Computer Science Department, Carnegie-Mellon University, + Pittsburgh, Pennsylvania, October 1980. +\newblock Available as technical report CMU-CS-81-100. + +\bibitem{ossanna:nroff} +Joseph~F. Ossanna. +\newblock Nroff/troff user's manual. +\newblock Computer Science Technical Report No. 54, AT\&T Bell Laboratories, + Murray Hill, New Jersey, October 1976. +\newblock Also available in UNIX User's Manual. + +\bibitem{xerox:star} +\newblock {\em 8010 STAR Information System Reference Library, Release 4.2}. +\newblock Xerox Office Systems, El Segundo, California. 1984. + +\bibitem{frame:1.0} +\newblock {\em Frame Maker Reference Manual, Version 1.0}. +\newblock Frame Technology Corporation, San Jose, California. February 1987. + +\bibitem{ms:word} +\newblock {\em Reference to Microsoft Word, Word Processing Program for the + Apple Macintosh, Version 3.0}. +\newblock Microsoft Corporation, Seattle, Washington. January 1987. + +\bibitem{ventura:1.1} +\newblock {\em Ventura Publisher --- Professional Publishing Program, Reference + Guide, version 1.1}. +\newblock Ventura Software, Inc., Salinas, California. July 1987. + +\bibitem{phc:aip} +Pehong Chen and Michael~A. Harrison. +\newblock Automating index preparation. +\newblock Technical Report 87/347, Computer Science Division, University of + California, Berkeley, California, March 1987. + +\bibitem{stallman:gnu} +Richard~M. Stallman. +\newblock {\em {GNU} Emacs Manual, Fifth Edition, Version 18}. +\newblock Free Software Foundation, Cambridge, Massachusetts, December 1986. + +\bibitem{teitelman:cedar} +Warren Teitelman. +\newblock A tour through {Cedar}. +\newblock {\em IEEE Software}, 1(2):44--73, April 1984. + +\bibitem{beach:index} +Richard~J. Beach. +\newblock Personal communication. + +\bibitem{yank:eb} +Nicole Yankelovich, Morman Meyrowitz, and Andries van Dam. +\newblock Reading and writing the electronic book. +\newblock {\em IEEE Computer}, 18(10):15--30, October 1985. + +\bibitem{bentley:index} +Jon~J. Bentley and Brian~W. Kernighan. +\newblock Tools for printing indexes. +\newblock {\em Electronic Publishing}, 1(1), June 1988. +\newblock Also available as Computer Science Technical Report No. 128, AT\&T + Bell Laboratories, Murray Hill, October 1986. + +\bibitem{mcmahon:sed} +Lee~E. McMahon. +\newblock Sed -- a non-interactive text editor. +\newblock Computer Science Technical Report No. 77, AT\&T Bell Laboratories, + Murray Hill, August 1978. +\newblock Also available in UNIX User's Manual. + +\bibitem{aho:awkb} +Alfred~V. Aho, Brian~W. Kernighan, and Peter~J. Weinberger. +\newblock {\em The {AWK} Programming Language}. +\newblock Addison-Wesley Publishing Company, Reading, Massachusetts, 1988. + +\bibitem{aurbach:idxtex} +Richard~L Aurbach. +\newblock Automated index generation for {\LaTeX}. +\newblock {\em TUGBoat}, 8(2):201--209, July 1987. + +\end{thebibliography} + diff --git a/indexing/makeindex/paper/ind.pdf b/indexing/makeindex/paper/ind.pdf Binary files differnew file mode 100644 index 0000000000..a7922db8dc --- /dev/null +++ b/indexing/makeindex/paper/ind.pdf diff --git a/indexing/makeindex/paper/ind.tex b/indexing/makeindex/paper/ind.tex new file mode 100644 index 0000000000..92e902ee14 --- /dev/null +++ b/indexing/makeindex/paper/ind.tex @@ -0,0 +1,1245 @@ +% Document Type: LaTeX +% Master File: ind.tex + +\input{indplus.tex} + +\title{Index Preparation and Processing\thanks{Sponsored +in part by the National Science Foundation under Grant MCS-8311787, +and by the Defense Advanced Research Projects Agency (DoD), +ARPA Order No. 4871, monitored by Space and Naval Warfare Systems Command, +under Contract No. N00039-84-C-0089.} +} + +\author{{\sl Pehong Chen}\thanks{Additional support has been provided +by an IBM Graduate Fellowship.}\\ + {\sl Michael A. Harrison}\\\\ + Computer Science Division \\ + University of California \\ + Berkeley, CA 94720 +} + +\def\today{} +\maketitle + +\begin{abstract} +\singlespace +Index preparation is a tedious and time-consuming task. +This paper indicates how the indexing process can be automated +in a way that is largely independent of a specific typesetting system +and independent of the format being used. +Fundamental issues related to this process are identified and analyzed. +Specifically, we develop a framework for placing index +commands in the document. In addition, the design of +a general purpose index processor that +transforms a raw index into an alphabetized version is described. +The resulting system has proved very useful and effective in producing +indexes for several books, technical reports, and manuals. +A comparison of our system with indexing facilities +available from a variety of other document preparation environments is given. + +{\it Keywords\/}: index placement, index processing, source-language model, +direct manipulation. +\end{abstract} + +\section{Introduction} +Although there has been a great deal of activity in +electronic publishing~[1], +there are still aspects of document composition that have not been +fully automated. +One of the most time-consuming concerns is the preparation of an index. +In ordinary books, an index allows a reader to +access essential information easily. +A poor index with many omissions or poorly chosen concepts +detracts from other aspects of the book. +For highly complex technical material that may include computer programs, +different kinds of indices may +reference even the identifiers of a programming language. A good example +of an elaborate indexing scheme can be found in Knuth's +{\it {\TeX}: The Program\/}~[2] and his WEB system~[3] in general. +For computer programs like these, +completeness is essential and the accuracy of +traditional hand methods will not suffice for software engineering +applications. + +Standard authors' guides, such as Reference~[4], +recommend that index terms be marked on page proofs or on a separate set of +galley proofs. +The traditional method is to use $3 \times 5$ cards, appropriately called +index cards. +A page number is added to a card when a reference is encountered. +Sorting is done by hand and the process is tedious and error-prone. +Computers offer an opportunity to significantly reduce the amount of labor +invested in this process while noticeably improving the quality of the +resulting index. + +This paper indicates how the indexing process can be automated +in a way that is largely independent of a specific typesetting system +and independent of the format being used. +Specifically, we develop a framework for placing index +commands in the document. In addition, the design of +a general purpose index processor that +transforms a raw index into an alphabetized version is described. +These concepts have been implemented as part of an extensive authoring +environment~[5]. This environment includes a suite of Lisp programs +for the index placing facility and a C program for the +index processor. The resulting system has been successfully +used in producing indexes for some books~[6,7] +and a number of technical reports and manuals. + +Indexing issues under both {\it source-language\/} and +{\it direct-manipulation\/}~[8,9] paradigms are considered. +In a source-language based system, the user specifies +the document with interspersed commands, which is then passed to a formatter, +and the output is obtained. The source-language usually provides some +abstraction and control mechanisms such as procedures, macros, +conditionals, variables, etc. in much the same way as a high-level programming +language does. In a direct-manipulation environment, +the user manipulates the document output appearance directly +by invoking built-in operators available through menus and buttons. +These systems are highly interactive; the result of invoking an operation +is observed instantaneously, thereby creating an illusion that the user +is ``directly'' manipulating the underlying object. + +The document attributes in direct-manipulation systems +are usually specified by a declarative language encapsulated as +form-based property sheets. These property sheets +correspond to textual markup tags that can be imported to +or exported from the direct-manipulation system for document interchange +purposes. While a source representation is maintained explicitly in the +source-language model, the notion of a document semantics specification +language is somewhat implicit in direct-manipulation systems. + +Some people have called direct-manipulation systems {\W} +({\it what-you-see-is-what-you-get\/}). +The two concepts are not equivalent, however. +{\W} refers to the correspondence between what is presented on a video display +and what can be generated on some other device. In the context of +electronic publishing, {\W} means that there is a very close relationship +in terms of document appearance +between a screen representation and the final hardcopy. +Direct manipulation is a more general concept that models user interfaces. +A direct-manipulation document preparation system may not have +a {\W} relationship between its display representation and the final hardcopy. +Conversely, a batch-oriented, source-language based formatter +may be coupled with a previewer that is {\W}. + +This paper presents some general indexing problems and our solutions +in a top-down fashion. +First we discuss the desirable features of an index processor +and then some design and implementation considerations for such a processor. +Our goal is to arrive at general purpose solutions. +Next, a framework is introduced under which an author enters index commands +or tags with much reduced overhead. +The examples shown are in {\LaTeX}~[10], a high-level +document preparation language based on {\TeX}~[11]. +The model, however, is not restricted to any particular formatting language, +nor to the source-language paradigm. +We also examine some unique indexing issues in +electronic document development environments that do not seem to find +appropriate counterparts in traditional printed material. +Finally our indexing facilities are evaluated against those available in +other formatting systems such as {\SB}~[12], +{\TF}~[13], and some direct-manipulation environments. + +%\newpage +\begin{figure}[p] +%% \centerline{ +%% \psfig{figure=fig1.ps,height=4.5in} +%% } +%% Replace PostScript figure with LaTeX picture mode version +%% designed to closely match the original fig1.ps output +%% so that this document can be formatted and printed on any +%% system. -- Nelson H. F. Beebe <beebe@math.utah.edu> [08-Jul-1991] +\input{fig1.tex} +\caption[{\it The sequential flow of index processing\/}.]{Circles +in the picture represent processors, +squares are documents or auxiliary files. In Step~I, the author uses an +editor to place index commands in the document. In Step~II, a raw index +is generated as a by-product of formatting. In Step~III, this raw index +together with some optional style information are taken as input to +the index processor and an alphabetized version is created. +Finally in Step~IV, the index is formatted to yield the ultimate result.} +\end{figure} +%\newpage + +\section{Basic Tasks} +Index preparation is a process involving the following steps: +\renewcommand{\labelenumi}{\Roman{enumi}.} % set the enumerated list in roman +\begin{enumerate} + \item Placing index commands in the document source, which presumably + comprises multiple files. An index command takes a single + argument: the key to be indexed. + \item Creating a raw index file whose entries each consists + of two arguments: the index key and the page on which the index + command appears. + \item Processing the raw index file. Here, all index keys are + sorted alphabetically. Page numbers under the same key are merged + and successive numbers may be collected into + intervals (e.g., \verb|1, 2, 3, 4, 5| is replaced by \verb|1-5|). + Subitems within an entry, if any, are properly handled. + \item Formatting the processed index. The result is the actual index. +\end{enumerate} +\renewcommand{\labelenumi}{\arabic{enumi}.} % reset the list back to arabic +The idea is illustrated in Figure~1, where roman capitals I--IV marking +the edges correspond to the four steps here. +This procedure is a highly sequential, +for the input to one step depends upon the result from the previous one. + +Figure~2 exemplifies a stepwise development of the process. +In {\LaTeX} and {\TeX}, all commands begin with a backslash +(\verb|\|). Figure~2.a shows some occurrences of index +commands (\verb|\index|) in the document source, with corresponding pages +listed on the left. The page number is not part of the source file since at +file-preparation time, it is unclear on which page a given textual material +will eventually appear. Figure~2.a includes these numbers just to +indicate that ultimately these entries would appear on those pages. +Figure~2.b shows a raw index file generated by {\LaTeX}. +After running through the index processor, it becomes an alphabetized index +with commands specifying a particular output appearance (Figure~2.c). +The result after formatting is shown in Figure~2.d. + +\begin{figure} +\begin{iexample} +&\\ +{\sl Page iv\/}: & \verb|\index{alpha}| \\ +{\sl Page 1\/}: & \verb|\index{alpha}| \\ +{\sl Page 2\/}: & \verb|\index{alpha}| \\ +{\sl Page 3\/}: & \verb|\index{alpha}| \\ +{\sl Page 11\/}: & \verb#\index{alphabeta|see{beta}}# \\ +{\sl Page 14\/}: & \verb|\index{alpha@{\it alpha\/}}| \\ + & \verb#\index{beta|bold}# \\ +{\sl Page 22\/}: & \verb|\index{alpha!beta!gamma}| \\ +{\sl Page 38\/}: & \verb|\index{alpha!delta}| \\ + & \\ +\sindex +\\ +\verb|\indexentry{alpha}{iv}| \\ +\verb|\indexentry{alpha}{1}| \\ +\verb|\indexentry{alpha}{2}| \\ +\verb|\indexentry{alpha}{3}| \\ +\verb#\indexentry{alphabeta|see{beta}}{11}# \\ +\verb|\indexentry{alpha@{\it alpha\/}}{14}| \\ +\verb#\indexentry{beta|bold}{14}# \\ +\verb|\indexentry{alpha!beta!gamma}{22}| \\ +\verb|\indexentry{alpha!delta}{38}| \\ +\end{iexample} +\hrule +\begin{iexample} +&\\ +\verb|\begin{theindex}| &\\ +&\\ +\verb|\item alpha, iv, 1-3| &\\ +\verb| \subitem beta| &\\ +\verb| \subsubitem gamma, 22| &\\ +\verb| \subitem delta, 38| &\\ +\verb|\item {\it alpha\/}, 14| &\\ +\verb|\item alphabeta, \see{beta}{11}| &\\ +&\\ +\verb|\indexspace| &\\ +&\\ +\verb|\item beta, \bold{14}| &\\ +&\\ +\verb|\end{theindex}| &\\ +\tindex +\\ +alpha, iv, 1--3 \\ +\sitem beta \\ +\ssitem gamma, 22\\ +\sitem delta, 38 \\ +{\it alpha\/}, 14\\ +alphabeta, {\it see\/} beta\\ +\\ +beta, {\bf 14}\\ +\end{iexample} +\caption{{\it The stepwise development of index processing\/}. +This example is specified in {\LaTeX}. +(a) {\sl Top Left\/}: Occurrences of index commands in the document source. +Note that page numbers are unknown at the time of input when a source-based +formatter like {\LaTeX} is used. Page numbers are included here simply to +illustrate where each instance will occur. + (b) {\sl Top Right\/}: raw index file generated by {\LaTeX}. + (c) {\sl Bottom Left\/}: alphabetized index file. + (d) {\sl Bottom Right\/}: formatted final index.} +\end{figure} + +Based on the example given in Figure~2, these four steps are explained +below, where Steps~I and III are further expanded in subsequent sections. +Issues involved in Steps~II and IV are less complex +and are covered only in this section. + +\subsection{Placing Index Commands} +Step~I deals with placing index commands in the document. +In a source-language based environment, the commands can simply be inserted +in the document source with a text editor. +They will be utilized by the formatter in generating +raw index entries (Step~II), but will contribute nothing to the output +appearance as far as the corresponding pages are concerned. + +In a direct-manipulation system, index commands cannot be entered directly in +the document under manipulation. A possible solution is to put them +in ``shadow pages'' instead of the document output representation. +A shadow document is the original document plus +special tags that, among other things, +mark logical objects like comments, bibliographical citations, +cross references, indexes, etc. +These tags are essential to document composition but do not correspond to +physical appearance in their original forms. Upon request, the corresponding +markers of these tags can be displayed along with the original document +for editing purposes. For the user's visual cue, each type of tags can be +represented by a different marker symbol. +Normally for each tag entered in the +document, an embedded annotation can be specified. +An additional window can be created to show the associated annotation +if necessary. This shadow document approach is widely adopted by +direct-manipulation document development or desktop publishing systems +such as Xerox {\ST}~[14], {\FM}~[15], +{\WD}~[16], and {\VP}~[17]. + +The primary issue in step I for both paradigms +is whether or not a systematic mechanism +can be derived for the entering of index commands or tags. +Details of a general model that accomplishes this task are given below. + + +\subsection{Generating the Raw Index} +Step~II concerns attaching the current page number to each index +command placed in the document. The command used in the generated +raw index file may be renamed (in our example, it is changed +from \verb|\index| to \verb|\indexentry|). +The entries are in the exact order in which they appear in the document source. +Thus, as long as the current page number is accessible, be it +source-language or direct-manipulation based, generating raw index entries +is relatively straightforward. + +There are minor differences between the two paradigms in this step, +however. The generation of raw index entries in a source-language based +system, like formatting itself, is by and large a ``batch job''. +In a direct-manipulation editor, it is easier to maintain the list of raw index entries +incrementally because the document being manipulated is always formatted +so the page number is always current. + +\subsection{Index Processing} +Processing raw index entries raises several issues. +Some high-level issues are described below with references to the example given +in Figure~2; how these tasks can be realized is detailed in the next section. + +{\it Permutation\/}. Index entries are sorted alphabetically (Figure~2.c). +The index processor must differentiate among different types of keys +such as strings, numbers, and special symbols. +Upper and lower case letters should be distinguished. +Furthermore, it may be necessary to handle roman, arabic, and +alphabetic page numbers. + +{\it Merging\/}. Different page numbers corresponding to the same +index key are merged into one list. Also, three or more +successive page numbers are abbreviated as a range (as in the +case of \verb|alpha, iv, 1-3|, Figure~2.c). If citations on successive +pages are logically distinct, good indexing practice suggests that they +should not be represented by a range. Our system allows user control +of this practice. + +{\it Subindexing\/}. Multi-level indexing is supported. +Here, entries sharing a common prefix are grouped together +under the same prefix key. +The special symbol `\verb|!|' serves as the level operator +in the example (Figure~2.a and 2.b). Primary indexes are +converted to first level items (the \verb|\item| entries in Figure~2.c) +while subindexes are converted to lower level items +(e.g., \verb|\subitem| or \verb|\subsubitem| entries in Figure~2.c). + +{\it Actual Field\/}. The distinction between a {\it sort key\/} +and its {\it actual field\/} is made explicit. +Sort keys are used in comparison while their actual counterparts are +what end up being placed in the printed index. +In the example, the `\verb|@|' +sign is used as the actual field operator, which means its +preceding string is the sort key and its succeeding string +is the actual key (e.g., the \verb|\index{alpha@{\it alpha\/}}| +in Figure~2.a). +The same sort key with and without an actual field +are treated as two separate entries (cf. \verb|alpha| and {\it alpha\/} +in the example). If a key contains no actual operator, +it is used as both the sort field and the actual field. + +The separation of a sort key from its actual field makes entry sorting +much easier. If there were only one field, +the comparison routine would have to ignore syntactic sugar related to +output appearance and compare only the ``real'' keywords. +For instance, in \verb|{\it alpha\/}|, the program has to ignore the font +setting command \verb|\it|, the italic correction command \verb|\/|, +and the scope delimiters \verb|{}|. +In general, it is impossible to know +all the patterns that the index processor should ignore, +but with the separation of the fields, the sort key is used as a verbatim string +in comparison; any special effect can be achieved via the actual field. + +{\it Page Encapsulation\/}. Page numbers can be encapsulated +using the `\verb#|#' operator. In the example, +page 14 on which \verb|\index{beta}| occurs is set in boldface, as +represented by the command \verb|\bold|. The ability to set +page numbers in different fonts allows the index to convey +more information about whatever is being indexed. For instance, +the place where a definition occurs can be set in one font, its +primary example in a second, and others in a third. + +{\it Cross Referencing\/}. Some index entries make references to +others. In our example the \verb|alphabeta| entry is a reference +to \verb|beta|, as indicated by the {\it see\/} phrase. +The page number, however, disappears after formatting (Step~IV), +hence it is immaterial where index commands dealing with cross references +like {\it see\/} occur in the document. +This is a special case of page encapsulation (\verb|see{beta}| appears +after the `\verb#|#' operator). +Variations like {\it see also\/}, which gives page numbers as well +as references to other entries, work similarly. + +{\it Input/Output Style\/}. In order to be +formatter- and format-independent, the index processor must be able +to handle a variety of formats. There are two reasons for considering +this independence issue in the input side: +Raw index files generated by systems +other than {\LaTeX} may not comply to the default format, and +the basic framework established for processing indexes can also be +used to process other objects of similar nature (e.g., glossaries). +But these other objects will certainly have a different keyword +(e.g., \verb|\glossaryentry| as opposed to \verb|\indexentry|) +in the very least. +Similarly in the output side the index style +may vary for different systems. Even within the same formatting +system, the index may have to look differently under different +publishing requirements. In other words, there must be a way to inform +the processor of the input format and the output style. + + +\subsection{Index Formatting} +Two key issues in this last step are +support for multiple styles and formatting independence. +First, the formatting style macros used in Step~III output +must be defined. In our example, +the global environment (\verb|\begin{theindex}...\end{theindex}|) tells +{\LaTeX} to use a two-column page layout. Each \verb|\item| is +left justified against the column margin and each \verb|\subitem| is indented +by 20 points, \verb|\subsubitem| by 30, etc. +There is a vertical space bound to +\verb|\indexspace| inserted before the beginning of a new letter +(e.g., before \verb|beta|). + +The formatting independence problem refers to whether or not the final index +can be formatted independently of the entire document. +Indexing is typically the last step of document preparation, and +is attempted only when the entire document is finalized. +It is desirable to be able to generate the index without +reformatting the entire document. To be able to format +the index separately, the global context must be known, which is made possible +by the extensible style facility in our design. +One can redefine \verb|preamble| and \verb|postamble| to +invoke a style consistent with the original document. + +The other information needed to perform effective separate formatting +is the starting page number for the index. +Some styles require that the index +start on an even or odd page number. +In either case, there must be provisions for including the correct +starting page number in the pre-formatted version of index. + + +\section{Index Processing} +The index processor performs the tasks indicated above --- +permutation, page number merging, subindexing, style handling, and other +special effects. In order to achieve format and formatter independence, +the index processor must be able to accept raw index +terms designated by different keywords and delimiters. +Likewise, it must be able to generate output in a specific style +so that the result can be processed by the corresponding formatter. +The intended tasks can be performed in multiple passes: +First the input format file and output style file are scanned and analyzed. +Entries in the input file are then processed. Next, all legal entries are +sorted. Finally, the output index is generated in the last pass. +The remainder of this section discusses the essential attributes +for input formats and output styles and points out relevant issues +for sorting and generating the entries. + + +\begin{table} +\begin{center} +{\small +\begin{tabular}{l|c|c|l} +\hline +\hd{specifier} & \hd{attribute} & \hd{default} & \hdr{meaning} \\ +\hline\hline +\verb|keyword| & {\it string\/} & \verb|"\\indexentry"| & +index command\\ +\hline +\verb|arg_open| & {\it char\/} & \verb|'{'| & +argument opening delimiter\\ +\hline +\verb|arg_close| & {\it char\/} & \verb|'}'| & +argument closing delimiter\\ +\hline +\verb|range_open| & {\it char\/} & \verb|'('| & +page range opening delimiter\\ +\hline +\verb|range_close| & {\it char\/} & \verb|')'| & +page range closing delimiter\\ +\hline +\verb|level| & {\it char\/} & \verb|'!'| & +index level delimiter\\ +\hline +\verb|actual| & {\it char\/} & \verb|'@'| & +actual key designator\\ +\hline +\verb|encap| & {\it char\/} & \verb#'|'# & +page number encapsulator\\ +\hline +\verb|quote| & {\it char\/} & \verb|'"'| & +quote symbol\\ +\hline +\verb|escape| & {\it char\/} & \verb|'\\'| & +symbol that escapes \verb|quote|\\ +\hline +\verb|page_compositor| & {\it string\/} & \verb|"-"| & +composite page delimiter\\ +\hline +\end{tabular} +} +\end{center} +\caption{Input format parameters.} +\end{table} + +\subsection{Input Format} +Table~1 is a summary of the input format that consists of a list +of \verb|<|{\it specifier\/}, {\it attribute\/}\verb|>| pairs. +These attributes +are the essential tokens and delimiters needed in scanning the +input index file. Default string constants are enclosed in +double quotes (\verb|"..."|) and character constants are +in single quotes (\verb|'x'|). The user can override +the default value by specifying a specifier and a new attribute +in the format file or property sheet. +The attribute of \verb|keyword| is self-explanatory; +\verb|arg_open| and \verb|arg_close| denote the argument opening and +closing delimiters, respectively. +The meanings of special operators such as \verb|level|, +\verb|actual|, and \verb|encap| are described above. + +The two range delimiters \verb|range_open| and \verb|range_close| are +used with the \verb|encap| operator. +When \verb|range_open| immediately follows \verb|encap| +(i.e., \verb#\index{...|(...}#), +it tells the index processor that an explicit range is starting. +Conversely \verb|range_close| signals the closing of a range. +In our design, three or more successive page numbers are abbreviated as +a range implicitly. This {\it implicit\/} range formation can be turned +off if an indexed term represents logically distinct concepts in different +pages. When the implicit range is disabled, {\it explicit\/} page ranges +can be enforced by using the two range delimiters +\verb|range_open| and \verb|range_close|. +Therefore, it is possible to index an entire section or a large piece +of text related to a certain concept without having to insert an index +command in every single page. + +The \verb|quote| operator is used to escape symbols. +Thus \verb|\index{foo"@goo}| means a sort key of \verb|foo@goo| +rather than a sort key of \verb|foo"| and an actual key of \verb|goo|. +As an exception, \verb|quote|, when preceded by \verb|escape| (i.e. +\verb|\index{...\"...}|), does not escape its succeeding letter. +This special case is included because \verb|\"| is the umlaut +command in {\TeX}. Requiring \verb|quote| itself to be quoted +in this case (i.e. \verb|\""|) is feasible but somewhat awkward; +\verb|quote| and \verb|escape| must be distinct. + +A page number can be a composite of one or more fields +separated by the delimiter bound to \verb|page_compositor| +(e.g., II-12 for page 12 of Chapter II). +This attribute allows the lexical analyzer to separate +these fields, simplifying the sorting of page numbers. + +\subsection{Output Style} +Table~2 summarizes the output style parameters. Again, it is a list +of \verb|<|{\it specifier\/}, {\it attribute\/}\verb|>| pairs. +In the default column, `\verb|\n|' and `\verb|\t|' denote a new line +and a tab, respectively. These parameters can be further divided into +the following groups: + +\begin{table} +\begin{center} +{\small +\begin{tabular}{l|c|l|l} +\hline +\hd{specifier} & \hd{attribute} & \hd{default} & \hdr{meaning} \\ +\hline\hline +\verb|preamble| & {\it string\/} & \verb|"\\begin{theindex}\n"| & +index preamble\\ +\hline +\verb|postamble| & {\it string\/} & \verb|"\n\n\\end{theindex}\n"| & +index postamble\\ +\hline +\verb|setpage_prefix| & {\it string\/} & \verb|"\n \\setcounter{page}{"| & +page setting command prefix\\ +\hline +\verb|setpage_suffix| & {\it string\/} & \verb|"}\n"| & +page setting command suffix\\ +\hline +\verb|group_skip| & {\it string\/} & \verb|"\n\n \\indexspace\n"| & +intergroup vertical space\\ +\hline +\verb|lethead_prefix| & {\it string\/} & \verb|""| & +new letter heading prefix\\ +\hline +\verb|lethead_suffix| & {\it string\/} & \verb|""| & +new letter heading suffix\\ +\hline +\verb|lethead_flag| & {\it number\/} & \verb|0| & +flag designating new letter\\ +\hline +\verb|item_0| & {\it string\/} & \verb|"\n \\item "| & +level 0 item separator\\ +\hline +\verb|item_1| & {\it string\/} & \verb|"\n \\subitem "| & +level 1 item separator\\ +\hline +\verb|item_2| & {\it string\/} & \verb|"\n \\subsubitem "| & +level 2 item separator\\ +\hline +\verb|item_01| & {\it string\/} & \verb|"\n \\subitem "| & +levels 0/1 separator\\ +\hline +\verb|item_x1| & {\it string\/} & \verb|"\n \\subitem "| & +levels x/1 separator\\ +\hline +\verb|item_12| & {\it string\/} & \verb|"\n \\subsubitem "| & +levels 1/2 separator\\ +\hline +\verb|item_x2| & {\it string\/} & \verb|"\n \\subsubitem "| & +levels x/2 separator\\ +\hline +\verb|delim_0| & {\it string\/} & \verb|", "| & +level 0 key/page delimiter\\ +\hline +\verb|delim_1| & {\it string\/} & \verb|", "| & +level 1 key/page delimiter\\ +\hline +\verb|delim_2| & {\it string\/} & \verb|", "| & +level 2 key/page delimiter\\ +\hline +\verb|delim_n| & {\it string\/} & \verb|", "| & +inter page number delimiter\\ +\hline +\verb|delim_r| & {\it string\/} & \verb|"--"| & +page range designator\\ +\hline +\verb|encap_prefix| & {\it string\/} & \verb|"\\"| & +page encapsulator prefix\\ +\hline +\verb|encap_infix| & {\it string\/} & \verb|"{"| & +page encapsulator infix\\ +\hline +\verb|encap_suffix| & {\it string\/} & \verb|"}".| & +page encapsulator suffix\\ +\hline +\verb|page_precedence| & {\it string\/} & \verb|"rnaRA"| & +page type precedence\\ +\hline +\verb|line_max| & {\it number\/} & \verb|72| & +maximum line length\\ +\hline +\verb|indent_space| & {\it string\/} & \verb|"\t\t"| & +indentation for wrapped lines\\ +\hline +\verb|indent_length| & {\it number\/} & \verb|16| & +length of indentation\\ +\hline +\end{tabular} +} +\end{center} +\caption{Output style parameters.} +\end{table} + +{\it Context\/}. Together, \verb|preamble| and \verb|postamble| + define the context in which the index is to be formatted. + +{\it Starting Page\/}. The starting page number can either be supplied + by the user or retrieved automatically from the document transcript. + In either case, this number can be enclosed with \verb|setpage_prefix| + and \verb|setpage_suffix| to yield a page number initializing command. + +{\it New Group/Letter\/}. The string bound to \verb|group_skip| +denotes the extra vertical space needed when a group is started. +For a group beginning with a different letter, +the parameters \verb|lethead_prefix| and \verb|lethead_suffix| (both with +a default nil string) denote the group heading. +The flag \verb|lethead_flag| has a default value of 0, which +means other than \verb|group_skip| nothing else will be inserted before +the group. +On the other hand, if this flag is positive, the strings bound +to \verb|lethead_prefix| and \verb|lethead_suffix| will be inserted with +an instance of the new letter in uppercase in between. Similarly, +a lowercase letter will be inserted if the flag is negative. + +{\it Entry Separators\/}. This group includes everything with the +\verb|item_| prefix. First, \verb|item_|$i$ +denotes the command and indentation to be inserted when +a key is started from a level greater than or equal to $i$. +Second, \verb|item_|$ij$ has a similar meaning, but with +$i = j-1$. Finally, the two \verb|item_x|$j$'s +are included to handle the situation where the parent level has no +page numbers. Some styles require cases like these to be +different from those with page numbers. + +Table~2 depicts a system that supports three levels of +subindexing. In general, suppose $n$ is the number of index +levels supported, there will be $n$ \verb|item_|$i$'s +($0 \leq i \leq n-1$), $(n-1)$ \verb|item_|$ij$'s +($1 \leq j \leq n-1, i = j-1$), and +$(n-1)$ \verb|item_x|$j$'s ($1 \leq j \leq n-1$). + +{\it Page Delimiters\/}. Each level has a key/page delimiter +that defines what is to be inserted between a key and its first +page number. The inter-page delimiter is specified by \verb|delim_n|, +while the range designator is given by \verb|delim_r|. + +{\it Page Encapsulator\/}. The attributes of +\verb|encap_prefix|, \verb|encap_infix|, and \verb|encap_suffix| +form what is to be placed into the output + when an encapsulator is specified +for a certain entry. Suppose \verb|foo| is the specified encapsulator +and \verb|N| is the page number, the output sequence is +\begin{verbatim} + encap_prefix foo encap_infix N encap_suffix +\end{verbatim} + +{\it Page Precedence\/}. Five different types of numerals are +supported by most systems for page numbering. These are +lowercase roman (\verb|r|), numeric or arabic (\verb|n|), +lowercase alphabetic (\verb|a|), uppercase roman (\verb|R|), +and uppercase alphabetic (\verb|A|). The string bound to +\verb|page_precedence| (default \verb|"rnaRA"|) +specifies their order. + +{\it Line Wrapping\/}. In the output index file, +the merged list of page numbers can be wrapped in multiple lines, +if it is longer than \verb|line_max|. The newly wrapped +line is indented by \verb|indent_space| whose length is +\verb|indent_length|. This artificial line wrapping does not +make any difference in formatting, but does provide increased +readability for the pre-formatted final index. +This feature may seem somewhat trivial at first glance, but if no +formatters are involved whatsoever, the readability of the +verbatim output index is important. + +\subsection{Sorting Entries} +Entries in the raw index file are sorted primarily on their index keys +and secondarily on their page numbers. +Index keys are sorted first; within the same index key, +page numbers are sorted numerically. +Sort keys and numeric page numbers are used in the comparison, while +actual keys and literal page fields are entered into the +resulting index. In our design, +a complete index key is an aggregate of one or more sort keys plus the same +or a smaller number of actual keys. The comparison is based on +sort keys, but if two aggregates have identical sort fields and +page numbers, the actual keys can be used to distinguish their order. + +Index keys can be categorized into the following groups: +{\it strings\/}, {\it numbers\/}, and {\it symbols\/}. +A string is a pattern whose leading character is a letter in the alphabet. +A number is a pattern consisting of all digits. A symbol is a pattern +beginning with a character not in the union of the English alphabet and +arabic digits or starting with a digit but mixed with non-digits. +Members of the same group should appear in sequence. +Hence there are two issues concerning ordering: +one deals with entries within a group; the other is +the global precedence among the three groups in question. +Details of sorting index keys can be found in Reference~[18]. + +There are three basic types of numerals for page numbers: {\it roman\/}, +{\it alphabetic\/}, and {\it arabic\/}. +The sorting of arbitrary combinations of these three types of numerals +(e.g., 112, iv, II-12, A.1.3, etc.) +must be based on their numeric values and relative precedence. +The attribute of \verb|page_precedence| in Table~2, for instance, specifies +the precedence. Again, details of sorting page numbers can be found in +Reference~[18]. + +\newpage +\subsection{Creating Output Index Entries} +Once all input entries are sorted, the output index file can be +created. First the attribute bound to \verb|preamble| is placed into +the output file, followed by the string +\begin{quote} + \verb|setpage_prefix |{\sl N\/}\verb| setpage_suffix|, +\end{quote} +provided {\sl N\/} is the starting page number and +such a setting is requested. Next, each entry in the sorted list +is processed in order. Finally, the attribute bound to \verb|postamble| +is appended at the end of the output file. +The algorithm for generating each entry with appropriate formatter-specific +commands or delimiters (i.e. \verb|item_|$i$'s, \verb|delim_|$i$'s, etc.) +is described in Reference~[18]. + +\section{Placing Index Commands} +This section discusses a simple framework for placing index commands +in a document. It assumes an interactive editor is available with +{\it string search\/}, which positions the cursor to a specified pattern, and +{\it query-insert\/}, which displays a menu of +options and, upon the user's selection, inserts +a specified key, together with other constant strings (e.g., +the index command and its argument delimiters). + +We implemented this framework on top of +GNU {\E}~[19] as part of an interactive environment for +composing {\TeX}-based documents~[5]. +The underlying model applies not just to conventional text +editors, but to direct-manipulation systems as well. + +\subsection{Basic Framework} +The basic framework is very simple. All the author needs is +to specify a {\it pattern\/} and a {\it key\/}. +The editor then finds the pattern, +issues a menu of options and inserts the index command along with the key +as its argument upon the user's request. +In our example, suppose both {\it pattern\/} and {\it key\/} are +\verb|alpha|, then the inserted string after an instance +of \verb|alpha| in the document is \verb|\index{alpha}|. +This insertion will be visible in a source-language based system and will be +invisible for a direct-manipulation system (or visible as hidden text +for its shadow pages). + +Before the actual insertion is made, it is desirable to make a confirmation +request that presents a menu of options, of which +{\it confirm\/} and {\it ignore\/} are the most obvious ones. +Thus for each instance of the pattern found, the user can decide if +it is to be indexed. + +Representing patterns as regular expressions gives significantly more power +to this query-insert operation. The same key can represent a complicated +string of a basic pattern, its capitalized form, its acronym, and other +abbreviations. For instance, the following patterns may all be indexed +by the key \verb|UCB|, +\begin{verbatim} + University of California, Berkeley + Berkeley + berkeley + UCB +\end{verbatim} + +As a special case of this \verb|<|{\it key\/}, {\it pattern\/}\verb|>| +setup, one can use words in the neighborhood of current cursor position +as the implicit value for both the key and the pattern. +Some editors allow the use of special characters to delimit word boundaries. +These characters can be used in searching to reduce on the number of +``false drops''. For example, one can position the cursor +after the desired pattern and with one editor command (typically +in two or three key strokes), an index entry will +be inserted with the preceding word (or words) as the implicit key. +The advantage of this facility is that there is no need to type +the key-pattern pair. +The same idea also applies to a region of text, which is a piece of +continuous text in the document. In {\E}, a region is +everything between a marker and the current cursor position. +More generally, the implicit operand can be the {\it current selection\/}, +in which case the bounding positions of the selected text +are not necessarily the insertion point. + +In our system, there is also a special facility to index every author name +that appears in the bibliography or references section of a document. +This feature involves skipping citation entries without an author field and +for each author name found, issuing a query-insert prompt similar to +the normal case. Instead of entering a name directly as the index term, +it is better to display it in the form of last name followed by first +and middle names for confirmation, as in +\begin{quote} +\verb|Confirm: Knuth, Donald E.| +\end{quote} +This reordering yields last names as primary sort keys. +Our name separation heuristic does not always +work for multi-word last names. The confirmation prompt +allows the user to correct it before insertion. + +\subsection{Key-Pattern List} +A collection of these \verb|<|{\it key\/}, {\it pattern\/}\verb|>| pairs +can be compiled in a list. A global function can then be invoked to +process each pair for the entire document or parts of it. +This list can be created off-line by the user, or automatically +in an incremental fashion as the +user confirms new index insertions in an interactive session. The pattern +matching mechanism must be able to recognize and skip instances already +indexed so that unnecessary repetitions are avoided. +In our system, this key-pattern list is a per document list. +If a document includes multiple files, the global function processes +each of them according to the preorder traversal of the file inclusion tree. + + +\subsection{Indexing Menu} +For each instance of the pattern found, a menu of options such as the +following may be presented. +%\newpage +\begin{itemize} + \item {\it Confirm\/}. + \item {\it Ignore\/}. + \item {\it Key-Pattern List\/}. Add the current + \verb|<|{\it key\/}, {\it pattern\/}\verb|>| pair to the list + associated with the current document. + \item {\it Index Level\/}. Prompt the user for an index prefix. + The \verb|level| operator (`\verb|!|'), if not given at the end + of the specified string, should be inserted automatically between + the prefix and the current key. + \item {\it Actual Field\/}. Prompt the user for the actual field + corresponding to the current (sort) key. The \verb|actual| + operator (`\verb|@|') should be automatically inserted in between. + \item {\it Page Encapsulator\/}. Prompt the user for the page + number encapsulator. The \verb|encap| operator (`\verb#|#'), + if not given, should be attached in front of the specified string. + Encapsulators corresponding to popular fonts such as bold, italic, + and slanted, or to cross references like {\it see\/} and + {\it see also\/} can be implemented as a submenu. +\end{itemize} + +\subsection{Extended Framework} +A typical scenario for placing index commands under the extended framework +is as follows. There are two query-insert modes: +one based on a single key-pattern pair and the other +on multiple key-pattern pairs. +In the former mode, the user specifies a pattern and a key, and for +every instance of the pattern found, decides whether to insert the +index command with the specified key, or a variant of it (i.e., a combination +of \verb|level|, \verb|actual|, and \verb|encap|). +In the latter mode, there is a collection of entries that may be represented +as a long list for an entire document, or as a short list for a section. +Each key-pattern pair in the list is processed as in the former case. +Provisions are also available to help construct the list. + +With such powerful mechanisms available, there is a tendency to ``over index'' +because it is so easy to be comprehensive. +In some cases, ``less may be more''. Therefore, one should be extremely +careful in confirming the insertion of {\it key\/} +to avoid false drops picked up by the search mechanism. + + +\section{Direct Manipulation} +Although our implementation of these facilities was for a source-based system, +a number of direct-manipulation systems do support a similar indexing facility. +Four systems are described briefly to indicate +the applicability of the principles depicted in the previous sections. +Also examined is a more elaborate on-line +indexing facility made possible using the electronic media. + + +\subsection{Indexing under Direct Manipulation} +In Xerox PARC's {\CD} environment~[20], +the {\TG} editor supports an +application called {\sl IndexTool\/}~[21] +that automatically prepares multiple +multi-level indexes (general index, author index, etc.) with cross +references ({\it see\/} and {\it see also\/}) +and with substitution phrases (index the +phrase ``data structures'' under ``data structure'' to handle these +automatically). {\sl IndexTool\/} takes a selection and creates an +index entry attached to the document over the selection range. Index +entries can be edited in a separate tool to permit creating the cross +references and substitution text. {\TG} also has a regular expression search +capability via {\sl EditTool\/}, which also +permits a wide range of search and replace operations. + +In {\FM} 1.0~[15], index tags can be placed and edited +using a combination of the {\sl Markers\/} and the {\sl Search\/} tools. +{\sl Markers\/} allows one to specify invisible tags such as +subjects, comments, and of course, index entries. +For each marker, an associated annotation can be specified. +In the indexing case, the annotation is the key to appear in the final index. +Attributes of page encapsulation discussed previously can also be specified +in the {\sl Markers\/} window. +These attributes include explicit page range, fonts, and an option to disable +page numbers so that cross references like {\it see\/} can be realized. +{\FM}'s {\sl Search\/} can be used to locate the desired pattern in plain +or regular expressions. An invisible character \verb|\m| +can be specified in {\sl Search\/} to identify each occurrence +of index markers in the document. +Whenever a marker is found, the corresponding +annotation is displayed in the {\sl Markers\/} window. +The annotated text can incorporate special symbols to yield +multi-level indexing and actual field substitution similar to the ones +described in above. A processor called +{\sl fmBook\/} can be executed off-line to collect index markers, +sort them, and finally generate a formatted index whose style +is customizable via system supplied property sheets. + +In the Macintosh version of {\WD} 3.0~[16], an index command is +designated by the ``index code'' \verb|.i.| The text between \verb|.i.| +and an ``end-of-entry code'', such as a semicolon, is regarded +as the index key. A colon (\verb|:|) in the entry text acts as the index +level operator. The output appearance can be refined by using +variants of the index code. For instance, +\verb|.iB.| and \verb|.iI.| set the page number in boldface and +italic fonts, respectively, \verb|.i(.| and \verb|.i).| create +an explicit page range, etc. Index entries are ``compiled'' +into the actual index that appears at the end of the document. +Before that takes place, the system must be notified that these index codes +are {\it hidden text\/}. An option in the preference sheet +can be set to display hidden text embedded in the document. +Hidden text must be ``hidden'' when index entries are being compiled; +otherwise page number computation will be incorrect. +There are no special tools for entering index codes. +The {\sl find\/} and {\sl change\/} commands in the {\sl Search Menu\/} +do not support regular expressions. There are no query-insert +modes in the search mechanism. Although abbreviations can be registered +as glossary entries, a great many keystrokes are still required in placing +a single index entry. + +In {\VP} 1.1~[17], a desktop publishing system +for documents prepared on any of several word processing +programs on the IBM PC, index entries can be placed in the document by +invoking a dialogue box at the desired position. +An alternative is to use a word processor to enter a markup tag such as +\begin{quote} +\verb|<$I<I>alpha<L>[alpha];beta>| +\end{quote} +where \verb|<$I|$\cdots$\verb|>| marks $\cdots$ as an index term, +\verb|<I>alpha<L>| is the actual key in italic, +\verb|[|$\cdots$\verb|]| designates $\cdots$ as the corresponding sort key, +and the semicolon is the index level operator. +It supports two levels of subindexing as well as {\it see\/} and +{\it see also\/}. Index terms are hidden text; the word {\tt Index} +will be displayed by its {\it Current Selection Indicator\/} when +the cursor is placed at a location where an index term is anchored. +The output index style can be specified by changing attributes in +a property sheet called {\tt GENERATE INDEX}. The collection of +attributes is a proper subset of Table~2. Index processing is executed +as a batch job similar to {\sl fmBook\/} in {\FM}. Searching is unavailable +in {\VP}, therefore an automated index placing subsystem is not possible. + + +\subsection{Dynamic Indexing and Hypertext} +Our proposed implementation of an indexing facility under direct manipulation +and the four real systems discussed previously all operate +in a multi-pass fashion, much the same as a source-language based system. +However, based on its interactive nature, a direct-manipulation document +editor can be constructed with an indexing subsystem that follows the same +central ideas, but with an user interface more closely related to the +direct-manipulation paradigm. + +The ``directness'' may be observed in the following scenario. +The author specifies input/output styles by selecting options available +in system supplied property sheets. For each key selected +in the document, its corresponding entry in the index is immediately +displayed, along with entries already entered. +Sorting is done as the entry is generated for the output. +Consequently, the internal structure for these entries can no longer be +an array that is suitable for fast sorting algorithms. +Instead, a balanced tree may be the preferred structure. +Insertion and deletion reorganize the tree automatically and +a traversal of the tree yields the correct ordering. +A link between a page number in the index entry and its corresponding +actual page is required so that the index needs not be regenerated +when the document is reformatted. In other words, when a page +number changes due to reformatting, all instances of that page in the index +change automatically. + +One possible extension to this model is the ability to point at an entry +in the index and +have the corresponding page located automatically with a keyword highlighted. +Thus indexing becomes a dynamic activity from the reader's point of view. +This feature typifies the power of ``dynamics'' that an electronic document +environment is able to offer, which does not exist in traditional +static printed material. In addition to dynamic indexing, +one can do such hypertext operations as navigation, filtering, summarizing, +etc.~[22] effectively based on markup tags, embedded annotations, and +links among compound objects in the document. + + +\section{Evaluation} +\subsection{Index Placing Subsystem} +An important aspect of our system is the framework for +placing index commands in the document. +This task has been performed traditionally in an ad hoc fashion. +It is unclear how placement is done in the +UNIX {\TF} environment. Reference~[23] does not describe +any automated assistance for the author. + +Entering index codes in {\WD} is awkward because +its search mechanism lacks full regular expression support +and query-insert mode is unavailable. +To mark one piece of text as an index entry, an ordinary session +requires 8 mouse clicks and 4 keystrokes. Even with accelerated keyboard +abbreviations, it still takes 2 mouse clicks and 8 keystrokes to mark a single +index entry. The premise, however, is that the index pattern has been +located and that it is identical to the index key. +Locating the pattern may involve extra mouse clicks and keystrokes. +Moreover, if the index key and the search pattern are distinct, more +keystrokes would be necessary to enter the text for the index key. +This situation happens to the marking of each and every instance +of index entries. No global scheme is available in {\WD}. + +{\VP} does not support any searching mechanism; it assumes +searching is performed in a front-end word processor. +Therefore, systematic index placing in the stand-alone {\VP} is difficult. + +The situation in {\FM} is somewhat better because of its more powerful +keyboard macro registration capability and the support for regular +expression search. In {\FM}, a specific combination +of tools can be used to enter index tags at desired places. +Operations can be recorded as keyboard macros so that repetitions +can be done by a single keystroke (the invocation of the keyboard macro). +The problem is that a new keyboard macro has to be defined for each +key-pattern pair. Furthermore, it +lacks the systematic global scheme available in our extended +framework to make the whole process efficient. + +In our system, it takes only 1 to 3 keystrokes to mark an index entry. +Also available is a global scheme for marking index entries in the entire +document that may span over multiple files. In the single key-pattern +case, the same key can be inserted at a variety of places +described by a single regular expression. Patterns already indexed +are skipped automatically. A number of options are +available upon each occurrence of the pattern. Thus, marking each instance +takes just one keystroke to confirm and it works uniformly and continuously +throughout the entire document. This can be expanded to a scheme of +multiple key-pattern pairs that works iteratively on a list of +different index entries. +In our system, +a significant amount of time is saved not just in typing {\it per se\/}, but +in the user's mental reaction time due to the side effect of +unautomated discrete repetitions as in {\FM}, {\WD}, and {\VP}. + +In the production of an index for a book~[6], our {\E} Lisp +implementation of the index placing subsystem has proved very useful +and effective. The provision for multi-pair +\verb|<|{\it key\/}, {\it pattern\/}\verb|>| query-insert has been the most +time-saving operation in our experience. +With minor modifications, the same facility should work on +placing index commands for other formatting languages like +{\TF} and {\SB}. Adapting it to direct-manipulation environments is more +involved, but given proper editor programming power, +the basic principles discussed above should apply. + +\subsection{Index Processor} +The other major portion of our work is +a complete index processor implementation. +The resulting processor +is a single C program called {\MI}. Actually, {\MI} +had several predecessors all written as UNIX shell scripts with +embedded \verb|sed|~[24] and \verb|awk|~[25] code. +We quickly became unsatisfied with them for various reasons. +One of the concerns was efficiency. +Interpreted languages such as \verb|sed| and \verb|awk| are satisfactory for +rapid prototyping, but they are slow. +In our experience, {\MI} was able to process +a book index of 3,300 entries in less +than 50 seconds of user time plus an extra 5\% of system time on +a client node of SUN 3/50 (MC68020 at 12.5 MHz). +This is at least an order of magnitude faster than +using its most recent \verb|sed|/\verb|awk| predecessor, which has only +half the features of {\MI}. + +%The efficiency issue is not that significant since normally +%an index processor is not needed until the document is at its +%final stage. Most of the time is spent in placing index commands +%in the document. There are relatively few invocations to +%process raw index entries. A speedup of over an order of magnitude, however, +%can be significant. + +The decision to do a C implementation was made because of C's dynamic +storage allocation and data structures. +Since we wanted as general a solution as possible, it would be difficult, +if not impossible, to implement all the desired features using \verb|sed/awk|. +For instance, in \verb|awk| a dynamically linked list of index entries is +impossible, and the style handling mechanism with a comprehensive error +processing facility is difficult to realize. Originally developed +in UNIX C with portability in mind, {\MI} also runs on VAX/VMS, +TOPS-20, MS/DOS systems with a few trivial changes. +This portability would have +been very difficult for an implementation in UNIX shell scripts. +Furthermore, {\MI} has more features and is more extensible than tools like +{\sl Idx{\TeX}\/}~[26], a {\LaTeX}-specific index processor +that runs only on VAX/VMS systems. + +Our approach is the direct opposite of that taken by \verb|make.index|, +a host of indexing tools~[23] built for {\TF}. +As part of the UNIX {\TF} document +preparation environment, these tools are canonical examples of +the pipelining model. They are a collection of small \verb|awk| +programs working together in a very long pipeline. +The claim is that by breaking the system down into small pieces, it is +easier for the user to adapt the package to various situations +not possible to envision in advance. Their approach, therefore, seems +to follow the ``do it yourself'' metaphor whereby you get a toolkit +and assemble the final product yourself. The basic package covers +only those features used by its authors. A third party user has to +modify their \verb|awk| code if something different is desired. + +The design of {\MI} is quite different. +Our intention is to build a complete system by analyzing +the tasks involved in index processing. Parameters are derived +to form a table-driven style handling facility. +Formatter and format independence is achieved by +simple style specification. All the underlying +data structures and processing mechanisms are transparent. +Yet it is robust enough to handle different precedence schemes, +ordering rules, etc. +To use the system, the user needs not deal with the processing +details. If the default is inappropriate, +the only adaptation required is a table specification for the style facility. + +For instance, by assigning the output index header \verb|index.head| +defined in \verb|make.index| to our \verb|preamble| and +other related commands to \verb|item_|$i$'s, it is easy to produce +an alphabetized index in {\TF} format from a raw index generated by {\TF}. +The same technique applies to other formatting systems. +{\SB}, for example, has an indexing subsystem +that supports a subset of the functionality described above. +By adapting its raw index file format as input style and +its output appearance commands as output style, its indexing capability +can be readily expanded using {\MI}. In both cases, +there is no need to modify the original code used to generate +the raw index (Step II), nor is it necessary to modify {\MI} itself. +Likewise, {\MI} can be integrated with direct-manipulation +document development or publishing systems by binding their descriptive +markup tags to the attributes of {\MI}'s input format and output style. + +To summarize the differences in approach between {\MI} and \verb|make.index|, +let us examine the points of comparison: speed, size of the +programs, ease of use, portability, and extensibility. +{\MI} is an order of magnitude faster. The \verb|awk| programs +of \verb|make.index| are less than 100 lines of code, while {\MI} is large: +6,000 lines of C code and a binary of 70K bytes. {\MI} is a self-contained +C program, adapted from our original UNIX implementation, to run on +a variety of machines from micros to mainframes. The \verb|make.index| +system will run on any UNIX system which has \verb|awk| so it too spans +many systems, although it is UNIX-specific while {\MI} is not. + +{\MI} is easy to use. It is monolithic and covers almost every conceivable +case likely to occur. We actually examined many of the books in the +Addison-Wesley Computer Science Series and found that more than 95\% of the +cases could be handled by the program. The \verb|make.index| suite, on the +other hand, handles the standard cases and all customizations must be done +by the user by modifying \verb|awk| code. With {\MI}, user changes will +very rarely occur. If they should occur, and we have never had them happen, +then the user must change the C source code. The question as to whether it is +easier to modify \verb|awk| code or C code is left to the reader. +Our answer is given in {\MI}. + + +\section{Acknowledgements} +We would like to thank Leslie Lamport for his collaboration in the design +of {\MI}. He provided the initial specification and did some serious testing. +Charles Karney furnished the patches for {\MI} to run under VMS. +Nelson Beebe ported {\MI} to TOPS-20 and MS/DOS. +Some useful feedback came from Art Werschulz who tried out both {\MI} +and the index placing facility with {\AmSTeX}. +We are grateful to Richard Beach for his description of {\TG}'s +index processing facility, to Ravi Sethi for the information on {\TF}'s +index processing tools, and to Ventura Software, Inc. for giving us +documentation on their indexing mechanism. +Thanks also go to Ethan Munson and the anonymous referees for their helpful +comments on earlier drafts of this paper. + +%\newpage +% Bibliography +% \bibliography{int,doc,env,hyper} +% \bibliographystyle{unsrt} + +{\small +\singlespace +\input ind.bbl +} +\input{indminus.tex} diff --git a/indexing/makeindex/paper/indminus.tex b/indexing/makeindex/paper/indminus.tex new file mode 100644 index 0000000000..6b47932f52 --- /dev/null +++ b/indexing/makeindex/paper/indminus.tex @@ -0,0 +1 @@ +\end{document} diff --git a/indexing/makeindex/paper/indplus.tex b/indexing/makeindex/paper/indplus.tex new file mode 100644 index 0000000000..39dbd14b9c --- /dev/null +++ b/indexing/makeindex/paper/indplus.tex @@ -0,0 +1,23 @@ +% Master File: ind.tex +% Document preamble for ind.tex + +\documentstyle[11pt,doublespace,regmar]{article} +\input{logo} +%% psfig not needed after picture mode version of fig1.ps created +%% -- Nelson H. F. Beebe <beebe@math.utah.edu> [08-Jul-1991] +%% \input{psfig} +\nofiles +\begin{document} +\pagestyle{phcheadings} % defined in undhead.tex +\def\s{\thinspace} +\newcommand{\sitem}{\hspace*{20pt}} +\newcommand{\ssitem}{\hspace*{30pt}} +\newenvironment{iexample}{\begin{center} + \begin{tabular}[t]{@{}ll|@{\hspace{.2em}}}}{\end{tabbing}\end{minipage} + \end{center}} +\newcommand{\sindex}{\end{tabular}\hspace{.3em}\begin{minipage}[t]{\textwidth} + \begin{tabbing}} +\newcommand{\tindex}{\end{tabular}\hspace{1em}\begin{minipage}[t]{\textwidth} + \begin{tabbing}} +\newcommand{\hd}[1]{\multicolumn{1}{c|}{\sl #1\/}} +\newcommand{\hdr}[1]{\multicolumn{1}{c}{\sl #1\/}} diff --git a/indexing/makeindex/paper/logo.tex b/indexing/makeindex/paper/logo.tex new file mode 100644 index 0000000000..ffa944537d --- /dev/null +++ b/indexing/makeindex/paper/logo.tex @@ -0,0 +1,126 @@ + +% Special fonts +\font\mf=manfnt +\font\b=cmb10 +\font\Bigbf=cmbx10 scaled\magstep3 +\font\bigbf=cmbx10 scaled\magstep2 +\font\medbf=cmbx10 scaled\magstep1 +\font\medsl=cmsl10 scaled\magstep1 +\font\medit=cmmi10 scaled\magstep1 +\font\medrm=cmr10 scaled\magstep1 +\font\ssl=cmsl8 +\font\sit=cmmi8 +\font\sbf=cmbx8 +\font\sc=cmcsc10 + + +% Various TeX logos + +\def\MF{\mf METAFONT} +\def\AmSTeX{$\cal A$\kern-.1667em\lower.5ex\hbox{$\cal M$}\kern-.125em + $\cal S$-\TeX} +\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} +\def\LaTeX{{\rm L\kern-.36em\raise.3ex\hbox{\sc a}\kern-.15em + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} +\def\SliTeX{S\kern-.065em L\kern-.18em\raise.32ex\hbox{i}\kern-.03em\TeX} +\def\VorTeX{V\kern-2.7pt\lower.5ex\hbox{O\kern-1.4pt R}\kern-2.6pt + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX} +\def\TM{\sl {\TeX}-mode\/} +\def\BM{\sl B\kern-.05em{\ssl I\kern-.025em B}\kern-.08em + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX-mode} +\def\Lit{\it L\kern-.25em\raise.3ex\hbox{\sit a}\kern-.15em + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX} +\def\Lbf{\bf L\kern-.25em\raise.3ex\hbox{\sbf a}\kern-.15em + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX} +\def\Lsl{\sl L\kern-.25em\raise.3ex\hbox{\ssl a}\kern-.15em + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX} +\def\Bit{\it B\kern-.05em{\sit I\kern-.025em B}\kern-.08em + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX} +\def\Bbf{\Bigbf B\kern-.05em{\bigbf I\kern-.025em B}\kern-.08em{\TeX}} +\def\Mbf{\medbf B\kern-.05em{\sbf I\kern-.025em B}\kern-.08em{\TeX}} +\def\Bsl{\ssl B\kern-.05em{\sit I\kern-.025em B}\kern-.08em{\TeX}} + +\def\AL{\sl Aloe\/} +\def\GAN{\sl Gandalf\/} +\def\ET{\sl Etude\/} +\def\PEN{\sl Pen\/} +\def\PAN{\sl Pan\/} +\def\DIT{\sl Ditroff\/} +\def\DVI{\sc DVI} +\def\DT{\sl DviTool\/} +\def\E{\sl Emacs\/} +\def\EASE{\sl Ease\/} +\def\GLN{\sl Gremlin\/} +\def\IL{\sl Illustrator\/} +\def\BR{\sl Bravo\/} +\def\ST{\sl Star\/} +\def\MW{\sl MacWrite\/} +\def\MD{\sl MacDraw\/} +\def\MP{\sl MacPaint\/} +\def\ID{\sl ideal\/} +\def\INI{\tt initex} +\def\PIC{\sl pic\/} +\def\TBL{\sl tbl\/} +\def\EQN{\sl eqn\/} +\def\PS{\sl PostScript\/} +\def\DDL{\sl DDL\/} +\def\IP{\sl Interpress\/} +\def\SB{\sl Scribe\/} +\def\TF{\sl troff\/} +\def\VI{\sl vi\/} +\def\VIR{\tt virtex} +\def\unix{\sc UNIX} +\def\TG{\sl Tioga\/} +\def\GG{\sl Gargoyle\/} +\def\ST{\sl Star\/} +\def\CD{\sl Cedar\/} +\def\AD{\sl Andrew\/} +\def\DI{\sl Diamond\/} +\def\IPS{\sl Interleaf Publishing System\/} +\def\FM{\sl FrameMaker\/} +\def\PM{\sl PageMaker\/} +\def\RSG{\sl Ready-Set-Go!\/} +\def\WD{\sl MicroSoft Word\/} +\def\CW{\sl CricketDraw\/} +\def\TW{\sl Tweedle\/} +\def\JN{\sl Juno\/} +\def\JAN{\sl Janus\/} +\def\SP{\sl Sketchpad\/} +\def\TL{\sl ThingLab\/} +\def\MT{\sl Mint\/} +\def\LR{\sl Lara\/} +\def\W{\sc WYSIWYG} +\def\NW{\sl NeWS\/} +\def\QL{\sl Quill\/} +\def\LL{\sl Lilac\/} +\def\TNT{\sl tnt\/} +\def\PI{\sl Pico\/} +\def\QD{\sl QuickDraw\/} +\def\VP{\sl Ventura Publisher\/} +\def\MI{\sl MakeIndex\/} +\def\SGML{\sl SGML\/} +\def\IS{\sl Interscript\/} +\def\ODA{\sl ODA\/} + +\def\BF#1{{\bf #1}} +\def\IT#1{{\it #1\/}} +\def\SL#1{{\sl #1\/}} +\def\RM#1{{\rm #1}} +\def\TT#1{{\tt #1}} + +\def\IF{{\bf if}} +\def\ELSE{{\bf else}} +\def\ELIF{{\bf else if}} +\def\WHILE{{\bf while}} +\def\FOR{{\bf for}} +\def\DO{{\bf do}} +\def\UNTIL{{\bf until}} +\def\LOOP{{\bf loop}} +\def\RETURN{{\bf return}} +\def\CONTINUE{{\bf continue}} +\def\TRUE{{\bf true}} +\def\FALSE{{\bf false}} +\def\NOT{{\bf not}} +\def\AND{{\bf and}} +\def\OR{{\bf or}} diff --git a/indexing/makeindex/paper/regmar.sty b/indexing/makeindex/paper/regmar.sty new file mode 100644 index 0000000000..38d586cee7 --- /dev/null +++ b/indexing/makeindex/paper/regmar.sty @@ -0,0 +1,44 @@ +% +% "moretext" document style option. +% Jean-Francois Lamy, July 86 +%% Date: 07 Sep 86 20:49:56 EDT (Sun) +%% From: Jean-Francois Lamy <lamy%utai.toronto.edu@RELAY.CS.NET> +% +% Redefines the margins so that they are more in line with +% what we are used to see. +% + +\ifcase \@ptsize + % mods for 10 pt + \oddsidemargin 0.15 true in % Left margin on odd-numbered pages. + \evensidemargin 0.35 true in % Left margin on even-numbered pages. + \marginparwidth 1 true in % Width of marginal notes. + \oddsidemargin 0.25 true in % Note that \oddsidemargin = \evensidemargin + \evensidemargin 0.25 true in + \marginparwidth 0.75 true in + \topmargin 0 true pt % Nominal distance from top of page to top of + \textheight 8 true in % Height of text (including footnotes and figures) + \textwidth 5.875 true in % Width of text line. +\or % mods for 11 pt + \oddsidemargin 0.1 true in % Left margin on odd-numbered pages. + \evensidemargin 0.15 true in % Left margin on even-numbered pages. + \marginparwidth 1 true in % Width of marginal notes. + \oddsidemargin 0.125 true in % Note that \oddsidemargin = \evensidemar + \evensidemargin 0.125 true in + \marginparwidth 0.75 true in + \topmargin 0 true pt % Nominal distance from top of page to top of + \textheight 8 true in % Height of text (including footnotes and figures) + \textwidth 6.125 true in % Width of text line. +\or % mods for 12 pt + \oddsidemargin -10 true pt % Left margin on odd-numbered pages. + \evensidemargin 10 true pt % Left margin on even-numbered pages. + \marginparwidth 1 true in % Width of marginal notes. + \oddsidemargin 0 true in % Note that \oddsidemargin = \evensidemargi + \evensidemargin 0 true in + \marginparwidth 0.75 true in + \topmargin 0 true in % Nominal distance from top of page to top of + \textheight 8 true in % Height of text (including footnotes and figures) + \textwidth 6.375 true in % Width of text line. +\fi + +\def\baselinestretch{1.5} % overwrite baselineskip diff --git a/indexing/makeindex/paper/undhead.sty b/indexing/makeindex/paper/undhead.sty new file mode 100644 index 0000000000..3e6859c2a3 --- /dev/null +++ b/indexing/makeindex/paper/undhead.sty @@ -0,0 +1,6 @@ +% Modifications to LaTeX + +% Underline page headings +\def\ps@phcheadings{\def\@oddhead{\vbox{\hbox{}\sl\rightmark \hfil\rm\thepage\break\smallskip\hrule}}\def\@oddfoot{} +\def\@evenhead{\vbox{\rm \thepage\hfil \sl\leftmark\hbox {}\break\smallskip\hrule}} +\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}} diff --git a/indexing/makeindex/src/LOG b/indexing/makeindex/src/LOG new file mode 100644 index 0000000000..7d31a56dd4 --- /dev/null +++ b/indexing/makeindex/src/LOG @@ -0,0 +1,554 @@ + Revision History for MakeIndex + +This is a reverse time-ordered history of changes to MakeIndex. + +----------------------------------------------------------------- +[19-Oct-1991] + Merged in small set of changes into mkind.c and mkind.h for + IBM VM/CMS support. Since there are no operational changes, + and 2.11 has only been distributed to the beta test list, + I'm leaving the version number at 2.11, and advancing the date. + +[11-Sep-1991] + Version 2.11 released by Nelson H.F. Beebe <beebe@math.utah.edu> + + This version incorporates feedback from test sites for 2.10, + and importantly, replaces memory-gobbling fixed strings in the + index entries with dynamically-allocated strings, reducing the + storage per entry from 1844 bytes to 80 bytes + actual string + lengths. For details, see the new NOTES file. The use of + dynamic strings now lets MakeIndex 2.11 process all of the + entries in test/b209f.idx; with MakeIndex 2.10 and earlier, 6 + were rejected because of long fields. + + Reorder two lines in doc/makeindex.l to avoid single quote at + beginning of line, which nroff and troff then lose. + + Move typeout of version string in mkind.c to before parsing of + style file; otherwise, MakeIndex can terminate with an error + message before identifying itself. + + Correct argument parsing in mkind.c to check for a following + argument before assuming it is there. + + Change long macro PUT_HEADER in genind.h to function + put_header() in genind.c; it was too long for some compilers. + + Correct bad args to STY_ERROR2() in scanst.c (had LINE_MAX + instead of LINEMAX). + + Correct array dimension in flush_line() in genind.c from + tmp[LINE_MAX] to tmp[sizeof(buff)]; long index entries + otherwise overwrote stack storage. + + Correct array dimension in mkind.c from pageno[STRING_MAX] to + pageno[NUMBER_MAX]. + + Correct array dimension in scanid.c from keyword[STRING_MAX] + to keyword[ARRAY_MAX]. + + Correct two array dimensions in genind.c from 2*STRING_MAX to + 2*ARGUMENT_MAX. + + Document array sizes xxx_MAX in mkind.h (note above corrections). + + Add more code in scanid.c to check for overflow of field[]. A + case was found where overwriting occurred if an idx_escape is + found when i == ARRAY_MAX - 1. In this new version, the length + is no longer ARRAY_MAX, but is passed as an additional argument + to the function scan_field(). + + In sortid.c, change type of idx_gc from `int' to `long' to avoid + integer overflow or wraparound when there are more than 32767 + (or whatever the host INT_MAX value is) comparisons. + + Change two tests in scanid.c in scan_roman_lower() and + scan_roman_upper() from "if (... && (new = ...))" to + "if (... & ((new = ...) != 0))" to suppress compiler warnings on + some systems about possible error in use of = instead of ==. + + Add test/b211a.idx to test MakeIndex with very long + index fields near, at, and beyond the standard internal array + dimensions. + + Add test/b211b.{idx,ist} to test MakeIndex with the German + sort option. + + Add missing "level = i;" in genind.c; this fixes an obscure bug + that is seen only when certain style files are used. The + test/b211b.idx file tests the fix. + + Lattice has gone out of business, so the files src/make-lc.bat + and src/makefile.lc are in some sense obsolete, and will receive + no further maintenance. They are retained in the distribution + for now because some sites may still be using that compiler. + + Revise scanid.c to permit idx_quote (by default, a quotation + mark) to quote ANY input character in the first argument to + the indexentry macro. Revise sortid.c to use unsigned char + data for sorting, removing architecture dependence. This also + requires a change in the TOLOWER and TOUPPER macros in mkind.h. + This is an important extension to MakeIndex: it permits sort + keys to be created for all ASCII characters, including braces + and others that otherwise have significance to MakeIndex (by + default, @, |, !). It also permits the user to get characters + 1..255 into the actual field; this will be important for TeX + 3.0 which can support a 256-character set. Character 0 cannot + be easily supported, because it is a string terminator in C, + the language in which MakeIndex is currently implemented. A + future extension might support an escape mechanism for it. + Too bad MakeIndex was not originally designed to support + C-like \ooo (octal) and \xhh (hexadecimal) escape sequences! + The file test/b211e.idx tests the sorting and display of all + characters in 1..255, and the file test/b211e.ltx typesets the + test index. Because Ctl-Z is an end-of-file marker in PC DOS + text files, test/b211h.idx is derived from test/b211e.idx by + removing the line with that character, and used in dosdiff.bat + in place of b211e. Note that MakeIndex collates space and the + characters in 1..31 and 127..255 somewhat differently than + ASCII. The MakeIndex order is: + + punctuation characters (in ASCII order), + digits, + control characters (1..31), + space (32), + letters (ignoring case), + characters 127 .. 255. + + In prepare_idx() in mkind.c, add a check for a NULL `head'; + this can arise if the input file is garbage (e.g. you type + makeindex foo, meaning foo.idx, but a foo file already exists, + and is used instead of foo.idx). Without this check, a NULL + pointer is subsequently dereferenced, with core dumps on some + machines. The problem really lies in process_index() in + mkind.c, where idx_tc gets incremented before we know we have + a valid entry, such that in main(), idx_gt gets set to 1, when + `head' is still NULL. It seems easier to catch this error in + prepare_idx() instead of process_index(). + + Add additional architecture-specific targets to Makefile + to incorporate the compiler switches shown under the 2.10 + LOG file entry below. + + The book.idx file is still too big for a Turbo C 2.0 compiled + version of MakeIndex 2.11 on MS DOS to handle. + + Fix several loops that called GET_CHAR() without checking + for an EOF result (genind.c, mkind.c, mkind.h, scanid.c, + scanst.h). + + Fix range handling error in compare_page() in sortid.c; the file + test/b211f.idx tests that the fix is correct. + + Incorporate bug repairs from: + + Eberhard Mattes <mattes@azu.informatik.uni-stuttgart.de> + + Mark James <mark@bdblues.altair.fr>, <mark@nuri.inria.fr> + +----------------------------------------------------------------- +[05-Jul-1991] + Version 2.10 released by Nelson H.F. Beebe <beebe@math.utah.edu> + + Testing of this version has been carried out on these systems: + + =================================== ================= + System Compile Defines + =================================== ================= + Apollo DN/10000 -DOS_SYSV -U__STDC__ + DECstation Ultrix 4.2 + HP 375 (4.3BSD) + HP 9000/720 (HP-UX, System V UNIX) -DOS_SYSV + HP 9000/850S (HP-UX, System V UNIX) -DOS_SYSV + IBM 3090/600S-VF AIX -D_BSD + IBM PC DOS + IBM RS/6000 AIX 3.1 + NeXT Mach + Silicon Graphics 4D-240 -DOS_SYSV + Stardent 1520 UNIX Release 2.2 + SunOS 4.1.1 (BSD UNIX) + VAX VMS 5.3 + =================================== ================= + + This version addresses all outstanding bug reports that I am + aware of, and brings the code completely up to the level of + Standard C (ANSI X3.159-1989 Programming Language--C, ISO C + 1990). + + In test/, rename long filenames to shorter ones, and add + several new test files, and a Makefile to automate the testing + of a new version on UNIX. + + Add a README file with compilation instructions. + + In mkind.c, mkind.h, and scanst.c, rename LONG_MAX to + ARRAY_MAX. LONG_MAX is used in Standard C for the largest + long integer. + + In mkind.h, drop IBM_PC_LATTICE. There were no uses of it + elsewhere in the code, and Lattice is no longer in business, and + Microsoft C and Turbo C are now the major compilers on PC DOS + (Waterloo and TopSpeed lag far behind). Existing support for + TOPS-20 will be retained for now, even though by the end of + 1991, there may not be any more TOPS-20 systems alive; ours was + retired 31-Oct-1990, and the American Mathematical Society's on + 31-Mar-1991. + + In mkind.h, except in OS_PCDOS, increase STRING_MAX from 128 to + 256, and in genind.c, change dimensions of 2*LINE_MAX to + 2*STRING_MAX. Anita Hoover <anita@brahms.udel.edu> reported a + need for this. + + Fix sort bug reported by Andreas Brosig <brosig@gmdzi.gmd.de> + and Ed Sznyter <ews@Pescadero.Stanford.EDU>. This bug was + introduced in sortid.c at version 2.8 by the fix for another + bug. The code in compare_page() did not handle the case where + two entries were the same in index fields and page numbers, but + differed in their encap fields. The resulting incorrect + comparison could then later cause bogus page ranges to be + produced. Test file b209e.idx has been included for future + testing. From version 2.10, bugs reported in version x.yy will + have files test/bxyy*.idx (* = a, b, ...) that will be preserved + for regression testing. + + In doc/, in the manual page file, makeindex.l, alphabetize + command-line switch descriptions, correct some spelling errors, + and add new descriptions. Add a Makefile and targets to + automatically create the .dvi, .hlp, .info, .ps, and .vms files, + and to install and uninstall the manual pages. The .hlp, .info, + .ps, and .vms files will be included with the distribution since + they can be generated only on some UNIX systems. + + In paper/, add a Makefile, and create LaTeX picture mode + equivalent of fig1.ps, so that ind.tex can be formatted and + printed at any TeX installation. Remove the old output + PostScript file, ind.ps, saving 300KB of disk space, since it is + no longer needed. + + Incorporate additional contributions from: + + Johannes Braams <braams@hlsdnl5.bitnet> (bug fixes for + VAX VMS) + + Joachim Schrod <xitijsch@ddathd21.bitnet> (2.9.1 + changes) + + Rainer Schoepf <bk4@dhdurz1.bitnet> (more Atari TOS + changes) + + Eberhard Mattes <mattes@azu.informatik.uni-stuttgart.de> + (OS/2 Makefile and .def description file) + + Richard P. C. Rodgers <rodgers@maxwell.mmwb.ucsf.edu> + (manual page additions) + +------------------------------------------------------------------------ +[22-Jun-1990] + Version 2.9.1 by Joachim Schrod <xitijsch@ddathd21.bitnet> + + Testing carried out on: + PC DOS Microsoft C 5.1 + BSD Sun OS 4.0 cc + gcc 1.37.1 + System V R3 MUNIX cc + IBM AIX/2 cc + IBM AIX/370 cc + + Added difference between BSD (OS_BSD) and System V R3 (OS_SYSV). + Deleted UNIX (OS_UNIX). + + There doesn't exist a single `UNIX' system, e.g. the naming of + index/rindex versus strchr/strrchr may be called a `cultural + difference'. + + Updated comments concerning the preprocessor constants to reflect + the actual state of the source. + + Please note that the Atari port seems to be incorrect; look for + FIXME in mkind.h. + + By the way, it is not mentioned what compiler is used on the + Atari -- it is one that uses index/rindex. + +----------------------------------------------------------------- +[12-Dec-1989] + Version 2.9 released by Nelson H.F. Beebe <beebe@math.utah.edu> + + Testing carried out on: + PC DOS Microsoft C 5.0, Turbo C 2.0, Lattice C 6.02 + TOPS-20 KCC-20 and PCC-20 + UNIX Sun OS 4.0.3 cc and gcc 1.36 + VAX ULTRIX-32 cc + VAX VMS VMS C 2.3 + + Added support for Turbo C 2.0 and Lattice C 6.02 on IBM PC DOS. + + Although compilation and linking were successful with Lattice + C, the executable produced a 'Not enough core...abort' message + at run time under the D, L, and H memory models. Replacing + malloc(n) calls by halloc(1L,n) did not remove the problem; + debugging statements (selected by defining DEBUG at compile + time) showed that calls to malloc() and calloc() allocated + less than 15KB before the abort. Curiously, a separate little + test program that allocated 1000-byte blocks with malloc() or + calloc() could allocate over 55KB in the small memory model, + and over 500KB in the large models, before aborting. Thus, we + conclude for now that Lattice C 6.02 is not usable for + MakeIndex. + + Added ARGS macro to simplify function declarations in ANSI and + pre-ANSI styles. + + Added missing definition of OS_XENIX in mkind.h. + + Moved declarations of static functions from mkind.h to relevant + *.c files to remove compiler warnings about declared, but unused, + objects. + + Removed a couple of unreachable break statements that raised + compiler warnings. + + Use ANSI strchr/strrchr instead of K&R index/rindex; the former + are #defined to the latter for systems that have only the old + names. + + Fixed scan_arabic() in scanid.c to allow ARABIC_MAX digits, + instead of one less than that, and fix condition on which the + error message about too many Arabic digits is triggered. + + Repair widespread confusion between NUL (the character '\0'), + and NULL (the pointer). NUL is a user-definable name, while + NULL is defined by the implementation; on segmented memory + machines, pointers and integers need not be equivalent, so it + may hold that NULL != NUL. Previous versions of MakeIndex used + NULL to mean both, and redefined NULL to be '\0'. In general, + NULL must be typecast to a pointer of the appropriate type, + since under ANSI C, it will usually be defined to be something + like (void*)0 or (void*)0L. + +----------------------------------------------------------------- +[11-Nov-1989] + Version 2.8 released by Pehong Chen <chen@renoir.berkeley.edu>. + (1) ARABic_MAX changed from 4 to 5, duo to Sebastian Rahtz's + <spqr%ecs.southampton.ac.uk@NSFnet-Relay.AC.UK> report + on TeXhax #87 (9/17/1989). + (2) A nasty sorting bug was fixed due to a report from + Martha Wershofen-Mersbach <GRZTEX%dbngmd21.bitnet@NET.BIO.NET> + of the German National Research Center For Computer Science (GMD). + (3) Siemens BS2000 ported done by Andreas Brosig of the German + National Research Center For Computer Science (GMD). + (4) German word ordering, the "-g" option contributed by Brosig. + (5) Miscellaneous bug fixes by Brosig: + A. Blank compression routine ("-c") fixed. + B. The "-p" option now works for MSDOS and MVS. Have to open + logfile in binary mode for OS_PCDOS and add OS_MVSXA to an + existing #if because fseek(...) does not work under MVS. + C. If an indexentry contains more than 2 IDX_LEVEL '!' or more + than 3 IDX_ACTUAL '@', MakeIndex would ignore this entry + and writes "Extra ... at position ..." to the transcript file. + This is now fixed. + D. If an indexentry is too long (> STRING_MAX), MakeIndex would + ignore it and write a message to the transcript file. + This is now fixed. + E. For MSDOS(OS_PCDOS) LONG_MAX is set back to 144 + and STRING_MAX to 64. Otherwise a core error will occur + in the case of a big IDX-file. + +----------------------------------------------------------------- +[1-Oct-1988] + Version 2.7 released by Pehong Chen <chen@orc.olivetti.com>. + (1) Fixed a string printing bug reported by anita@brahms.udel.edu + through Leslie Lamport. The string should be an argument + to the printf format, instead of the format itself. + +----------------------------------------------------------------- +[14-Jul-1988] + Version 2.6 released by Pehong Chen <chen@orc.olivetti.com>. + (1) The documentation for UNIX man page makeindex.l went through + revision by Rick P. C. Rodgers of UCSF <rodgers@cca.ucsf.edu>. + Rick also provided a sample style file for MakeIndex to work + with troff (see the man page for details). + (2) String length (LONG_MAX) was increased from 144 to 1024. + (3) Fixed a letter heading bug. It used to put the heading + below the first index entry. + (4) Added a new feature, the terminating delimiter for page list. + This delim_t string is null by default. It can be redefined + as a period if one would like a page list to be terminated + by a period, for example. This delimeter has no effect + on an index entry which does not have any page number + associated with it. + +----------------------------------------------------------------- +[14-Apr-1988] + Version 2.5 released by Pehong Chen <phc@berkeley.edu>, + with VAX/VMS extensions by + Charles Karney + Plasma Physics Laboratory Phone: +1 609 243 2607 + Princeton University MFEnet: Karney@PPC.MFEnet + PO Box 451 ARPAnet: Karney%PPC.MFEnet@NMFECC.ARPA + Princeton, NJ 08543-0451 Bitnet: Karney%PPC.MFEnet@ANLVMS.Bitnet + The file VMSmake.com for VAX/VMS users who don't have make. + This version also includes a fix under XENIX by + Baron O.A. Grey UCLA Computer Science Department + baron@CS.UCLA.EDU ...!(ucbvax,ihnp4)!ucla-cs!baron + +----------------------------------------------------------------- +[20-Mar-1988] + Version 2.4 released by Pehong Chen <phc@berkeley.edu>, + the ``official'' version of MakeIndex that enters public domain. + + * length() (originally defined in mkind.c) is replaced by + the standard function strlen(), which in some C implementations + is, or can be, expanded to in-line efficient hardware instructions + (e.g. Microsoft C and VAX Unix); I have not yet done this. + +----------------------------------------------------------------- +[20-Jan-1988] + Portable version 2.3 released by Nelson H.F. Beebe + <beebe@math.utah.edu>. + + I spent 3 days implementing MakeIndex on Sun OS3.3 Unix + (cc and gcc), TOPS-20 (KCC-20 and PCC-20 compilers), PC + DOS (Microsoft C Version 5.0), and VAX VMS. This was at + times a frustrating experience, because the effort + revealed a great many portability problems in the + original code (from VAX Unix, I think), plus some genuine + bugs in MakeIndex, plus a bug in each of two compilers + (KCC-20 and PCC-20)! + + The changes for this version over 2.2 are exclusively bug + fixes and portability enhancements. Thanks to the + original authors' careful design, no functionality + changes are likely to be necessary. + + Besides getting the code working correctly on 4 systems + and 6 compilers, I have made several passes over the code + to reduce the lint complaints to a minimum, and remove + all of the warnings produced by the IBM PC Microsoft C + Version 5.0 compiler, which is the only one of the above + systems which completely implements October 1986 draft + ANSI C; the ANSI function prototype checking caught + numerous problems. + + With these changes, I believe that we now have a version + of MakeIndex that satisfies the important goal of TeX -- + the same input will produce identical output results on + all machines, whether they be micros, minis, mainframes, + or supercomputers. This is true at least for the 6 + systems for which testing has been possible at Utah. + + Here is a summary of bug corrections and other changes: + + * Several routines fell off the end without returning a + value, when the caller expected it; this was particularly + hard to trace (2 days of effort--the code only failed on + PCC-20, and work correctly with the other 4). + + * Equivalence of *short and *int was incorrectly assumed + in one routine; this made the code dependent on the byte + storage order (it works on the little-Endian VAX + architecture, but will fail on big-Endian architectures + (IBM et al)). + + * Equivalence of *int and *char was incorrectly assumed + in the call to qsort(); the only one of the 6 compilers + which uses a different format for *char values is KCC-20, + and that feature caught this bug (the compiler didn't + find it for me, but when the sort failed, I tracked it down). + + * Routines which do not return a value are now explicitly + typed `void' instead of nothing or `int', and mkind.h has + both K&R old-style and new ANSI style function + declarations for all routines; the choice is made on the + basis of the compiler and operating-system switch + selections. + + * A single (incorrect) use of backslash-dot (\.) escape + sequence in scanid.h has been reduced to dot (.). + + * exit() was called without a valid argument in mkind.h. + + * In several places, code of the form + char c; + while ((c = getchar()) != EOF) + existed; this is incorrect and will fail on many machines + when the EOF (== -1) value returned by getchar() is + truncated to a byte value for storage in c, then extended + to an integer again and compared with EOF. The correct + approach is to use "int c;" instead of "char c;". Type + declarations have been changed from "short" or "int" to + "char" or vice versa in several places in order to + achieve consistency, and explicit typecasts are used when + data types are intentionally changed by assignment or + argument association. + + * mkind.h now has a SHORTNAMES section to define short + names for the 45 long ones which clash when reduced to 6 + characters (although KCC-20 and PCC-20 both handle long + names, they produce assembly code output, and the + assembler limits names to 6 case-insensitive chars). + + * File names have been reduced to 6 characters, allowing + the source to be ported to all of the above systems + without tedious file renaming. The TOPS-20 LINK program + also runs under TOPS-10, and because TOPS-10 has a + 6-character file name limit, LINK-20 does too, sigh... + The executable is called makeindex on all systems except + PC DOS, where the 8-character limit reduces it to + makeindx. Similarly, filenames with special characters + (ind+ and ind-) have been renamed to portable names. + + * Reference to sys/file.h has been eliminated; it was + only needed for the symbol R_OK passed to access(). + sys/file.h is missing from most non-Unix C + implementations, while the value of R_OK (4) for access() + is consistent for all but PCC-20, where only F_OK (0) is + implemented. + + * Makefiles have been produced for each of the above + systems (I have the same version of a public-domain make + running on all of them). + + * A public version of qsort.c has been included in + MakeIndex for two reasons. First, some non-Unix C + implementations lack it. Second, quicksort is not a + `stable' sorting algorithm; that is, the order of items + with equal keys is not necessarily identical between the + input and the output. Different implementations of the + sort algorithm in the host qsort() can therefore give + different ordering in such cases (PCC-20 and KCC-20 + differed, which is how I caught this). qsort is + #define'd to qqsort for all systems, in order to avoid + possible clashes with the standard library version (this + happens with IBM PC Microsoft C and with VAX VMS). + + * Version 2.2 did not come with any documents containing + index entries to test MakeIndex with. I have taken the + liberty of preparing an index for Leslie Lamport's + article, ../doc/makeindex.tex for a test version, + ../test/test.tex. This can be used both to test MakeIndex, + as well as to illustrate the production of an index for + new users (I'm using it in a class that I am teaching on + LaTeX). test.tex uses the showidx document style option + to get the index entries displayed as marginal notes, and + the index entries in test.tex have been carefully + formatted to always begin a line; that way, they can be + easily extracted (e.g. by grep), so that one can see the + original entries, the LaTeX output .idx file, and the + MakeIndex output .ind file. + + * The bug fix for PCC-20 has been posted to the TOPS-20 + bulletin board; PCC-20 was developed at CS.UTAH.EDU, but + we (SCIENCE.UTAH.EDU) now have their DEC-20, so I guess + we have become the default PCC bug-fix site. The bug in + KCC-20's preprocessor has been reported to the KCC + developers at SRI-NIC.ARPA but cannot be easily fixed + until the draft ANSI C support in KCC-20 is complete; in + the meantime, conditional compilation is used to provide + alternate code which compiles correctly. + +----------------------------------------------------------------- +[29-May-1987] + Version 2.2 (5/29/1987) released by Pehong Chen <phc@berkeley.edu>. + +----------------------------------------------------------------- diff --git a/indexing/makeindex/src/Makefile b/indexing/makeindex/src/Makefile new file mode 100644 index 0000000000..d833e47765 --- /dev/null +++ b/indexing/makeindex/src/Makefile @@ -0,0 +1,357 @@ +#======================================================================= +# Makefile for the program `makeindex' +# +# Copyright (C) 1987 Pehong Chen (phc@renoir.berkeley.edu) +# Computer Science Division +# University of California, Berkeley +# +# On many UNIX systems, do +# make +# to build MakeIndex, and +# make install +# to install it. You may need to modify BINDIR, MANDIR, and MANEXT +# for your system. +# +# For systems that require different compile flags, there are +# additional targets apollo .. vms that can be used, e.g. +# make hp720 +# +# Current target list: +# all +# $(BINDIR)/$(PROGRAM) +# distclean +# depend +# dist +# index +# install +# man +# mostlyclean +# print +# program +# $(PROGRAM) +# realclean +# reallyclean +# shar +# tar +# tags +# TAGS +# test +# uninstall +# update +# +# apollo +# du42 +# du43 +# du42-gcc +# du43-gcc +# du42-lcc +# du43-lcc +# hp375 +# hp720 +# hp850 +# hp850-c89 +# ibm370 +# ibm370-c++ +# ibmpc +# ibmps2 +# ibmrs6000 +# ibmrs6000-c++ +# mips +# next +# next-g++ +# next-objc +# sgi +# sgi-c++ +# sgi-g++ +# solaris +# solaris-apcc +# solaris-c++ +# solaris-g++ +# stardent +# sun +# sun-apcc +# sun-c++ +# sun-g++ +# vms +# +# [26-May-1993] -- update for 2.12beta release (add GNU Project +# standard targets, alphabetize macros and targets, +# replace use of install command) +# [20-Apr-1993] -- remove references to system include files +# [07-Aug-1991] +#======================================================================= + +ALL = $(MAKEFILE) $(DOC) $(MANUAL) $(HDRS) $(SRCS) + +BINDIR = /usr/local/bin + +CFLAGS = -O + +CHMOD = chmod + +CP = /bin/cp + +DOC = makeindex.tex + +#EXTHDRS = /usr/include/ctype.h \ +# /usr/include/stdio.h + +HDRS = genind.h \ + mkind.h \ + scanid.h \ + scanst.h + +LDFLAGS = $(CFLAGS) + +LIBS = + +LINKER = $(CC) + +MAKEFILE = Makefile + +MANDIR = /usr/local/man/man1 + +MANEXT = 1 + +MANUAL = makeindex.l + +OBJS = genind.o \ + mkind.o \ + qsort.o \ + scanid.o \ + scanst.o \ + sortid.o + +PRINT = psgrind + +PROGRAM = makeindex + +RM = /bin/rm -f + +SHAR = $(PROGRAM).shar + +SHELL = /bin/sh + +SRCS = genind.c \ + mkind.c \ + qsort.c \ + scanid.c \ + scanst.c \ + sortid.c + +STRIP = strip + +TAR = $(PROGRAM).tar + +#======================================================================= + +all: $(PROGRAM) + +$(BINDIR)/$(PROGRAM): $(SRCS) $(HDRS) $(EXTHDRS) + @$(MAKE) -f $(MAKEFILE) BINDIR=$(BINDIR) install + +clean mostlyclean: + -$(RM) $(OBJS) + -$(RM) $(PROGRAM) + -$(RM) *.out + -$(RM) *~ + -$(RM) \#* + -$(RM) core + +clobber realclean reallyclean: clean + +distclean: clobber + -$(RM) $(SHAR) $(TAR) tags TAGS + +depend: + -@$(RM) -f .#*.[chly] + mkmf -f $(MAKEFILE) PROGRAM=$(PROGRAM) BINDIR=$(BINDIR) + +dist: + $(CP) $(PROGRAM) $(BINDIR) + rcp $(PROGRAM) monet:$(BINDIR) + rcp $(PROGRAM) arpa:$(BINDIR) + rcp $(PROGRAM) harrison@vangogh:bin + +index: + @ctags -wx $(HDRS) $(SRCS) + +install: $(PROGRAM) + $(CP) $(PROGRAM) $(BINDIR)/$(PROGRAM) + $(STRIP) $(BINDIR)/$(PROGRAM) + $(CHMOD) 0755 $(BINDIR)/$(PROGRAM) + $(CP) ../doc/$(MANUAL) $(MANDIR)/makeindex.$(MANEXT) + $(CHMOD) 0744 $(MANDIR)/makeindex.$(MANEXT) + @ls -lgs $(BINDIR)/$(PROGRAM) $(MANDIR)/makeindex.$(MANEXT) + +man: + ptroff -man $(MANUAL) + +print: + @$(PRINT) $(HDRS) $(SRCS) + +program: $(PROGRAM) + +$(PROGRAM): $(OBJS) + -@$(RM) -f $(PROGRAM) + $(LINKER) $(LDFLAGS) $(OBJS) $(LIBS) -o $(PROGRAM) + @size $(PROGRAM) + +shar: + -@$(RM) -f $(SHAR) + shar $(SHAR) $(ALL) + +tar: + -@$(RM) $(TAR) + tar -cf $(TAR) $(ALL) + +tags: $(HDRS) $(SRCS) + @ctags $(HDRS) $(SRCS) + +TAGS: $(HDRS) $(SRCS) + @etags $(HDRS) $(SRCS) + +test: $(PROGRAM) + cd ../test ; $(MAKE) + +uninstall: + -$(RM) $(BINDIR)/$(PROGRAM) + -$(RM) $(MANDIR)/makeindex.$(MANEXT) + +update: $(BINDIR)/$(PROGRAM) + +.DEFAULT: + co $@ + +#======================================================================= +# Machine-specific targets to simplify installation when additional +# compile flags are needed. +# +# Apollo DN/10000 +apollo: + $(MAKE) CFLAGS='-DOS_SYSV -U__STDC__' $(PROGRAM) + +# DECstation Ultrix 4.2 and 4.3 +du42 du43: all + +# DECstation Ultrix 4.2 and 4.3 with gcc +du42-gcc du43-gcc: + $(MAKE) CC=gcc $(PROGRAM) + +# DECstation Ultrix 4.2 and 4.3 with lcc +du42-lcc du43-lcc: + $(MAKE) CC=lcc CFLAGS= $(PROGRAM) + +# HP 375 (4.3BSD) +hp375: all + +# HP 9000/720 (HP-UX, System V UNIX) +hp720: + $(MAKE) CFLAGS='-DOS_SYSV' $(PROGRAM) + +# HP 9000/850S (HP-UX, System V UNIX) +hp850: + $(MAKE) CFLAGS='-DOS_SYSV' $(PROGRAM) + +# HP 9000/850S (HP-UX, System V UNIX) with Standard C compiler +hp850-c89: + $(MAKE) CC=c89 CFLAGS='-DOS_SYSV' $(PROGRAM) + +# IBM 3090/600S-VF AIX +ibm370: + $(MAKE) CFLAGS='-D_BSD' $(PROGRAM) + +# IBM 3090/600S-VF AIX with C++ +ibm370-c++: + $(MAKE) CC-'CC +a1 +p +w -D_POSIX_SOURCE -Hansi -D__STDC__ \ + -D_BSD -D_AIX -D_AIX370' CFLAGS='-D_BSD' $(PROGRAM) + +# IBM PC DOS +ibmpc: all + +# IBM PS/2 AIX 2.1 +ibmps2: all + +# IBM PS/2 AIX 2.1 with C++ +ibmps2-c++: + $(MAKE) CC='CC +a1 +p +w -D_POSIX_SOURCE -Hansi -D__STDC__ \ + -D_BSD -D_AIX -Dps2' CFLAGS='-D_BSD' $(PROGRAM) + +# IBM RS/6000 AIX 3.1 +ibmrs6000: + $(MAKE) $(PROGRAM) + +# IBM RS/6000 AIX 3.1 with C++ +ibmrs6000-c++: + $(MAKE) CC=xlC $(PROGRAM) + +# MIPS R6000 RISC/os 5.0 +mips: + $(MAKE) CFLAGS='-DOS_SYSV -O' $(PROGRAM) + +# NeXT Mach +next: all + +# NeXT Mach with C++ +next-g++: + $(MAKE) CC=g++ $(PROGRAM) + +# NeXT Mach with Objective C +next-objc: + $(MAKE) CC='cc -ObjC' $(PROGRAM) + +# Silicon Graphics IRIX 3.x and 4.x +sgi: + $(MAKE) CFLAGS='-DOS_SYSV -O2' $(PROGRAM) + +sgi-c++: + $(MAKE) CC=CC CFLAGS='-DOS_SYSV -O2' $(PROGRAM) + +sgi-g++: + $(MAKE) CC=g++ CFLAGS='-DOS_SYSV -O2' $(PROGRAM) + +# Sun Solaris 2.x (AT&T SysVR4): must compile in ANSI environment +solaris: + $(MAKE) CFLAGS='-Xc -xO4' all + +# Sun Solaris 2.x (AT&T SysVR4) with Apogee C +solaris-apcc: + $(MAKE) CC='apcc -Xc=ansi' CFLAGS='-O4' all + +# Sun Solaris 2.x (AT&T SysVR4) with C++ +solaris-c++: + $(MAKE) CC=CC CFLAGS='-O4' all + +# Sun Solaris 2.x (AT&T SysVR4) with C++ +solaris-g++: + $(MAKE) CC=g++ all + +# Stardent 1520 UNIX Release 2.2 +stardent: all + +# SunOS 4.1.x (BSD UNIX) +sun: all + +# SunOS 4.1.x (BSD UNIX) with Apogee C +sun-apcc: + $(MAKE) CC=apcc all + +# SunOS 4.1.x (BSD UNIX) with C++ +sun-c++: + $(MAKE) CC=CC all + +# SunOS 4.1.x (BSD UNIX) with g++ +sun-g++: + $(MAKE) CC=g++ all + +# VAX VMS 5.3 +vms: all + +#======================================================================= +### +genind.o: mkind.h genind.h +mkind.o: mkind.h +qsort.o: mkind.h +scanid.o: mkind.h scanid.h +scanst.o: mkind.h scanst.h +sortid.o: mkind.h diff --git a/indexing/makeindex/src/NOTES b/indexing/makeindex/src/NOTES new file mode 100644 index 0000000000..ca81552fe5 --- /dev/null +++ b/indexing/makeindex/src/NOTES @@ -0,0 +1,84 @@ + Investigation of Size Reduction in MakeIndex + [25-Jul-1991] + +Joachim Schrod in his work on MakeIndex 3.0 (to be reported at +EuroTeX'91 in Paris, September 1991) found that substantial +storage economizations in MakeIndex are possible by dynamically +allocating some arrays. Since that version is not yet available, it +seemed worthwhile to try to apply such changes to version 2.10, making +version 2.11. + +The major memory consumption in MakeIndex is by the arrays af[][] and +sf[][] in + +#define FIELD_MAX 3 +#define STRING_MAX 256 + +typedef struct KFIELD +{ + char sf[FIELD_MAX][STRING_MAX]; /* sort key */ + char af[FIELD_MAX][STRING_MAX]; /* actual key */ +... +} FIELD, *FIELD_PTR; + +These arrays are referenced in genind.c, scanid.c, and sortid.c. They +are defined in mkind.h, and initialized to empty strings in scanid.c. + +Each index entry has one such struct KFIELD slot, and with current +dimension limits, sizeof(FIELD) == 1844. book.idx has 4241 index +entries, so we need 1844*4241 = 7820404 bytes of dynamic storage. +However, book.idx is only 142027 bytes long, and in entry, 16 +characters ("\indexentry{}{}") need not be stored; the true storage +requirement is therefore 142027 - 4241*16 = 74171 so 99.05% of the +storage is being wasted, + +After sorting and removal of duplicate lines, book.idx reduces to +85935 bytes and 2531 entries, so the actual storage required is +1844*2531 = 4667164 bytes; the wastage is still high: 98.4%. + +If we change to + +typedef struct KFIELD +{ + char *sf[FIELD_MAX]; /* sort key */ + char *af[FIELD_MAX]; /* actual key */ +... +} FIELD, *FIELD_PTR; + +then sizeof(FIELD) = 332, and the required storage is 332*2531 = +840292 bytes. This is still too large for an IBM PC. However, KFIELD +also contains + + char encap[STRING_MAX]; /* encapsulator */ + +and that field is only rarely used, so by dynamically allocating it +when needed, we can reduce the KFIELD node storage by 256 - 4 = 252 +bytes, reducing sizeof(FIELD) to 80 bytes. For book.idx, we then need +80*2531 = 202480 bytes, and that should be small enough to run on the +PC. + +encap is used in genind.c, scanid.c, and sortid.c, and defined in +mkind.h. + +We can handle dynamic allocation of af[] and sf[] three ways: (1) +initialize them both to (char*)NULL, then allocate space as needed, +(2) initialize them both to calloc(1), and (3) initialize them both to +a constant empty string, "". MakeIndex makes many references to the +first character (*af[i] or af[i][0]), the first scheme would require +many changes to avoid dereferencing NULL pointers. The second scheme +would not have this problem, but would require a lot of overhead in +malloc'ing 1-character blocks. The third scheme seems the best +choice, and requires few changes; no free() or realloc() calls are +made by MakeIndex, so we need take no precautions about attempting to +free or reallocate constant string storage. + +Examination of the code in genind.c, scanid.c, and sortid.c which +references af[] and sf[] shows that changes are needed only in +scanid.c, where we introduce a new function, make_string(), to handle +the dynamic allocation of strings when needed. Similarly, of the +encap[] uses in genind.c, scanid.c, and sortid.c, only scanid.c needs +changes. The definition of struct KFIELD in mkind.h must be updated +so that af, sf, and encap become pointers to strings, rather than +arrays of characters. + + diff --git a/indexing/makeindex/src/RCS/README,v b/indexing/makeindex/src/RCS/README,v new file mode 100644 index 0000000000..910acbd270 --- /dev/null +++ b/indexing/makeindex/src/RCS/README,v @@ -0,0 +1,302 @@ +head 1.2; +access; +symbols; +locks + beebe:1.2; strict; +comment @# @; + + +1.2 +date 93.06.04.18.29.20; author beebe; state Exp; +branches; +next 1.1; + +1.1 +date 93.06.04.18.29.04; author beebe; state Exp; +branches; +next ; + + +desc +@@ + + +1.2 +log +@Update list of systems with successful tests. +@ +text +@% /u/sy/beebe/tex/makeindex/2-12/makeindex/src/README, Wed May 26 11:25:46 1993 +% Edit by Nelson H. F. Beebe <beebe@@plot79.math.utah.edu> +================================================================= += As of the release of MakeIndex version 2.9, the original += author, Pehong Chen, is no longer able to maintain it, and is += inaccessible via electronic mail. The maintenance job has been += taken over for the TeX User's Group by += += Nelson H. F. Beebe += Center for Scientific Computing += Department of Mathematics += University of Utah += Salt Lake City, UT 84112 += USA += Tel: +1 801 581 5254 += FAX: +1 801 581 4148 += Email: <beebe@@math.utah.edu> += += to whom reports of problems, ports to new environments, and += general correspondence about MakeIndex, should be addressed. +================================================================= + + +================== +Building MakeIndex +================== + +Makefiles for numerous systems are provided in the distribution +as the files makefile.*; select the appropriate one, and copy it +to Makefile. For systems that lack a suitable make +implementation, command files (*.bat and *.com) are provided. + +In many cases, once the makefile has been selected, you should be +able to do + + make + (cd ../test; make) + +and if the acceptance tests in that second step all pass (there +should be no output from any of the files differences, except on +VAX VMS, where a couple of lines differing only in letter case, +are expected), then on many UNIX systems, you may be able to do + + make install + +to install the executable and manual pages on your system. + +For version 2.12, the code has been updated to support compilation +with numerous C++ compilers. No features of the C++ language are used +that do not also exist in C, but the stricter compile-time checking +provided by C++ compilers provides additional confidence in the code. +Thanks go to P. J. Plauger for his efforts in the ANSI/ISO Standard C +and C++ environments, and for promoting the idea of using C++ +compilers for C code development. + +If you have a C++ compiler, please try a build of MakeIndex with a +command like (select the one that corresponds to the name of your C++ +compiler) + + make CC=CC + make CC=xlC + make CC=g++ + +Any problems with C++ compilations should be reported back to the +address above. + +Before doing so however, check that BINDIR and MANDIR are set to +your local conventions (you can override the values in the +Makefile by setting them on the command-line), and also verify +that you do not have a brain-damaged install implementation that +either requires root privileges to run (e.g. IBM AIX), or moves +(instead of copies) files (e.g. Stardent or DEC ULTRIX). In the +latter case, you might be able to instead do + + make cp-install + +If you want to undo the installation, + + make uninstall + +should work. + +There are additional documentation files in ../doc that you may +want to install manually (Emacs info, local help systems, VAX VMS +help). + + +==================== +Compilation Problems +==================== + +The standardization of the C language by ANSI X3.159-1989 +Programming Language--C (December 15, 1989), and ISO C 1990, has +resulted in C implementations gradually being adapted to conform +to the requirements of the Standard, but released for use before +Standard conformance has been reached. For a lot of C code, this +affects several main areas: + + (1) system header files, and what symbols they define + (2) function prototype declarations + (3) new preprocessor statements, and more + precisely-defined preprocessor behavior + (4) new features introduced by Standard C (const, + adjacent string concatenation, new style function + definitions, new string escape sequences, trigraphs, + new data types) + +MakeIndex has successfully compiled and run on many different +operating systems and C implementations, but until Standard C +becomes uniformly implemented, the first two above are the most +troublesome. + +The code in MakeIndex is written to conform to Standard C, which +is distinguished by the preprocessor symbol __STDC__ being +permanently defined to a non-zero value. Unfortunately, some +implementations define this symbol without having +Standard-conforming header files, or without accepting some of +the new language features. + +In MakeIndex, function definitions are done in the old Kernighan and +Ritchie style in a pre-Standard C environment, but in Standard C and +C++ style if __STDC__ or __cplusplus are defined. + +All functions referenced are declared by function prototype +declarations of the form + +static void check_idx ARGS((char *fn,int open_fn)); + +where ARGS is defined in mkind.h to expand such a declaration to + +static void check_idx (char *fn,int open_fn); + +or + +static void check_idx (); + +depending on whether the compiler supports function prototype +declarations or not. If you get syntax errors from the new +style, you may need to revert to the old style by introducing a + +#define STDC_PROTOTYPES 0 + +statement in the appropriate section of mkind.h. Some compilers +partly support the function prototypes, but without variable +names; use the old-style for them, and complain to your compiler +supplier. + +When STDC_PROTOTYPES is non-zero, it is assumed that the Standard +C type modifier "const" is recognized; if your compiler complains +about it, add a + +#define const + +definition in mkind.h, or use a compile-time option -Dconst=; +either of these make it expand to an empty string, so the +compiler doesn't see it. + +Standard C specifies the data types of all library functions and +their arguments, and the system header files are required to +declare them appropriately. Nevertheless, some implementations +have a few erroneous declarations in the header files and still +claim to be Standard conforming (by defining the symbol __STDC__ +to a non-zero value). On such systems, the extra compile-time +type checking provided by function prototype declarations may +raise compilation errors, and it may be necessary to adjust +declarations in any of the files that use the ARGS macro +(genind.c, mkind.c, mkind.h, qsort.c, scanid.c, scanst.c, and +sortid.c) to make the code conform to the local implementation's +erroneous declarations. + +Numerous external variables and functions in MakeIndex require +long names (at least 12 unique characters). For older systems +that do not support long names, make sure the symbol SHORTNAMES +is defined to a non-zero value in mkind.h; this is already done +for supported systems that need it. Standard C requires +uniqueness in the first 6 characters of external names, WITHOUT +distinction between upper- and lower-case letters, so +implementations that do not allow long external names are NOT in +violation of the Standard. + +If you get compiler warnings about conversion of integers to +pointers, or find that rindex() or index() cannot be unresolved +by the linker, then check the settings in mkind.h. The default +is to use the Standard C functions strchr() and strrchr(), but on +a few non-conforming systems, to remap these names to index() and +rindex() instead. Any other integer-to-pointer conversion +warnings are likely to be traced to missing function prototype +declarations, which is either because of an omission in system +header files, or because the MakeIndex declaration in one of its +source files was not selected during the preprocessing step. +When the MakeIndex source code is compiled correctly, EVERY +function used by MakeIndex will have been declared in a function +prototype prior to its first use. + + +====================== +VAX VMS Considerations +====================== + +Different versions of VAX VMS C have used different +interpretations of the arguments to return() and exit() +statements. The convention on UNIX and many other systems is +that a 0 value denotes success, and a non-zero value, failure. +The EXIT() macro in mkind.h hides the remapping of this value for +VAX VMS; for other systems, it calls exit() directly. + +For VAX VMS, MakeIndex should be declared to be a foreign command +symbol in a system-wide, or user, startup file that is executed +at each login. Here is an example: + +$ makeindex :== $public$disk:[beebe.MakeIndex.src]makeindex.exe + +The leading dollar sign identifies this as a foreign command +symbol, and must be followed by an ABSOLUTE file specification +for the executable program; this regrettably makes it site +dependent, and the definitions in ../test/vmsdiff.com and +elsewhere must be adjusted accordingly. + +The symbol SW_PREFIX in mkind.h can be redefined from '-' to '/' +for those VAX VMS sites that prefer to retain VMS-style +command-line options; the default value is '-' on all systems. +This redefinition can be done on the command line, or by changing +the setting in mkind.h. + + +=============== +Machines Tested +=============== + +Here is a list of machines, operating systems, and compilers under +which MakeIndex 2.12 has been successfully tested. Convenience targets +in the Makefile provide support for them on UNIX. Command files are +provided for MS DOS and VAX VMS. + +------------------------------------------------------------------------ +Machine O/S Compiler(s) +------------------------------------------------------------------------ + +DEC Alpha 3000/500X OSF 1.2 cc, c89, cxx + +DECstation 3100 ULTRIX 4.2 and 4.3 cc, gcc, g++, lcc + +DEC VAX VMS 5.4-2 cc + +HP 9000/735 HP-UX 9.01 cc, c89, CC, gcc, g++ + +HP 9000/850 HP-UX 9.0 cc, c89 + +IBM 3090/600S-VF AIX 2.1 cc (Metaware High C + 2.1t), CC + +IBM PS/2 AIX 2.1 cc (Metaware High C + 2.2g), CC + +IBM RS/6000 AIX 3.2 cc, xlC + +MIPS R6000 RISC/os 5.0 cc + +NeXT Mach 3.0 cc, Objective C, gcc + +Sun SPARCstation SunOS 4.1.3 apcc, cc, CC, gcc, g++ + +------------------------------------------------------------------------ +@ + + +1.1 +log +@Initial revision +@ +text +@d238 3 +d244 2 +@ diff --git a/indexing/makeindex/src/RCS/mkind.h,v b/indexing/makeindex/src/RCS/mkind.h,v new file mode 100644 index 0000000000..dc864553a7 --- /dev/null +++ b/indexing/makeindex/src/RCS/mkind.h,v @@ -0,0 +1,812 @@ +head 1.2; +access; +symbols; +locks + beebe:1.2; strict; +comment @ * @; + + +1.2 +date 93.06.04.21.58.00; author beebe; state Exp; +branches; +next 1.1; + +1.1 +date 93.06.04.21.03.53; author beebe; state Exp; +branches; +next ; + + +desc +@@ + + +1.2 +log +@Move definitions of R_OK to end of file to avoid conflict with +system definitions. Change dummy argument R_OK to mode in access(). +@ +text +@/* + * + * This file is part of + * MakeIndex - A formatter and format independent index processor + * + * Copyright (C) 1989 by Chen & Harrison International Systems, Inc. + * Copyright (C) 1988 by Olivetti Research Center + * Copyright (C) 1987 by Regents of the University of California + * + * Author: + * Pehong Chen + * Chen & Harrison International Systems, Inc. + * Palo Alto, California + * USA + * (phc@@renoir.berkeley.edu or chen@@orc.olivetti.com) + * + * Contributors: + * Please refer to the CONTRIB file that comes with this release + * for a list of people who have contributed to this and/or previous + * release(s) of MakeIndex. + * + * All rights reserved by the copyright holders. See the copyright + * notice distributed with this software for a complete description of + * the conditions under which it is made available. + * + */ + +/*********************************************************************** + + INSTALLATION NOTES + <11-Nov-1989> + + At compile-time (or here, if compile-time definition is not + available), set non-zero ONE OS_xxxx operating system flag, and if + more than one compiler is available, ONE compiler flag: + + Operating Systems Compiler(s) + ================= =========== + OS_ATARI + OS_BS2000 CCD_2000 + OS_BSD + OS_MVSXA IBM_C370 + OS_VMCMS IBM_C370 + OS_PCDOS IBM_PC_MICROSOFT + OS_SYSV + OS_TOPS20 KCC_20 or PCC_20 + OS_VAXVMS + OS_XENIX + ================= =========== + + If no OS_xxxx symbol is defined, OS_BSD is assumed. + + If Standard C prototypes are supported, define the symbol + STDC_PROTOTYPES in the appropriate OS_xxxx section below, and insert + #include's for the standard system files which define library + prototypes. STDC_PROTOTYPES will be defined automatically if + __STDC__ is; the latter must be defined by all Standard C conformant + implementations. + + All function declarations in MakeIndex are contained at the end of + this file. If 185STDC_PROTOTYPES is not selected, then all the standard + library functions must be declared explicitly. + + If the host system restricts external names to 6 characters, set + SHORTNAMES non-zero in the appropriate OS_xxxx section below. + + Installing MakeIndex under BS2000 requires at least Version 8.5 + supporting Multiple Public Volume Sets (MPVS). Define WORK in this + file to your CATID (default :w:) for temporary files (.ilg, .ind), + in case of no MPVS support define WORK to NIL. + +*/ + +/**********************************************************************/ + +#define STDC (__STDC__ || __cplusplus) + +/* + * Establish needed operating symbols (defaulting to OS_BSD if none + * specified at compile time). If you add one, add it to the check + * list at the end of this section, too. + */ + +#ifndef OS_ATARI +#define OS_ATARI 0 +#endif + +#ifndef OS_PCDOS +#define OS_PCDOS 0 +#endif + +#ifndef IBM_PC_MICROSOFT +#define IBM_PC_MICROSOFT 0 +#endif + +#ifndef IBM_PC_TURBO +#define IBM_PC_TURBO 0 +#endif + +#ifdef __TURBOC__ +#define IBM_PC_TURBO 1 +#endif + +#ifndef OS_SYSV +#define OS_SYSV 0 +#endif + +#ifndef OS_TOPS20 +#define OS_TOPS20 0 +#endif + +#ifndef KCC_20 +#define KCC_20 0 +#endif + +#ifndef PCC_20 +#define PCC_20 0 +#endif + +#ifndef OS_BSD +#define OS_BSD 0 +#endif + +#ifndef OS_VAXVMS +#define OS_VAXVMS 0 +#endif + +#ifndef IBM_C370 +#define IBM_C370 0 +#endif + +#ifndef CCD_2000 +#define CCD_2000 0 +#endif + +#if OS_TOPS20 +#if (KCC_20 || PCC_20) +#else +#undef PCC_20 +#define PCC_20 1 /* PCC-20 is default for Tops-20 */ +#endif /* KCC_20 || PCC_20) */ +#endif /* OS_TOPS20 */ + +#ifndef OS_BS2000 +#define OS_BS2000 0 +#endif + +#ifndef OS_MVSXA +#define OS_MVSXA 0 +#endif + +#ifndef OS_VMCMS +#define OS_VMCMS 0 +#endif + +#ifndef OS_XENIX +#define OS_XENIX 0 +#endif + +#if (OS_ATARI || OS_BSD || OS_BS2000 || OS_MVSXA || OS_PCDOS || OS_VMCMS) +#else +#if (OS_SYSV || OS_TOPS20 || OS_VAXVMS || OS_XENIX) +#else +#undef OS_BSD +#define OS_BSD 1 /* Unix is default operating system */ +#endif +#endif + +#if (OS_MVSXA || OS_VMCMS) +#undef IBM_C370 +#define IBM_C370 1 /* IBM_C370 is default for OS_MVSXA and OS_VMCMS */ +#endif + +#if OS_BS2000 +#undef CCD_2000 +#define CCD_2000 1 /* CCD_2000 is default for OS_BS2000 */ +#endif + +#if (CCD_2000 || OS_MVSXA || OS_TOPS20 || OS_VMCMS) +#define SHORTNAMES 1 +#else +#define SHORTNAMES 0 +#endif + +#define STDC_PROTOTYPES STDC + +/**********************************************************************/ + +#include <stdio.h> +#include <ctype.h> + +#if (CCD_2000 || OS_SYSV || OS_PCDOS || STDC || _AIX || ardent ) +#include <string.h> +#else + +#if (OS_ATARI || OS_BSD || PCC_20 || OS_XENIX) +#define strchr index /* convert STDC form to old K&R form */ +#define strrchr rindex /* convert STDC form to old K&R form */ +#endif /* (OS_ATARI || OS_BSD || PCC_20 || OS_XENIX) */ + +#endif /* (CCD_2000 || OS_SYSV || OS_PCDOS || STDC || _AIX || ardent) */ + +#if OS_PCDOS + +#if (IBM_PC_MICROSOFT || IBM_PC_TURBO) +#include <io.h> /* for function declarations */ +#endif /* (IBM_PC_MICROSOFT || IBM_PC_TURBO) */ + +#include <stddef.h> /* for function declarations */ +#include <stdlib.h> /* for function declarations */ +#undef STDC_PROTOTYPES +#define STDC_PROTOTYPES 1 /* so we get full argument + type checking */ +#endif /* OS_PCDOS */ + +#if (OS_VMCMS || OS_MVSXA) +#include <stdefs.h> /* for function declarations */ +#include <string.h> /* for function declarations */ +#undef STDC_PROTOTYPES +#define STDC_PROTOTYPES 1 /* so we get full argument + type checking */ +#if 0 +#undef __STDC__ +#define __STDC__ 1 +#endif +#endif /* OS_MVSXA || OS_VMCMS */ + +#if OS_ATARI + +#if ATARI_ST_TURBO +#define access(fn, mode) 0 /* function not available */ +#endif + +#if __GNUC__ +#include <string.h> +#include <types.h> +#endif + +#undef STDC_PROTOTYPES +#define STDC_PROTOTYPES 1 /* so we get full argument checking */ + +#endif /* OS_ATARI */ + +#if IBM_C370 +#define access(fn, mode) 0 /* function not available */ +#endif + +#if CCD_2000 /* function not available */ +#define getenv(P) 0 +#endif /* CCD_2000 */ + +#if SHORTNAMES +/* + * Provide alternate external names which are unique in the first SIX + * characters as required for portability (and Standard C) + */ +#define check_all chk_all +#define check_idx chk_idx +#define check_mixsym chk_mix +#define compare_one cmp_one +#define compare_page cmp_page +#define compare_string cmp_string +#define delim_n dlm_n +#define delim_p dlm_p +#define delim_r dlm_r +#define delim_t dlm_t +#define encap_i ecp_i +#define encap_p ecp_p +#define encap_range ecp_range +#define encap_s ecp_s +#define group_skip grp_skip +#define group_type grp_type +#define idx_aclose idxaclose +#define idx_actual idxactual +#define idx_keyword idx_kwd +#define indent_length ind_length +#define indent_space ind_space +#define headings_flag hd_flag +#define heading_pre hd_pre +#define heading_suf hd_suf +#define symhead_pos sym_pos +#define symhead_neg sym_neg +#define numhead_pos num_pos +#define numhead_neg num_neg +#define process_idx prc_idx +#define process_precedence prc_pre +#define range_ptr rng_ptr +#define scan_alpha_lower scnalw +#define scan_alpha_upper scnaup +#define scan_arabic scnarabic +#define scan_arg1 scna1 +#define scan_arg2 scna2 +#define scan_char scnchr +#define scan_field scnfld +#define scan_idx scnidx +#define scan_key scnkey +#define scan_no scnno +#define scan_roman_lower scnrlw +#define scan_roman_upper scnrup +#define scan_spec scnspc +#define scan_string scnstr +#define scan_style scnsty +#define setpagelen spg_len +#define setpage_close spg_close +#define setpage_open spg_open +#define suffix_2p suf_2p +#define suffix_3p suf_3p +#define suffix_mp suf_mp +#endif /* SHORTNAMES */ + +#if OS_VAXVMS +#define EXIT(code) exit( ((code) == 0) ? 1 : (1 << 28) + 2 ) +#else /* NOT OS_VAXVMS */ +#define EXIT exit +#endif /* OS_VAXVMS */ + +#undef TRUE +#define TRUE 1 + +#undef FALSE +#define FALSE 0 + +#undef NUL +#define NUL '\0' + +#undef NIL +#define NIL "" + +#define TAB '\t' +#define LFD '\n' +#define SPC ' ' +#define LSQ '[' +#define RSQ ']' +#define BSH '\\' + +#if OS_ATARI +#define ENV_SEPAR ';' +#define DIR_DELIM '\\' +#endif /* OS_ATARI */ + +#if (OS_BSD || OS_SYSV || OS_XENIX) +#define ENV_SEPAR ':' +#define DIR_DELIM '/' +#endif /* (OS_BSD || OS_SYSV || OS_XENIX)*/ + +#if OS_BS2000 +#define ENV_SEPAR '#' +#define DIR_DELIM '$' +#endif /* OS_BS2000 */ + +#if (OS_MVSXA || OS_VMCMS) +#define ENV_SEPAR '.' +#define DIR_DELIM '.' +#endif /* OS_MVSXA || OS_VMCMS */ + +#if OS_PCDOS +#define ENV_SEPAR ';' +#define DIR_DELIM '\\' +#endif /* OS_PCDOS */ + +#if OS_TOPS20 +#define ENV_SEPAR ',' +#define DIR_DELIM ':' +#endif /* OS_TOPS20 */ + +#if OS_BSD +#define ENV_SEPAR ':' +#define DIR_DELIM '/' +#endif /* OS_BSD */ + +#if OS_VAXVMS +#define ENV_SEPAR ',' /* In fact these aren't used */ +#define DIR_DELIM ':' +#endif /* OS_VAXVMS */ + +#ifndef SW_PREFIX /* can override at compile time */ +#define SW_PREFIX '-' +#endif + +#define EXT_DELIM '.' +#define ROMAN_SIGN '*' +#define EVEN "even" +#define ODD "odd" +#define ANY "any" + +#define GET_CHAR getc + +#if (CCD_2000 || OS_MVSXA) +#define TOASCII(i) (char)((i) + '0') +#else +#define TOASCII(i) (char)((i) + 48) +#endif /* (CCD_2000 || OS_MVSXA) */ + +/* NB: The typecasts here are CRITICAL for correct sorting of entries + that use characters in the range 128..255! */ +#define TOLOWER(C) (isupper((unsigned char)(C)) ? \ + (unsigned char)tolower((unsigned char)(C)) : (unsigned char)(C)) +#define TOUPPER(C) (isupper((unsigned char)(C)) ? \ + (unsigned char)(C) : (unsigned char)toupper((unsigned char)(C))) + +#define STREQ(A, B) (strcmp(A, B) == 0) +#define STRNEQ(A, B) (strcmp(A, B) != 0) + +#define MESSAGE(F, S) { \ + if (verbose) \ + fprintf(stderr, F, S); \ + fprintf(ilg_fp, F, S); \ +} + +#define FATAL(F, S) { \ + fprintf(stderr, F, S); \ + fprintf(stderr, USAGE, pgm_fn); \ + EXIT(1); \ +} + +#define FATAL2(F, D1, D2) { \ + fprintf(stderr, F, D1, D2); \ + fprintf(stderr, USAGE, pgm_fn); \ + EXIT(1); \ +} + +#if OS_PCDOS /* open file in binary mode */ +#define OPEN_IN_B(FP) fopen(FP, "rb") +#endif + +#define OPEN_IN(FP) fopen(FP, "r") +#define OPEN_OUT(FP) fopen(FP, "w") +#define CLOSE(FP) fclose(FP) + +#if (CCD_2000 || OS_MVSXA) +#define ASCII 1 +#define ISDIGIT(C) isdigit(C) +#define ISSYMBOL(C) (! (isdigit(C) || isalpha(C) || iscntrl(C) || C == SPC)) +#else +#define ISDIGIT(C) ('0' <= C && C <= '9') +#define ISSYMBOL(C) (('!' <= C && C <= '@@') || \ + ('[' <= C && C <= '`') || \ + ('{' <= C && C <= '~')) +#endif /* (CCD_2000 || OS_MVSXA) */ + +/*==================================================================== +Many arrays in MakeIndex are dimensioned [xxx_MAX], where the xxx_MAX +values are defined below. The use of each of these is described in +comments. However, no run-time check is made to ensure that these are +consistent, or reasonable! Therefore, change them only with great +care. + +The array sizes should be made generously large: there are a great +many uses of strings in MakeIndex with the strxxx() and sprintf() +functions where no checking is done for adequate target storage sizes. +Although some input checking is done to avoid this possibility, it is +highly likely that there are still several places where storage +violations are possible, with core dumps, or worse, incorrect output, +ensuing. +======================================================================*/ + +#define ARABIC_MAX 5 /* maximum digits in an Arabic page */ + /* number field */ + +#define ARGUMENT_MAX 1024 /* maximum length of sort or actual key */ + /* in index entry */ + +#define ARRAY_MAX 1024 /* maximum length of constant values in */ + /* style file */ + +#define FIELD_MAX 3 /* maximum levels of index entries (item, */ + /* subitem, subsubitem); cannot be */ + /* increased beyond 3 without */ + /* significant design changes (no field */ + /* names are known beyond 3 levels) */ + +#ifdef LINE_MAX /* IBM RS/6000 AIX has this in <sys/limits.h> */ +#undef LINE_MAX +#endif +#define LINE_MAX 72 /* maximum output line length (longer */ + /* ones wrap if possible) */ + +#define NUMBER_MAX 16 /* maximum digits in a Roman or Arabic */ + /* page number */ + /* (MAX(ARABIC_MAX,ROMAN_MAX)) */ + +#define PAGEFIELD_MAX 10 /* maximum fields in a composite page */ + /* number */ + +#define PAGETYPE_MAX 5 /* fixed at 5; see use in scanst.c */ + +#define ROMAN_MAX 16 /* maximum length of Roman page number */ + /* field */ + +#define STRING_MAX 256 /* maximum length of host filename */ + +/*====================================================================*/ + +#define VERSION "portable version 2.12 [26-May-1993]" + +#if 0 +#define VERSION "portable version 2.11 [19-Oct-1991]" +#define VERSION "portable version 2.10 [05-Jul-1991]" +#define VERSION "portable version 2.9.1 [21-Jun-1990]" +#define VERSION "portable version 2.9 [13-Dec-1989]" +#define VERSION "portable version 2.8 [11-Nov-1989]" +#define VERSION "portable version 2.7 [01-Oct-1988]" +#define VERSION "portable version 2.6 [14-Jul-1988]" +#define VERSION "portable version 2.5 [14-Apr-1988]" +#define VERSION "portable version 2.4 [20-Mar-1988]" +#define VERSION "portable version 2.3 [20-Jan-1988]" +#define VERSION "version 2.2 [29-May-1987]" +#endif + +#define PUT_VERSION { \ + MESSAGE("This is %s, ", pgm_fn); \ + MESSAGE("%s.\n", VERSION); \ + need_version = FALSE; \ +} + +#define USAGE \ + "Usage: %s [-ilqrcg] [-s sty] [-o ind] [-t log] [-p num] [idx0 idx1 ...]\n" + +#define STYLE_PATH "INDEXSTYLE" /* environment variable defining search */ + /* path for style files */ +#define INDEX_IDX ".idx" +#define INDEX_ILG ".ilg" +#define INDEX_IND ".ind" +#define INDEX_STY ".mst" + +#if OS_VAXVMS +#define INDEX_LOG ".lis" +#else +#define INDEX_LOG ".log" +#endif + +#if OS_BS2000 /* Define WORK disk */ +#define WORK ":w:" +#define CATID ':' +#endif /* OS_BS2000 */ + +#define EMPTY -9999 +#define ROML 0 +#define ROMU 1 +#define ARAB 2 +#define ALPL 3 +#define ALPU 4 +#define DUPLICATE 9999 + +#define SYMBOL -1 +#define ALPHA -2 + +#define GERMAN 0 + +typedef struct KFIELD +{ + char *sf[FIELD_MAX]; /* sort key */ + char *af[FIELD_MAX]; /* actual key */ + int group; /* key group */ + char lpg[NUMBER_MAX]; /* literal page */ + short npg[PAGEFIELD_MAX]; /* page field array */ + short count; /* page field count */ + short type; /* page number type */ + char *encap; /* encapsulator */ + char *fn; /* input filename */ + int lc; /* line number */ +} FIELD, *FIELD_PTR; + +typedef struct KNODE +{ + FIELD data; + struct KNODE *next; +} NODE, *NODE_PTR; + +extern int letter_ordering; +extern int compress_blanks; +extern int init_page; +extern int merge_page; +extern int even_odd; +extern int verbose; +extern int german_sort; + +extern char idx_keyword[ARRAY_MAX]; +extern char idx_aopen; +extern char idx_aclose; +extern char idx_level; +extern char idx_ropen; +extern char idx_rclose; +extern char idx_quote; +extern char idx_actual; +extern char idx_encap; +extern char idx_escape; + +extern char page_comp[ARRAY_MAX]; +extern int page_offset[PAGETYPE_MAX]; + +extern char preamble[ARRAY_MAX]; +extern char postamble[ARRAY_MAX]; +extern char setpage_open[ARRAY_MAX]; +extern char setpage_close[ARRAY_MAX]; +extern char group_skip[ARRAY_MAX]; +extern int headings_flag; +extern char heading_pre[ARRAY_MAX]; +extern char heading_suf[ARRAY_MAX]; +extern char symhead_pos[ARRAY_MAX]; +extern char symhead_neg[ARRAY_MAX]; +extern char numhead_pos[ARRAY_MAX]; +extern char numhead_neg[ARRAY_MAX]; +extern int prelen; +extern int postlen; +extern int skiplen; +extern int headprelen; +extern int headsuflen; +extern int setpagelen; + +extern char item_r[FIELD_MAX][ARRAY_MAX]; +extern char item_u[FIELD_MAX][ARRAY_MAX]; +extern char item_x[FIELD_MAX][ARRAY_MAX]; +extern int ilen_r[FIELD_MAX]; +extern int ilen_u[FIELD_MAX]; +extern int ilen_x[FIELD_MAX]; + +extern char delim_p[FIELD_MAX][ARRAY_MAX]; +extern char delim_n[ARRAY_MAX]; +extern char delim_r[ARRAY_MAX]; +extern char delim_t[ARRAY_MAX]; + +extern char suffix_2p[ARRAY_MAX]; +extern char suffix_3p[ARRAY_MAX]; +extern char suffix_mp[ARRAY_MAX]; + +extern char encap_p[ARRAY_MAX]; +extern char encap_i[ARRAY_MAX]; +extern char encap_s[ARRAY_MAX]; + +extern int linemax; +extern char indent_space[ARRAY_MAX]; +extern int indent_length; + +extern FILE *idx_fp; +extern FILE *sty_fp; +extern FILE *ind_fp; +extern FILE *ilg_fp; + +#if OS_BS2000 +extern FILE *widx_fp; +extern char widx_fn[STRING_MAX + 5]; +#endif /* OS_BS2000 */ + +extern char *idx_fn; +extern char *pgm_fn; +extern char *ind_fn; +extern char *ilg_fn; + +#ifndef MKIND_C +extern char sty_fn[]; +extern char ind[]; +extern char ilg[]; +extern char pageno[]; + +#ifdef DEBUG +extern long totmem; +#endif /* DEBUG */ + +#endif + +extern FIELD_PTR *idx_key; +extern NODE_PTR head; +extern NODE_PTR tail; + +extern int idx_dot; +extern int idx_tt; +extern int idx_gt; +extern int idx_et; +extern int idx_dc; + +#define DOT "." +#define DOT_MAX 1000 +#define CMP_MAX 1500 + +#define IDX_DOT(MAX) { \ + idx_dot = TRUE; \ + if (idx_dc++ == 0) { \ + if (verbose) \ + fprintf(stderr, DOT); \ + fprintf(ilg_fp, DOT); \ + } \ + if (idx_dc == MAX) \ + idx_dc = 0; \ +} + +#define ALL_DONE { \ + if (fn_no > 0) { \ + if (verbose) \ +fprintf(stderr, \ + "Overall %d files read (%d entries accepted, %d rejected).\n", \ + fn_no+1, idx_gt, idx_et); \ +fprintf(ilg_fp, \ + "Overall %d files read (%d entries accepted, %d rejected).\n", \ + fn_no+1, idx_gt, idx_et); \ + } \ +} + +#define DONE(A, B, C, D) { \ + if (verbose) \ + fprintf(stderr, "done (%d %s, %d %s).\n", (A), B, C, D); \ + fprintf(ilg_fp, "done (%d %s, %d %s).\n", (A), B, C, D); \ +} + +#if STDC_PROTOTYPES +#define ARGS(arg_list) arg_list +#define VOIDP void* +#define VOID_ARG void +#else +#define ARGS(arg_list) () +#define const +#define VOIDP char* +#define VOID_ARG +#endif + +extern void gen_ind ARGS((void)); +extern int group_type ARGS((char *str)); +extern int main ARGS((int argc, char **argv)); +extern void qqsort ARGS((char *base, int n, int size, + int (*compar)ARGS((char*,char*)))); +extern void scan_idx ARGS((void)); +extern void scan_sty ARGS((void)); +extern void sort_idx ARGS((void)); +extern int strtoint ARGS((char *str)); + +#if STDC +#include <stdlib.h> +#undef strchr +#undef strrchr +#if __NeXT__ +int access ARGS((const char *, int)); +#else +#include <unistd.h> +#endif +#else +/* Miscellaneous standard library routines */ +int access ARGS((const char *, int)); +VOIDP calloc ARGS((size_t nitems,size_t size)); + +#if CCD_2000 /* function not available */ +#define getenv(P) 0 +#else +char *getenv ARGS((const char *name)); +#endif + +VOIDP malloc ARGS((size_t size)); +char *strchr ARGS((const char *s,int c)); +char *strrchr ARGS((const char *s,int c)); +#endif /* __STDC__ */ + +#if PCC_20 +#define R_OK 0 /* PCC-20 access(file,mode) */ +#endif /* only understands mode=0 */ + +#ifndef R_OK +#define R_OK 4 /* only symbol from sys/file.h */ +#endif +@ + + +1.1 +log +@Initial revision +@ +text +@d231 1 +a231 1 +#define access(fn, R_OK) 0 /* function not available */ +d245 1 +a245 1 +#define access(fn, R_OK) 0 /* function not available */ +a251 4 +#if PCC_20 +#define R_OK 0 /* PCC-20 access(file,mode) */ +#endif /* only understands mode=0 */ + +a316 4 +#ifndef R_OK +#define R_OK 4 /* only symbol from sys/file.h */ +#endif + +d750 8 +@ diff --git a/indexing/makeindex/src/README b/indexing/makeindex/src/README new file mode 100644 index 0000000000..4b3413ec93 --- /dev/null +++ b/indexing/makeindex/src/README @@ -0,0 +1,263 @@ +% /u/sy/beebe/tex/makeindex/2-12/makeindex/src/README, Wed May 26 11:25:46 1993 +% Edit by Nelson H. F. Beebe <beebe@plot79.math.utah.edu> +================================================================= += As of the release of MakeIndex version 2.9, the original += author, Pehong Chen, is no longer able to maintain it, and is += inaccessible via electronic mail. The maintenance job has been += taken over for the TeX User's Group by += += Nelson H. F. Beebe += Center for Scientific Computing += Department of Mathematics += University of Utah += Salt Lake City, UT 84112 += USA += Tel: +1 801 581 5254 += FAX: +1 801 581 4148 += Email: <beebe@math.utah.edu> += += to whom reports of problems, ports to new environments, and += general correspondence about MakeIndex, should be addressed. +================================================================= + + +================== +Building MakeIndex +================== + +Makefiles for numerous systems are provided in the distribution +as the files makefile.*; select the appropriate one, and copy it +to Makefile. For systems that lack a suitable make +implementation, command files (*.bat and *.com) are provided. + +In many cases, once the makefile has been selected, you should be +able to do + + make + (cd ../test; make) + +and if the acceptance tests in that second step all pass (there +should be no output from any of the files differences, except on +VAX VMS, where a couple of lines differing only in letter case, +are expected), then on many UNIX systems, you may be able to do + + make install + +to install the executable and manual pages on your system. + +For version 2.12, the code has been updated to support compilation +with numerous C++ compilers. No features of the C++ language are used +that do not also exist in C, but the stricter compile-time checking +provided by C++ compilers provides additional confidence in the code. +Thanks go to P. J. Plauger for his efforts in the ANSI/ISO Standard C +and C++ environments, and for promoting the idea of using C++ +compilers for C code development. + +If you have a C++ compiler, please try a build of MakeIndex with a +command like (select the one that corresponds to the name of your C++ +compiler) + + make CC=CC + make CC=xlC + make CC=g++ + +Any problems with C++ compilations should be reported back to the +address above. + +Before doing so however, check that BINDIR and MANDIR are set to +your local conventions (you can override the values in the +Makefile by setting them on the command-line), and also verify +that you do not have a brain-damaged install implementation that +either requires root privileges to run (e.g. IBM AIX), or moves +(instead of copies) files (e.g. Stardent or DEC ULTRIX). In the +latter case, you might be able to instead do + + make cp-install + +If you want to undo the installation, + + make uninstall + +should work. + +There are additional documentation files in ../doc that you may +want to install manually (Emacs info, local help systems, VAX VMS +help). + + +==================== +Compilation Problems +==================== + +The standardization of the C language by ANSI X3.159-1989 +Programming Language--C (December 15, 1989), and ISO C 1990, has +resulted in C implementations gradually being adapted to conform +to the requirements of the Standard, but released for use before +Standard conformance has been reached. For a lot of C code, this +affects several main areas: + + (1) system header files, and what symbols they define + (2) function prototype declarations + (3) new preprocessor statements, and more + precisely-defined preprocessor behavior + (4) new features introduced by Standard C (const, + adjacent string concatenation, new style function + definitions, new string escape sequences, trigraphs, + new data types) + +MakeIndex has successfully compiled and run on many different +operating systems and C implementations, but until Standard C +becomes uniformly implemented, the first two above are the most +troublesome. + +The code in MakeIndex is written to conform to Standard C, which +is distinguished by the preprocessor symbol __STDC__ being +permanently defined to a non-zero value. Unfortunately, some +implementations define this symbol without having +Standard-conforming header files, or without accepting some of +the new language features. + +In MakeIndex, function definitions are done in the old Kernighan and +Ritchie style in a pre-Standard C environment, but in Standard C and +C++ style if __STDC__ or __cplusplus are defined. + +All functions referenced are declared by function prototype +declarations of the form + +static void check_idx ARGS((char *fn,int open_fn)); + +where ARGS is defined in mkind.h to expand such a declaration to + +static void check_idx (char *fn,int open_fn); + +or + +static void check_idx (); + +depending on whether the compiler supports function prototype +declarations or not. If you get syntax errors from the new +style, you may need to revert to the old style by introducing a + +#define STDC_PROTOTYPES 0 + +statement in the appropriate section of mkind.h. Some compilers +partly support the function prototypes, but without variable +names; use the old-style for them, and complain to your compiler +supplier. + +When STDC_PROTOTYPES is non-zero, it is assumed that the Standard +C type modifier "const" is recognized; if your compiler complains +about it, add a + +#define const + +definition in mkind.h, or use a compile-time option -Dconst=; +either of these make it expand to an empty string, so the +compiler doesn't see it. + +Standard C specifies the data types of all library functions and +their arguments, and the system header files are required to +declare them appropriately. Nevertheless, some implementations +have a few erroneous declarations in the header files and still +claim to be Standard conforming (by defining the symbol __STDC__ +to a non-zero value). On such systems, the extra compile-time +type checking provided by function prototype declarations may +raise compilation errors, and it may be necessary to adjust +declarations in any of the files that use the ARGS macro +(genind.c, mkind.c, mkind.h, qsort.c, scanid.c, scanst.c, and +sortid.c) to make the code conform to the local implementation's +erroneous declarations. + +Numerous external variables and functions in MakeIndex require +long names (at least 12 unique characters). For older systems +that do not support long names, make sure the symbol SHORTNAMES +is defined to a non-zero value in mkind.h; this is already done +for supported systems that need it. Standard C requires +uniqueness in the first 6 characters of external names, WITHOUT +distinction between upper- and lower-case letters, so +implementations that do not allow long external names are NOT in +violation of the Standard. + +If you get compiler warnings about conversion of integers to +pointers, or find that rindex() or index() cannot be unresolved +by the linker, then check the settings in mkind.h. The default +is to use the Standard C functions strchr() and strrchr(), but on +a few non-conforming systems, to remap these names to index() and +rindex() instead. Any other integer-to-pointer conversion +warnings are likely to be traced to missing function prototype +declarations, which is either because of an omission in system +header files, or because the MakeIndex declaration in one of its +source files was not selected during the preprocessing step. +When the MakeIndex source code is compiled correctly, EVERY +function used by MakeIndex will have been declared in a function +prototype prior to its first use. + + +====================== +VAX VMS Considerations +====================== + +Different versions of VAX VMS C have used different +interpretations of the arguments to return() and exit() +statements. The convention on UNIX and many other systems is +that a 0 value denotes success, and a non-zero value, failure. +The EXIT() macro in mkind.h hides the remapping of this value for +VAX VMS; for other systems, it calls exit() directly. + +For VAX VMS, MakeIndex should be declared to be a foreign command +symbol in a system-wide, or user, startup file that is executed +at each login. Here is an example: + +$ makeindex :== $public$disk:[beebe.MakeIndex.src]makeindex.exe + +The leading dollar sign identifies this as a foreign command +symbol, and must be followed by an ABSOLUTE file specification +for the executable program; this regrettably makes it site +dependent, and the definitions in ../test/vmsdiff.com and +elsewhere must be adjusted accordingly. + +The symbol SW_PREFIX in mkind.h can be redefined from '-' to '/' +for those VAX VMS sites that prefer to retain VMS-style +command-line options; the default value is '-' on all systems. +This redefinition can be done on the command line, or by changing +the setting in mkind.h. + + +=============== +Machines Tested +=============== + +Here is a list of machines, operating systems, and compilers under +which MakeIndex 2.12 has been successfully tested. Convenience targets +in the Makefile provide support for them on UNIX. Command files are +provided for MS DOS and VAX VMS. + +------------------------------------------------------------------------ +Machine O/S Compiler(s) +------------------------------------------------------------------------ + +DEC Alpha 3000/500X OSF 1.2 cc, c89, cxx + +DECstation 3100 ULTRIX 4.2 and 4.3 cc, gcc, g++, lcc + +DEC VAX VMS 5.4-2 cc + +HP 9000/735 HP-UX 9.01 cc, c89, CC, gcc, g++ + +HP 9000/850 HP-UX 9.0 cc, c89 + +IBM 3090/600S-VF AIX 2.1 cc (Metaware High C + 2.1t), CC + +IBM PS/2 AIX 2.1 cc (Metaware High C + 2.2g), CC + +IBM RS/6000 AIX 3.2 cc, xlC + +MIPS R6000 RISC/os 5.0 cc + +NeXT Mach 3.0 cc, Objective C, gcc + +Sun SPARCstation SunOS 4.1.3 apcc, cc, CC, gcc, g++ + +------------------------------------------------------------------------ diff --git a/indexing/makeindex/src/genind.c b/indexing/makeindex/src/genind.c new file mode 100644 index 0000000000..3d176cec0f --- /dev/null +++ b/indexing/makeindex/src/genind.c @@ -0,0 +1,477 @@ +/* + * + * This file is part of + * MakeIndex - A formatter and format independent index processor + * + * Copyright (C) 1989 by Chen & Harrison International Systems, Inc. + * Copyright (C) 1988 by Olivetti Research Center + * Copyright (C) 1987 by Regents of the University of California + * + * Author: + * Pehong Chen + * Chen & Harrison International Systems, Inc. + * Palo Alto, California + * USA + * (phc@renoir.berkeley.edu or chen@orc.olivetti.com) + * + * Contributors: + * Please refer to the CONTRIB file that comes with this release + * for a list of people who have contributed to this and/or previous + * release(s) of MakeIndex. + * + * All rights reserved by the copyright holders. See the copyright + * notice distributed with this software for a complete description of + * the conditions under which it is made available. + * + */ + +#include "mkind.h" +#include "genind.h" + +#if sun /* avoid conflict with symbol in */ + /* /usr/lang/SC1.0/include/CC/stdlib.h */ +#define end the_end +#endif + +static FIELD_PTR curr = NULL; +static FIELD_PTR prev = NULL; +static FIELD_PTR begin = NULL; +static FIELD_PTR end = NULL; +static FIELD_PTR range_ptr; +static int level = 0; +static int prev_level = 0; +static char *encap = NULL; +static char *prev_encap = NULL; +static int in_range = FALSE; +static int encap_range = FALSE; +static char buff[2 * ARGUMENT_MAX]; +static char line[2 * ARGUMENT_MAX]; /* output buffer */ +static int ind_lc = 0; /* overall line count */ +static int ind_ec = 0; /* erroneous line count */ +static int ind_indent; + +static void flush_line ARGS((int print)); +static void insert_page ARGS((void)); +static int make_entry ARGS((int n)); +static void make_item ARGS((char* term)); +static void new_entry ARGS((void)); +static void old_entry ARGS((void)); +static int page_diff ARGS((struct KFIELD *a,struct KFIELD *b)); +static void put_header ARGS((int let)); +static void wrap_line ARGS((int print)); + +void +gen_ind(VOID_ARG) +{ + int n; + int tmp_lc; + + MESSAGE("Generating output file %s...", ind_fn); + PUT(preamble); + ind_lc += prelen; + if (init_page) + insert_page(); + + /* reset counters for putting out dots */ + idx_dc = 0; + for (n = 0; n < idx_gt; n++) { + if (idx_key[n]->type != DUPLICATE) + if (make_entry(n)) { + IDX_DOT(DOT_MAX); + } + } + tmp_lc = ind_lc; + if (in_range) { + curr = range_ptr; + IND_ERROR("Unmatched range opening operator %c.\n", idx_ropen); + } + prev = curr; + flush_line(TRUE); + PUT(delim_t); + PUT(postamble); + tmp_lc = ind_lc + postlen; + if (ind_ec == 1) { + DONE(tmp_lc, "lines written", ind_ec, "warning"); + } else { + DONE(tmp_lc, "lines written", ind_ec, "warnings"); + } +} + + +static int +#if STDC +make_entry(int n) +#else +make_entry(n) +int n; +#endif +{ + int let; + + /* determine current and previous pointer */ + prev = curr; + curr = idx_key[n]; + /* check if current entry is in range */ + if ((*curr->encap == idx_ropen) || (*curr->encap == idx_rclose)) + encap = &(curr->encap[1]); + else + encap = curr->encap; + + /* determine the current nesting level */ + if (n == 0) { + prev_level = level = 0; + let = *curr->sf[0]; + put_header(let); + make_item(NIL); + } else { + prev_level = level; + for (level = 0; level < FIELD_MAX; level++) + if (STRNEQ(curr->sf[level], prev->sf[level]) || + STRNEQ(curr->af[level], prev->af[level])) + break; + if (level < FIELD_MAX) + new_entry(); + else + old_entry(); + } + + if (*curr->encap == idx_ropen) + if (in_range) { + IND_ERROR("Extra range opening operator %c.\n", idx_ropen); + } else { + in_range = TRUE; + range_ptr = curr; + } + else if (*curr->encap == idx_rclose) + if (in_range) { + in_range = FALSE; + if (STRNEQ(&(curr->encap[1]), "") && + STRNEQ(prev_encap, &(curr->encap[1]))) { +IND_ERROR("Range closing operator has an inconsistent encapsulator %s.\n", + &(curr->encap[1])); + } + } else { + IND_ERROR("Unmatched range closing operator %c.\n", idx_rclose); + } + else if ((*curr->encap != NUL) && + STRNEQ(curr->encap, prev_encap) && in_range) + IND_ERROR("Inconsistent page encapsulator %s within range.\n", + curr->encap); + return (1); +} + + +static void +#if STDC +make_item(char *term) +#else +make_item(term) +char *term; +#endif +{ + int i; + + if (level > prev_level) { + /* ascending level */ + if (*curr->af[level] == NUL) + sprintf(line, "%s%s%s", term, item_u[level], curr->sf[level]); + else + sprintf(line, "%s%s%s", term, item_u[level], curr->af[level]); + ind_lc += ilen_u[level]; + } else { + /* same or descending level */ + if (*curr->af[level] == NUL) + sprintf(line, "%s%s%s", term, item_r[level], curr->sf[level]); + else + sprintf(line, "%s%s%s", term, item_r[level], curr->af[level]); + ind_lc += ilen_r[level]; + } + + i = level + 1; + while (i < FIELD_MAX && *curr->sf[i] != NUL) { + PUT(line); + if (*curr->af[i] == NUL) + sprintf(line, "%s%s", item_x[i], curr->sf[i]); + else + sprintf(line, "%s%s", item_x[i], curr->af[i]); + ind_lc += ilen_x[i]; + level = i; /* Added at 2.11 <brosig@gmdzi.gmd.de> */ + i++; + } + + ind_indent = 0; + strcat(line, delim_p[level]); + SAVE; +} + + +static void +new_entry(VOID_ARG) +{ + int let; + FIELD_PTR ptr; + + if (in_range) { + ptr = curr; + curr = range_ptr; + IND_ERROR("Unmatched range opening operator %c.\n", idx_ropen); + in_range = FALSE; + curr = ptr; + } + flush_line(TRUE); + + /* beginning of a new group? */ + + if (((curr->group != ALPHA) && (curr->group != prev->group) && + (prev->group == SYMBOL)) || + ((curr->group == ALPHA) && + ((unsigned char)(let = TOLOWER(curr->sf[0][0])) + != (TOLOWER(prev->sf[0][0])))) || + (german_sort && + (curr->group != ALPHA) && (prev->group == ALPHA))) { + PUT(delim_t); + PUT(group_skip); + ind_lc += skiplen; + /* beginning of a new letter? */ + put_header(let); + make_item(NIL); + } else + make_item(delim_t); +} + + +static void +old_entry(VOID_ARG) +{ + int diff; + + /* current entry identical to previous one: append pages */ + diff = page_diff(end, curr); + + if ((prev->type == curr->type) && (diff != -1) && + (((diff == 0) && (prev_encap != NULL) && STREQ(encap, prev_encap)) || + (merge_page && (diff == 1) && + (prev_encap != NULL) && STREQ(encap, prev_encap)) || + in_range)) { + end = curr; + /* extract in-range encaps out */ + if (in_range && + (*curr->encap != NUL) && + (*curr->encap != idx_rclose) && + STRNEQ(curr->encap, prev_encap)) { + sprintf(buff, "%s%s%s%s%s", encap_p, curr->encap, + encap_i, curr->lpg, encap_s); + wrap_line(FALSE); + } + if (in_range) + encap_range = TRUE; + } else { + flush_line(FALSE); + if ((diff == 0) && (prev->type == curr->type)) { +IND_ERROR( +"Conflicting entries: multiple encaps for the same page under same key.\n", +""); + } else if (in_range && (prev->type != curr->type)) { +IND_ERROR( +"Illegal range formation: starting & ending pages are of different types.\n", +""); + } else if (in_range && (diff == -1)) { +IND_ERROR( +"Illegal range formation: starting & ending pages cross chap/sec breaks.\n", +""); + } + SAVE; + } +} + + +static int +#if STDC +page_diff(FIELD_PTR a,FIELD_PTR b) +#else +page_diff(a, b) +FIELD_PTR a; +FIELD_PTR b; +#endif +{ + short i; + + if (a->count != b->count) + return (-1); + for (i = 0; i < a->count - 1; i++) + if (a->npg[i] != b->npg[i]) + return (-1); + return (b->npg[b->count - 1] - a->npg[a->count - 1]); +} + +static void +#if STDC +put_header(int let) +#else +put_header(let) +int let; +#endif +{ + if (headings_flag) + { + PUT(heading_pre); + ind_lc += headprelen; + switch (curr->group) + { + case SYMBOL: + if (headings_flag > 0) + { + PUT(symhead_pos); + } + else + { + PUT(symhead_neg); + } + break; + case ALPHA: + if (headings_flag > 0) + { + let = TOUPPER(let); + PUTC(let); + } + else + { + let = TOLOWER(let); + PUTC(let); + } + break; + default: + if (headings_flag > 0) + { + PUT(numhead_pos); + } + else + { + PUT(numhead_neg); + } + break; + } + PUT(heading_suf); + ind_lc += headsuflen; + } +} + + +/* changes for 2.12 (May 20, 1993) by Julian Reschke (jr@ms.maus.de): + Use keywords suffix_2p, suffix_3p or suffix_mp for one, two or + multiple page ranges (when defined) */ + +static void +#if STDC +flush_line(int print) +#else +flush_line(print) +int print; +#endif +{ + char tmp[sizeof(buff)]; + + if (page_diff(begin, end) != 0) + if (encap_range || (page_diff(begin, prev) > (*suffix_2p ? 0 : 1))) + { + int diff = page_diff(begin, end); + + if ((diff == 1) && *suffix_2p) + sprintf(buff, "%s%s", begin->lpg, suffix_2p); + else if ((diff == 2) && *suffix_3p) + sprintf(buff, "%s%s", begin->lpg, suffix_3p); + else if ((diff >= 2) && *suffix_mp) + sprintf(buff, "%s%s", begin->lpg, suffix_mp); + else + sprintf(buff, "%s%s%s", begin->lpg, delim_r, end->lpg); + + encap_range = FALSE; + } + else + sprintf(buff, "%s%s%s", begin->lpg, delim_n, end->lpg); + else + { + encap_range = FALSE; /* might be true from page range on same page */ + strcpy(buff, begin->lpg); + } + + if (*prev_encap != NUL) + { + strcpy(tmp, buff); + sprintf(buff, "%s%s%s%s%s", + encap_p, prev_encap, encap_i, tmp, encap_s); + } + wrap_line(print); +} + +static void +#if STDC +wrap_line(int print) +#else +wrap_line(print) +int print; +#endif +{ + int len; + + len = strlen(line) + strlen(buff) + ind_indent; + if (print) { + if (len > linemax) { + PUTLN(line); + PUT(indent_space); + ind_indent = indent_length; + } else + PUT(line); + PUT(buff); + } else { + if (len > linemax) { + PUTLN(line); + sprintf(line, "%s%s%s", indent_space, buff, delim_n); + ind_indent = indent_length; + } else { + strcat(buff, delim_n); + strcat(line, buff); + } + } +} + + +static void +insert_page(VOID_ARG) +{ + int i = 0; + int j = 0; + int page = 0; + + if (even_odd >= 0) { + /* find the rightmost digit */ + while (pageno[i++] != NUL); + j = --i; + /* find the leftmost digit */ + while (isdigit(pageno[--i]) && i > 0); + if (!isdigit(pageno[i])) + i++; + /* convert page from literal to numeric */ + page = strtoint(&pageno[i]) + 1; + /* check even-odd numbering */ + if (((even_odd == 1) && (page % 2 == 0)) || + ((even_odd == 2) && (page % 2 == 1))) + page++; + pageno[j + 1] = NUL; + /* convert page back to literal */ + while (page >= 10) { + pageno[j--] = TOASCII(page % 10); + page = page / 10; + } + pageno[j] = TOASCII(page); + if (i < j) { + while (pageno[j] != NUL) + pageno[i++] = pageno[j++]; + pageno[i] = NUL; + } + } + PUT(setpage_open); + PUT(pageno); + PUT(setpage_close); + ind_lc += setpagelen; +} diff --git a/indexing/makeindex/src/genind.h b/indexing/makeindex/src/genind.h new file mode 100644 index 0000000000..6d0cef06ee --- /dev/null +++ b/indexing/makeindex/src/genind.h @@ -0,0 +1,73 @@ +/* + * + * This file is part of + * MakeIndex - A formatter and format independent index processor + * + * Copyright (C) 1989 by Chen & Harrison International Systems, Inc. + * Copyright (C) 1988 by Olivetti Research Center + * Copyright (C) 1987 by Regents of the University of California + * + * Author: + * Pehong Chen + * Chen & Harrison International Systems, Inc. + * Palo Alto, California + * USA + * (phc@renoir.berkeley.edu or chen@orc.olivetti.com) + * + * Contributors: + * Please refer to the CONTRIB file that comes with this release + * for a list of people who have contributed to this and/or previous + * release(s) of MakeIndex. + * + * All rights reserved by the copyright holders. See the copyright + * notice distributed with this software for a complete description of + * the conditions under which it is made available. + * + */ + +#if KCC_20 +/* KCC preprocessor bug collapses multiple blanks to single blank */ +#define IND_ERROR(F, D) { \ + if (idx_dot) { \ + fprintf(ilg_fp, "\n"); \ + idx_dot = FALSE; \ + } \ + fprintf(ilg_fp, \ +"## Warning (input = %s, line = %d; output = %s, line = %d):\n\040\040 -- ", \ + curr->fn, curr->lc, ind_fn, ind_lc+1); \ + fprintf(ilg_fp, F, D); \ + ind_ec++; \ +} +#else +#define IND_ERROR(F, D) { \ + if (idx_dot) { \ + fprintf(ilg_fp, "\n"); \ + idx_dot = FALSE; \ + } \ + fprintf(ilg_fp, \ + "## Warning (input = %s, line = %d; output = %s, line = %d):\n -- ", \ + curr->fn, curr->lc, ind_fn, ind_lc+1); \ + fprintf(ilg_fp, F, D); \ + ind_ec++; \ +} +#endif + +#define PUTC(C) { \ + fputc(C, ind_fp); \ +} + +#define PUT(S) { \ + fputs(S, ind_fp); \ +} + +#define PUTLN(S) { \ + fputs(S, ind_fp); \ + fputc('\n', ind_fp); \ + ind_lc++; \ +} + +#define SAVE { \ + begin = end = curr; \ + prev_encap = encap; \ +} + diff --git a/indexing/makeindex/src/make-kcc.mic b/indexing/makeindex/src/make-kcc.mic new file mode 100644 index 0000000000..3a02daeca5 --- /dev/null +++ b/indexing/makeindex/src/make-kcc.mic @@ -0,0 +1,13 @@ +! Command file to build MakeIndex on TOPS-20 with KCC +! [12-Dec-89] + +kcc -DOS_TOPS20 -DKCC_20 -DSHORTNAMES -Dshort=int -c genind.c +kcc -DOS_TOPS20 -DKCC_20 -DSHORTNAMES -Dshort=int -c mkind.c +kcc -DOS_TOPS20 -DKCC_20 -DSHORTNAMES -Dshort=int -c qsort.c +kcc -DOS_TOPS20 -DKCC_20 -DSHORTNAMES -Dshort=int -c scanid.c +kcc -DOS_TOPS20 -DKCC_20 -DSHORTNAMES -Dshort=int -c scanst.c +kcc -DOS_TOPS20 -DKCC_20 -DSHORTNAMES -Dshort=int -c sortid.c +kcc -DOS_TOPS20 -DKCC_20 -DSHORTNAMES -Dshort=int genind.rel mkind.rel - + qsort.rel scanid.rel scanst.rel sortid.rel -o makidx.exe +reset +rename makidx.exe makeindex.exe diff --git a/indexing/makeindex/src/make-lc.bat b/indexing/makeindex/src/make-lc.bat new file mode 100644 index 0000000000..23a969b59f --- /dev/null +++ b/indexing/makeindex/src/make-lc.bat @@ -0,0 +1,9 @@ +lc -dOS_PCDOS=1 -dIBM_PC_LATTICE=1 -c -ca -cf -cs -cz -f -ml -S=32K genind.c +lc -dOS_PCDOS=1 -dIBM_PC_LATTICE=1 -c -ca -cf -cs -cz -f -ml -S=32K mkind.c +lc -dOS_PCDOS=1 -dIBM_PC_LATTICE=1 -c -ca -cf -cs -cz -f -ml -S=32K qsort.c +lc -dOS_PCDOS=1 -dIBM_PC_LATTICE=1 -c -ca -cf -cs -cz -f -ml -S=32K scanid.c +lc -dOS_PCDOS=1 -dIBM_PC_LATTICE=1 -c -ca -cf -cs -cz -f -ml -S=32K scanst.c +lc -dOS_PCDOS=1 -dIBM_PC_LATTICE=1 -c -ca -cf -cs -cz -f -ml -S=32K sortid.c +lc -L -f -ml genind.obj mkind.obj qsort.obj scanid.obj scanst.obj sortid.obj +del makeindx.exe +ren genind.exe makeindx.exe diff --git a/indexing/makeindex/src/make-msc.bat b/indexing/makeindex/src/make-msc.bat new file mode 100644 index 0000000000..5c0dddeecd --- /dev/null +++ b/indexing/makeindex/src/make-msc.bat @@ -0,0 +1,7 @@ +cl -c -AL -Zd -Oailt -W3 -Zi -DOS_PCDOS -DIBM_PC_MICROSOFT genind.c +cl -c -AL -Zd -Oailt -W3 -Zi -DOS_PCDOS -DIBM_PC_MICROSOFT mkind.c +cl -c -AL -Zd -Oailt -W3 -Zi -DOS_PCDOS -DIBM_PC_MICROSOFT qsort.c +cl -c -AL -Zd -Oailt -W3 -Zi -DOS_PCDOS -DIBM_PC_MICROSOFT scanid.c +cl -c -AL -Zd -Oailt -W3 -Zi -DOS_PCDOS -DIBM_PC_MICROSOFT scanst.c +cl -c -AL -Zd -Oailt -W3 -Zi -DOS_PCDOS -DIBM_PC_MICROSOFT sortid.c +cl -o makeindx.exe genind.obj mkind.obj qsort.obj scanid.obj scanst.obj sortid.obj diff --git a/indexing/makeindex/src/make-pcc.mic b/indexing/makeindex/src/make-pcc.mic new file mode 100644 index 0000000000..c7226cc3d0 --- /dev/null +++ b/indexing/makeindex/src/make-pcc.mic @@ -0,0 +1,13 @@ +! Command file to build MakeIndex on TOPS-20 with PCC +! [12-Dec-89] + +cc -DOS_TOPS20 -DPCC_20 -DSHORTNAMES -c genind.c +cc -DOS_TOPS20 -DPCC_20 -DSHORTNAMES -c mkind.c +cc -DOS_TOPS20 -DPCC_20 -DSHORTNAMES -c qsort.c +cc -DOS_TOPS20 -DPCC_20 -DSHORTNAMES -c scanid.c +cc -DOS_TOPS20 -DPCC_20 -DSHORTNAMES -c scanst.c +cc -DOS_TOPS20 -DPCC_20 -DSHORTNAMES -c sortid.c +cc -DOS_TOPS20 -DPCC_20 -DSHORTNAMES genind.rel mkind.rel qsort.rel - + scanid.rel scanst.rel sortid.rel -o makidx.exe +reset +rename makidx.exe makeindex.exe diff --git a/indexing/makeindex/src/make-tcc.bat b/indexing/makeindex/src/make-tcc.bat new file mode 100644 index 0000000000..a1296828d9 --- /dev/null +++ b/indexing/makeindex/src/make-tcc.bat @@ -0,0 +1,7 @@ +tcc -c -A -N -ml -v -y -DOS_PCDOS=1 -DIBM_PC_TURBO=1 genind.c +tcc -c -A -N -ml -v -y -DOS_PCDOS=1 -DIBM_PC_TURBO=1 mkind.c +tcc -c -A -N -ml -v -y -DOS_PCDOS=1 -DIBM_PC_TURBO=1 qsort.c +tcc -c -A -N -ml -v -y -DOS_PCDOS=1 -DIBM_PC_TURBO=1 scanid.c +tcc -c -A -N -ml -v -y -DOS_PCDOS=1 -DIBM_PC_TURBO=1 scanst.c +tcc -c -A -N -ml -v -y -DOS_PCDOS=1 -DIBM_PC_TURBO=1 sortid.c +tcc -A -N -ml -v -y -emakeindx.exe genind.obj mkind.obj qsort.obj scanid.obj scanst.obj sortid.obj diff --git a/indexing/makeindex/src/make-vms.com b/indexing/makeindex/src/make-vms.com new file mode 100644 index 0000000000..91abdde610 --- /dev/null +++ b/indexing/makeindex/src/make-vms.com @@ -0,0 +1,10 @@ +$! Compile and link MakeIndex under VAX/VMS for people who don't have make. +$ cc = "CC/NOLIST/DEFINE=(""OS_VAXVMS=1"")" +$ cc genind +$ cc mkind +$ cc qsort +$ cc scanid +$ cc scanst +$ cc sortid +$ link genind,mkind,qsort,scanid,scanst,sortid,- + sys$library:vaxcrtl/lib /exe=makeindex diff --git a/indexing/makeindex/src/makefile.bsd b/indexing/makeindex/src/makefile.bsd new file mode 100644 index 0000000000..6f1331bf29 --- /dev/null +++ b/indexing/makeindex/src/makefile.bsd @@ -0,0 +1,141 @@ +# +# Makefile for the program `makeindex' +# +# Copyright (C) 1987 Pehong Chen (phc@renoir.berkeley.edu) +# Computer Science Division +# University of California, Berkeley +# + +BINDIR = /usr/local/bin + +CP = /bin/cp + +MANDIR = /usr/local/man/man1 + +MANUAL = makeindex.l + +DOC = makeindex.tex + +EXTHDRS = /usr/include/ctype.h \ + /usr/include/stdio.h + +HDRS = genind.h \ + mkind.h \ + scanid.h \ + scanst.h + +CFLAGS = -O + +LDFLAGS = $(CFLAGS) + +LIBS = + +LINKER = $(CC) + +MAKEFILE = Makefile + +OBJS = genind.o \ + mkind.o \ + qsort.o \ + scanid.o \ + scanst.o \ + sortid.o + +PRINT = psgrind + +RM = /bin/rm -f + +SRCS = genind.c \ + mkind.c \ + qsort.c \ + scanid.c \ + scanst.c \ + sortid.c + +PROGRAM = makeindex + +TAR = $(PROGRAM).tar + +SHAR = $(PROGRAM).shar + +ALL = $(MAKEFILE) $(DOC) $(MANUAL) $(HDRS) $(SRCS) + +$(PROGRAM): $(OBJS) + @ $(RM) -f $(PROGRAM) + $(LINKER) $(LDFLAGS) $(OBJS) $(LIBS) -o $(PROGRAM) + @size $(PROGRAM) + +install: $(PROGRAM) + install -c -s -m 0755 $(PROGRAM) $(BINDIR) + install -c -m 0744 ../doc/makeindex.l $(MANDIR)/makeindex.1 + @ls -lgs $(BINDIR)/$(PROGRAM) + +cp-install: + $(CP) $(PROGRAM) $(BINDIR) + strip $(BINDIR)/$(PROGRAM) + chmod 755 $(BINDIR)/$(PROGRAM) + $(CP) ../doc/makeindex.l $(MANDIR)/makeindex.1 + chmod 744 $(MANDIR)/makeindex.1 + +uninstall: + $(RM) $(BINDIR)/$(PROGRAM) + $(RM) $(MANDIR)/makeindex.1 + +tar: + @ $(RM) -f $(TAR) + tar -cf $(TAR) $(ALL) + +shar: + @ $(RM) -f $(SHAR) + shar $(SHAR) $(ALL) + +dist: + cp $(PROGRAM) $(BINDIR) + rcp $(PROGRAM) monet:$(BINDIR) + rcp $(PROGRAM) arpa:$(BINDIR) + rcp $(PROGRAM) harrison@vangogh:bin + +clean: + - $(RM) $(OBJS) + - $(RM) core + - $(RM) $(PROGRAM) + - $(RM) *.out + +clobber: clean + +depend: + @ $(RM) -f .#*.[chly] + mkmf -f $(MAKEFILE) PROGRAM=$(PROGRAM) BINDIR=$(BINDIR) + +index: + @ctags -wx $(HDRS) $(SRCS) + +print: + @$(PRINT) $(HDRS) $(SRCS) + +man: + ptroff -man $(MANUAL) + +program: $(PROGRAM) + +tags: $(HDRS) $(SRCS) + @ctags $(HDRS) $(SRCS) + +update: $(BINDIR)/$(PROGRAM) + +$(BINDIR)/$(PROGRAM): $(SRCS) $(HDRS) $(EXTHDRS) + @make -f $(MAKEFILE) BINDIR=$(BINDIR) install + +.DEFAULT: + co $@ +### +genind.o: mkind.h /usr/include/stdio.h /usr/include/ctype.h \ + genind.h +mkind.o: mkind.h /usr/include/stdio.h /usr/include/ctype.h +qsort.o: mkind.h /usr/include/stdio.h +scanid.o: mkind.h /usr/include/stdio.h /usr/include/ctype.h \ + scanid.h +scanst.o: mkind.h /usr/include/stdio.h /usr/include/ctype.h \ + scanst.h +sortid.o: mkind.h /usr/include/stdio.h /usr/include/ctype.h + diff --git a/indexing/makeindex/src/makefile.kcc b/indexing/makeindex/src/makefile.kcc new file mode 100644 index 0000000000..034e734a77 --- /dev/null +++ b/indexing/makeindex/src/makefile.kcc @@ -0,0 +1,123 @@ +# Makefile modified for DEC-20 (KCC-20 compiler) [13-Jan-88] (only major +# targets supported) +# +# Makefile for the program `makeindex' +# +# Copyright (C) 1987 Pehong Chen (phc@renoir.berkeley.edu) +# Computer Science Division +# University of California, Berkeley +# + +CC = kcc +O = .rel +X = .exe +INCLUDE = /usr/include/ +INCLUDE = c: + +DEST = /usr/local/bin +DEST = TEX: + +MANDIR = /usr/local/man/manl +MANDIR = NUL: + +MANUAL = makeindex.l + +DOC = makeindex.tex + +EXTHDRS = ${INCLUDE}ctype.h \ + ${INCLUDE}stdio.h + +HDRS = genind.h \ + mkind.h \ + scanid.h \ + scanst.h + +# The -Dshort=int is needed for KCC versions before 583 (13-Jan-88); +# that version or later works correctly if it is dropped +CFLAGS = -DOS_TOPS20 -DKCC_20 -DSHORTNAMES -Dshort=int + +LDFLAGS = $(CFLAGS) + +LIBS = + +LINKER = $(CC) + +MAKEFILE = Makefile + +OBJS = genind${O} \ + mkind${O} \ + qsort${O} \ + scanid${O} \ + scanst${O} \ + sortid${O} + +PRINT = psgrind + +SRCS = genind.c \ + mkind.c \ + qsort.c \ + scanid.c \ + scanst.c \ + sortid.c + +PROGRAM = makeindex + +TAR = $(PROGRAM).tar + +SHAR = $(PROGRAM).shar + +ALL = $(MAKEFILE) $(DOC) $(MANUAL) $(HDRS) $(SRCS) + +$(PROGRAM): $(PROGRAM)$(X) + +$(PROGRAM)$(X): $(OBJS) + $(LINKER) $(LDFLAGS) $(OBJS) $(LIBS) -o makidx$(X) + reset + ${MV} makidx$(X) $(PROGRAM)$(X) + +install: $(PROGRAM) + install -c -s -m 0755 $(PROGRAM) $(DEST) + @ls -lgs $(DEST)/$(PROGRAM) + +tar:; @rm -f $(TAR) + tar -cf $(TAR) $(ALL) + +shar:; @rm -f $(SHAR) + shar $(SHAR) $(ALL) + +dist:; cp $(PROGRAM) $(DEST) + rcp $(PROGRAM) monet:$(DEST) + rcp $(PROGRAM) arpa:$(DEST) + rcp $(PROGRAM) harrison@vangogh:bin + +clean:; @rm -f $(OBJS) core $(PROGRAM) *${O}ut + +depend:; @rm -f .#*.[chly] + mkmf -f $(MAKEFILE) PROGRAM=$(PROGRAM) DEST=$(DEST) + +index:; @ctags -wx $(HDRS) $(SRCS) + +print:; @$(PRINT) $(HDRS) $(SRCS) + +man:; ptroff -man $(MANUAL) + +program: $(PROGRAM) + +tags: $(HDRS) $(SRCS); @ctags $(HDRS) $(SRCS) + +update: $(DEST)/$(PROGRAM) + +$(DEST)/$(PROGRAM): $(SRCS) $(HDRS) $(EXTHDRS) + @make -f $(MAKEFILE) DEST=$(DEST) install + +# .DEFAULT:; co $@ +### +genind${O}: mkind.h ${INCLUDE}stdio.h ${INCLUDE}ctype.h \ + genind.h +mkind${O}: mkind.h ${INCLUDE}stdio.h ${INCLUDE}ctype.h +qsort${O}: mkind.h ${INCLUDE}stdio.h +scanid${O}: mkind.h ${INCLUDE}stdio.h ${INCLUDE}ctype.h \ + scanid.h +scanst${O}: mkind.h ${INCLUDE}stdio.h ${INCLUDE}ctype.h \ + scanst.h +sortid${O}: mkind.h ${INCLUDE}stdio.h ${INCLUDE}ctype.h diff --git a/indexing/makeindex/src/makefile.lc b/indexing/makeindex/src/makefile.lc new file mode 100644 index 0000000000..f1d5725bef --- /dev/null +++ b/indexing/makeindex/src/makefile.lc @@ -0,0 +1,139 @@ +# Makefile modified for IBM PC DOS (Lattice C 6.0.1) [11-Dec-89] (only major +# targets supported) +# +# Makefile for the program `makeindex' +# +# Copyright (C) 1987 Pehong Chen (phc@renoir.berkeley.edu) +# Computer Science Division +# University of California, Berkeley +# + +CC = lc +O = .obj +X = .exe +INCLUDE = /usr/include +INCLUDE = c:/sys/lc/include + +DEST = /usr/local/bin +DEST = c:/usr/bin + +MANDIR = /usr/local/man/manl +MANDIR = nul + +MANUAL = makeindex.l + +DOC = makeindex.tex + +EXTHDRS = ${INCLUDE}\ctype.h \ + ${INCLUDE}\stdio.h + +HDRS = genind.h \ + mkind.h \ + scanid.h \ + scanst.h + +XCFLAGS= + +LDFLAGS = -L -f -ml $(XCFLAGS) + +CFLAGS = -dOS_PCDOS=1 -dIBM_PC_LATTICE=1 -c -ca -cf -cs -cz -f -ml -S=32K + +LIBS = + +LINKER = link + +MAKEFILE = Makefile + +OBJS = genind${O} mkind${O} qsort${O} scanid${O} scanst${O} sortid${O} + +PRINT = psgrind + +SRCS = genind.c \ + mkind.c \ + qsort.c \ + scanid.c \ + scanst.c \ + sortid.c + +PROGRAM = makeindx + +TAR = $(PROGRAM).tar + +SHAR = $(PROGRAM).shar + +ALL = $(MAKEFILE) $(DOC) $(MANUAL) $(HDRS) $(SRCS) + +# Default stack is too small--increase +STACKSIZE=8000 + +LINKFLAGS=/MAP/LINE/ST:$(STACKSIZE) + +# Rules... + +.SUFFIXES: +.SUFFIXES: .obj .c + +.c.obj: + $(CC) $(CFLAGS) $*.c + +RM = del + +$(PROGRAM): $(PROGRAM)$(X) + +$(PROGRAM)$(X): $(OBJS) + $(CC) $(LDFLAGS) $(OBJS) + del $(PROGRAM)$(X) + ren genind$(X) $(PROGRAM)$(X) + +install: $(PROGRAM) + install -c -s -m 0755 $(PROGRAM) $(DEST) + @ls -lgs $(DEST)/$(PROGRAM) + +tar: + @rm -f $(TAR) + tar -cf $(TAR) $(ALL) + +shar: + @rm -f $(SHAR) + shar $(SHAR) $(ALL) + +dist: + cp $(PROGRAM) $(DEST) + rcp $(PROGRAM) monet:$(DEST) + rcp $(PROGRAM) arpa:$(DEST) + rcp $(PROGRAM) harrison@vangogh:bin + +clean: + @rm -f $(OBJS) core $(PROGRAM) *${O}ut + +depend: + @rm -f .#*.[chly] + mkmf -f $(MAKEFILE) PROGRAM=$(PROGRAM) DEST=$(DEST) + +index: + @ctags -wx $(HDRS) $(SRCS) + +print: + @$(PRINT) $(HDRS) $(SRCS) + +man: + ptroff -man $(MANUAL) + +program: $(PROGRAM) + +tags: $(HDRS) $(SRCS) + @ctags $(HDRS) $(SRCS) + +# update: $(DEST)/$(PROGRAM) + +# $(DEST)/$(PROGRAM): $(SRCS) $(HDRS) $(EXTHDRS) +# @make -f $(MAKEFILE) DEST=$(DEST) install + +# .DEFAULT:; co $@ +### +genind${O}: mkind.h genind.h +mkind${O}: mkind.h +qsort${O}: mkind.h +scanid${O}: mkind.h scanid.h +scanst${O}: mkind.h scanst.h +sortid${O}: mkind.h diff --git a/indexing/makeindex/src/makefile.msc b/indexing/makeindex/src/makefile.msc new file mode 100644 index 0000000000..8e37e8f79a --- /dev/null +++ b/indexing/makeindex/src/makefile.msc @@ -0,0 +1,144 @@ +# Makefile modified for IBM PC DOS (Microsoft C) [13-Jan-88] (only major +# targets supported) +# +# Makefile for the program `makeindex' +# +# Copyright (C) 1987 Pehong Chen (phc@renoir.berkeley.edu) +# Computer Science Division +# University of California, Berkeley +# + +CC = cl +O = .obj +X = .exe +INCLUDE = /usr/include +INCLUDE = c:/sys/msc/include + +DEST = /usr/local/bin +DEST = c:/usr/bin + +MANDIR = /usr/local/man/manl +MANDIR = nul + +MANUAL = makeindex.l + +DOC = makeindex.tex + +EXTHDRS = ${INCLUDE}\ctype.h \ + ${INCLUDE}\stdio.h + +HDRS = genind.h \ + mkind.h \ + scanid.h \ + scanst.h + +XCFLAGS= + +CFLAGS= -AL -Zd -Oailt -W3 -Zi -DOS_PCDOS -DIBM_PC_MICROSOFT $(XCFLAGS) + +LDFLAGS = $(CFLAGS) + +LIBS = + +LINKER = link + +MAKEFILE = Makefile + +OBJS = genind${O} mkind${O} qsort${O} scanid${O} scanst${O} sortid${O} + +PRINT = psgrind + +SRCS = genind.c \ + mkind.c \ + qsort.c \ + scanid.c \ + scanst.c \ + sortid.c + +PROGRAM = makeindx + +TAR = $(PROGRAM).tar + +SHAR = $(PROGRAM).shar + +ALL = $(MAKEFILE) $(DOC) $(MANUAL) $(HDRS) $(SRCS) + +# Default stack is too small--increase +STACKSIZE=8000 + +LINKFLAGS=/MAP/LINE/ST:$(STACKSIZE) + +# Rules... + +.SUFFIXES: +.SUFFIXES: .obj .c .sym .map + +.c.obj: + $(CC) -c $(CFLAGS) $*.c +# $(CC) -c $(CFLAGS) $*.c >$*.clg +# errshow <$*.clg >$*.cer +# del $*.clg + +.map.sym: + mapsym $* + del $*.map + +RM = del + +$(PROGRAM): $(PROGRAM)$(X) + +$(PROGRAM)$(X): $(OBJS) + $(CC) -o $(PROGRAM)$(X) $(OBJS) + +install: $(PROGRAM) + install -c -s -m 0755 $(PROGRAM) $(DEST) + @ls -lgs $(DEST)/$(PROGRAM) + +tar: + @rm -f $(TAR) + tar -cf $(TAR) $(ALL) + +shar: + @rm -f $(SHAR) + shar $(SHAR) $(ALL) + +dist: + cp $(PROGRAM) $(DEST) + rcp $(PROGRAM) monet:$(DEST) + rcp $(PROGRAM) arpa:$(DEST) + rcp $(PROGRAM) harrison@vangogh:bin + +clean: + @rm -f $(OBJS) $(PROGRAM)$(X) + +depend: + @rm -f .#*.[chly] + mkmf -f $(MAKEFILE) PROGRAM=$(PROGRAM) DEST=$(DEST) + +index: + @ctags -wx $(HDRS) $(SRCS) + +print: + @$(PRINT) $(HDRS) $(SRCS) + +man: + ptroff -man $(MANUAL) + +program: $(PROGRAM) + +tags: $(HDRS) $(SRCS) + @ctags $(HDRS) $(SRCS) + +# update: $(DEST)/$(PROGRAM) + +# $(DEST)/$(PROGRAM): $(SRCS) $(HDRS) $(EXTHDRS) +# @make -f $(MAKEFILE) DEST=$(DEST) install + +# .DEFAULT:; co $@ +### +genind${O}: mkind.h genind.h +mkind${O}: mkind.h +qsort${O}: mkind.h +scanid${O}: mkind.h scanid.h +scanst${O}: mkind.h scanst.h +sortid${O}: mkind.h diff --git a/indexing/makeindex/src/makefile.os2 b/indexing/makeindex/src/makefile.os2 new file mode 100644 index 0000000000..ac4b7efd03 --- /dev/null +++ b/indexing/makeindex/src/makefile.os2 @@ -0,0 +1,138 @@ +# Makefile modified for IBM PC DOS (Microsoft C) [13-Jan-88] (only major +# targets supported) +# +# Modified by Eberhard Mattes for OS/2 and MS C 6.0 [18-Jul-90] +# +# Makefile for the program `makeindex' +# +# Copyright (C) 1987 Pehong Chen (phc@renoir.berkeley.edu) +# Computer Science Division +# University of California, Berkeley +# + +CC = cl +O = .obj +X = .exe +# INCLUDE = /usr/include +# INCLUDE = c:/sys/msc/include + +DEST = /usr/local/bin +DEST = c:/usr/bin + +MANDIR = /usr/local/man/manl +MANDIR = nul + +MANUAL = makeindex.l + +DOC = makeindex.tex + +HDRS = genind.h \ + mkind.h \ + scanid.h \ + scanst.h + +XCFLAGS= + +CFLAGS= -AL -Ocegls -W3 -F 2000 -Lp -Fb -B2 C2L -DOS_PCDOS -DIBM_PC_MICROSOFT $(XCFLAGS) +# +# -AL Large model +# -Oc Block-level common subexpression optimization +# -Oe Global register allocation +# -Og Global code optimization +# -Ol Loop code optimization +# -Os Optimize for space (I prefer small and slow programs) +# -Oi Generate intrinsic functions (not used, see line above) +# -W3 Set warning level (level 4 not required) +# -F 2000 Set stack size (hexadecimal!) +# -Lp Link for protected mode (use llibceP.lib) +# -Fb Invoke bind +# -B2 C2L Large-model pass 2 (OS/2 only, required for -Og) + + +LDFLAGS = $(CFLAGS) + +LIBS = + +LINKER = link + +MAKEFILE = Makefile + +OBJS = genind$(O) mkind$(O) qsort$(O) scanid$(O) scanst$(O) sortid$(O) + +PRINT = psgrind + +SRCS = genind.c \ + mkind.c \ + qsort.c \ + scanid.c \ + scanst.c \ + sortid.c + +PROGRAM = makeindx + +TAR = $(PROGRAM).tar + +SHAR = $(PROGRAM).shar + +ALL = $(MAKEFILE) $(DOC) $(MANUAL) $(HDRS) $(SRCS) + +# Rules... + +.SUFFIXES: +.SUFFIXES: .obj .c + +.c.obj: + $(CC) -c $(CFLAGS) $*.c + +RM = del + +$(PROGRAM): $(PROGRAM)$(X) + +$(PROGRAM)$(X): $(OBJS) $(PROGRAM).def + $(CC) -o $(PROGRAM)$(X) $(CFLAGS) $(OBJS) $(PROGRAM).def + +install: $(PROGRAM) + install -c -s -m 0755 $(PROGRAM) $(DEST) + @ls -lgs $(DEST)/$(PROGRAM) + +tar: + @rm -f $(TAR) + tar -cf $(TAR) $(ALL) + +shar: + @rm -f $(SHAR) + shar $(SHAR) $(ALL) + +dist: + cp $(PROGRAM) $(DEST) + rcp $(PROGRAM) monet:$(DEST) + rcp $(PROGRAM) arpa:$(DEST) + rcp $(PROGRAM) harrison@vangogh:bin + +clean: + @rm -f $(OBJS) core $(PROGRAM) *$(O) + +depend: + @rm -f .#*.[chly] + mkmf -f $(MAKEFILE) PROGRAM=$(PROGRAM) DEST=$(DEST) + +index: + @ctags -wx $(HDRS) $(SRCS) + +print: + @$(PRINT) $(HDRS) $(SRCS) + +man: + ptroff -man $(MANUAL) + +program: $(PROGRAM) + +tags: $(HDRS) $(SRCS) + @ctags $(HDRS) $(SRCS) + +genind$(O): mkind.h genind.h +mkind$(O): mkind.h +qsort$(O): mkind.h +scanid$(O): mkind.h scanid.h +scanst$(O): mkind.h scanst.h +sortid$(O): mkind.h diff --git a/indexing/makeindex/src/makefile.pcc b/indexing/makeindex/src/makefile.pcc new file mode 100644 index 0000000000..1471626de1 --- /dev/null +++ b/indexing/makeindex/src/makefile.pcc @@ -0,0 +1,124 @@ +# Makefile modified for DEC-20 (PCC-20 compiler) [13-Jan-88] (only major +# targets supported) +# +# Makefile for the program `makeindex' +# +# Copyright (C) 1987 Pehong Chen (phc@renoir.berkeley.edu) +# Computer Science Division +# University of California, Berkeley +# + +CC = cc +O = .rel +X = .exe +INCLUDE = /usr/include/ +INCLUDE = pcc: + +DEST = /usr/local/bin +DEST = TEX: + +MANDIR = /usr/local/man/manl +MANDIR = NUL: + +MANUAL = makeindex.l + +DOC = makeindex.tex + +EXTHDRS = ${INCLUDE}ctype.h \ + ${INCLUDE}stdio.h + +HDRS = genind.h \ + mkind.h \ + scanid.h \ + scanst.h + +CFLAGS = -DOS_TOPS20 -DPCC_20 -DSHORTNAMES + +LDFLAGS = $(CFLAGS) + +LIBS = + +LINKER = $(CC) + +MAKEFILE = Makefile + +OBJS = genind${O} \ + mkind${O} \ + qsort${O} \ + scanid${O} \ + scanst${O} \ + sortid${O} + +PRINT = psgrind + +SRCS = genind.c \ + mkind.c \ + qsort.c \ + scanid.c \ + scanst.c \ + sortid.c + +PROGRAM = makeindex + +TAR = $(PROGRAM).tar + +SHAR = $(PROGRAM).shar + +ALL = $(MAKEFILE) $(DOC) $(MANUAL) $(HDRS) $(SRCS) + +$(PROGRAM): $(PROGRAM)$(X) + +$(PROGRAM)$(X): $(OBJS) +# @rm -f $(PROGRAM) + $(LINKER) $(LDFLAGS) $(OBJS) $(LIBS) -o makidx$(X) + reset + ${MV} makidx$(X) $(PROGRAM)$(X) +# @size $(PROGRAM) + +install: $(PROGRAM) + install -c -s -m 0755 $(PROGRAM) $(DEST) + @ls -lgs $(DEST)/$(PROGRAM) + +tar:; @rm -f $(TAR) + tar -cf $(TAR) $(ALL) + +shar:; @rm -f $(SHAR) + shar $(SHAR) $(ALL) + +dist:; cp $(PROGRAM) $(DEST) + rcp $(PROGRAM) monet:$(DEST) + rcp $(PROGRAM) arpa:$(DEST) + rcp $(PROGRAM) harrison@vangogh:bin + +clean:; @rm -f $(OBJS) core $(PROGRAM) *${O}ut + +depend:; @rm -f .#*.[chly] + mkmf -f $(MAKEFILE) PROGRAM=$(PROGRAM) DEST=$(DEST) + +index:; @ctags -wx $(HDRS) $(SRCS) + +print:; @$(PRINT) $(HDRS) $(SRCS) + +man:; ptroff -man $(MANUAL) + +program: $(PROGRAM) + +tags: $(HDRS) $(SRCS); @ctags $(HDRS) $(SRCS) + +update: $(DEST)/$(PROGRAM) + +$(DEST)/$(PROGRAM): $(SRCS) $(HDRS) $(EXTHDRS) + @make -f $(MAKEFILE) DEST=$(DEST) install + +# .DEFAULT:; co $@ +### +genind${O}: mkind.h ${INCLUDE}stdio.h ${INCLUDE}ctype.h \ + genind.h +mkind${O}: mkind.h ${INCLUDE}stdio.h ${INCLUDE}ctype.h +qsort${O}: mkind.h ${INCLUDE}stdio.h +scanid${O}: mkind.h ${INCLUDE}stdio.h ${INCLUDE}ctype.h \ + scanid.h +scanst${O}: mkind.h ${INCLUDE}stdio.h ${INCLUDE}ctype.h \ + scanst.h +sortid${O}: mkind.h ${INCLUDE}stdio.h ${INCLUDE}ctype.h + diff --git a/indexing/makeindex/src/makefile.tcc b/indexing/makeindex/src/makefile.tcc new file mode 100644 index 0000000000..7ad0c12c91 --- /dev/null +++ b/indexing/makeindex/src/makefile.tcc @@ -0,0 +1,146 @@ +# Makefile modified for IBM PC DOS (Turbo C 2.0) [11-Dec-89] (only major +# targets supported) +# +# Makefile for the program `makeindex' +# +# Copyright (C) 1987 Pehong Chen (phc@renoir.berkeley.edu) +# Computer Science Division +# University of California, Berkeley +# + +CC = tcc +O = .obj +X = .exe +INCLUDE = /usr/include +INCLUDE = c:/sys/tc/include + +DEST = /usr/local/bin +DEST = c:/usr/bin + +MANDIR = /usr/local/man/manl +MANDIR = nul + +MANUAL = makeindex.l + +DOC = makeindex.tex + +EXTHDRS = ${INCLUDE}\ctype.h \ + ${INCLUDE}\stdio.h + +HDRS = genind.h \ + mkind.h \ + scanid.h \ + scanst.h + +XCFLAGS= + +LDFLAGS = -A -N -ml -v -y $(XCFLAGS) + +CFLAGS = -DOS_PCDOS=1 -DIBM_PC_TURBO=1 $(LDFLAGS) + +LIBS = + +LINKER = link + +MAKEFILE = Makefile + +OBJS = genind${O} mkind${O} qsort${O} scanid${O} scanst${O} sortid${O} + +PRINT = psgrind + +SRCS = genind.c \ + mkind.c \ + qsort.c \ + scanid.c \ + scanst.c \ + sortid.c + +PROGRAM = makeindx + +TAR = $(PROGRAM).tar + +SHAR = $(PROGRAM).shar + +ALL = $(MAKEFILE) $(DOC) $(MANUAL) $(HDRS) $(SRCS) + +# Default stack is too small--increase +STACKSIZE=8000 + +LINKFLAGS=/MAP/LINE/ST:$(STACKSIZE) + +# Rules... + +.SUFFIXES: +.SUFFIXES: .obj .c .sym .map + +.c.obj: + $(CC) -c $(CFLAGS) $*.c +# $(CC) -c $(CFLAGS) $*.c >$*.clg +# errshow <$*.clg >$*.cer +# del $*.clg + +.map.sym: + mapsym $* + del $*.map + +RM = del + +$(PROGRAM): $(PROGRAM)$(X) + +$(PROGRAM)$(X): $(OBJS) +# @rm -f $(PROGRAM) + $(CC) $(LDFLAGS) -e$(PROGRAM)$(X) $(OBJS) +# @size $(PROGRAM) + +install: $(PROGRAM) + install -c -s -m 0755 $(PROGRAM) $(DEST) + @ls -lgs $(DEST)/$(PROGRAM) + +tar: + @rm -f $(TAR) + tar -cf $(TAR) $(ALL) + +shar: + @rm -f $(SHAR) + shar $(SHAR) $(ALL) + +dist: + cp $(PROGRAM) $(DEST) + rcp $(PROGRAM) monet:$(DEST) + rcp $(PROGRAM) arpa:$(DEST) + rcp $(PROGRAM) harrison@vangogh:bin + +clean: + @rm -f $(OBJS) core $(PROGRAM) *${O}ut + +depend: + @rm -f .#*.[chly] + mkmf -f $(MAKEFILE) PROGRAM=$(PROGRAM) DEST=$(DEST) + +index: + @ctags -wx $(HDRS) $(SRCS) + +print: + @$(PRINT) $(HDRS) $(SRCS) + +man: + ptroff -man $(MANUAL) + +program: $(PROGRAM) + +tags: $(HDRS) $(SRCS) + @ctags $(HDRS) $(SRCS) + +# update: $(DEST)/$(PROGRAM) + +# $(DEST)/$(PROGRAM): $(SRCS) $(HDRS) $(EXTHDRS) +# @make -f $(MAKEFILE) DEST=$(DEST) install + +# .DEFAULT:; co $@ +### +genind${O}: mkind.h genind.h +mkind${O}: mkind.h +qsort${O}: mkind.h +scanid${O}: mkind.h scanid.h +scanst${O}: mkind.h scanst.h +sortid${O}: mkind.h diff --git a/indexing/makeindex/src/makefile.usg b/indexing/makeindex/src/makefile.usg new file mode 100644 index 0000000000..634c53d243 --- /dev/null +++ b/indexing/makeindex/src/makefile.usg @@ -0,0 +1,134 @@ + +# +# Makefile for the program `makeindex' +# +# Copyright (C) 1987 Pehong Chen (phc@renoir.berkeley.edu) +# Computer Science Division +# University of California, Berkeley +# + +BINDIR = /usr/local/bin + +MANDIR = /usr/local/man/manl + +MANUAL = makeindex.l + +DOC = makeindex.tex + +EXTHDRS = /usr/include/ctype.h \ + /usr/include/stdio.h + +HDRS = genind.h \ + mkind.h \ + scanid.h \ + scanst.h + +CFLAGS = -O -DOS_SYSV + +LDFLAGS = $(CFLAGS) + +LIBS = + +LINKER = $(CC) + +MAKEFILE = Makefile + +OBJS = genind.o \ + mkind.o \ + qsort.o \ + scanid.o \ + scanst.o \ + sortid.o + +PRINT = psgrind + +SRCS = genind.c \ + mkind.c \ + qsort.c \ + scanid.c \ + scanst.c \ + sortid.c + +PROGRAM = makeindex + +TAR = $(PROGRAM).tar + +SHAR = $(PROGRAM).shar + +ALL = $(MAKEFILE) $(DOC) $(MANUAL) $(HDRS) $(SRCS) + +$(PROGRAM): $(OBJS) + @rm -f $(PROGRAM) + $(LINKER) $(LDFLAGS) $(OBJS) $(LIBS) -o $(PROGRAM) + @size $(PROGRAM) + +install: $(PROGRAM) + install -c -s -m 0755 $(PROGRAM) $(BINDIR) + install -c -m 0744 ../doc/makeindex.l $(MANDIR)/makeindex.1 + @ls -lgs $(BINDIR)/$(PROGRAM) + +cp-install: + $(CP) $(PROGRAM) $(BINDIR) + strip $(BINDIR)/$(PROGRAM) + chmod 755 $(BINDIR)/$(PROGRAM) + $(CP) ../doc/makeindex.l $(MANDIR)/makeindex.1 + chmod 744 $(MANDIR)/makeindex.1 + +uninstall: + $(RM) $(BINDIR)/$(PROGRAM) + $(RM) $(MANDIR)/makeindex.1 + + +tar: + @rm -f $(TAR) + tar -cf $(TAR) $(ALL) + +shar: + @rm -f $(SHAR) + shar $(SHAR) $(ALL) + +dist: + cp $(PROGRAM) $(BINDIR) + rcp $(PROGRAM) monet:$(BINDIR) + rcp $(PROGRAM) arpa:$(BINDIR) + rcp $(PROGRAM) harrison@vangogh:bin + +clean: + @rm -f $(OBJS) core $(PROGRAM) *.out + +depend: + @rm -f .#*.[chly] + mkmf -f $(MAKEFILE) PROGRAM=$(PROGRAM) BINDIR=$(BINDIR) + +index: + @ctags -wx $(HDRS) $(SRCS) + +print: + @$(PRINT) $(HDRS) $(SRCS) + +man: + ptroff -man $(MANUAL) + +program: $(PROGRAM) + +tags: $(HDRS) $(SRCS) + @ctags $(HDRS) $(SRCS) + +update: $(BINDIR)/$(PROGRAM) + +$(BINDIR)/$(PROGRAM): $(SRCS) $(HDRS) $(EXTHDRS) + @make -f $(MAKEFILE) BINDIR=$(BINDIR) install + +.DEFAULT: + co $@ +### +genind.o: mkind.h /usr/include/stdio.h /usr/include/ctype.h \ + genind.h +mkind.o: mkind.h /usr/include/stdio.h /usr/include/ctype.h +qsort.o: mkind.h /usr/include/stdio.h +scanid.o: mkind.h /usr/include/stdio.h /usr/include/ctype.h \ + scanid.h +scanst.o: mkind.h /usr/include/stdio.h /usr/include/ctype.h \ + scanst.h +sortid.o: mkind.h /usr/include/stdio.h /usr/include/ctype.h + diff --git a/indexing/makeindex/src/makefile.vms b/indexing/makeindex/src/makefile.vms new file mode 100644 index 0000000000..46159bee6a --- /dev/null +++ b/indexing/makeindex/src/makefile.vms @@ -0,0 +1,124 @@ +# Makefile modified for DEC VAX VMS [13-Jan-88] (only major +# targets supported) +# +# Makefile for the program `makeindex' +# +# Copyright (C) 1987 Pehong Chen (phc@renoir.berkeley.edu) +# Computer Science Division +# University of California, Berkeley +# + +CC = cc +O = .obj +X = .exe +INCLUDE = /usr/include/ +INCLUDE = sys$$library: + +DEST = /usr/local/bin +DEST = TEX: + +MANDIR = /usr/local/man/manl +MANDIR = NUL: + +MANUAL = makeindex.l + +DOC = makeindex.tex + +EXTHDRS = ${INCLUDE}ctype.h \ + ${INCLUDE}stdio.h + +HDRS = genind.h \ + mkind.h \ + scanid.h \ + scanst.h + +CFLAGS = /DEFINE=("OS_VAXVMS=1") + +LDFLAGS = + +LIBS = sys$$library:vaxcrtl/lib +#LIBS = plt:unixclib/lib,sys$$library:vaxcrtl/lib + +LINKER = link + +MAKEFILE = Makefile + +OBJS = genind${O} \ + mkind${O} \ + qsort${O} \ + scanid${O} \ + scanst${O} \ + sortid${O} + +OBJLIST = genind${O},mkind${O},qsort${O},scanid${O},scanst${O},sortid${O} + +PRINT = psgrind + +SRCS = genind.c \ + mkind.c \ + qsort.c \ + scanid.c \ + scanst.c \ + sortid.c + +PROGRAM = makeindex + +TAR = $(PROGRAM).tar + +SHAR = $(PROGRAM).shar + +ALL = $(MAKEFILE) $(DOC) $(MANUAL) $(HDRS) $(SRCS) + +$(PROGRAM): $(PROGRAM)$(X) + +$(PROGRAM)$(X): $(OBJS) +# @rm -f $(PROGRAM) + $(LINKER) /exec=$(PROGRAM) $(LDFLAGS) $(OBJLIST),$(LIBS) +# @size $(PROGRAM) + +install: $(PROGRAM) + install -c -s -m 0755 $(PROGRAM) $(DEST) + @ls -lgs $(DEST)/$(PROGRAM) + +tar:; @rm -f $(TAR) + tar -cf $(TAR) $(ALL) + +shar:; @rm -f $(SHAR) + shar $(SHAR) $(ALL) + +dist:; cp $(PROGRAM) $(DEST) + rcp $(PROGRAM) monet:$(DEST) + rcp $(PROGRAM) arpa:$(DEST) + rcp $(PROGRAM) harrison@vangogh:bin + +clean:; @rm -f $(OBJS) core $(PROGRAM) *${O}ut + +depend:; @rm -f .#*.[chly] + mkmf -f $(MAKEFILE) PROGRAM=$(PROGRAM) DEST=$(DEST) + +index:; @ctags -wx $(HDRS) $(SRCS) + +print:; @$(PRINT) $(HDRS) $(SRCS) + +man:; ptroff -man $(MANUAL) + +program: $(PROGRAM) + +tags: $(HDRS) $(SRCS); @ctags $(HDRS) $(SRCS) + +update: $(DEST)/$(PROGRAM) + +$(DEST)/$(PROGRAM): $(SRCS) $(HDRS) $(EXTHDRS) + @make -f $(MAKEFILE) DEST=$(DEST) install + +.DEFAULT:; co $@ +### +genind${O}: mkind.h ${INCLUDE}stdio.h ${INCLUDE}ctype.h \ + genind.h +mkind${O}: mkind.h ${INCLUDE}stdio.h ${INCLUDE}ctype.h +qsort${O}: mkind.h ${INCLUDE}stdio.h +scanid${O}: mkind.h ${INCLUDE}stdio.h ${INCLUDE}ctype.h \ + scanid.h +scanst${O}: mkind.h ${INCLUDE}stdio.h ${INCLUDE}ctype.h \ + scanst.h +sortid${O}: mkind.h ${INCLUDE}stdio.h ${INCLUDE}ctype.h diff --git a/indexing/makeindex/src/makeindx.def b/indexing/makeindex/src/makeindx.def new file mode 100644 index 0000000000..6d31171722 --- /dev/null +++ b/indexing/makeindex/src/makeindx.def @@ -0,0 +1,2 @@ +NAME Makeindx WINDOWCOMPAT +DESCRIPTION 'MakeIndex - General purpose index processor' diff --git a/indexing/makeindex/src/mkind.c b/indexing/makeindex/src/mkind.c new file mode 100644 index 0000000000..4df0015d1e --- /dev/null +++ b/indexing/makeindex/src/mkind.c @@ -0,0 +1,720 @@ +/* + * + * This file is part of + * MakeIndex - A formatter and format independent index processor + * + * Copyright (C) 1989 by Chen & Harrison International Systems, Inc. + * Copyright (C) 1988 by Olivetti Research Center + * Copyright (C) 1987 by Regents of the University of California + * + * Author: + * Pehong Chen + * Chen & Harrison International Systems, Inc. + * Palo Alto, California + * USA + * (phc@renoir.berkeley.edu or chen@orc.olivetti.com) + * + * Contributors: + * Please refer to the CONTRIB file that comes with this release + * for a list of people who have contributed to this and/or previous + * release(s) of MakeIndex. + * + * All rights reserved by the copyright holders. See the copyright + * notice distributed with this software for a complete description of + * the conditions under which it is made available. + * + */ + +#define MKIND_C 1 +#include "mkind.h" +#undef MKIND_C + +int letter_ordering = FALSE; +int compress_blanks = FALSE; +int merge_page = TRUE; +int init_page = FALSE; +int even_odd = -1; +int verbose = TRUE; +int german_sort = FALSE; +int fn_no = -1; /* total number of files */ +int idx_dot = TRUE; /* flag which shows dot in ilg being + * active */ +int idx_tt = 0; /* total entry count (all files) */ +int idx_et = 0; /* erroneous entry count (all files) */ +int idx_gt = 0; /* good entry count (all files) */ + +FIELD_PTR *idx_key; +FILE *log_fp; +FILE *sty_fp; +FILE *idx_fp; +FILE *ind_fp; +FILE *ilg_fp; + +#if OS_BS2000 +FILE *widx_fp; +char widx_fn[STRING_MAX + 5]; +#endif /* OS_BS2000 */ + +char *pgm_fn; +char sty_fn[LINE_MAX]; +char *idx_fn; +char ind[STRING_MAX]; +char *ind_fn; +char ilg[STRING_MAX]; +char *ilg_fn; +char pageno[NUMBER_MAX]; + +static char log_fn[STRING_MAX]; +static char base[STRING_MAX]; +static int need_version = TRUE; + +static void check_all ARGS((char *fn,int ind_given,int ilg_given, + int log_given)); +static void check_idx ARGS((char *fn,int open_fn)); +static void find_pageno ARGS((void)); +static void open_sty ARGS((char *fn)); +static void prepare_idx ARGS((void)); +static void process_idx ARGS((char * *fn,int use_stdin,int sty_given, + int ind_given,int ilg_given,int log_given)); + +#if OS_PCDOS +#if IBM_PC_TURBO +unsigned _stklen = 0xf000; /* Turbo C ignores size set in + .exe file by LINK or EXEMOD, + sigh... */ +#endif /* IBM_PC_TURBO */ +#endif /* OS_PCDOS */ + +#if OS_ATARI +long _stksize = 20000L; /* make the stack larger than 2KB */ +/* size must be given */ +#endif /* OS_ATARI */ + +#ifdef DEBUG +long totmem = 0L; /* for debugging memory usage */ +#endif /* DEBUG */ + +int +#if STDC +main(int argc, char *argv[]) +#else +main(argc, argv) +int argc; +char *argv[]; +#endif +{ + char *fns[ARRAY_MAX]; + char *ap; + int use_stdin = FALSE; + int sty_given = FALSE; + int ind_given = FALSE; + int ilg_given = FALSE; + int log_given = FALSE; + + /* determine program name */ +#if (OS_ATARI | OS_VAXVMS | OS_BS2000 | OS_MVSXA | OS_VMCMS) + pgm_fn = "MakeIndex"; /* Use symbolic name on some systems */ +#else + pgm_fn = strrchr(*argv, DIR_DELIM); + if (pgm_fn == NULL) + pgm_fn = *argv; + else + pgm_fn++; + +#if OS_PCDOS + { + register char *ext = pgm_fn + strlen(pgm_fn)-4; + if ( *ext == '.' ) + *ext = NUL; /* cut off ".EXE" */ + } + (void)strlwr(pgm_fn); /* lower program name */ +#endif /* OS_PCDOS */ + +#endif /* OS_VAXVMS | OS_BS2000 | OS_MVSXA */ + + /* process command line options */ + while (--argc > 0) { + if (**++argv == SW_PREFIX) { + if (*(*argv + 1) == NUL) + break; + for (ap = ++*argv; *ap != NUL; ap++) +#if (OS_BS2000 | OS_MVSXA | OS_VAXVMS) + switch (tolower(*ap)) { +#else + switch (*ap) { +#endif /* (OS_BS2000 | OS_MVSXA | OS_VAXVMS) */ + + /* use standard input */ + case 'i': + use_stdin = TRUE; + break; + + /* enable letter ordering */ + case 'l': + letter_ordering = TRUE; + break; + + /* disable range merge */ + case 'r': + merge_page = FALSE; + break; + + /* supress progress message -- quiet mode */ + case 'q': + verbose = FALSE; + break; + + /* compress blanks */ + case 'c': + compress_blanks = TRUE; + break; + + /* style file */ + case 's': + argc--; + if (argc <= 0) + FATAL("Expected -s <stylefile>\n",""); + open_sty(*++argv); + sty_given = TRUE; + break; + + /* output index file name */ + case 'o': + argc--; + if (argc <= 0) + FATAL("Expected -o <ind>\n",""); + ind_fn = *++argv; + ind_given = TRUE; + break; + + /* transcript file name */ + case 't': + argc--; + if (argc <= 0) + FATAL("Expected -t <logfile>\n",""); + ilg_fn = *++argv; + ilg_given = TRUE; + break; + + /* initial page */ + case 'p': + argc--; + if (argc <= 0) + FATAL("Expected -p <num>\n",""); + strcpy(pageno, *++argv); + init_page = TRUE; + if (STREQ(pageno, EVEN)) { + log_given = TRUE; + even_odd = 2; + } else if (STREQ(pageno, ODD)) { + log_given = TRUE; + even_odd = 1; + } else if (STREQ(pageno, ANY)) { + log_given = TRUE; + even_odd = 0; + } + break; + + /* enable german sort */ + case 'g': + german_sort = TRUE; + break; + + /* bad option */ + default: + FATAL("Unknown option -%c.\n", *ap); + break; + } + } else { + if (fn_no < ARRAY_MAX) { + check_idx(*argv, FALSE); + fns[++fn_no] = *argv; + } else { + FATAL("Too many input files (max %d).\n", ARRAY_MAX); + } + } + } + +/* changes for 2.12 (May 20, 1993) by Julian Reschke (jr@ms.maus.de): + if only one input file and no explicit style file was given */ +#if OS_BS2000 +/* not supported */ +#else + if (fn_no == 0 && !sty_given) + { + char tmp[STRING_MAX + 5]; + + /* base set by last call to check_idx */ + sprintf (tmp, "%s%s", base, INDEX_STY); + if (0 == access(tmp, R_OK)) { + open_sty (tmp); + sty_given = TRUE; + } + } +#endif + + process_idx(fns, use_stdin, sty_given, ind_given, ilg_given, log_given); + idx_gt = idx_tt - idx_et; + ALL_DONE; + if (idx_gt > 0) { + prepare_idx(); + sort_idx(); + gen_ind(); + MESSAGE("Output written in %s.\n", ind_fn); + } else + MESSAGE("Nothing written in %s.\n", ind_fn); + + MESSAGE("Transcript written in %s.\n", ilg_fn); + CLOSE(ind_fp); + CLOSE(ilg_fp); + EXIT(0); + + return (0); /* never executed--avoids complaints */ + /* about no return value */ +} + + +static void +prepare_idx(VOID_ARG) +{ + NODE_PTR ptr = head; + int i = 0; + +#ifdef DEBUG + totmem += idx_gt * sizeof(FIELD_PTR); + (void)fprintf(stderr,"prepare_idx(): calloc(%d,%d)\ttotmem = %ld\n", + idx_gt,sizeof(FIELD_PTR),totmem); +#endif /* DEBUG */ + + if (head == (NODE_PTR)NULL) + FATAL("No valid index entries collected.\n", ""); + + if ((idx_key = (FIELD_PTR *) calloc(idx_gt, sizeof(FIELD_PTR))) == NULL) { + FATAL("Not enough core...abort.\n", ""); + } + for (i = 0; i < idx_gt; i++) { + idx_key[i] = &(ptr->data); + ptr = ptr->next; + } +} + + +static void +#if STDC +process_idx(char *fn[], int use_stdin, int sty_given, int ind_given, + int ilg_given, int log_given) +#else +process_idx(fn, use_stdin, sty_given, ind_given, ilg_given, log_given) +char *fn[]; +int use_stdin; +int sty_given; +int ind_given; +int ilg_given; +int log_given; +#endif +{ + int i; + + if (fn_no == -1) + /* use stdin if no input files specified */ + use_stdin = TRUE; + else { + check_all(fn[0], ind_given, ilg_given, log_given); + PUT_VERSION; + if (sty_given) + scan_sty(); + if (german_sort && (idx_quote == '"')) +FATAL("Option -g invalid, quote character must be different from '%c'.\n", +'"'); + scan_idx(); + ind_given = TRUE; + ilg_given = TRUE; + for (i = 1; i <= fn_no; i++) { + check_idx(fn[i], TRUE); + scan_idx(); + } + } + + if (use_stdin) { + idx_fn = "stdin"; + idx_fp = stdin; + + if (ind_given) { + if (!ind_fp && ((ind_fp = OPEN_OUT(ind_fn)) == NULL)) + FATAL("Can't create output index file %s.\n", ind_fn); + } else { + ind_fn = "stdout"; + ind_fp = stdout; + } + + if (ilg_given) { + if (!ilg_fp && ((ilg_fp = OPEN_OUT(ilg_fn)) == NULL)) + FATAL("Can't create transcript file %s.\n", ilg_fn); + } else { + ilg_fn = "stderr"; + ilg_fp = stderr; + } + + if ((fn_no == -1) && (sty_given)) + scan_sty(); + if (german_sort && (idx_quote == '"')) +FATAL("Option -g ignored, quote character must be different from '%c'.\n", +'"'); + + if (need_version) { + PUT_VERSION; + } + scan_idx(); + fn_no++; + } +} + + +static void +#if STDC +check_idx(char *fn, int open_fn) +#else +check_idx(fn, open_fn) +char *fn; +int open_fn; +#endif +{ + char *ptr = fn; + char *ext; + int with_ext = FALSE; + int i = 0; + +#if OS_BS2000 + char message[256]; /* error message */ + char arg[8]; /* argument for sprintf() */ + + ext = strrchr(fn, EXT_DELIM); + if ((ext != NULL) && + (((*fn == CATID) && (*(fn + 3) != DIR_DELIM)) || + (((*fn == DIR_DELIM) || (*fn == CATID)) && + (strchr(fn, EXT_DELIM) < ext)))) { +#else + ext = strrchr(fn, EXT_DELIM); + if ((ext != NULL) && (ext != fn) && (*(ext + 1) != DIR_DELIM)) { +#endif /* OS_BS2000 */ + with_ext = TRUE; + while ((ptr != ext) && (i < STRING_MAX)) + base[i++] = *ptr++; + } else + while ((*ptr != NUL) && (i < STRING_MAX)) + base[i++] = *ptr++; + + if (i < STRING_MAX) + base[i] = NUL; + else + FATAL2("Index file name %s too long (max %d).\n", + base, STRING_MAX); + + idx_fn = fn; + +#if OS_BS2000 /* Search both on HOME-PVS and + * WORK-PVS */ + sprintf(widx_fn, "%s%s", WORK, idx_fn); + if (((((idx_fp = OPEN_IN(idx_fn)) == NULL) && open_fn) || + !(open_fn || idx_fp)) && + ((((widx_fp = OPEN_IN(widx_fn)) == NULL) && open_fn) || + !(open_fn || widx_fp))) + if (with_ext) { + sprintf(message, "Input index file %s%%s not found.\n", + (strchr(idx_fn, ':') || (strlen(WORK) == 0)) ? + NIL : "<" WORK ">"); + FATAL(message, idx_fn); + } else { + +#ifdef DEBUG + totmem += STRING_MAX; + (void)fprintf(stderr,"check_idx()-1: malloc(%d)\ttotmem = %ld\n", + STRING_MAX,totmem); +#endif /* DEBUG */ + + if ((idx_fn = (char *) malloc(STRING_MAX)) == NULL) + FATAL("Not enough core...abort.\n", ""); + sprintf(idx_fn, "%s%s", base, INDEX_IDX); + sprintf(widx_fn, "%s%s%s", WORK, base, INDEX_IDX); + if (((((idx_fp = OPEN_IN(idx_fn)) == NULL) && open_fn) || + !(open_fn || idx_fp)) && + ((((widx_fp = OPEN_IN(widx_fn)) == NULL) && open_fn) || + !(open_fn || widx_fp))) { + sprintf(arg, "%s", + (strchr(idx_fn, ':') || (strlen(WORK) == 0)) ? + NIL : "<" WORK ">"); + sprintf(message, + "Couldn't find neither input file %s%%s nor %s%%s.\n", + arg, arg); + FATAL2(message, base, idx_fn); + } + } + if (!open_fn) { /* Close files if open */ + if (idx_fp) + FCLOSE(idx_fp); + if (widx_fp) + FCLOSE(widx_fp); + } + if (open_fn && (!idx_fp) && widx_fp) { /* File was found on PVS W */ + idx_fp = widx_fp; + idx_fn = widx_fn; + } +#else /* NOT OS_BS2000 */ + if ( ( open_fn && + ((idx_fp = OPEN_IN(idx_fn)) == NULL) + ) || + ((!open_fn) && (access(idx_fn, R_OK) != 0))) + if (with_ext) { + FATAL("Input index file %s not found.\n", idx_fn); + } else { + +#ifdef DEBUG + totmem += STRING_MAX; + (void)fprintf(stderr,"check_idx()-2: malloc(%d)\ttotmem = %ld\n", + STRING_MAX,totmem); +#endif /* DEBUG */ + + if ((idx_fn = (char *) malloc(STRING_MAX)) == NULL) + FATAL("Not enough core...abort.\n", ""); + sprintf(idx_fn, "%s%s", base, INDEX_IDX); + if ((open_fn && + ((idx_fp = OPEN_IN(idx_fn)) == NULL) + ) || + ((!open_fn) && (access(idx_fn, R_OK) != 0))) { + FATAL2("Couldn't find input index file %s nor %s.\n", base, + idx_fn); + } + } +#endif /* OS_BS2000 */ +} + + +static void +#if STDC +check_all(char *fn, int ind_given, int ilg_given, int log_given) +#else +check_all(fn, ind_given, ilg_given, log_given) +char *fn; +int ind_given; +int ilg_given; +int log_given; +#endif +{ + check_idx(fn, TRUE); + + /* index output file */ + if (!ind_given) { + sprintf(ind, "%s%s", base, INDEX_IND); + ind_fn = ind; +#if OS_BS2000 /* Look on HOME-, then WORK-PVS */ + if ((ind_fp = OPEN_IN(ind_fn)) == NULL) { + sprintf(ind, "%s%s%s", strchr(base, ':') ? + NIL : WORK, base, INDEX_IND); + ind_fn = ind; + } else + fclose(ind_fp); +#endif /* OS_BS2000 */ + } + if ((ind_fp = OPEN_OUT(ind_fn)) == NULL) + FATAL("Can't create output index file %s.\n", ind_fn); + + /* index transcript file */ + if (!ilg_given) { + sprintf(ilg, "%s%s", base, INDEX_ILG); + ilg_fn = ilg; +#if OS_BS2000 /* Look on HOME-, then WORK-PVS */ + if ((ilg_fp = OPEN_IN(ilg_fn)) == NULL) { + sprintf(ilg, "%s%s%s", strchr(base, ':') ? + NIL : WORK, base, INDEX_ILG); + ilg_fn = ilg; + } else + fclose(ilg_fp); +#endif /* OS_BS2000 */ + } + if ((ilg_fp = OPEN_OUT(ilg_fn)) == NULL) + FATAL("Can't create transcript file %s.\n", ilg_fn); + +#if OS_BS2000 /* Search both on HOME-PVS ans + * WORK-PVS */ + if (log_given) { + sprintf(log_fn, "%s%s%s", strchr(base, ':') ? NIL : WORK, + base, INDEX_LOG); + if ((log_fp = OPEN_IN(log_fn)) == NULL) { + if (strchr(base, ':')) + sprintf(log_fn, "%s%s", strrchr(base, ':') + 1, INDEX_LOG); + else + sprintf(log_fn, "%s%s", base, INDEX_LOG); + if ((log_fp = OPEN_IN(log_fn)) == NULL) + FATAL2("Source log file %s%s not found.\n", WORK, log_fn); + } else { + find_pageno(); + CLOSE(log_fp); + } + } +#else + if (log_given) { + sprintf(log_fn, "%s%s", base, INDEX_LOG); +#if OS_PCDOS /* open in binary mode (CR-LF) */ + if ((log_fp = OPEN_IN_B(log_fn)) == NULL) { +#else + if ((log_fp = OPEN_IN(log_fn)) == NULL) { +#endif /* OS_PCDOS */ + FATAL("Source log file %s not found.\n", log_fn); + } else { + find_pageno(); + CLOSE(log_fp); + } + } +#endif /* OS_BS2000 */ +} + + +static void +find_pageno(VOID_ARG) +{ + int i = 0; + int p, c; + +#if (OS_VAXVMS | OS_BS2000 | OS_MVSXA) + /* + * Scan forward through the file for VMS, because fseek doesn't work on + * variable record files + */ + c = GET_CHAR(log_fp); + while (c != EOF) { + p = c; + c = GET_CHAR(log_fp); + if (p == LSQ && isdigit(c)) { + i = 0; + do { + pageno[i++] = c; + c = GET_CHAR(log_fp); + } while (isdigit(c)); + pageno[i] = NUL; + } + } + if (i == 0) { + fprintf(ilg_fp, "Couldn't find any page number in %s...ignored\n", + log_fn); + init_page = FALSE; + } +#else /* NOT (OS_VAXVMS | ...) */ + fseek(log_fp, -1L, 2); + p = GET_CHAR(log_fp); + fseek(log_fp, -2L, 1); + do { + c = p; + p = GET_CHAR(log_fp); + } while (!(((p == LSQ) && isdigit(c)) || (fseek(log_fp, -2L, 1) != 0))); + if (p == LSQ) { + while ((c = GET_CHAR(log_fp)) == SPC); + do { + pageno[i++] = (char) c; + c = GET_CHAR(log_fp); + } while (isdigit(c)); + pageno[i] = NUL; + } else { + fprintf(ilg_fp, "Couldn't find any page number in %s...ignored\n", + log_fn); + init_page = FALSE; + } +#endif /* (OS_VAXVMS | ...) */ +} + +static void +#if STDC +open_sty(char *fn) +#else +open_sty(fn) +char *fn; +#endif +{ + char *path; + char *ptr; + int i; + int len; + + if ((path = getenv(STYLE_PATH)) == NULL) { + /* style input path not defined */ + strcpy(sty_fn, fn); + sty_fp = OPEN_IN(sty_fn); + } else { +#if OS_VAXVMS + if ((strlen(STYLE_PATH) + strlen(fn) + 1) > ARRAY_MAX) { + FATAL2("Path %s too long (max %d).\n", STYLE_PATH, ARRAY_MAX); + } else { + sprintf(sty_fn, "%s:%s", STYLE_PATH, fn); + sty_fp = OPEN_IN(sty_fn); + } +#else /* NOT OS_VAXVMS */ + len = ARRAY_MAX - strlen(fn) - 1; + while (*path != NUL) { +#if OS_XENIX + i = 0; + while ((*path != ENV_SEPAR) && (*path != NUL) && (i < len)) + sty_fn[i++] = *path++; +#else /* NOT OS_XENIX */ + ptr = strchr(path, ENV_SEPAR); + i = 0; + if (ptr == (char*)NULL) + { + int j = strlen(path); + + while (i < j) + sty_fn[i++] = *path++; + } + else + { + while ((path != ptr) && (i < len)) + sty_fn[i++] = *path++; + } +#endif /* OS_XENIX */ + if (i == len) { + FATAL2("Path %s too long (max %d).\n", sty_fn, ARRAY_MAX); + } else { +#ifdef OS_VAXVMS + if (sty_fn[i-1] != ']') + sty_fn[i++] = DIR_DELIM; +#else + sty_fn[i++] = DIR_DELIM; +#endif + sty_fn[i] = NUL; + strcat(sty_fn, fn); +#if OS_XENIX + if (((sty_fp = OPEN_IN(sty_fn)) == NULL) && (*path != NUL)) +#else /* NOT OS_XENIX */ + if ((sty_fp = OPEN_IN(sty_fn)) == NULL) +#endif /* OS_XENIX */ + path++; + else + break; + } + } +#endif /* OS_VAXVMS */ + } + + if (sty_fp == NULL) + FATAL("Index style file %s not found.\n", fn); +} + + +int +#if STDC +strtoint(char *str) +#else +strtoint(str) +char *str; +#endif +{ + int val = 0; + + while (*str != NUL) { +#if (OS_BS2000 | OS_MVSXA) + val = 10 * val + *str - '0'; +#else + val = 10 * val + *str - 48; +#endif /* (OS_BS2000 | OS_MVSXA) */ + str++; + } + return (val); +} diff --git a/indexing/makeindex/src/mkind.h b/indexing/makeindex/src/mkind.h new file mode 100644 index 0000000000..86f5ad884d --- /dev/null +++ b/indexing/makeindex/src/mkind.h @@ -0,0 +1,757 @@ +/* + * + * This file is part of + * MakeIndex - A formatter and format independent index processor + * + * Copyright (C) 1989 by Chen & Harrison International Systems, Inc. + * Copyright (C) 1988 by Olivetti Research Center + * Copyright (C) 1987 by Regents of the University of California + * + * Author: + * Pehong Chen + * Chen & Harrison International Systems, Inc. + * Palo Alto, California + * USA + * (phc@renoir.berkeley.edu or chen@orc.olivetti.com) + * + * Contributors: + * Please refer to the CONTRIB file that comes with this release + * for a list of people who have contributed to this and/or previous + * release(s) of MakeIndex. + * + * All rights reserved by the copyright holders. See the copyright + * notice distributed with this software for a complete description of + * the conditions under which it is made available. + * + */ + +/*********************************************************************** + + INSTALLATION NOTES + <11-Nov-1989> + + At compile-time (or here, if compile-time definition is not + available), set non-zero ONE OS_xxxx operating system flag, and if + more than one compiler is available, ONE compiler flag: + + Operating Systems Compiler(s) + ================= =========== + OS_ATARI + OS_BS2000 CCD_2000 + OS_BSD + OS_MVSXA IBM_C370 + OS_VMCMS IBM_C370 + OS_PCDOS IBM_PC_MICROSOFT + OS_SYSV + OS_TOPS20 KCC_20 or PCC_20 + OS_VAXVMS + OS_XENIX + ================= =========== + + If no OS_xxxx symbol is defined, OS_BSD is assumed. + + If Standard C prototypes are supported, define the symbol + STDC_PROTOTYPES in the appropriate OS_xxxx section below, and insert + #include's for the standard system files which define library + prototypes. STDC_PROTOTYPES will be defined automatically if + __STDC__ is; the latter must be defined by all Standard C conformant + implementations. + + All function declarations in MakeIndex are contained at the end of + this file. If 185STDC_PROTOTYPES is not selected, then all the standard + library functions must be declared explicitly. + + If the host system restricts external names to 6 characters, set + SHORTNAMES non-zero in the appropriate OS_xxxx section below. + + Installing MakeIndex under BS2000 requires at least Version 8.5 + supporting Multiple Public Volume Sets (MPVS). Define WORK in this + file to your CATID (default :w:) for temporary files (.ilg, .ind), + in case of no MPVS support define WORK to NIL. + +*/ + +/**********************************************************************/ + +#define STDC (__STDC__ || __cplusplus) + +/* + * Establish needed operating symbols (defaulting to OS_BSD if none + * specified at compile time). If you add one, add it to the check + * list at the end of this section, too. + */ + +#ifndef OS_ATARI +#define OS_ATARI 0 +#endif + +#ifndef OS_PCDOS +#define OS_PCDOS 0 +#endif + +#ifndef IBM_PC_MICROSOFT +#define IBM_PC_MICROSOFT 0 +#endif + +#ifndef IBM_PC_TURBO +#define IBM_PC_TURBO 0 +#endif + +#ifdef __TURBOC__ +#define IBM_PC_TURBO 1 +#endif + +#ifndef OS_SYSV +#define OS_SYSV 0 +#endif + +#ifndef OS_TOPS20 +#define OS_TOPS20 0 +#endif + +#ifndef KCC_20 +#define KCC_20 0 +#endif + +#ifndef PCC_20 +#define PCC_20 0 +#endif + +#ifndef OS_BSD +#define OS_BSD 0 +#endif + +#ifndef OS_VAXVMS +#define OS_VAXVMS 0 +#endif + +#ifndef IBM_C370 +#define IBM_C370 0 +#endif + +#ifndef CCD_2000 +#define CCD_2000 0 +#endif + +#if OS_TOPS20 +#if (KCC_20 || PCC_20) +#else +#undef PCC_20 +#define PCC_20 1 /* PCC-20 is default for Tops-20 */ +#endif /* KCC_20 || PCC_20) */ +#endif /* OS_TOPS20 */ + +#ifndef OS_BS2000 +#define OS_BS2000 0 +#endif + +#ifndef OS_MVSXA +#define OS_MVSXA 0 +#endif + +#ifndef OS_VMCMS +#define OS_VMCMS 0 +#endif + +#ifndef OS_XENIX +#define OS_XENIX 0 +#endif + +#if (OS_ATARI || OS_BSD || OS_BS2000 || OS_MVSXA || OS_PCDOS || OS_VMCMS) +#else +#if (OS_SYSV || OS_TOPS20 || OS_VAXVMS || OS_XENIX) +#else +#undef OS_BSD +#define OS_BSD 1 /* Unix is default operating system */ +#endif +#endif + +#if (OS_MVSXA || OS_VMCMS) +#undef IBM_C370 +#define IBM_C370 1 /* IBM_C370 is default for OS_MVSXA and OS_VMCMS */ +#endif + +#if OS_BS2000 +#undef CCD_2000 +#define CCD_2000 1 /* CCD_2000 is default for OS_BS2000 */ +#endif + +#if (CCD_2000 || OS_MVSXA || OS_TOPS20 || OS_VMCMS) +#define SHORTNAMES 1 +#else +#define SHORTNAMES 0 +#endif + +#define STDC_PROTOTYPES STDC + +/**********************************************************************/ + +#include <stdio.h> +#include <ctype.h> + +#if (CCD_2000 || OS_SYSV || OS_PCDOS || STDC || _AIX || ardent ) +#include <string.h> +#else + +#if (OS_ATARI || OS_BSD || PCC_20 || OS_XENIX) +#define strchr index /* convert STDC form to old K&R form */ +#define strrchr rindex /* convert STDC form to old K&R form */ +#endif /* (OS_ATARI || OS_BSD || PCC_20 || OS_XENIX) */ + +#endif /* (CCD_2000 || OS_SYSV || OS_PCDOS || STDC || _AIX || ardent) */ + +#if OS_PCDOS + +#if (IBM_PC_MICROSOFT || IBM_PC_TURBO) +#include <io.h> /* for function declarations */ +#endif /* (IBM_PC_MICROSOFT || IBM_PC_TURBO) */ + +#include <stddef.h> /* for function declarations */ +#include <stdlib.h> /* for function declarations */ +#undef STDC_PROTOTYPES +#define STDC_PROTOTYPES 1 /* so we get full argument + type checking */ +#endif /* OS_PCDOS */ + +#if (OS_VMCMS || OS_MVSXA) +#include <stdefs.h> /* for function declarations */ +#include <string.h> /* for function declarations */ +#undef STDC_PROTOTYPES +#define STDC_PROTOTYPES 1 /* so we get full argument + type checking */ +#if 0 +#undef __STDC__ +#define __STDC__ 1 +#endif +#endif /* OS_MVSXA || OS_VMCMS */ + +#if OS_ATARI + +#if ATARI_ST_TURBO +#define access(fn, mode) 0 /* function not available */ +#endif + +#if __GNUC__ +#include <string.h> +#include <types.h> +#endif + +#undef STDC_PROTOTYPES +#define STDC_PROTOTYPES 1 /* so we get full argument checking */ + +#endif /* OS_ATARI */ + +#if IBM_C370 +#define access(fn, mode) 0 /* function not available */ +#endif + +#if CCD_2000 /* function not available */ +#define getenv(P) 0 +#endif /* CCD_2000 */ + +#if SHORTNAMES +/* + * Provide alternate external names which are unique in the first SIX + * characters as required for portability (and Standard C) + */ +#define check_all chk_all +#define check_idx chk_idx +#define check_mixsym chk_mix +#define compare_one cmp_one +#define compare_page cmp_page +#define compare_string cmp_string +#define delim_n dlm_n +#define delim_p dlm_p +#define delim_r dlm_r +#define delim_t dlm_t +#define encap_i ecp_i +#define encap_p ecp_p +#define encap_range ecp_range +#define encap_s ecp_s +#define group_skip grp_skip +#define group_type grp_type +#define idx_aclose idxaclose +#define idx_actual idxactual +#define idx_keyword idx_kwd +#define indent_length ind_length +#define indent_space ind_space +#define headings_flag hd_flag +#define heading_pre hd_pre +#define heading_suf hd_suf +#define symhead_pos sym_pos +#define symhead_neg sym_neg +#define numhead_pos num_pos +#define numhead_neg num_neg +#define process_idx prc_idx +#define process_precedence prc_pre +#define range_ptr rng_ptr +#define scan_alpha_lower scnalw +#define scan_alpha_upper scnaup +#define scan_arabic scnarabic +#define scan_arg1 scna1 +#define scan_arg2 scna2 +#define scan_char scnchr +#define scan_field scnfld +#define scan_idx scnidx +#define scan_key scnkey +#define scan_no scnno +#define scan_roman_lower scnrlw +#define scan_roman_upper scnrup +#define scan_spec scnspc +#define scan_string scnstr +#define scan_style scnsty +#define setpagelen spg_len +#define setpage_close spg_close +#define setpage_open spg_open +#define suffix_2p suf_2p +#define suffix_3p suf_3p +#define suffix_mp suf_mp +#endif /* SHORTNAMES */ + +#if OS_VAXVMS +#define EXIT(code) exit( ((code) == 0) ? 1 : (1 << 28) + 2 ) +#else /* NOT OS_VAXVMS */ +#define EXIT exit +#endif /* OS_VAXVMS */ + +#undef TRUE +#define TRUE 1 + +#undef FALSE +#define FALSE 0 + +#undef NUL +#define NUL '\0' + +#undef NIL +#define NIL "" + +#define TAB '\t' +#define LFD '\n' +#define SPC ' ' +#define LSQ '[' +#define RSQ ']' +#define BSH '\\' + +#if OS_ATARI +#define ENV_SEPAR ';' +#define DIR_DELIM '\\' +#endif /* OS_ATARI */ + +#if (OS_BSD || OS_SYSV || OS_XENIX) +#define ENV_SEPAR ':' +#define DIR_DELIM '/' +#endif /* (OS_BSD || OS_SYSV || OS_XENIX)*/ + +#if OS_BS2000 +#define ENV_SEPAR '#' +#define DIR_DELIM '$' +#endif /* OS_BS2000 */ + +#if (OS_MVSXA || OS_VMCMS) +#define ENV_SEPAR '.' +#define DIR_DELIM '.' +#endif /* OS_MVSXA || OS_VMCMS */ + +#if OS_PCDOS +#define ENV_SEPAR ';' +#define DIR_DELIM '\\' +#endif /* OS_PCDOS */ + +#if OS_TOPS20 +#define ENV_SEPAR ',' +#define DIR_DELIM ':' +#endif /* OS_TOPS20 */ + +#if OS_BSD +#define ENV_SEPAR ':' +#define DIR_DELIM '/' +#endif /* OS_BSD */ + +#if OS_VAXVMS +#define ENV_SEPAR ',' /* In fact these aren't used */ +#define DIR_DELIM ':' +#endif /* OS_VAXVMS */ + +#ifndef SW_PREFIX /* can override at compile time */ +#define SW_PREFIX '-' +#endif + +#define EXT_DELIM '.' +#define ROMAN_SIGN '*' +#define EVEN "even" +#define ODD "odd" +#define ANY "any" + +#define GET_CHAR getc + +#if (CCD_2000 || OS_MVSXA) +#define TOASCII(i) (char)((i) + '0') +#else +#define TOASCII(i) (char)((i) + 48) +#endif /* (CCD_2000 || OS_MVSXA) */ + +/* NB: The typecasts here are CRITICAL for correct sorting of entries + that use characters in the range 128..255! */ +#define TOLOWER(C) (isupper((unsigned char)(C)) ? \ + (unsigned char)tolower((unsigned char)(C)) : (unsigned char)(C)) +#define TOUPPER(C) (isupper((unsigned char)(C)) ? \ + (unsigned char)(C) : (unsigned char)toupper((unsigned char)(C))) + +#define STREQ(A, B) (strcmp(A, B) == 0) +#define STRNEQ(A, B) (strcmp(A, B) != 0) + +#define MESSAGE(F, S) { \ + if (verbose) \ + fprintf(stderr, F, S); \ + fprintf(ilg_fp, F, S); \ +} + +#define FATAL(F, S) { \ + fprintf(stderr, F, S); \ + fprintf(stderr, USAGE, pgm_fn); \ + EXIT(1); \ +} + +#define FATAL2(F, D1, D2) { \ + fprintf(stderr, F, D1, D2); \ + fprintf(stderr, USAGE, pgm_fn); \ + EXIT(1); \ +} + +#if OS_PCDOS /* open file in binary mode */ +#define OPEN_IN_B(FP) fopen(FP, "rb") +#endif + +#define OPEN_IN(FP) fopen(FP, "r") +#define OPEN_OUT(FP) fopen(FP, "w") +#define CLOSE(FP) fclose(FP) + +#if (CCD_2000 || OS_MVSXA) +#define ASCII 1 +#define ISDIGIT(C) isdigit(C) +#define ISSYMBOL(C) (! (isdigit(C) || isalpha(C) || iscntrl(C) || C == SPC)) +#else +#define ISDIGIT(C) ('0' <= C && C <= '9') +#define ISSYMBOL(C) (('!' <= C && C <= '@') || \ + ('[' <= C && C <= '`') || \ + ('{' <= C && C <= '~')) +#endif /* (CCD_2000 || OS_MVSXA) */ + +/*==================================================================== +Many arrays in MakeIndex are dimensioned [xxx_MAX], where the xxx_MAX +values are defined below. The use of each of these is described in +comments. However, no run-time check is made to ensure that these are +consistent, or reasonable! Therefore, change them only with great +care. + +The array sizes should be made generously large: there are a great +many uses of strings in MakeIndex with the strxxx() and sprintf() +functions where no checking is done for adequate target storage sizes. +Although some input checking is done to avoid this possibility, it is +highly likely that there are still several places where storage +violations are possible, with core dumps, or worse, incorrect output, +ensuing. +======================================================================*/ + +#define ARABIC_MAX 5 /* maximum digits in an Arabic page */ + /* number field */ + +#define ARGUMENT_MAX 1024 /* maximum length of sort or actual key */ + /* in index entry */ + +#define ARRAY_MAX 1024 /* maximum length of constant values in */ + /* style file */ + +#define FIELD_MAX 3 /* maximum levels of index entries (item, */ + /* subitem, subsubitem); cannot be */ + /* increased beyond 3 without */ + /* significant design changes (no field */ + /* names are known beyond 3 levels) */ + +#ifdef LINE_MAX /* IBM RS/6000 AIX has this in <sys/limits.h> */ +#undef LINE_MAX +#endif +#define LINE_MAX 72 /* maximum output line length (longer */ + /* ones wrap if possible) */ + +#define NUMBER_MAX 16 /* maximum digits in a Roman or Arabic */ + /* page number */ + /* (MAX(ARABIC_MAX,ROMAN_MAX)) */ + +#define PAGEFIELD_MAX 10 /* maximum fields in a composite page */ + /* number */ + +#define PAGETYPE_MAX 5 /* fixed at 5; see use in scanst.c */ + +#define ROMAN_MAX 16 /* maximum length of Roman page number */ + /* field */ + +#define STRING_MAX 256 /* maximum length of host filename */ + +/*====================================================================*/ + +#define VERSION "portable version 2.12 [26-May-1993]" + +#if 0 +#define VERSION "portable version 2.11 [19-Oct-1991]" +#define VERSION "portable version 2.10 [05-Jul-1991]" +#define VERSION "portable version 2.9.1 [21-Jun-1990]" +#define VERSION "portable version 2.9 [13-Dec-1989]" +#define VERSION "portable version 2.8 [11-Nov-1989]" +#define VERSION "portable version 2.7 [01-Oct-1988]" +#define VERSION "portable version 2.6 [14-Jul-1988]" +#define VERSION "portable version 2.5 [14-Apr-1988]" +#define VERSION "portable version 2.4 [20-Mar-1988]" +#define VERSION "portable version 2.3 [20-Jan-1988]" +#define VERSION "version 2.2 [29-May-1987]" +#endif + +#define PUT_VERSION { \ + MESSAGE("This is %s, ", pgm_fn); \ + MESSAGE("%s.\n", VERSION); \ + need_version = FALSE; \ +} + +#define USAGE \ + "Usage: %s [-ilqrcg] [-s sty] [-o ind] [-t log] [-p num] [idx0 idx1 ...]\n" + +#define STYLE_PATH "INDEXSTYLE" /* environment variable defining search */ + /* path for style files */ +#define INDEX_IDX ".idx" +#define INDEX_ILG ".ilg" +#define INDEX_IND ".ind" +#define INDEX_STY ".mst" + +#if OS_VAXVMS +#define INDEX_LOG ".lis" +#else +#define INDEX_LOG ".log" +#endif + +#if OS_BS2000 /* Define WORK disk */ +#define WORK ":w:" +#define CATID ':' +#endif /* OS_BS2000 */ + +#define EMPTY -9999 +#define ROML 0 +#define ROMU 1 +#define ARAB 2 +#define ALPL 3 +#define ALPU 4 +#define DUPLICATE 9999 + +#define SYMBOL -1 +#define ALPHA -2 + +#define GERMAN 0 + +typedef struct KFIELD +{ + char *sf[FIELD_MAX]; /* sort key */ + char *af[FIELD_MAX]; /* actual key */ + int group; /* key group */ + char lpg[NUMBER_MAX]; /* literal page */ + short npg[PAGEFIELD_MAX]; /* page field array */ + short count; /* page field count */ + short type; /* page number type */ + char *encap; /* encapsulator */ + char *fn; /* input filename */ + int lc; /* line number */ +} FIELD, *FIELD_PTR; + +typedef struct KNODE +{ + FIELD data; + struct KNODE *next; +} NODE, *NODE_PTR; + +extern int letter_ordering; +extern int compress_blanks; +extern int init_page; +extern int merge_page; +extern int even_odd; +extern int verbose; +extern int german_sort; + +extern char idx_keyword[ARRAY_MAX]; +extern char idx_aopen; +extern char idx_aclose; +extern char idx_level; +extern char idx_ropen; +extern char idx_rclose; +extern char idx_quote; +extern char idx_actual; +extern char idx_encap; +extern char idx_escape; + +extern char page_comp[ARRAY_MAX]; +extern int page_offset[PAGETYPE_MAX]; + +extern char preamble[ARRAY_MAX]; +extern char postamble[ARRAY_MAX]; +extern char setpage_open[ARRAY_MAX]; +extern char setpage_close[ARRAY_MAX]; +extern char group_skip[ARRAY_MAX]; +extern int headings_flag; +extern char heading_pre[ARRAY_MAX]; +extern char heading_suf[ARRAY_MAX]; +extern char symhead_pos[ARRAY_MAX]; +extern char symhead_neg[ARRAY_MAX]; +extern char numhead_pos[ARRAY_MAX]; +extern char numhead_neg[ARRAY_MAX]; +extern int prelen; +extern int postlen; +extern int skiplen; +extern int headprelen; +extern int headsuflen; +extern int setpagelen; + +extern char item_r[FIELD_MAX][ARRAY_MAX]; +extern char item_u[FIELD_MAX][ARRAY_MAX]; +extern char item_x[FIELD_MAX][ARRAY_MAX]; +extern int ilen_r[FIELD_MAX]; +extern int ilen_u[FIELD_MAX]; +extern int ilen_x[FIELD_MAX]; + +extern char delim_p[FIELD_MAX][ARRAY_MAX]; +extern char delim_n[ARRAY_MAX]; +extern char delim_r[ARRAY_MAX]; +extern char delim_t[ARRAY_MAX]; + +extern char suffix_2p[ARRAY_MAX]; +extern char suffix_3p[ARRAY_MAX]; +extern char suffix_mp[ARRAY_MAX]; + +extern char encap_p[ARRAY_MAX]; +extern char encap_i[ARRAY_MAX]; +extern char encap_s[ARRAY_MAX]; + +extern int linemax; +extern char indent_space[ARRAY_MAX]; +extern int indent_length; + +extern FILE *idx_fp; +extern FILE *sty_fp; +extern FILE *ind_fp; +extern FILE *ilg_fp; + +#if OS_BS2000 +extern FILE *widx_fp; +extern char widx_fn[STRING_MAX + 5]; +#endif /* OS_BS2000 */ + +extern char *idx_fn; +extern char *pgm_fn; +extern char *ind_fn; +extern char *ilg_fn; + +#ifndef MKIND_C +extern char sty_fn[]; +extern char ind[]; +extern char ilg[]; +extern char pageno[]; + +#ifdef DEBUG +extern long totmem; +#endif /* DEBUG */ + +#endif + +extern FIELD_PTR *idx_key; +extern NODE_PTR head; +extern NODE_PTR tail; + +extern int idx_dot; +extern int idx_tt; +extern int idx_gt; +extern int idx_et; +extern int idx_dc; + +#define DOT "." +#define DOT_MAX 1000 +#define CMP_MAX 1500 + +#define IDX_DOT(MAX) { \ + idx_dot = TRUE; \ + if (idx_dc++ == 0) { \ + if (verbose) \ + fprintf(stderr, DOT); \ + fprintf(ilg_fp, DOT); \ + } \ + if (idx_dc == MAX) \ + idx_dc = 0; \ +} + +#define ALL_DONE { \ + if (fn_no > 0) { \ + if (verbose) \ +fprintf(stderr, \ + "Overall %d files read (%d entries accepted, %d rejected).\n", \ + fn_no+1, idx_gt, idx_et); \ +fprintf(ilg_fp, \ + "Overall %d files read (%d entries accepted, %d rejected).\n", \ + fn_no+1, idx_gt, idx_et); \ + } \ +} + +#define DONE(A, B, C, D) { \ + if (verbose) \ + fprintf(stderr, "done (%d %s, %d %s).\n", (A), B, C, D); \ + fprintf(ilg_fp, "done (%d %s, %d %s).\n", (A), B, C, D); \ +} + +#if STDC_PROTOTYPES +#define ARGS(arg_list) arg_list +#define VOIDP void* +#define VOID_ARG void +#else +#define ARGS(arg_list) () +#define const +#define VOIDP char* +#define VOID_ARG +#endif + +extern void gen_ind ARGS((void)); +extern int group_type ARGS((char *str)); +extern int main ARGS((int argc, char **argv)); +extern void qqsort ARGS((char *base, int n, int size, + int (*compar)ARGS((char*,char*)))); +extern void scan_idx ARGS((void)); +extern void scan_sty ARGS((void)); +extern void sort_idx ARGS((void)); +extern int strtoint ARGS((char *str)); + +#if STDC +#include <stdlib.h> +#undef strchr +#undef strrchr +#if __NeXT__ +int access ARGS((const char *, int)); +#else +#include <unistd.h> +#endif +#else +/* Miscellaneous standard library routines */ +int access ARGS((const char *, int)); +VOIDP calloc ARGS((size_t nitems,size_t size)); + +#if CCD_2000 /* function not available */ +#define getenv(P) 0 +#else +char *getenv ARGS((const char *name)); +#endif + +VOIDP malloc ARGS((size_t size)); +char *strchr ARGS((const char *s,int c)); +char *strrchr ARGS((const char *s,int c)); +#endif /* __STDC__ */ + +#if PCC_20 +#define R_OK 0 /* PCC-20 access(file,mode) */ +#endif /* only understands mode=0 */ + +#ifndef R_OK +#define R_OK 4 /* only symbol from sys/file.h */ +#endif diff --git a/indexing/makeindex/src/qsort.c b/indexing/makeindex/src/qsort.c new file mode 100644 index 0000000000..7223a20545 --- /dev/null +++ b/indexing/makeindex/src/qsort.c @@ -0,0 +1,222 @@ +/* + * + * This file is part of + * MakeIndex - A formatter and format independent index processor + * + * This file is public domain software donated by + * Nelson Beebe (beebe@science.utah.edu). + * + */ + +/* + * qsort.c: Our own version of the system qsort routine which is faster by an + * average of 25%, with lows and highs of 10% and 50%. The THRESHold below is + * the insertion sort threshold, and has been adjusted for records of size 48 + * bytes. The MTHREShold is where we stop finding a better median. + */ + +/* #include <stdio.h> -- mkind.h includes this */ +#include "mkind.h" /* only for type declarations */ + +#define THRESH 4 /* threshold for insertion */ +#define MTHRESH 6 /* threshold for median */ + +static int qsz; /* size of each record */ +static int thresh; /* THRESHold in chars */ +static int mthresh; /* MTHRESHold in chars */ + +static int (*qcmp) ARGS((char*,char*)); /* the comparison routine */ +static void qst ARGS((char *base, char *max)); +/* + * qqsort: First, set up some global parameters for qst to share. Then, + * quicksort with qst(), and then a cleanup insertion sort ourselves. Sound + * simple? It's not... + */ + +void +#if STDC +qqsort(char *base, int n, int size, int (*compar) ARGS((char*,char*))) +#else +qqsort(base, n, size, compar) +char *base; +int n; +int size; +int (*compar) ARGS((char*,char*)); +#endif +{ + register char *i; + register char *j; + register char *lo; + register char *hi; + register char *min; + register char c; + char *max; + + if (n <= 1) + return; + qsz = size; + qcmp = compar; + thresh = qsz * THRESH; + mthresh = qsz * MTHRESH; + max = base + n * qsz; + if (n >= THRESH) { + qst(base, max); + hi = base + thresh; + } else { + hi = max; + } + /* + * First put smallest element, which must be in the first THRESH, in the + * first position as a sentinel. This is done just by searching the + * first THRESH elements (or the first n if n < THRESH), finding the min, + * and swapping it into the first position. + */ + for (j = lo = base; (lo += qsz) < hi;) { + if ((*qcmp) (j, lo) > 0) + j = lo; + } + if (j != base) { /* swap j into place */ + for (i = base, hi = base + qsz; i < hi;) { + c = *j; + *j++ = *i; + *i++ = c; + } + } + /* + * With our sentinel in place, we now run the following hyper-fast + * insertion sort. For each remaining element, min, from [1] to [n-1], + * set hi to the index of the element AFTER which this one goes. Then, do + * the standard insertion sort shift on a character at a time basis for + * each element in the frob. + */ + for (min = base; (hi = min += qsz) < max;) { + while ((*qcmp) (hi -= qsz, min) > 0); + if ((hi += qsz) != min) { + for (lo = min + qsz; --lo >= min;) { + c = *lo; + for (i = j = lo; (j -= qsz) >= hi; i = j) + *i = *j; + *i = c; + } + } + } +} + + + +/* + * qst: Do a quicksort. First, find the median element, and put that one in + * the first place as the discriminator. (This "median" is just the median + * of the first, last and middle elements). (Using this median instead of + * the first element is a big win). Then, the usual partitioning/swapping, + * followed by moving the discriminator into the right place. Then, figure + * out the sizes of the two partions, do the smaller one recursively and the + * larger one via a repeat of this code. Stopping when there are less than + * THRESH elements in a partition and cleaning up with an insertion sort (in + * our caller) is a huge win. All data swaps are done in-line, which is + * space-losing but time-saving. (And there are only three places where this + * is done). + */ + +static void +#if STDC +qst(char *base, char *max) +#else +qst(base, max) +char *base; +char *max; +#endif +{ + register char *i; + register char *j; + register char *jj; + register char *mid; + register int ii; + register char c; + char *tmp; + int lo; + int hi; + + lo = (int)(max - base); /* number of elements as chars */ + do { + /* + * At the top here, lo is the number of characters of elements in the + * current partition. (Which should be max - base). Find the median + * of the first, last, and middle element and make that the middle + * element. Set j to largest of first and middle. If max is larger + * than that guy, then it's that guy, else compare max with loser of + * first and take larger. Things are set up to prefer the middle, + * then the first in case of ties. + */ + mid = i = base + qsz * ((unsigned) (lo / qsz) >> 1); + if (lo >= mthresh) { + j = ((*qcmp) ((jj = base), i) > 0 ? jj : i); + if ((*qcmp) (j, (tmp = max - qsz)) > 0) { + /* switch to first loser */ + j = (j == jj ? i : jj); + if ((*qcmp) (j, tmp) < 0) + j = tmp; + } + if (j != i) { + ii = qsz; + do { + c = *i; + *i++ = *j; + *j++ = c; + } while (--ii); + } + } + /* Semi-standard quicksort partitioning/swapping */ + for (i = base, j = max - qsz;;) { + while (i < mid && (*qcmp) (i, mid) <= 0) + i += qsz; + while (j > mid) { + if ((*qcmp) (mid, j) <= 0) { + j -= qsz; + continue; + } + tmp = i + qsz; /* value of i after swap */ + if (i == mid) { /* j <-> mid, new mid is j */ + mid = jj = j; + } else { /* i <-> j */ + jj = j; + j -= qsz; + } + goto swap; + } + if (i == mid) { + break; + } else { /* i <-> mid, new mid is i */ + jj = mid; + tmp = mid = i; /* value of i after swap */ + j -= qsz; + } + swap: + ii = qsz; + do { + c = *i; + *i++ = *jj; + *jj++ = c; + } while (--ii); + i = tmp; + } + /* + * Look at sizes of the two partitions, do the smaller one first by + * recursion, then do the larger one by making sure lo is its size, + * base and max are update correctly, and branching back. But only + * repeat (recursively or by branching) if the partition is of at + * least size THRESH. + */ + i = (j = mid) + qsz; + if ((lo = (int)(j - base)) <= (hi = (int)(max - i))) { + if (lo >= thresh) + qst(base, j); + base = i; + lo = hi; + } else { + if (hi >= thresh) + qst(i, max); + max = j; + } + } while (lo >= thresh); +} diff --git a/indexing/makeindex/src/scanid.c b/indexing/makeindex/src/scanid.c new file mode 100644 index 0000000000..4426110517 --- /dev/null +++ b/indexing/makeindex/src/scanid.c @@ -0,0 +1,830 @@ +/* + * + * This file is part of + * MakeIndex - A formatter and format independent index processor + * + * Copyright (C) 1989 by Chen & Harrison International Systems, Inc. + * Copyright (C) 1988 by Olivetti Research Center + * Copyright (C) 1987 by Regents of the University of California + * + * Author: + * Pehong Chen + * Chen & Harrison International Systems, Inc. + * Palo Alto, California + * USA + * (phc@renoir.berkeley.edu or chen@orc.olivetti.com) + * + * Contributors: + * Please refer to the CONTRIB file that comes with this release + * for a list of people who have contributed to this and/or previous + * release(s) of MakeIndex. + * + * All rights reserved by the copyright holders. See the copyright + * notice distributed with this software for a complete description of + * the conditions under which it is made available. + * + */ + +#include "mkind.h" +#include "scanid.h" + +#define CHECK_LENGTH() if (i > len_field) goto OVERFLOW + +int idx_lc; /* line count */ +int idx_tc; /* total entry count */ +int idx_ec; /* erroneous entry count */ +int idx_dc; /* number of dots printed so far */ + +static int first_entry = TRUE; +static int comp_len; +static char key[ARGUMENT_MAX]; +static char no[NUMBER_MAX]; +extern char *strchr ARGS((const char* s,int c)); + +NODE_PTR head; +NODE_PTR tail; + +static void flush_to_eol ARGS((void)); +static int make_key ARGS((void)); +static void make_string ARGS((char **ppstr,int n)); +static int scan_alpha_lower ARGS((char *no,short *npg,short *count)); +static int scan_alpha_upper ARGS((char *no,short *npg,short *count)); +static int scan_arabic ARGS((char *no,short *npg,short *count)); +static int scan_arg1 ARGS((void)); +static int scan_arg2 ARGS((void)); +static int scan_field ARGS((int *n,char field[],int len_field, + int ck_level, int ck_encap,int ck_actual)); +static int scan_key ARGS((struct KFIELD *data)); +static int scan_no ARGS((char *no,short *npg,short *count,short *type)); +static int scan_roman_lower ARGS((char *no,short *npg,short *count)); +static int scan_roman_upper ARGS((char *no,short *npg,short *count)); +static void search_quote ARGS((char sort_key[],char actual_key[])); + +#if (OS_BS2000 | OS_MVSXA) +char UPCC[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; +#endif + +void +scan_idx(VOID_ARG) +{ + char keyword[ARRAY_MAX]; + int c; + int i = 0; + int not_eof = TRUE; + int arg_count = -1; + + MESSAGE("Scanning input file %s...", idx_fn); + idx_lc = idx_tc = idx_ec = idx_dc = 0; + comp_len = strlen(page_comp); + while (not_eof) { + switch (c = GET_CHAR(idx_fp)) { + case EOF: + if (arg_count == 2) { + idx_lc++; + if (make_key()) + IDX_DOT(DOT_MAX); + arg_count = -1; + } else + not_eof = FALSE; + break; + + case LFD: + idx_lc++; + if (arg_count == 2) { + if (make_key()) + IDX_DOT(DOT_MAX); + arg_count = -1; + } else if (arg_count > -1) { + IDX_ERROR("Missing arguments -- need two (premature LFD).\n", + NULL); + arg_count = -1; + } + case TAB: + case SPC: + break; + + default: + switch (arg_count) { + case -1: + i = 0; + keyword[i++] = (char) c; + arg_count++; + idx_tc++; + break; + case 0: + if (c == idx_aopen) { + arg_count++; + keyword[i] = NUL; + if (STREQ(keyword, idx_keyword)) { + if (!scan_arg1()) { + arg_count = -1; + } + } else { + IDX_SKIPLINE; + IDX_ERROR("Unknown index keyword %s.\n", keyword); + } + } else { + if (i < ARRAY_MAX) + keyword[i++] = (char) c; + else { + IDX_SKIPLINE; + IDX_ERROR2("Index keyword %s too long (max %d).\n", + keyword, ARRAY_MAX); + } + } + break; + case 1: + if (c == idx_aopen) { + arg_count++; + if (!scan_arg2()) { + arg_count = -1; + } + } else { + IDX_SKIPLINE; +IDX_ERROR( +"No opening delimiter for second argument (illegal character `%c').\n", c); + } + break; + case 2: + IDX_SKIPLINE; +IDX_ERROR( +"No closing delimiter for second argument (illegal character `%c').\n", c); + break; + } + break; + } + } + + /* fixup the total counts */ + idx_tt += idx_tc; + idx_et += idx_ec; + + DONE(idx_tc - idx_ec, "entries accepted", idx_ec, "rejected"); + CLOSE(idx_fp); +} + +static void +flush_to_eol(VOID_ARG) +{ /* flush to end-of-line, or end-of-file, whichever is first */ + int a; + + while ( ((a = GET_CHAR(idx_fp)) != LFD) && (a != EOF) ) + /* NO-OP */; +} + +static int +make_key(VOID_ARG) +{ + NODE_PTR ptr; + int i; + + /* allocate and initialize a node */ + +#ifdef DEBUG + totmem += sizeof(NODE); + (void)fprintf(stderr,"make_key(): malloc(%d)\ttotmem = %ld\n", + sizeof(NODE),totmem); +#endif /* DEBUG */ + + if ((ptr = (NODE_PTR) malloc(sizeof(NODE))) == NULL) + FATAL("Not enough core...abort.\n", ""); + + for (i = 0; i < FIELD_MAX; i++) + { + ptr->data.sf[i] = ""; /* initialize fields to pointers */; + ptr->data.af[i] = ""; /* to constant empty strings */ + } + ptr->data.encap = ""; + ptr->data.lpg[0] = NUL; + ptr->data.count = 0; + ptr->data.type = EMPTY; + + /* process index key */ + if (!scan_key(&(ptr->data))) + return (FALSE); + + /* determine group type */ + ptr->data.group = group_type(ptr->data.sf[0]); + + /* process page number */ + strcpy(ptr->data.lpg, no); + if (!scan_no(no, ptr->data.npg, &(ptr->data.count), &(ptr->data.type))) + return (FALSE); + + if (first_entry) { + head = tail = ptr; + first_entry = FALSE; + } else { + tail->next = ptr; + tail = ptr; + } + ptr->data.lc = idx_lc; + ptr->data.fn = idx_fn; + tail->next = NULL; + + return (TRUE); +} + +static void +#if STDC +make_string(char **ppstr, int n) +#else +make_string(ppstr,n) /* allocate n-byte string if *ppstr */ +char **ppstr; /* points to an empty string */ +int n; +#endif +{ + if ((*ppstr)[0] == NUL) /* then we have an empty string */ + { + (*ppstr) = (char*)malloc(n); + if ((*ppstr) == (char*)NULL) + FATAL("Not enough core...abort.\n", ""); + (*ppstr)[0] = NUL; + } +} + +static int +#if STDC +scan_key(FIELD_PTR data) +#else +scan_key(data) +FIELD_PTR data; +#endif +{ + int i = 0; /* current level */ + int n = 0; /* index to the key[] array */ + int second_round = FALSE; + int last = FIELD_MAX - 1; + + while (TRUE) { + if (key[n] == NUL) + break; + if (key[n] == idx_encap) + { + n++; + make_string(&(data->encap),strlen(key) + 1); + if (scan_field(&n, data->encap, strlen(key), FALSE, FALSE, FALSE)) + break; + else + return (FALSE); + } + if (key[n] == idx_actual) { + n++; + if (i == last) + { + make_string(&(data->af[i]),strlen(key) + 1); + if (!scan_field(&n, data->af[i], strlen(key), + FALSE, TRUE, FALSE)) + return (FALSE); + } + else + { + make_string(&(data->af[i]),strlen(key) + 1); + if (!scan_field(&n, data->af[i], strlen(key), + TRUE, TRUE, FALSE)) + return (FALSE); + } + } else { + /* Next nesting level */ + if (second_round) { + i++; + n++; + } + if (i == last) + { + make_string(&(data->sf[i]),strlen(key) + 1); + if (!scan_field(&n, data->sf[i], strlen(key), + FALSE, TRUE, TRUE)) + return (FALSE); + } + else + { + make_string(&(data->sf[i]),strlen(key) + 1); + if (!scan_field(&n, data->sf[i], strlen(key), + TRUE, TRUE, TRUE)) + return (FALSE); + } + second_round = TRUE; + if (german_sort && strchr(data->sf[i], '"')) + { + make_string(&(data->af[i]),strlen(data->sf[i]) + 1); + search_quote(data->sf[i], data->af[i]); + } + } + } + + /* check for empty fields which shouldn't be empty */ + if (*data->sf[0] == NUL) { + NULL_RTN; + } + for (i = 1; i < FIELD_MAX - 1; i++) + if ((*data->sf[i] == NUL) && + ((*data->af[i] != NUL) || (*data->sf[i + 1] != NUL))) { + NULL_RTN; + } + /* i == FIELD_MAX-1 */ + if ((*data->sf[i] == NUL) && (*data->af[i] != NUL)) { + NULL_RTN; + } + return (TRUE); +} + +static int +#if STDC +scan_field(int *n, char field[], int len_field, int ck_level, int ck_encap, + int ck_actual) +#else +scan_field(n, field, len_field, ck_level, ck_encap, ck_actual) +int *n; +char field[]; +int len_field; /* length of field[], EXCLUDING space for final NUL */ +int ck_level; +int ck_encap; +int ck_actual; +#endif +{ + int i = 0; + int nbsh; /* backslash count */ + + if (compress_blanks && ((key[*n] == SPC) || (key[*n] == TAB))) + ++* n; + + while (TRUE) { + nbsh = 0; + while (key[*n] == idx_escape) + { + nbsh++; + field[i++] = key[*n]; + CHECK_LENGTH(); + ++*n; + } + + if (key[*n] == idx_quote) + { + if (nbsh % 2 == 0) + field[i++] = key[++*n]; + else + field[i++] = key[*n]; + CHECK_LENGTH(); + } + else if ((ck_level && (key[*n] == idx_level)) || + (ck_encap && (key[*n] == idx_encap)) || + (ck_actual && (key[*n] == idx_actual)) || + (key[*n] == NUL)) + { + if ((i > 0) && compress_blanks && (field[i - 1] == SPC)) + field[i - 1] = NUL; + else + field[i] = NUL; + return (TRUE); + } else { + field[i++] = key[*n]; + CHECK_LENGTH(); + if ((!ck_level) && (key[*n] == idx_level)) { + IDX_ERROR2("Extra `%c' at position %d of first argument.\n", + idx_level, *n + 1); + return (FALSE); + } else if ((!ck_encap) && (key[*n] == idx_encap)) { + IDX_ERROR2("Extra `%c' at position %d of first argument.\n", + idx_encap, *n + 1); + return (FALSE); + } else if ((!ck_actual) && (key[*n] == idx_actual)) { + IDX_ERROR2("Extra `%c' at position %d of first argument.\n", + idx_actual, *n + 1); + return (FALSE); + } + } + /* check if max field length is reached */ + if (i > len_field) + { + OVERFLOW: + if (!ck_encap) { + IDX_ERROR("Encapsulator of page number too long (max. %d).\n", + len_field); + } else if (ck_actual) { + IDX_ERROR("Index sort key too long (max. %d).\n", len_field); + } else { + IDX_ERROR("Text of key entry too long (max. %d).\n", len_field); + } + return (FALSE); + } + ++*n; + } +#if IBM_PC_TURBO + return (FALSE); /* not reached, but keeps compiler happy */ +#endif +} + +int +#if STDC +group_type(char *str) +#else +group_type(str) +char *str; +#endif +{ + int i = 0; + + while ((str[i] != NUL) && ISDIGIT(str[i])) + i++; + + if (str[i] == NUL) { + sscanf(str, "%d", &i); + return (i); + } else if (ISSYMBOL(str[0])) + return (SYMBOL); + else + return (ALPHA); +} + +static int +#if STDC +scan_no(char no[], short npg[], short *count, short *type) +#else +scan_no(no, npg, count, type) +char no[]; +short npg[]; +short *count; +short *type; +#endif +{ + int i = 1; + + if (isdigit(no[0])) { + *type = ARAB; + if (!scan_arabic(no, npg, count)) + return (FALSE); + /* simple heuristic to determine if a letter is Roman or Alpha */ + } else if (IS_ROMAN_LOWER(no[0]) && (!IS_COMPOSITOR)) { + *type = ROML; + if (!scan_roman_lower(no, npg, count)) + return (FALSE); + /* simple heuristic to determine if a letter is Roman or Alpha */ + } else if (IS_ROMAN_UPPER(no[0]) && + ((no[0] == ROMAN_I) || (!IS_COMPOSITOR))) { + *type = ROMU; + if (!scan_roman_upper(no, npg, count)) + return (FALSE); + } else if (IS_ALPHA_LOWER(no[0])) { + *type = ALPL; + if (!scan_alpha_lower(no, npg, count)) + return (FALSE); + } else if (IS_ALPHA_UPPER(no[0])) { + *type = ALPU; + if (!scan_alpha_upper(no, npg, count)) + return (FALSE); + } else { + IDX_ERROR("Illegal page number %s.\n", no); + return (FALSE); + } + return (TRUE); +} + + +static int +#if STDC +scan_arabic(char no[], short npg[], short *count) +#else +scan_arabic(no, npg, count) +char no[]; +short npg[]; +short *count; +#endif +{ + short i = 0; + char str[ARABIC_MAX+1]; /* space for trailing NUL */ + + while ((no[i] != NUL) && (i <= ARABIC_MAX) && (!IS_COMPOSITOR)) { + if (isdigit(no[i])) { + str[i] = no[i]; + i++; + } else { +IDX_ERROR2("Illegal Arabic digit: position %d in %s.\n", i + 1, no); + return (FALSE); + } + } + if (i > ARABIC_MAX) { + IDX_ERROR2("Arabic page number %s too big (max %d digits).\n", + no, ARABIC_MAX); + return (FALSE); + } + str[i] = NUL; + + ENTER(strtoint(str) + page_offset[ARAB]); + + if (IS_COMPOSITOR) + return (scan_no(&no[i + comp_len], npg, count, &i)); + else + return (TRUE); +} + + +static int +#if STDC +scan_roman_lower(char no[], short npg[], short *count) +#else +scan_roman_lower(no, npg, count) +char no[]; +short npg[]; +short *count; +#endif +{ + short i = 0; + int inp = 0; + int prev = 0; + int the_new; + + while ((no[i] != NUL) && (i < ROMAN_MAX) && (!IS_COMPOSITOR)) { + if ((IS_ROMAN_LOWER(no[i])) && + ((the_new = ROMAN_LOWER_VAL(no[i])) != 0)) { + if (prev == 0) + prev = the_new; + else { + if (prev < the_new) { + prev = the_new - prev; + the_new = 0; + } + inp += prev; + prev = the_new; + } + } else { +IDX_ERROR2("Illegal Roman number: position %d in %s.\n", i + 1, no); + return (FALSE); + } + i++; + } + if (i == ROMAN_MAX) { + IDX_ERROR2("Roman page number %s too big (max %d digits).\n", + no, ROMAN_MAX); + return (FALSE); + } + inp += prev; + + ENTER(inp + page_offset[ROML]); + + if (IS_COMPOSITOR) + return (scan_no(&no[i + comp_len], npg, count, &i)); + else + return (TRUE); +} + + +static int +#if STDC +scan_roman_upper(char no[], short npg[], short *count) +#else +scan_roman_upper(no, npg, count) +char no[]; +short npg[]; +short *count; +#endif +{ + short i = 0; + int inp = 0; + int prev = 0; + int the_new; + + while ((no[i] != NUL) && (i < ROMAN_MAX) && (!IS_COMPOSITOR)) { + if ((IS_ROMAN_UPPER(no[i])) && + ((the_new = ROMAN_UPPER_VAL(no[i])) != 0)) { + if (prev == 0) + prev = the_new; + else { + if (prev < the_new) { + prev = the_new - prev; + the_new = 0; + } + inp += prev; + prev = the_new; + } + } else { +IDX_ERROR2("Illegal Roman number: position %d in %s.\n", i + 1, no); + return (FALSE); + } + i++; + } + if (i == ROMAN_MAX) { + IDX_ERROR2("Roman page number %s too big (max %d digits).\n", + no, ROMAN_MAX); + return (FALSE); + } + inp += prev; + + ENTER(inp + page_offset[ROMU]); + + if (IS_COMPOSITOR) + return (scan_no(&no[i + comp_len], npg, count, &i)); + else + return (TRUE); +} + + +static int +#if STDC +scan_alpha_lower(char no[], short npg[], short *count) +#else +scan_alpha_lower(no, npg, count) +char no[]; +short npg[]; +short *count; +#endif +{ + short i; + + ENTER(ALPHA_VAL(no[0]) + page_offset[ALPL]); + + i = 1; + if (IS_COMPOSITOR) + return (scan_no(&no[comp_len + 1], npg, count, &i)); + else + return (TRUE); +} + + +static int +#if STDC +scan_alpha_upper(char no[], short npg[], short *count) +#else +scan_alpha_upper(no, npg, count) +char no[]; +short npg[]; +short *count; +#endif +{ + short i; + + ENTER(ALPHA_VAL(no[0]) + page_offset[ALPU]); + + i = 1; + if (IS_COMPOSITOR) + return (scan_no(&no[comp_len + 1], npg, count, &i)); + else + return (TRUE); +} + + +static int +scan_arg1(VOID_ARG) +{ + int i = 0; + int n = 0; /* delimiter count */ + int a; + + if (compress_blanks) + while (((a = GET_CHAR(idx_fp)) == SPC) || (a == TAB)); + else + a = GET_CHAR(idx_fp); + + while ((i < ARGUMENT_MAX) && (a != EOF)) + { + if ((a == idx_quote) || (a == idx_escape)) + { /* take next character literally */ + key[i++] = (char) a; /* but preserve quote or escape */ + a = GET_CHAR(idx_fp); + key[i++] = (char) a; /* save literal character */ + } + else if (a == idx_aopen) + { /* opening delimiters within the argument list */ + key[i++] = (char) a; + n++; + } + else if (a == idx_aclose) + { + if (n == 0) /* end of argument */ + { + if (compress_blanks && key[i - 1] == SPC) + key[i - 1] = NUL; + else + key[i] = NUL; + return (TRUE); + } + else /* nested delimiters */ + { + key[i++] = (char) a; + n--; + } + } + else + { + switch (a) + { + case LFD: + idx_lc++; + IDX_ERROR("Incomplete first argument (premature LFD).\n", ""); + return (FALSE); + case TAB: + case SPC: + /* compress successive SPC's to one SPC */ + if (compress_blanks) + { + if ((i > 0) && (key[i - 1] != SPC) && (key[i - 1] != TAB)) + key[i++] = SPC; + break; + } + default: + key[i++] = (char) a; + break; + } + } + a = GET_CHAR(idx_fp); + } + + flush_to_eol(); /* Skip to end of line */ + idx_lc++; + IDX_ERROR("First argument too long (max %d).\n", ARGUMENT_MAX); + return (FALSE); +} + + +static int +scan_arg2(VOID_ARG) +{ + int i = 0; + int a; + int hit_blank = FALSE; + + while (((a = GET_CHAR(idx_fp)) == SPC) || (a == TAB)); + + while (i < NUMBER_MAX) { + if (a == idx_aclose) { + no[i] = NUL; + return (TRUE); + } else + switch (a) { + case LFD: + idx_lc++; +IDX_ERROR("Incomplete second argument (premature LFD).\n", ""); + return (FALSE); + case TAB: + case SPC: + hit_blank = TRUE; + break; + default: + if (hit_blank) { + flush_to_eol(); /* Skip to end of line */ + idx_lc++; +IDX_ERROR("Illegal space within numerals in second argument.\n", ""); + return (FALSE); + } + no[i++] = (char) a; + break; + } + a = GET_CHAR(idx_fp); + } + flush_to_eol(); /* Skip to end of line */ + idx_lc++; + IDX_ERROR("Second argument too long (max %d).\n", NUMBER_MAX); + return (FALSE); +} + + +static void +#if STDC +search_quote(char sort_key[], char actual_key[]) +#else +search_quote(sort_key, actual_key) +char sort_key[]; +char actual_key[]; +#endif +{ + char *ptr; /* pointer to sort_key */ + char *sort; /* contains sorting text */ + int char_found = FALSE; + + strcpy(actual_key, sort_key); + ptr = strchr(sort_key, '"'); /* look for first double quote */ + while (ptr != (char*)NULL) + { + sort = ""; + switch (*(ptr + 1)) + { /* skip to umlaut or sharp S */ + case 'a': + case 'A': + sort = isupper(*(ptr + 1)) ? "Ae" : "ae"; + break; + case 'o': + case 'O': + sort = isupper(*(ptr + 1)) ? "Oe" : "oe"; + break; + case 'u': + case 'U': + sort = isupper(*(ptr + 1)) ? "Ue" : "ue"; + break; + case 's': + sort = "ss"; + break; + default: + break; + } + if (sort[0] != NUL) + { + char_found = TRUE; + *ptr = sort[0]; /* write to sort_key */ + *(ptr + 1) = sort[1]; + } + ptr = strchr(ptr + 1, '"'); /* next double quote */ + } + if (!char_found) /* reset actual_key ? */ + actual_key[0] = NUL; + return; +} diff --git a/indexing/makeindex/src/scanid.h b/indexing/makeindex/src/scanid.h new file mode 100644 index 0000000000..cd48b083c4 --- /dev/null +++ b/indexing/makeindex/src/scanid.h @@ -0,0 +1,170 @@ +/* + * + * This file is part of + * MakeIndex - A formatter and format independent index processor + * + * Copyright (C) 1989 by Chen & Harrison International Systems, Inc. + * Copyright (C) 1988 by Olivetti Research Center + * Copyright (C) 1987 by Regents of the University of California + * + * Author: + * Pehong Chen + * Chen & Harrison International Systems, Inc. + * Palo Alto, California + * USA + * (phc@renoir.berkeley.edu or chen@orc.olivetti.com) + * + * Contributors: + * Please refer to the CONTRIB file that comes with this release + * for a list of people who have contributed to this and/or previous + * release(s) of MakeIndex. + * + * All rights reserved by the copyright holders. See the copyright + * notice distributed with this software for a complete description of + * the conditions under which it is made available. + * + */ + +#define IS_COMPOSITOR (strncmp(&no[i], page_comp, comp_len) == 0) + +#define ROMAN_I 'I' +#define ROMAN_V 'V' +#define ROMAN_X 'X' +#define ROMAN_L 'L' +#define ROMAN_C 'C' +#define ROMAN_D 'D' +#define ROMAN_M 'M' + +#define ROMAN_i 'i' +#define ROMAN_v 'v' +#define ROMAN_x 'x' +#define ROMAN_l 'l' +#define ROMAN_c 'c' +#define ROMAN_d 'd' +#define ROMAN_m 'm' + +#define VAL_I 1 +#define VAL_V 5 +#define VAL_X 10 +#define VAL_L 50 +#define VAL_C 100 +#define VAL_D 500 +#define VAL_M 1000 + +#define ROMAN_LOWER_VAL(C) \ + ((C == ROMAN_i) ? VAL_I : \ + (C == ROMAN_v) ? VAL_V : \ + (C == ROMAN_x) ? VAL_X : \ + (C == ROMAN_l) ? VAL_L : \ + (C == ROMAN_c) ? VAL_C : \ + (C == ROMAN_d) ? VAL_D : \ + (C == ROMAN_m) ? VAL_M : 0) + +#define ROMAN_UPPER_VAL(C) \ + ((C == ROMAN_I) ? VAL_I : \ + (C == ROMAN_V) ? VAL_V : \ + (C == ROMAN_X) ? VAL_X : \ + (C == ROMAN_L) ? VAL_L : \ + (C == ROMAN_C) ? VAL_C : \ + (C == ROMAN_D) ? VAL_D : \ + (C == ROMAN_M) ? VAL_M : 0) + +#define IS_ROMAN_LOWER(C) \ + ((C == ROMAN_i) || (C == ROMAN_v) || (C == ROMAN_x) || \ + (C == ROMAN_l) || (C == ROMAN_c) || (C == ROMAN_d) || (C == ROMAN_m)) + +#define IS_ROMAN_UPPER(C) \ + ((C == ROMAN_I) || (C == ROMAN_V) || (C == ROMAN_X) || \ + (C == ROMAN_L) || (C == ROMAN_C) || (C == ROMAN_D) || (C == ROMAN_M)) + +#if (CCD_2000 | OS_MVSXA) +#define ALPHA_VAL(C) ((isalpha(C)) ? (strchr(UPCC,toupper(C))-UPCC) : 0) + +#define IS_ALPHA_LOWER(C) (isalpha(C) && islower(C)) + +#define IS_ALPHA_UPPER(C) (isalpha(C) && isupper(C)) +#else +#define ALPHA_VAL(C) \ + ((('A' <= C) && (C <= 'Z')) ? C - 'A' : \ + (('a' <= C) && (C <= 'z')) ? C - 'a' : 0) + +#define IS_ALPHA_LOWER(C) \ + (('a' <= C) && (C <= 'z')) + +#define IS_ALPHA_UPPER(C) \ + (('A' <= C) && (C <= 'Z')) +#endif /* CCD_2000 | OS_MVSXA */ + +#define IDX_SKIPLINE { \ + int tmp; \ + while ((tmp = GET_CHAR(idx_fp)) != LFD) \ + if (tmp == EOF) \ + break; \ + idx_lc++; \ + arg_count = -1; \ +} + +#define NULL_RTN { \ + IDX_ERROR("Illegal null field.\n", NULL); \ + return (FALSE); \ +} + +#if KCC_20 +/* KCC preprocessor bug collapses multiple blanks to single blank */ +#define IDX_ERROR(F, D) { \ + if (idx_dot) { \ + fprintf(ilg_fp, "\n"); \ + idx_dot = FALSE; \ + } \ + fprintf(ilg_fp, \ + "!! Input index error (file = %s, line = %d):\n\040\040 -- ", \ + idx_fn, idx_lc); \ + fprintf(ilg_fp, F, D); \ + idx_ec++; \ +} + +#define IDX_ERROR2(F, D1, D2) { \ + if (idx_dot) { \ + fprintf(ilg_fp, "\n"); \ + idx_dot = FALSE; \ + } \ + fprintf(ilg_fp, \ + "!! Input index error (file = %s, line = %d):\n\040\040 -- ", \ + idx_fn, idx_lc); \ + fprintf(ilg_fp, F, D1, D2); \ + idx_ec++; \ +} +#else +#define IDX_ERROR(F, D) { \ + if (idx_dot) { \ + fprintf(ilg_fp, "\n"); \ + idx_dot = FALSE; \ + } \ + fprintf(ilg_fp, "!! Input index error (file = %s, line = %d):\n -- ", \ + idx_fn, idx_lc); \ + fprintf(ilg_fp, F, D); \ + idx_ec++; \ +} + +#define IDX_ERROR2(F, D1, D2) { \ + if (idx_dot) { \ + fprintf(ilg_fp, "\n"); \ + idx_dot = FALSE; \ + } \ + fprintf(ilg_fp, "!! Input index error (file = %s, line = %d):\n -- ", \ + idx_fn, idx_lc); \ + fprintf(ilg_fp, F, D1, D2); \ + idx_ec++; \ +} +#endif + + +#define ENTER(V) { \ + if (*count >= PAGEFIELD_MAX) { \ + IDX_ERROR2("Page number %s has too many fields (max. %d).", \ + no, PAGEFIELD_MAX); \ + return (FALSE); \ + } \ + npg[*count] = (V); \ + ++*count; \ +} diff --git a/indexing/makeindex/src/scanst.c b/indexing/makeindex/src/scanst.c new file mode 100644 index 0000000000..ed3e9654d8 --- /dev/null +++ b/indexing/makeindex/src/scanst.c @@ -0,0 +1,616 @@ +/* + * + * This file is part of + * MakeIndex - A formatter and format independent index processor + * + * Copyright (C) 1989 by Chen & Harrison International Systems, Inc. + * Copyright (C) 1988 by Olivetti Research Center + * Copyright (C) 1987 by Regents of the University of California + * + * Author: + * Pehong Chen + * Chen & Harrison International Systems, Inc. + * Palo Alto, California + * USA + * (phc@renoir.berkeley.edu or chen@orc.olivetti.com) + * + * Contributors: + * Please refer to the CONTRIB file that comes with this release + * for a list of people who have contributed to this and/or previous + * release(s) of MakeIndex. + * + * All rights reserved by the copyright holders. See the copyright + * notice distributed with this software for a complete description of + * the conditions under which it is made available. + * + */ + +#include "mkind.h" +#include "scanst.h" + +static int sty_lc = 0; /* line count */ +static int sty_tc = 0; /* total count */ +static int sty_ec = 0; /* error count */ + +char idx_keyword[ARRAY_MAX] = IDX_KEYWORD; +char idx_aopen = IDX_AOPEN; +char idx_aclose = IDX_ACLOSE; +char idx_level = IDX_LEVEL; +char idx_ropen = IDX_ROPEN; +char idx_rclose = IDX_RCLOSE; +char idx_quote = IDX_QUOTE; +char idx_actual = IDX_ACTUAL; +char idx_encap = IDX_ENCAP; +char idx_escape = IDX_ESCAPE; + +char preamble[ARRAY_MAX] = PREAMBLE_DEF; +char postamble[ARRAY_MAX] = POSTAMBLE_DEF; +int prelen = PREAMBLE_LEN; +int postlen = POSTAMBLE_LEN; + +char setpage_open[ARRAY_MAX] = SETPAGEOPEN_DEF; +char setpage_close[ARRAY_MAX] = SETPAGECLOSE_DEF; +int setpagelen = SETPAGE_LEN; + +char group_skip[ARRAY_MAX] = GROUPSKIP_DEF; +int skiplen = GROUPSKIP_LEN; + +int headings_flag = HEADINGSFLAG_DEF; +char heading_pre[ARRAY_MAX] = HEADINGPRE_DEF; +char heading_suf[ARRAY_MAX] = HEADINGSUF_DEF; +int headprelen = HEADINGPRE_LEN; +int headsuflen = HEADINGSUF_LEN; + +char symhead_pos[ARRAY_MAX] = SYMHEADPOS_DEF; +char symhead_neg[ARRAY_MAX] = SYMHEADNEG_DEF; + +char numhead_pos[ARRAY_MAX] = NUMHEADPOS_DEF; +char numhead_neg[ARRAY_MAX] = NUMHEADNEG_DEF; + +char item_r[FIELD_MAX][ARRAY_MAX] = {ITEM0_DEF, ITEM1_DEF, ITEM2_DEF}; +char item_u[FIELD_MAX][ARRAY_MAX] = {"", ITEM1_DEF, ITEM2_DEF}; +char item_x[FIELD_MAX][ARRAY_MAX] = {"", ITEM1_DEF, ITEM2_DEF}; + +int ilen_r[FIELD_MAX] = {ITEM_LEN, ITEM_LEN, ITEM_LEN}; +int ilen_u[FIELD_MAX] = {0, ITEM_LEN, ITEM_LEN}; +int ilen_x[FIELD_MAX] = {0, ITEM_LEN, ITEM_LEN}; + +char delim_p[FIELD_MAX][ARRAY_MAX] = {DELIM_DEF, DELIM_DEF, DELIM_DEF}; +char delim_n[ARRAY_MAX] = DELIM_DEF; /* page number separator */ +char delim_r[ARRAY_MAX] = DELIMR_DEF;/* page range designator */ +char delim_t[ARRAY_MAX] = DELIMT_DEF;/* page list terminating delimiter */ + +char suffix_2p[ARRAY_MAX] = ""; /* suffix for two page ranges */ +char suffix_3p[ARRAY_MAX] = ""; /* suffix for three page ranges */ +char suffix_mp[ARRAY_MAX] = ""; /* suffix for multiple page ranges */ + +char encap_p[ARRAY_MAX] = ENCAP0_DEF;/* encapsulator prefix */ +char encap_i[ARRAY_MAX] = ENCAP1_DEF;/* encapsulator infix */ +char encap_s[ARRAY_MAX] = ENCAP2_DEF;/* encapsulator postfix */ + +int linemax = LINE_MAX; + +int indent_length = INDENTLEN_DEF; +char indent_space[ARRAY_MAX] = INDENTSPC_DEF; + +char page_comp[ARRAY_MAX] = COMPOSITOR_DEF; +int page_offset[PAGETYPE_MAX] = { +0, +ROMAN_LOWER_OFFSET, +ROMAN_LOWER_OFFSET + ARABIC_OFFSET, +ROMAN_LOWER_OFFSET + ARABIC_OFFSET + ALPHA_LOWER_OFFSET, +ROMAN_LOWER_OFFSET + ARABIC_OFFSET + ALPHA_LOWER_OFFSET + ROMAN_UPPER_OFFSET +}; +static char page_prec[ARRAY_MAX] = PRECEDENCE_DEF; + +static int put_dot; + +static int count_lfd ARGS((char *str)); +static int next_nonblank ARGS((void)); +static int process_precedence ARGS((void)); +static int scan_char ARGS((char *c)); +static int scan_spec ARGS((char *spec)); +static int scan_string ARGS((char *str)); + +void +scan_sty(VOID_ARG) +{ + char spec[STRING_MAX]; + int tmp; + + MESSAGE("Scanning style file %s", sty_fn); + while (scan_spec(spec)) { + sty_tc++; + put_dot = TRUE; + + /* output pre- and post-ambles */ + if (STREQ(spec, PREAMBLE)) { + (void) scan_string(preamble); + prelen = count_lfd(preamble); + } else if (STREQ(spec, POSTAMBLE)) { + (void) scan_string(postamble); + postlen = count_lfd(postamble); + } else if (STREQ(spec, GROUP_SKIP)) { + (void) scan_string(group_skip); + skiplen = count_lfd(group_skip); + } else if (STREQ(spec, HEADINGS_FLAG)) { + SCAN_NO(&headings_flag); + } else if (STREQ(spec, HEADING_PRE)) { + (void) scan_string(heading_pre); + headprelen = count_lfd(heading_pre); + } else if (STREQ(spec, HEADING_SUF)) { + (void) scan_string(heading_suf); + headsuflen = count_lfd(heading_suf); + } else if (STREQ(spec, SYMHEAD_POS)) { + (void) scan_string(symhead_pos); + } else if (STREQ(spec, SYMHEAD_NEG)) { + (void) scan_string(symhead_neg); + } else if (STREQ(spec, NUMHEAD_POS)) { + (void) scan_string(numhead_pos); + } else if (STREQ(spec, NUMHEAD_NEG)) { + (void) scan_string(numhead_neg); + } else if (STREQ(spec, SETPAGEOPEN)) { + (void) scan_string(setpage_open); + setpagelen = count_lfd(setpage_open); + } else if (STREQ(spec, SETPAGECLOSE)) { + (void) scan_string(setpage_close); + setpagelen = count_lfd(setpage_close); + /* output index item commands */ + } else if (STREQ(spec, ITEM_0)) { + (void) scan_string(item_r[0]); + ilen_r[0] = count_lfd(item_r[0]); + } else if (STREQ(spec, ITEM_1)) { + (void) scan_string(item_r[1]); + ilen_r[1] = count_lfd(item_r[1]); + } else if (STREQ(spec, ITEM_2)) { + (void) scan_string(item_r[2]); + ilen_r[2] = count_lfd(item_r[2]); + } else if (STREQ(spec, ITEM_01)) { + (void) scan_string(item_u[1]); + ilen_u[1] = count_lfd(item_u[1]); + } else if (STREQ(spec, ITEM_12)) { + (void) scan_string(item_u[2]); + ilen_u[2] = count_lfd(item_u[2]); + } else if (STREQ(spec, ITEM_x1)) { + (void) scan_string(item_x[1]); + ilen_x[1] = count_lfd(item_x[1]); + } else if (STREQ(spec, ITEM_x2)) { + (void) scan_string(item_x[2]); + ilen_x[2] = count_lfd(item_x[2]); + /* output encapsulators */ + } else if (STREQ(spec, ENCAP_0)) + (void) scan_string(encap_p); + else if (STREQ(spec, ENCAP_1)) + (void) scan_string(encap_i); + else if (STREQ(spec, ENCAP_2)) + (void) scan_string(encap_s); + /* output delimiters */ + else if (STREQ(spec, DELIM_0)) + (void) scan_string(delim_p[0]); + else if (STREQ(spec, DELIM_1)) + (void) scan_string(delim_p[1]); + else if (STREQ(spec, DELIM_2)) + (void) scan_string(delim_p[2]); + else if (STREQ(spec, DELIM_N)) + (void) scan_string(delim_n); + else if (STREQ(spec, DELIM_R)) + (void) scan_string(delim_r); + else if (STREQ(spec, DELIM_T)) + (void) scan_string(delim_t); + else if (STREQ(spec, SUFFIX_2P)) + (void) scan_string(suffix_2p); + else if (STREQ(spec, SUFFIX_3P)) + (void) scan_string(suffix_3p); + else if (STREQ(spec, SUFFIX_MP)) + (void) scan_string(suffix_mp); + /* output line width */ + else if (STREQ(spec, LINEMAX)) { + SCAN_NO(&tmp); + if (tmp > 0) + linemax = tmp; + else + STY_ERROR2("%s must be positive (got %d)", + LINEMAX, tmp); + /* output line indentation length */ + } else if (STREQ(spec, INDENT_LENGTH)) { + SCAN_NO(&tmp); + if (tmp >= 0) + indent_length = tmp; + else + STY_ERROR2("%s must be nonnegative (got %d)", + INDENT_LENGTH, tmp); + /* output line indentation */ + } else if (STREQ(spec, INDENT_SPACE)) { + (void) scan_string(indent_space); + /* composite page delimiter */ + } else if (STREQ(spec, COMPOSITOR)) { + (void) scan_string(page_comp); + /* page precedence */ + } else if (STREQ(spec, PRECEDENCE)) { + (void) scan_string(page_prec); + (void) process_precedence(); + /* index input format */ + } else if (STREQ(spec, KEYWORD)) + (void) scan_string(idx_keyword); + else if (STREQ(spec, AOPEN)) + (void) scan_char(&idx_aopen); + else if (STREQ(spec, ACLOSE)) + (void) scan_char(&idx_aclose); + else if (STREQ(spec, LEVEL)) + (void) scan_char(&idx_level); + else if (STREQ(spec, ROPEN)) + (void) scan_char(&idx_ropen); + else if (STREQ(spec, RCLOSE)) + (void) scan_char(&idx_rclose); + else if (STREQ(spec, QUOTE)) + (void) scan_char(&idx_quote); + else if (STREQ(spec, ACTUAL)) + (void) scan_char(&idx_actual); + else if (STREQ(spec, ENCAP)) + (void) scan_char(&idx_encap); + else if (STREQ(spec, ESCAPE)) + (void) scan_char(&idx_escape); + else { + (void) next_nonblank(); + STY_SKIPLINE; + STY_ERROR("Unknown specifier %s.\n", spec); + put_dot = FALSE; + } + if (put_dot) { + STY_DOT; + } + } + + /* check if quote and escape are distinct */ + if (idx_quote == idx_escape) { + STY_ERROR( + "Quote and escape symbols must be distinct (both `%c' now).\n", + idx_quote); + idx_quote = IDX_QUOTE; + idx_escape = IDX_ESCAPE; + } + DONE(sty_tc - sty_ec, "attributes redefined", sty_ec, "ignored"); + CLOSE(sty_fp); +} + +static int +#if STDC +scan_spec(char spec[]) +#else +scan_spec(spec) +char spec[]; +#endif +{ + int i = 0; + int c; + + while (TRUE) + if ((c = next_nonblank()) == -1) + return (FALSE); + else if (c == COMMENT) { + STY_SKIPLINE; + } else + break; + + spec[0] = TOLOWER(c); + while ((i++ < STRING_MAX) && ((c = GET_CHAR(sty_fp)) != SPC) && + (c != TAB) && (c != LFD) && (c != EOF)) + spec[i] = TOLOWER(c); + if (i < STRING_MAX) { + spec[i] = NUL; + if (c == EOF) { + STY_ERROR( + "No attribute for specifier %s (premature EOF)\n", + spec); + return (-1); + } + if (c == LFD) + sty_lc++; + return (TRUE); + } else { + STY_ERROR2("Specifier %s too long (max %d).\n", + spec, STRING_MAX); + return (FALSE); + } +} + + +static int +next_nonblank(VOID_ARG) +{ + int c; + + while (TRUE) { + switch (c = GET_CHAR(sty_fp)) { + case EOF: + return (-1); + + case LFD: + sty_lc++; + case SPC: + case TAB: + break; + default: + return (c); + } + } +#if IBM_PC_TURBO + return (-1); /* not reached, but keeps compiler happy */ +#endif +} + + +static int +#if STDC +scan_string(char str[]) +#else +scan_string(str) +char str[]; +#endif +{ + char clone[ARRAY_MAX]; + int i = 0; + int c; + + switch (c = next_nonblank()) { + case STR_DELIM: + while (TRUE) + switch (c = GET_CHAR(sty_fp)) { + case EOF: + STY_ERROR("No closing delimiter in %s.\n", + clone); + return (FALSE); + case STR_DELIM: + clone[i] = NUL; + strcpy(str, clone); + return (TRUE); + case BSH: + switch (c = GET_CHAR(sty_fp)) { + case 't': + clone[i++] = TAB; + break; + case 'n': + clone[i++] = LFD; + break; + + default: + clone[i++] = (char) c; + break; + } + break; + default: + if (c == LFD) + sty_lc++; + if (i < ARRAY_MAX) + clone[i++] = (char) c; + else { + STY_SKIPLINE; + STY_ERROR2( + "Attribute string %s too long (max %d).\n", + clone, ARRAY_MAX); + return (FALSE); + } + break; + } + break; + case COMMENT: + STY_SKIPLINE; + break; + default: + STY_SKIPLINE; + STY_ERROR("No opening delimiter.\n", ""); + return (FALSE); + } + return (TRUE); /* function value no longer used */ +} + + +static int +#if STDC +scan_char(char *c) +#else +scan_char(c) +char *c; +#endif +{ + int clone; + + switch (clone = next_nonblank()) { + case CHR_DELIM: + switch (clone = GET_CHAR(sty_fp)) { + case CHR_DELIM: + STY_SKIPLINE; + STY_ERROR("Premature closing delimiter.\n", ""); + return (FALSE); + case LFD: + sty_lc++; + case EOF: + STY_ERROR("No character (premature EOF).\n", ""); + return (FALSE); + case BSH: + clone = GET_CHAR(sty_fp); + default: + if (GET_CHAR(sty_fp) == CHR_DELIM) { + *c = (char) clone; + return (TRUE); + } else { + STY_ERROR("No closing delimiter or too many letters.\n", ""); + return (FALSE); + } + } + /* break; */ /* NOT REACHED */ + case COMMENT: + STY_SKIPLINE; + break; + default: + STY_SKIPLINE; + STY_ERROR("No opening delimiter.\n", ""); + return (FALSE); + } + return (TRUE); /* function value no longer used */ +} + + +static int +#if STDC +count_lfd(char *str) +#else +count_lfd(str) +char *str; +#endif +{ + int i = 0; + int n = 0; + + while (str[i] != NUL) { + if (str[i] == LFD) + n++; + i++; + } + return (n); +} + + +static int +process_precedence(VOID_ARG) +{ + int order[PAGETYPE_MAX]; + int type[PAGETYPE_MAX]; + int i = 0; + int last; + int roml = FALSE; + int romu = FALSE; + int arab = FALSE; + int alpl = FALSE; + int alpu = FALSE; + + /* check for llegal specifiers first */ + while ((i < PAGETYPE_MAX) && (page_prec[i] != NUL)) { + switch (page_prec[i]) { + case ROMAN_LOWER: + if (roml) { + MULTIPLE(ROMAN_LOWER); + } else + roml = TRUE; + break; + case ROMAN_UPPER: + if (romu) { + MULTIPLE(ROMAN_UPPER); + } else + romu = TRUE; + break; + case ARABIC: + if (arab) { + MULTIPLE(ARABIC); + } else + arab = TRUE; + break; + case ALPHA_LOWER: + if (alpl) { + MULTIPLE(ALPHA_UPPER); + } else + alpl = TRUE; + break; + case ALPHA_UPPER: + if (alpu) { + MULTIPLE(ALPHA_UPPER); + } else + alpu = TRUE; + break; + default: + STY_SKIPLINE; + STY_ERROR("Unknow type `%c' in page precedence specification.\n", + page_prec[i]); + return (FALSE); + } + i++; + } + if (page_prec[i] != NUL) { + STY_SKIPLINE; + STY_ERROR("Page precedence specification string too long.\n", ""); + return (FALSE); + } + last = i; + switch (page_prec[0]) { + case ROMAN_LOWER: + order[0] = ROMAN_LOWER_OFFSET; + type[0] = ROML; + break; + case ROMAN_UPPER: + order[0] = ROMAN_UPPER_OFFSET; + type[0] = ROMU; + break; + case ARABIC: + order[0] = ARABIC_OFFSET; + type[0] = ARAB; + break; + case ALPHA_LOWER: + order[0] = ALPHA_LOWER_OFFSET; + type[0] = ALPL; + break; + case ALPHA_UPPER: + order[0] = ALPHA_LOWER_OFFSET; + type[0] = ALPU; + break; + } + + i = 1; + while (i < last) { + switch (page_prec[i]) { + case ROMAN_LOWER: + order[i] = order[i - 1] + ROMAN_LOWER_OFFSET; + type[i] = ROML; + break; + case ROMAN_UPPER: + order[i] = order[i - 1] + ROMAN_UPPER_OFFSET; + type[i] = ROMU; + break; + case ARABIC: + order[i] = order[i - 1] + ARABIC_OFFSET; + type[i] = ARAB; + break; + case ALPHA_LOWER: + order[i] = order[i - 1] + ALPHA_LOWER_OFFSET; + type[i] = ALPL; + break; + case ALPHA_UPPER: + order[i] = order[i - 1] + ALPHA_LOWER_OFFSET; + type[i] = ALPU; + break; + } + i++; + } + + for (i = 0; i < PAGETYPE_MAX; i++) { + page_offset[i] = -1; + } + page_offset[type[0]] = 0; + for (i = 1; i < last; i++) { + page_offset[type[i]] = order[i - 1]; + } + for (i = 0; i < PAGETYPE_MAX; i++) { + if (page_offset[i] == -1) { + switch (type[last - 1]) { + case ROML: + order[last] = order[last - 1] + ROMAN_LOWER_OFFSET; + break; + case ROMU: + order[last] = order[last - 1] + ROMAN_UPPER_OFFSET; + break; + case ARAB: + order[last] = order[last - 1] + ARABIC_OFFSET; + break; + case ALPL: + order[last] = order[last - 1] + ALPHA_LOWER_OFFSET; + break; + case ALPU: + order[last] = order[last - 1] + ALPHA_UPPER_OFFSET; + break; + } + type[last] = i; + page_offset[i] = order[last]; + last++; + } + } + return (TRUE); /* function value no longer used */ +} diff --git a/indexing/makeindex/src/scanst.h b/indexing/makeindex/src/scanst.h new file mode 100644 index 0000000000..b766ed4c99 --- /dev/null +++ b/indexing/makeindex/src/scanst.h @@ -0,0 +1,232 @@ +/* + * + * This file is part of + * MakeIndex - A formatter and format independent index processor + * + * Copyright (C) 1989 by Chen & Harrison International Systems, Inc. + * Copyright (C) 1988 by Olivetti Research Center + * Copyright (C) 1987 by Regents of the University of California + * + * Author: + * Pehong Chen + * Chen & Harrison International Systems, Inc. + * Palo Alto, California + * USA + * (phc@renoir.berkeley.edu or chen@orc.olivetti.com) + * + * Contributors: + * Please refer to the CONTRIB file that comes with this release + * for a list of people who have contributed to this and/or previous + * release(s) of MakeIndex. + * + * All rights reserved by the copyright holders. See the copyright + * notice distributed with this software for a complete description of + * the conditions under which it is made available. + * + */ + +#define COMMENT '%' +#define STR_DELIM '"' +#define CHR_DELIM '\'' + +#define KEYWORD "keyword" +#define AOPEN "arg_open" +#define ACLOSE "arg_close" +#define ROPEN "range_open" +#define RCLOSE "range_close" +#define LEVEL "level" +#define QUOTE "quote" +#define ACTUAL "actual" +#define ENCAP "encap" +#define ESCAPE "escape" + +#define IDX_KEYWORD "\\indexentry" +#define IDX_AOPEN '{' +#define IDX_ACLOSE '}' +#define IDX_ROPEN '(' +#define IDX_RCLOSE ')' +#define IDX_LEVEL '!' +#define IDX_QUOTE '"' +#define IDX_ACTUAL '@' +#define IDX_ENCAP '|' +#define IDX_ESCAPE '\\' + +#define COMPOSITOR "page_compositor" +#define COMPOSITOR_DEF "-" +#define PRECEDENCE "page_precedence" +#define PRECEDENCE_DEF "rnaRA" +#define ROMAN_LOWER 'r' +#define ROMAN_UPPER 'R' +#define ARABIC 'n' +#define ALPHA_LOWER 'a' +#define ALPHA_UPPER 'A' +#define ROMAN_LOWER_OFFSET 10000 +#define ROMAN_UPPER_OFFSET 10000 +#define ARABIC_OFFSET 10000 +#define ALPHA_LOWER_OFFSET 26 +#define ALPHA_UPPER_OFFSET 26 + +#define PREAMBLE "preamble" +#define PREAMBLE_DEF "\\begin{theindex}\n" +#define PREAMBLE_LEN 1 +#define POSTAMBLE "postamble" +#define POSTAMBLE_DEF "\n\n\\end{theindex}\n" +#define POSTAMBLE_LEN 3 + +#define SETPAGEOPEN "setpage_prefix" +#define SETPAGECLOSE "setpage_suffix" + +#if KCC_20 +/* KCC preprocessor bug collapses multiple blanks to single blank */ +#define SETPAGEOPEN_DEF "\n\040\040\\setcounter{page}{" +#else +#define SETPAGEOPEN_DEF "\n \\setcounter{page}{" +#endif /* KCC_20 */ + +#define SETPAGECLOSE_DEF "}\n" +#define SETPAGE_LEN 2 + +#define GROUP_SKIP "group_skip" +#if KCC_20 +/* KCC preprocessor bug collapses multiple blanks to single blank */ +#define GROUPSKIP_DEF "\n\n\040\040\\indexspace\n" +#else +#define GROUPSKIP_DEF "\n\n \\indexspace\n" +#endif /* KCC_20 */ +#define GROUPSKIP_LEN 3 + +#define HEADINGS_FLAG "headings_flag" +#define HEADINGSFLAG_DEF 0 +#define HEADING_PRE "heading_prefix" +#define HEADINGPRE_DEF "" +#define HEADINGPRE_LEN 0 +#define HEADING_SUF "heading_suffix" +#define HEADINGSUF_DEF "" +#define HEADINGSUF_LEN 0 +#define SYMHEAD_POS "symhead_positive" +#define SYMHEADPOS_DEF "Symbols" +#define SYMHEAD_NEG "symhead_negative" +#define SYMHEADNEG_DEF "symbols" +#define NUMHEAD_POS "numhead_positive" +#define NUMHEADPOS_DEF "Numbers" +#define NUMHEAD_NEG "numhead_negative" +#define NUMHEADNEG_DEF "numbers" + +#define ITEM_0 "item_0" +#define ITEM_1 "item_1" +#define ITEM_2 "item_2" +#define ITEM_01 "item_01" +#define ITEM_x1 "item_x1" +#define ITEM_12 "item_12" +#define ITEM_x2 "item_x2" + +#if KCC_20 +/* KCC preprocessor bug collapses multiple blanks to single blank */ +#define ITEM0_DEF "\n\040\040\\item\040" +#define ITEM1_DEF "\n\040\040\040\040\\subitem\040" +#define ITEM2_DEF "\n\040\040\040\040\040\040\\subsubitem\040" +#else +#define ITEM0_DEF "\n \\item " +#define ITEM1_DEF "\n \\subitem " +#define ITEM2_DEF "\n \\subsubitem " +#endif /* KCC_20 */ + +#define ITEM_LEN 1 + +#define DELIM_0 "delim_0" +#define DELIM_1 "delim_1" +#define DELIM_2 "delim_2" +#define DELIM_N "delim_n" +#define DELIM_R "delim_r" +#define DELIM_T "delim_t" +#define DELIM_DEF ", " +#define DELIMR_DEF "--" +#define DELIMT_DEF "" + +#define SUFFIX_2P "suffix_2p" +#define SUFFIX_3P "suffix_3p" +#define SUFFIX_MP "suffix_mp" + +#define ENCAP_0 "encap_prefix" +#define ENCAP_1 "encap_infix" +#define ENCAP_2 "encap_suffix" +#define ENCAP0_DEF "\\" +#define ENCAP1_DEF "{" +#define ENCAP2_DEF "}" + +#define LINEMAX "line_max" +#define INDENT_SPACE "indent_space" +#define INDENT_LENGTH "indent_length" + +#if (OS_BS2000 | OS_MVSXA) +#define INDENTSPC_DEF " " +#else +#define INDENTSPC_DEF "\t\t" +#endif /* OS_BS2000 | OS_MVSXA */ + +#define INDENTLEN_DEF 16 + +#define STY_ERROR(F, D) { \ + if (idx_dot) { \ + fprintf(ilg_fp, "\n"); \ + idx_dot = FALSE; \ + } \ + fprintf(ilg_fp, "** Input style error (file = %s, line = %d):\n -- ", \ + sty_fn, sty_lc); \ + fprintf(ilg_fp, F, D); \ + sty_ec++; \ + put_dot = FALSE; \ +} + +#if KCC_20 +/* KCC preprocessor bug collapses multiple blanks to single blank */ +#define STY_ERROR2(F, D1, D2) { \ + if (idx_dot) { \ + fprintf(ilg_fp, "\n"); \ + idx_dot = FALSE; \ + } \ + fprintf(ilg_fp, \ + "** Input style error (file = %s, line = %d):\n\040\040 -- ", \ + sty_fn, sty_lc); \ + fprintf(ilg_fp, F, D1, D2); \ + sty_ec++; \ + put_dot = FALSE; \ +} +#else +#define STY_ERROR2(F, D1, D2) { \ + if (idx_dot) { \ + fprintf(ilg_fp, "\n"); \ + idx_dot = FALSE; \ + } \ + fprintf(ilg_fp, "** Input style error (file = %s, line = %d):\n -- ", \ + sty_fn, sty_lc); \ + fprintf(ilg_fp, F, D1, D2); \ + sty_ec++; \ + put_dot = FALSE; \ +} +#endif /* KCC_20 */ + +#define STY_DOT { \ + idx_dot = TRUE; \ + if (verbose) \ + fprintf(stderr, DOT); \ + fprintf(ilg_fp, DOT); \ +} + +#define STY_SKIPLINE { \ + int a; \ + while ( ((a = GET_CHAR(sty_fp)) != LFD) && (a != EOF) ); \ + sty_lc++; \ +} + +#define SCAN_NO(N) { \ + fscanf(sty_fp, "%d", N); \ +} + +#define MULTIPLE(C) { \ + STY_SKIPLINE; \ +STY_ERROR2( \ +"Multiple instances of type `%c' in page precedence specification `%s'.\n", \ +C, page_prec); \ + return (FALSE); \ +} diff --git a/indexing/makeindex/src/sortid.c b/indexing/makeindex/src/sortid.c new file mode 100644 index 0000000000..d1ca0ac9fc --- /dev/null +++ b/indexing/makeindex/src/sortid.c @@ -0,0 +1,360 @@ +/* + * + * This file is part of + * MakeIndex - A formatter and format independent index processor + * + * Copyright (C) 1989 by Chen & Harrison International Systems, Inc. + * Copyright (C) 1988 by Olivetti Research Center + * Copyright (C) 1987 by Regents of the University of California + * + * Author: + * Pehong Chen + * Chen & Harrison International Systems, Inc. + * Palo Alto, California + * USA + * (phc@renoir.berkeley.edu or chen@orc.olivetti.com) + * + * Contributors: + * Please refer to the CONTRIB file that comes with this release + * for a list of people who have contributed to this and/or previous + * release(s) of MakeIndex. + * + * All rights reserved by the copyright holders. See the copyright + * notice distributed with this software for a complete description of + * the conditions under which it is made available. + * + */ + +#include "mkind.h" + +static long idx_gc; + +static int check_mixsym ARGS((char *x,char *y)); +static int compare ARGS((struct KFIELD * *a,struct KFIELD * *b)); +static int compare_one ARGS((char *x,char *y)); +static int compare_page ARGS((struct KFIELD * *a,struct KFIELD * *b)); +static int compare_string ARGS((unsigned char *a,unsigned char *b)); +static int new_strcmp ARGS((unsigned char *a, unsigned char *b, + int option)); + +void +sort_idx(VOID_ARG) +{ + MESSAGE("Sorting entries...", ""); + idx_dc = 0; + idx_gc = 0L; + qqsort((char *) idx_key, (int) idx_gt, (int) sizeof(FIELD_PTR), + (int (*) ARGS((char*,char*)))compare); + MESSAGE("done (%ld comparisons).\n", idx_gc); +} + +static int +#if STDC +compare(FIELD_PTR *a, FIELD_PTR *b) +#else +compare(a, b) +FIELD_PTR *a; +FIELD_PTR *b; +#endif +{ + int i; + int dif; + + idx_gc++; + IDX_DOT(CMP_MAX); + + for (i = 0; i < FIELD_MAX; i++) { + /* compare the sort fields */ + if ((dif = compare_one((*a)->sf[i], (*b)->sf[i])) != 0) + break; + + /* compare the actual fields */ + if ((dif = compare_one((*a)->af[i], (*b)->af[i])) != 0) + break; + } + + /* both key aggregates are identical, compare page numbers */ + if (i == FIELD_MAX) + dif = compare_page(a, b); + return (dif); +} + +static int +#if STDC +compare_one(char *x,char *y) +#else +compare_one(x, y) +char *x; +char *y; +#endif +{ + int m; + int n; + + if ((x[0] == NUL) && (y[0] == NUL)) + return (0); + + if (x[0] == NUL) + return (-1); + + if (y[0] == NUL) + return (1); + + m = group_type(x); + n = group_type(y); + + /* both pure digits */ + if ((m >= 0) && (n >= 0)) + return (m - n); + + /* x digit, y non-digit */ + if (m >= 0) { + if (german_sort) + return (1); + else + return ((n == -1) ? 1 : -1); + } + /* x non-digit, y digit */ + if (n >= 0) { + if (german_sort) + return (-1); + else + return ((m == -1) ? -1 : 1); + } + /* strings started with a symbol (including digit) */ + if ((m == SYMBOL) && (n == SYMBOL)) + return (check_mixsym(x, y)); + + /* x symbol, y non-symbol */ + if (m == SYMBOL) + return (-1); + + /* x non-symbol, y symbol */ + if (n == SYMBOL) + return (1); + + /* strings with a leading letter, the ALPHA type */ + return (compare_string((unsigned char*)x, (unsigned char*)y)); +} + +static int +#if STDC +check_mixsym(char *x, char *y) +#else +check_mixsym(x, y) +char *x; +char *y; +#endif +{ + int m; + int n; + + m = ISDIGIT(x[0]); + n = ISDIGIT(y[0]); + + if (m && !n) + return (1); + + if (!m && n) + return (-1); + + return (strcmp(x, y)); +} + + +static int +#if STDC +compare_string(unsigned char *a, unsigned char *b) +#else +compare_string(a, b) +unsigned char *a; +unsigned char *b; +#endif +{ + int i = 0; + int j = 0; + int al; + int bl; + + while ((a[i] != NUL) || (b[j] != NUL)) { + if (a[i] == NUL) + return (-1); + if (b[j] == NUL) + return (1); + if (letter_ordering) { + if (a[i] == SPC) + i++; + if (b[j] == SPC) + j++; + } + al = TOLOWER(a[i]); + bl = TOLOWER(b[j]); + + if (al != bl) + return (al - bl); + i++; + j++; + } + if (german_sort) + return (new_strcmp(a, b, GERMAN)); +#if (OS_BS2000 | OS_MVSXA) /* in EBCDIC 'a' is lower than 'A' */ + else + return (new_strcmp(a, b, ASCII)); +#else + else + return (strcmp((char*)a, (char*)b)); +#endif /* (OS_BS2000 | OS_MVSXA) */ +} + +static int +#if STDC +compare_page(FIELD_PTR *a, FIELD_PTR *b) +#else +compare_page(a, b) +FIELD_PTR *a; +FIELD_PTR *b; +#endif +{ + int m = 0; + short i = 0; + + while ((i < (*a)->count) && (i < (*b)->count) && + ((m = (*a)->npg[i] - (*b)->npg[i]) == 0)) + { + i++; + } + if (m == 0) + { /* common leading page numbers match */ + if ((i == (*a)->count) && (i == (*b)->count)) + { /* all page numbers match */ +#if 0 /* Faulty code replaced at 2.11 */ + /* identical entries, except possibly in encap fields */ + if (STREQ((*a)->encap, (*b)->encap)) + { /* encap fields identical */ + if (((*a)->type != DUPLICATE) && + ((*b)->type != DUPLICATE)) + (*b)->type = DUPLICATE; + + else if ((*(*a)->encap == idx_ropen) || + (*(*b)->encap == idx_rclose)) + m = -1; + else if ((*(*a)->encap == idx_rclose) || + (*(*b)->encap == idx_ropen)) + m = 1; + } + else /* encap fields differ */ + { + if ((*(*a)->encap == idx_ropen) && + (*(*b)->encap == idx_rclose)) + m = -1; + else if ((*(*a)->encap == idx_rclose) && + (*(*b)->encap == idx_ropen)) + m = 1; + /* else leave m == 0 */ + } +#else /* new 2.11 code */ + /*********************************************************** + We have identical entries, except possibly in encap fields. + The ordering is tricky here. Consider the following input + sequence of index names, encaps, and page numbers: + + foo|( 2 + foo|) 6 + foo|( 6 + foo|) 10 + + This might legimately occur when a page range ends, and + subsequently, a new range starts, on the same page. If we + just order by range_open and range_close (here, parens), + then we will produce + + foo|( 2 + foo|( 6 + foo|) 6 + foo|) 10 + + This will later generate the index entry + + foo, 2--6, \({6}, 10 + + which is not only wrong, but has also introduced an illegal + LaTeX macro, \({6}, because the merging step treated this + like a \see{6} entry. + + The solution is to preserve the original input order, which + we can do by treating range_open and range_close as equal, + and then ordering by input line number. This will then + generate the correct index entry + + foo, 2--10 + + Ordering inconsistencies from missing range open or close + entries, or mixing roman and arabic page numbers, will be + detected later. + ***********************************************************/ + +#define isrange(c) ( ((c) == idx_ropen) || ((c) == idx_rclose) ) + + /* Order two range values by input line number */ + + if (isrange(*(*a)->encap) && isrange(*(*b)->encap)) + m = (*a)->lc - (*b)->lc; + + /* Handle identical encap fields; neither is a range delimiter */ + + else if (STREQ((*a)->encap, (*b)->encap)) + { + /* If neither are yet marked duplicate, mark the second + of them to be ignored. */ + if (((*a)->type != DUPLICATE) && + ((*b)->type != DUPLICATE)) + (*b)->type = DUPLICATE; + /* leave m == 0 to show equality */ + } + + /* Encap fields differ: only one may be a range delimiter, */ + /* or else neither of them is. If either of them is a range */ + /* delimiter, order by input line number; otherwise, order */ + /* by name. */ + + else + { + if ( isrange(*(*a)->encap) || isrange(*(*b)->encap) ) + m = (*a)->lc - (*b)->lc; /* order by input line number */ + else /* order non-range items by */ + /* their encap strings */ + m = compare_string((unsigned char*)((*a)->encap), + (unsigned char*)((*b)->encap)); + } +#endif + } + else if ((i == (*a)->count) && (i < (*b)->count)) + m = -1; + else if ((i < (*a)->count) && (i == (*b)->count)) + m = 1; + } + return (m); +} + + +static int +#if STDC +new_strcmp(unsigned char *s1, unsigned char *s2, int option) +#else +new_strcmp(s1, s2, option) +unsigned char *s1; +unsigned char *s2; +int option; +#endif +{ + int i; + + i = 0; + while (s1[i] == s2[i]) + if (s1[i++] == NUL) + return (0); + if (option) /* ASCII */ + return (isupper(s1[i]) ? -1 : 1); + else /* GERMAN */ + return (isupper(s1[i]) ? 1 : -1); +} diff --git a/indexing/makeindex/test/Makefile b/indexing/makeindex/test/Makefile new file mode 100644 index 0000000000..43f886dda5 --- /dev/null +++ b/indexing/makeindex/test/Makefile @@ -0,0 +1,81 @@ +# ====================================================================== +# This UNIX Makefile runs the makeindex in the src directory on several +# test files, *.idx. The output from each file foo.* is compared with +# correct output saved in files ok-foo.*. As new bugs are discovered +# and fixed, test files that exhibit them should be incorporated in +# this directory. Names should be kept within the 8+3 limit of PC DOS. +# [11-Sep-1991] +# ====================================================================== + +FILES = b209a b209b b209c b209d b209e b209f \ + b211a b211d b211e b211f b211g b211h \ + book test tort + +# These files have private MakeIndex styles (*.ist) with the same base name +# The German ones must be run with -g +GERMAN-FILES = b211b + +STYLE-FILES = b210a b211c + +MAKEINDEX = ../src/makeindex + +RM = /bin/rm -f + +SHELL = /bin/sh + +all: + @echo "===================================================================" + @echo "If makeindex has compiled correctly, there should be no differences" + @echo "output by these tests, except possibly in the version lines" + @echo "in the *.ilg files." + @echo "===================================================================" + -for f in $(FILES);\ + do\ + echo "";\ + echo "==================================================";\ + echo "Test file = $$f";\ + echo "";\ + $(MAKEINDEX) $$f;\ + echo Comparing ok-$$f.ind $$f.ind;\ + diff ok-$$f.ind $$f.ind;\ + echo Comparing ok-$$f.ilg $$f.ilg;\ + diff ok-$$f.ilg $$f.ilg;\ + done + @echo "===================================================================" + -for f in $(GERMAN-FILES);\ + do\ + echo "";\ + echo "==================================================";\ + echo "Test file = $$f (German sort option)";\ + echo "";\ + $(MAKEINDEX) -s $$f.ist -g $$f;\ + echo Comparing ok-$$f.ind $$f.ind;\ + diff ok-$$f.ind $$f.ind;\ + echo Comparing ok-$$f.ilg $$f.ilg;\ + diff ok-$$f.ilg $$f.ilg;\ + done + @echo "===================================================================" + -for f in $(STYLE-FILES);\ + do\ + echo "";\ + echo "==================================================";\ + echo "Test file = $$f (Private style file)";\ + echo "";\ + $(MAKEINDEX) -s $$f.ist $$f;\ + echo Comparing ok-$$f.ind $$f.ind;\ + diff ok-$$f.ind $$f.ind;\ + echo Comparing ok-$$f.ilg $$f.ilg;\ + diff ok-$$f.ilg $$f.ilg;\ + done + @echo "==================================================" + +clean mostlyclean: + $(RM) \#* + $(RM) *~ + $(RM) core + -for f in $(FILES) $(GERMAN-FILES) $(STYLE-FILES);\ + do\ + $(RM) $$f.ind $$f.ilg;\ + done + +clobber distclean realclean reallyclean: clean diff --git a/indexing/makeindex/test/b209a.idx b/indexing/makeindex/test/b209a.idx new file mode 100644 index 0000000000..9b11e9ba22 --- /dev/null +++ b/indexing/makeindex/test/b209a.idx @@ -0,0 +1,5 @@ +\indexentry{alignment@{\Ss alignment}|(bf}{215} +\indexentry{alignment@{\Ss alignment}|)}{215} +\indexentry{alignment@{\Ss alignment}}{216} +\indexentry{alignment@{\Ss alignment}}{217} + diff --git a/indexing/makeindex/test/b209a.ilg b/indexing/makeindex/test/b209a.ilg new file mode 100644 index 0000000000..b08b254f1e --- /dev/null +++ b/indexing/makeindex/test/b209a.ilg @@ -0,0 +1,6 @@ +This is makeindx, portable version 2.12 [26-May-1993].
+Scanning input file b209a.idx....done (4 entries accepted, 0 rejected).
+Sorting entries....done (9 comparisons).
+Generating output file b209a.ind....done (5 lines written, 0 warnings).
+Output written in b209a.ind.
+Transcript written in b209a.ilg.
diff --git a/indexing/makeindex/test/b209a.ind b/indexing/makeindex/test/b209a.ind new file mode 100644 index 0000000000..7c6952f575 --- /dev/null +++ b/indexing/makeindex/test/b209a.ind @@ -0,0 +1,5 @@ +\begin{theindex}
+
+ \item {\Ss alignment}, \bf{215}, 216, 217
+
+\end{theindex}
diff --git a/indexing/makeindex/test/b209b.idx b/indexing/makeindex/test/b209b.idx new file mode 100644 index 0000000000..5dadc2bb8a --- /dev/null +++ b/indexing/makeindex/test/b209b.idx @@ -0,0 +1,5 @@ +\indexentry{foo|(}{93} +\indexentry{foo|)}{93} +\indexentry{gnu}{111} +\indexentry{bar|(}{193} +\indexentry{bar|)}{194} diff --git a/indexing/makeindex/test/b209b.ilg b/indexing/makeindex/test/b209b.ilg new file mode 100644 index 0000000000..78b9830773 --- /dev/null +++ b/indexing/makeindex/test/b209b.ilg @@ -0,0 +1,6 @@ +This is makeindx, portable version 2.12 [26-May-1993].
+Scanning input file b209b.idx....done (5 entries accepted, 0 rejected).
+Sorting entries....done (15 comparisons).
+Generating output file b209b.ind....done (13 lines written, 0 warnings).
+Output written in b209b.ind.
+Transcript written in b209b.ilg.
diff --git a/indexing/makeindex/test/b209b.ind b/indexing/makeindex/test/b209b.ind new file mode 100644 index 0000000000..5e9a273b10 --- /dev/null +++ b/indexing/makeindex/test/b209b.ind @@ -0,0 +1,13 @@ +\begin{theindex}
+
+ \item bar, 193--194
+
+ \indexspace
+
+ \item foo, 93
+
+ \indexspace
+
+ \item gnu, 111
+
+\end{theindex}
diff --git a/indexing/makeindex/test/b209c.idx b/indexing/makeindex/test/b209c.idx new file mode 100644 index 0000000000..fdc9493bb8 --- /dev/null +++ b/indexing/makeindex/test/b209c.idx @@ -0,0 +1,5 @@ +\indexentry{gnu}{111} +\indexentry{foo|(}{93} +\indexentry{foo|)}{93} +\indexentry{bar|(}{193} +\indexentry{bar|)}{194} diff --git a/indexing/makeindex/test/b209c.ilg b/indexing/makeindex/test/b209c.ilg new file mode 100644 index 0000000000..df3f68c3a2 --- /dev/null +++ b/indexing/makeindex/test/b209c.ilg @@ -0,0 +1,6 @@ +This is makeindx, portable version 2.12 [26-May-1993].
+Scanning input file b209c.idx....done (5 entries accepted, 0 rejected).
+Sorting entries....done (12 comparisons).
+Generating output file b209c.ind....done (13 lines written, 0 warnings).
+Output written in b209c.ind.
+Transcript written in b209c.ilg.
diff --git a/indexing/makeindex/test/b209c.ind b/indexing/makeindex/test/b209c.ind new file mode 100644 index 0000000000..5e9a273b10 --- /dev/null +++ b/indexing/makeindex/test/b209c.ind @@ -0,0 +1,13 @@ +\begin{theindex}
+
+ \item bar, 193--194
+
+ \indexspace
+
+ \item foo, 93
+
+ \indexspace
+
+ \item gnu, 111
+
+\end{theindex}
diff --git a/indexing/makeindex/test/b209d.idx b/indexing/makeindex/test/b209d.idx new file mode 100644 index 0000000000..cd2f2c3bc7 --- /dev/null +++ b/indexing/makeindex/test/b209d.idx @@ -0,0 +1,5 @@ +\indexentry{Noll}{11} +\indexentry{continuum mechanics}{11} +\indexentry{Noll}{12} +\indexentry{axiomatic method|(}{13} +\indexentry{axiomatic method|)}{13} diff --git a/indexing/makeindex/test/b209e.idx b/indexing/makeindex/test/b209e.idx new file mode 100644 index 0000000000..b2add8d33f --- /dev/null +++ b/indexing/makeindex/test/b209e.idx @@ -0,0 +1,85 @@ +\indexentry{abstract@{\Ss abstract}|(bf}{177} +\indexentry{abstract@{\Ss abstract}|)}{177} +\indexentry{abstract@{\Ss abstract}}{166} +\indexentry{access rights@{\Ss access rights}|bf}{183} +\indexentry{access rights@{\Ss access rights}}{166} +\indexentry{access rights@{\Ss access rights}}{183} +\indexentry{active position|bf}{198} +\indexentry{additional information@{\Ss additional information}|bf}{185} +\indexentry{additional information@{\Ss additional information}}{166} +\indexentry{additional information@{\Ss additional information}}{184} +\indexentry{aggregate@{\Ss aggregate}}{77} +\indexentry{aggregate@{\Ss aggregate}}{78} +\indexentry{aligned around|bf}{201} +\indexentry{aligned-around@{\Ss aligned-around}}{216} +\indexentry{aligned-around@{\Ss aligned-around}}{217} +\indexentry{alignment string@{\Ss alignment string}}{216} +\indexentry{alignment string@{\Ss alignment string}}{217} +\indexentry{alignment@{\Ss alignment}|(bf}{215} +\indexentry{alignment@{\Ss alignment}|)}{215} +\indexentry{alignment@{\Ss alignment}}{111} +\indexentry{alignment@{\Ss alignment}}{112} +\indexentry{alignment@{\Ss alignment}}{113} +\indexentry{alignment@{\Ss alignment}}{156} +\indexentry{alignment@{\Ss alignment}}{207} +\indexentry{alignment@{\Ss alignment}}{216} +\indexentry{alignment@{\Ss alignment}}{217} +\indexentry{alignment@{\Ss alignment}}{219} +\indexentry{alignment@{\Ss alignment}}{227} +\indexentry{alignment@{\Ss alignment}}{236} +\indexentry{alignment@{\Ss alignment}}{240} +\indexentry{alternative representation character sets@{\Ss alternative representation character sets}|(bf}{174} +\indexentry{alternative representation character sets@{\Ss alternative representation character sets}|)}{174} +\indexentry{alternative representation character sets@{\Ss alternative representation character sets}}{166} +\indexentry{alternative representation character sets@{\Ss alternative representation character sets}}{173} +\indexentry{alternative representation character sets@{\Ss alternative representation character sets}}{64} +\indexentry{alternative representation character sets@{\Ss alternative representation character sets}}{93} +\indexentry{alternative representation character sets@{\Ss alternative representation character sets}}{94} +\indexentry{alternative representation character string@{\it alternative representation character string\/}}{94} +\indexentry{alternative representation character string|bf}{64} +\indexentry{alternative representation@{\Ss alternative representation}|(bf}{94} +\indexentry{alternative representation@{\Ss alternative representation}|)}{94} +\indexentry{alternative representation@{\Ss alternative representation}}{149} +\indexentry{alternative representation@{\Ss alternative representation}}{150} +\indexentry{alternative representation@{\Ss alternative representation}}{152} +\indexentry{alternative representation@{\Ss alternative representation}}{174} +\indexentry{alternative representation@{\Ss alternative representation}}{60} +\indexentry{alternative representation@{\Ss alternative representation}}{61} +\indexentry{alternative representation@{\Ss alternative representation}}{80} +\indexentry{alternative representation@{\Ss alternative representation}}{92} +\indexentry{alternative representation@{\Ss alternative representation}}{93} +\indexentry{application comments@{\Ss application comments}|bf}{103} +\indexentry{application comments@{\Ss application comments}}{102} +\indexentry{application comments@{\Ss application comments}}{103} +\indexentry{application comments@{\Ss application comments}}{137} +\indexentry{application comments@{\Ss application comments}}{43} +\indexentry{application comments@{\Ss application comments}}{44} +\indexentry{application comments@{\Ss application comments}}{45} +\indexentry{application comments@{\Ss application comments}}{46} +\indexentry{application comments@{\Ss application comments}}{47} +\indexentry{application comments@{\Ss application comments}}{48} +\indexentry{application comments@{\Ss application comments}}{49} +\indexentry{application comments@{\Ss application comments}}{50} +\indexentry{application comments@{\Ss application comments}}{51} +\indexentry{application comments@{\Ss application comments}}{53} +\indexentry{application comments@{\Ss application comments}}{54} +\indexentry{application comments@{\Ss application comments}}{55} +\indexentry{application comments@{\Ss application comments}}{56} +\indexentry{application comments@{\Ss application comments}}{57} +\indexentry{application comments@{\Ss application comments}}{58} +\indexentry{application comments@{\Ss application comments}}{59} +\indexentry{application comments@{\Ss application comments}}{80} +\indexentry{applies@{\Ss applies}}{113} +\indexentry{applies@{\Ss applies}}{114} +\indexentry{assured reproduction area}{161} +\indexentry{atomic string expression@{\it atomic string expression\/}|bf}{69} +\indexentry{atomic string expression|bf}{69} +\indexentry{attribute|bf}{38} +\indexentry{author's organization@{\Ss author's organization}}{180} +\indexentry{authorization@{\Ss authorization}|bf}{181} +\indexentry{authorization@{\Ss authorization}}{166} +\indexentry{authorization@{\Ss authorization}}{179} +\indexentry{authors@{\Ss authors}|bf}{180} +\indexentry{authors@{\Ss authors}}{166} +\indexentry{authors@{\Ss authors}}{179} +\indexentry{authors@{\Ss authors}}{180} diff --git a/indexing/makeindex/test/b209f.idx b/indexing/makeindex/test/b209f.idx new file mode 100644 index 0000000000..a9a47a04e4 --- /dev/null +++ b/indexing/makeindex/test/b209f.idx @@ -0,0 +1,76 @@ +\indexentry{ADD-INTERVAL-CONSTRAINT|ITIDX}{5} +\indexentry{ADD-INTERVAL-CONSTRAINT|ITIDX}{5} +\indexentry{GET-INTERVAL-CONSTRAINT|ITIDX}{5} +\indexentry{:FLOATS|ITIDX}{6} +\indexentry{ADD-INTERVAL-CONSTRAINT|ITIDX}{7} +\indexentry{ADD-INTERVAL-CONSTRAINT|ITIDX}{7} +\indexentry{GET-INTERVAL-CONSTRAINT|ITIDX}{7} +\indexentry{TIMELOGIC-BACKTRACK|ITIDX}{15} +\indexentry{:AUTO-BACKTRACK|ITIDX}{16} +\indexentry{:AUTO-BACKTRACK|ITIDX}{18} +\indexentry{ADD-INTERVAL-CONSTRAINT|ITIDX}{18} +\indexentry{TIMELOGIC-INIT@\CL {(TIMELOGIC-INIT)}}{18} +\indexentry{TIMELOGIC-RESET-PROPS|ITIDX}{18} +\indexentry{DEFINE-CONTEXT@\CL {(DEFINE-CONTEXT {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax name parent\/}}}\relax )}}{18} +\indexentry{DEFINED-CONTEXTS@\CL {(DEFINED-CONTEXTS)}}{18} +\indexentry{CONTEXT-DEFINED-P@\CL {(CONTEXT-DEFINED-P {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}name\/}}}\relax )}}{18} +\indexentry{DELETE-CONTEXT@\CL {(DELETE-CONTEXT {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}name\/}}}\relax )}}{18} +\indexentry{SWITCH-CONTEXT@\CL {(SWITCH-CONTEXT {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}name\/}}}\relax )}}{18} +\indexentry{PUSH-CONTEXT@\CL {(PUSH-CONTEXT)}}{18} +\indexentry{POP-CONTEXT@\CL {(POP-CONTEXT {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax dont-delete-p\/}}}\relax )}}{18} +\indexentry{CONTEXT-TREE@\CL {(CONTEXT-TREE {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss ({\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}name\/}}}\relax T)}}\relax \/}}}\relax )}}{19} +\indexentry{DEFINE-INTERVAL@\CL {(DEFINE-INTERVAL {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax int ref {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Key}}\relax context\/}}}\relax )}}{19} +\indexentry{:AUTO-REFERENCE|ITIDX}{19} +\indexentry{INTERVAL-DEFINED-P@\CL {(INTERVAL-DEFINED-P {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}int\/}}}\relax )}}{19} +\indexentry{DEFINED-INTERVALS@\CL {(DEFINED-INTERVALS)}}{19} +\indexentry{RELATED-INTERVALS@\CL {(RELATED-INTERVALS {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}int {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Key}}\relax context type\/}}}\relax )}}{19} +\indexentry{REFERENCE-INTERVALS@\CL {(REFERENCE-INTERVALS {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}int {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax inverse-p {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Key}}\relax context\/}}}\relax )}}{19} +\indexentry{ADD-INTERVAL-CONSTRAINT@\CL {(ADD-INTERVAL-CONSTRAINT {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}x constraint y {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Key}}\relax context {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss ({\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}type\/}}}\relax :REL)}}\relax \/}}}\relax )}}{19} +\indexentry{:AUTO-DEFINE|ITIDX}{19} +\indexentry{:AUTO-BACKTRACK|ITIDX}{19} +\indexentry{TIMELOGIC-BACKTRACK|ITIDX}{20} +\indexentry{ADD-INTERVAL-CONSTRAINT|ITIDX}{20} +\indexentry{GET-INTERVAL-CONSTRAINT@\CL {(GET-INTERVAL-CONSTRAINT {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}x y {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Key}}\relax context {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss ({\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}type\/}}}\relax :REL)}}\relax \/}}}\relax )}}{20} +\indexentry{TEST-INTERVAL-CONSTRAINT@\CL {(TEST-INTERVAL-CONSTRAINT {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}x constraint y {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Key}}\relax context {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss ({\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}type\/}}}\relax :REL) ({\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}test\/}}}\relax :INTERSECT)}}\relax \/}}}\relax )}}{20} +\indexentry{TIMELOGIC-BACKTRACK@\CL {(TIMELOGIC-BACKTRACK {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax btpoint\/}}}\relax )}}{20} +\indexentry{ADD-INTERVAL-CONSTRAINT|ITIDX}{20} +\indexentry{TIMELOGIC-CHECKPOINT|ITIDX}{20} +\indexentry{TIMELOGIC-CHECKPOINT@\CL {(TIMELOGIC-CHECKPOINT)}}{20} +\indexentry{TIMELOGIC-CHECKPOINT-P@\CL {(TIMELOGIC-CHECKPOINT-P {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax btpoint\/}}}\relax )}}{20} +\indexentry{SHOW-INTERVAL-CONSTRAINTS@\CL {(SHOW-INTERVAL-CONSTRAINTS {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}int {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Key}}\relax with-ints context {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss ({\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}type\/}}}\relax :REL)}}\relax \/}}}\relax )}}{20} +\indexentry{DISPLAY-INTERVALS@\CL {(DISPLAY-INTERVALS {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Key}}\relax ints context {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss ({\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}clear\/}}}\relax T)}}\relax \/}}}\relax )}}{20} +\indexentry{TRACE-INTERVAL|ITIDX}{20} +\indexentry{GRAPH-INTERVALS@\CL {(GRAPH-INTERVALS {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax ints\/}}}\relax )}}{21} +\indexentry{TRACE-INTERVAL@\CL {(TRACE-INTERVAL {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}int {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax with-ints\/}}}\relax )}}{21} +\indexentry{:TRACE|ITIDX}{21} +\indexentry{UNTRACE-INTERVAL@\CL {(UNTRACE-INTERVAL {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax int\/}}}\relax )}}{21} +\indexentry{TRACE-INTERVAL|ITIDX}{21} +\indexentry{TIMELOGIC-STATS@\CL {(TIMELOGIC-STATS)}}{21} +\indexentry{:STATS|ITIDX}{21} +\indexentry{:STATS|ITIDX}{21} +\indexentry{TIMELOGIC-RESET-PROPS@\CL {(TIMELOGIC-RESET-PROPS {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Rest}}\relax keywords\/}}}\relax )}}{21} +\indexentry{TIMELOGIC-PROP@\CL {(TIMELOGIC-PROP {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}propname {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax newpropvalue\/}}}\relax )}}{21} +\indexentry{TIMELOGIC-INIT|ITIDX}{21} +\indexentry{:ALL-PATHS@\CL {:ALL-PATHS}}{22} +\indexentry{:AUTO-BACKTRACK@\CL {:AUTO-BACKTRACK}}{22} +\indexentry{:AUTO-DEFINE@\CL {:AUTO-DEFINE}}{22} +\indexentry{:AUTO-REFERENCE@\CL {:AUTO-REFERENCE}}{22} +\indexentry{:DEPTH-FIRST@\CL {:DEPTH-FIRST}}{22} +\indexentry{:DISPLAY@\CL {:DISPLAY}}{22} +\indexentry{:TRACE|ITIDX}{22} +\indexentry{:TRACE|ITIDX}{22} +\indexentry{:TRACE|ITIDX}{22} +\indexentry{:DURATIONS@\CL {:DURATIONS}}{22} +\indexentry{:FLOATS@\CL {:FLOATS}}{22} +\indexentry{:TOLERANCE|ITIDX}{22} +\indexentry{:LEAVES-ONLY@\CL {:LEAVES-ONLY}}{23} +\indexentry{:RELATIONS@\CL {:RELATIONS}}{23} +\indexentry{:SORT@\CL {:SORT}}{23} +\indexentry{:DISPLAY|ITIDX}{23} +\indexentry{:STATS@\CL {:STATS}}{23} +\indexentry{TIMELOGIC-PROP|ITIDX}{23} +\indexentry{:TOLERANCE@\CL {:TOLERANCE}}{23} +\indexentry{:FLOATS|ITIDX}{23} +\indexentry{:TRACE@\CL {:TRACE}}{23} +\indexentry{:WAIT@\CL {:WAIT}}{24} +\indexentry{:DISPLAY|ITIDX}{24} diff --git a/indexing/makeindex/test/b210a.idx b/indexing/makeindex/test/b210a.idx new file mode 100644 index 0000000000..52a2376ec9 --- /dev/null +++ b/indexing/makeindex/test/b210a.idx @@ -0,0 +1,12 @@ +\indexentry{a}{1} +\indexentry{a!ab}{2} +\indexentry{a!ac}{3} +\indexentry{a!ad}{4} +\indexentry{a!ad!ae}{5} +\indexentry{a!ad!af}{6} +\indexentry{a!ad!ag}{7} +\indexentry{b!bb}{1} +\indexentry{b!bc}{2} +\indexentry{b!bd!be}{3} +\indexentry{b!bd!bf}{4} +\indexentry{b!bd!bg}{5} diff --git a/indexing/makeindex/test/b210a.ist b/indexing/makeindex/test/b210a.ist new file mode 100644 index 0000000000..a3c7c19ccf --- /dev/null +++ b/indexing/makeindex/test/b210a.ist @@ -0,0 +1,10 @@ +item_0 "\n 0\\item " +item_1 "\n 1\\subitem " +item_2 "\n 2\\subsubitem " +item_01 "\n 01\\subitem " +item_x1 "\n x1\\subitem " +item_12 "\n 12\\subsubitem " +item_x2 "\n x2\\subsubitem " +delim_0 "-delim0-" +delim_1 "-delim1-" +delim_2 "-delim2-" diff --git a/indexing/makeindex/test/b211a.idx b/indexing/makeindex/test/b211a.idx new file mode 100644 index 0000000000..a46f2605bf --- /dev/null +++ b/indexing/makeindex/test/b211a.idx @@ -0,0 +1,13 @@ + +\indexentry{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}{256} +\indexentry{yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy}{257} +\indexentry{zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz}{1023} +\indexentry{ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ}{1024} +\indexentry{@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}{1025} +\indexentry{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA}{1023} +\indexentry{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE}{1023} +\indexentry{xyz|bold}{3} +\indexentry{abc|italic}{3} +\indexentry{bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb|BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB}{513} +\indexentry{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE}{1021} +\indexentry{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE}{1005} diff --git a/indexing/makeindex/test/b211b.idx b/indexing/makeindex/test/b211b.idx new file mode 100644 index 0000000000..b4c6022063 --- /dev/null +++ b/indexing/makeindex/test/b211b.idx @@ -0,0 +1,23 @@ +\indexentry{Gleitk"asten}{1} +\indexentry{Gleitkaesten}{2} +\indexentry{Gleitkasten}{3} +\indexentry{l"a"st}{1} +\indexentry{laesst}{2} +\indexentry{Schriftgr"o"sen}{19} +\indexentry{Schriftgroessen}{3} +\indexentry{"asel}{1} +\indexentry{aesel}{2} +\indexentry{"Asel}{10} +\indexentry{Aesel}{20} +\indexentry{"ostrig}{3} +\indexentry{oestrig}{4} +\indexentry{"Ostrig}{30} +\indexentry{Oestrig}{40} +\indexentry{"uber}{5} +\indexentry{ueber}{6} +\indexentry{"Uber}{50} +\indexentry{Ueber}{60} +\indexentry{wa"ser}{7} +\indexentry{wasser}{8} +\indexentry{Wa"ser}{70} +\indexentry{Wasser}{80} diff --git a/indexing/makeindex/test/b211b.ist b/indexing/makeindex/test/b211b.ist new file mode 100644 index 0000000000..3121d6a64d --- /dev/null +++ b/indexing/makeindex/test/b211b.ist @@ -0,0 +1,2 @@ +quote '+' + diff --git a/indexing/makeindex/test/b211c.idx b/indexing/makeindex/test/b211c.idx new file mode 100644 index 0000000000..52a2376ec9 --- /dev/null +++ b/indexing/makeindex/test/b211c.idx @@ -0,0 +1,12 @@ +\indexentry{a}{1} +\indexentry{a!ab}{2} +\indexentry{a!ac}{3} +\indexentry{a!ad}{4} +\indexentry{a!ad!ae}{5} +\indexentry{a!ad!af}{6} +\indexentry{a!ad!ag}{7} +\indexentry{b!bb}{1} +\indexentry{b!bc}{2} +\indexentry{b!bd!be}{3} +\indexentry{b!bd!bf}{4} +\indexentry{b!bd!bg}{5} diff --git a/indexing/makeindex/test/b211c.ist b/indexing/makeindex/test/b211c.ist new file mode 100644 index 0000000000..a3c7c19ccf --- /dev/null +++ b/indexing/makeindex/test/b211c.ist @@ -0,0 +1,10 @@ +item_0 "\n 0\\item " +item_1 "\n 1\\subitem " +item_2 "\n 2\\subsubitem " +item_01 "\n 01\\subitem " +item_x1 "\n x1\\subitem " +item_12 "\n 12\\subsubitem " +item_x2 "\n x2\\subsubitem " +delim_0 "-delim0-" +delim_1 "-delim1-" +delim_2 "-delim2-" diff --git a/indexing/makeindex/test/b211d.idx b/indexing/makeindex/test/b211d.idx new file mode 100644 index 0000000000..d6fcd31f38 --- /dev/null +++ b/indexing/makeindex/test/b211d.idx @@ -0,0 +1,4 @@ +\indexentry{foo|(}{27} +\indexentry{foo|)}{27} +\indexentry{foo|(}{27} +\indexentry{foo|)}{28} diff --git a/indexing/makeindex/test/b211e.idx b/indexing/makeindex/test/b211e.idx new file mode 100644 index 0000000000..d6a9c932aa --- /dev/null +++ b/indexing/makeindex/test/b211e.idx @@ -0,0 +1,257 @@ +\indexentry{"@\char1 (character 1 (octal 1) (hex 1))}{1} +\indexentry{"@\char2 (character 2 (octal 2) (hex 2))}{2} +\indexentry{"@\char3 (character 3 (octal 3) (hex 3))}{3} +\indexentry{"@\char4 (character 4 (octal 4) (hex 4))}{4} +\indexentry{"@\char5 (character 5 (octal 5) (hex 5))}{5} +\indexentry{"@\char6 (character 6 (octal 6) (hex 6))}{6} +\indexentry{"@\char7 (character 7 (octal 7) (hex 7))}{7} +\indexentry{"@\char8 (character 8 (octal 10) (hex 8))}{8} +\indexentry{" @\char9 (character 9 (octal 11) (hex 9))}{9} +\indexentry{" +@\char10 (character 10 (octal 12) (hex a))}{10} +\indexentry{"@\char11 (character 11 (octal 13) (hex b))}{11} +\indexentry{"@\char12 (character 12 (octal 14) (hex c))}{12} +\indexentry{"
@\char13 (character 13 (octal 15) (hex d))}{13} +\indexentry{"@\char14 (character 14 (octal 16) (hex e))}{14} +\indexentry{"@\char15 (character 15 (octal 17) (hex f))}{15} +\indexentry{"@\char16 (character 16 (octal 20) (hex 10))}{16} +\indexentry{"@\char17 (character 17 (octal 21) (hex 11))}{17} +\indexentry{"@\char18 (character 18 (octal 22) (hex 12))}{18} +\indexentry{"@\char19 (character 19 (octal 23) (hex 13))}{19} +\indexentry{"@\char20 (character 20 (octal 24) (hex 14))}{20} +\indexentry{"@\char21 (character 21 (octal 25) (hex 15))}{21} +\indexentry{"@\char22 (character 22 (octal 26) (hex 16))}{22} +\indexentry{"@\char23 (character 23 (octal 27) (hex 17))}{23} +\indexentry{"@\char24 (character 24 (octal 30) (hex 18))}{24} +\indexentry{"@\char25 (character 25 (octal 31) (hex 19))}{25} +\indexentry{"@\char26 (character 26 (octal 32) (hex 1a))}{26} +\indexentry{"@\char27 (character 27 (octal 33) (hex 1b))}{27} +\indexentry{"@\char28 (character 28 (octal 34) (hex 1c))}{28} +\indexentry{"@\char29 (character 29 (octal 35) (hex 1d))}{29} +\indexentry{"@\char30 (character 30 (octal 36) (hex 1e))}{30} +\indexentry{"@\char31 (character 31 (octal 37) (hex 1f))}{31} +\indexentry{" @" (space)}{32} +\indexentry{"!@"! (exclamation point)}{33} +\indexentry{""@"" (quotation mark))}{34} +\indexentry{"#@"\# (sharp sign)}{35} +\indexentry{"$@"\$ (dollar sign)}{36} +\indexentry{"%@"\% (percent sign)}{37} +\indexentry{"&@"\& (ampersand)}{38} +\indexentry{"'@"' (apostrophe)}{39} +\indexentry{"(@"( (left parenthesis)}{40} +\indexentry{")@") (right parenthesis)}{41} +\indexentry{"*@"* (asterisk)}{42} +\indexentry{"+@"+ (plus)}{43} +\indexentry{",@", (comma)}{44} +\indexentry{"-@"- (minus)}{45} +\indexentry{".@". (period)}{46} +\indexentry{"/@"/ (slash)}{47} +\indexentry{0@0}{48} +\indexentry{1@1}{49} +\indexentry{2@2}{50} +\indexentry{3@3}{51} +\indexentry{4@4}{52} +\indexentry{5@5}{53} +\indexentry{6@6}{54} +\indexentry{7@7}{55} +\indexentry{8@8}{56} +\indexentry{9@9}{57} +\indexentry{":@": (colon)}{58} +\indexentry{";@"; (semicolon)}{59} +\indexentry{"<@"$<$ (left angle bracket)}{60} +\indexentry{"=@"= (equals)}{61} +\indexentry{">@"$>$ (right angle bracket)}{62} +\indexentry{"?@"? (query)}{63} +\indexentry{"@@"@ (at sign)}{64} +\indexentry{A@A}{65} +\indexentry{B@B}{66} +\indexentry{C@C}{67} +\indexentry{D@D}{68} +\indexentry{E@E}{69} +\indexentry{F@F}{70} +\indexentry{G@G}{71} +\indexentry{H@H}{72} +\indexentry{I@I}{73} +\indexentry{J@J}{74} +\indexentry{K@K}{75} +\indexentry{L@L}{76} +\indexentry{M@M}{77} +\indexentry{N@N}{78} +\indexentry{O@O}{79} +\indexentry{P@P}{80} +\indexentry{Q@Q}{81} +\indexentry{R@R}{82} +\indexentry{S@S}{83} +\indexentry{T@T}{84} +\indexentry{U@U}{85} +\indexentry{V@V}{86} +\indexentry{W@W}{87} +\indexentry{X@X}{88} +\indexentry{Y@Y}{89} +\indexentry{Z@Z}{90} +\indexentry{"[@"[ (left square bracket)}{91} +\indexentry{"\@"\verb=\= (backslash)}{92} +\indexentry{"]@"] (right square bracket)}{93} +\indexentry{"^@"\verb=^= (caret)}{94} +\indexentry{"_@"\verb=_= (underscore)}{95} +\indexentry{"`@"\verb=~= (grave accent)}{96} +\indexentry{a@a}{97} +\indexentry{b@b}{98} +\indexentry{c@c}{99} +\indexentry{d@d}{100} +\indexentry{e@e}{101} +\indexentry{f@f}{102} +\indexentry{g@g}{103} +\indexentry{h@h}{104} +\indexentry{i@i}{105} +\indexentry{j@j}{106} +\indexentry{k@k}{107} +\indexentry{l@l}{108} +\indexentry{m@m}{109} +\indexentry{n@n}{110} +\indexentry{o@o}{111} +\indexentry{p@p}{112} +\indexentry{q@q}{113} +\indexentry{r@r}{114} +\indexentry{s@s}{115} +\indexentry{t@t}{116} +\indexentry{u@u}{117} +\indexentry{v@v}{118} +\indexentry{w@w}{119} +\indexentry{x@x}{120} +\indexentry{y@y}{121} +\indexentry{z@z}{122} +\indexentry{"{@"\"{ (left brace)}{123} +\indexentry{"|@"\verb="|= (vertical bar)}{124} +\indexentry{"}@"\"} (right brace)}{125} +\indexentry{"~@"\verb=~= (tilde)}{126} +\indexentry{"@"\verb== (DELete)}{127} +\indexentry{€@€ (character 128 (octal 200) (hex 80))}{128} +\indexentry{@ (character 129 (octal 201) (hex 81))}{129} +\indexentry{‚@‚ (character 130 (octal 202) (hex 82))}{130} +\indexentry{ƒ@ƒ (character 131 (octal 203) (hex 83))}{131} +\indexentry{„@„ (character 132 (octal 204) (hex 84))}{132} +\indexentry{…@… (character 133 (octal 205) (hex 85))}{133} +\indexentry{†@† (character 134 (octal 206) (hex 86))}{134} +\indexentry{‡@‡ (character 135 (octal 207) (hex 87))}{135} +\indexentry{ˆ@ˆ (character 136 (octal 210) (hex 88))}{136} +\indexentry{‰@‰ (character 137 (octal 211) (hex 89))}{137} +\indexentry{Š@Š (character 138 (octal 212) (hex 8a))}{138} +\indexentry{‹@‹ (character 139 (octal 213) (hex 8b))}{139} +\indexentry{Œ@Œ (character 140 (octal 214) (hex 8c))}{140} +\indexentry{@ (character 141 (octal 215) (hex 8d))}{141} +\indexentry{Ž@Ž (character 142 (octal 216) (hex 8e))}{142} +\indexentry{@ (character 143 (octal 217) (hex 8f))}{143} +\indexentry{@ (character 144 (octal 220) (hex 90))}{144} +\indexentry{‘@‘ (character 145 (octal 221) (hex 91))}{145} +\indexentry{’@’ (character 146 (octal 222) (hex 92))}{146} +\indexentry{“@“ (character 147 (octal 223) (hex 93))}{147} +\indexentry{”@” (character 148 (octal 224) (hex 94))}{148} +\indexentry{•@• (character 149 (octal 225) (hex 95))}{149} +\indexentry{–@– (character 150 (octal 226) (hex 96))}{150} +\indexentry{—@— (character 151 (octal 227) (hex 97))}{151} +\indexentry{˜@˜ (character 152 (octal 230) (hex 98))}{152} +\indexentry{™@™ (character 153 (octal 231) (hex 99))}{153} +\indexentry{š@š (character 154 (octal 232) (hex 9a))}{154} +\indexentry{›@› (character 155 (octal 233) (hex 9b))}{155} +\indexentry{œ@œ (character 156 (octal 234) (hex 9c))}{156} +\indexentry{@ (character 157 (octal 235) (hex 9d))}{157} +\indexentry{ž@ž (character 158 (octal 236) (hex 9e))}{158} +\indexentry{Ÿ@Ÿ (character 159 (octal 237) (hex 9f))}{159} +\indexentry{ @ (character 160 (octal 240) (hex a0))}{160} +\indexentry{¡@¡ (character 161 (octal 241) (hex a1))}{161} +\indexentry{¢@¢ (character 162 (octal 242) (hex a2))}{162} +\indexentry{£@£ (character 163 (octal 243) (hex a3))}{163} +\indexentry{¤@¤ (character 164 (octal 244) (hex a4))}{164} +\indexentry{¥@¥ (character 165 (octal 245) (hex a5))}{165} +\indexentry{¦@¦ (character 166 (octal 246) (hex a6))}{166} +\indexentry{§@§ (character 167 (octal 247) (hex a7))}{167} +\indexentry{¨@¨ (character 168 (octal 250) (hex a8))}{168} +\indexentry{©@© (character 169 (octal 251) (hex a9))}{169} +\indexentry{ª@ª (character 170 (octal 252) (hex aa))}{170} +\indexentry{«@« (character 171 (octal 253) (hex ab))}{171} +\indexentry{¬@¬ (character 172 (octal 254) (hex ac))}{172} +\indexentry{@ (character 173 (octal 255) (hex ad))}{173} +\indexentry{®@® (character 174 (octal 256) (hex ae))}{174} +\indexentry{¯@¯ (character 175 (octal 257) (hex af))}{175} +\indexentry{°@° (character 176 (octal 260) (hex b0))}{176} +\indexentry{±@± (character 177 (octal 261) (hex b1))}{177} +\indexentry{²@² (character 178 (octal 262) (hex b2))}{178} +\indexentry{³@³ (character 179 (octal 263) (hex b3))}{179} +\indexentry{´@´ (character 180 (octal 264) (hex b4))}{180} +\indexentry{µ@µ (character 181 (octal 265) (hex b5))}{181} +\indexentry{¶@¶ (character 182 (octal 266) (hex b6))}{182} +\indexentry{·@· (character 183 (octal 267) (hex b7))}{183} +\indexentry{¸@¸ (character 184 (octal 270) (hex b8))}{184} +\indexentry{¹@¹ (character 185 (octal 271) (hex b9))}{185} +\indexentry{º@º (character 186 (octal 272) (hex ba))}{186} +\indexentry{»@» (character 187 (octal 273) (hex bb))}{187} +\indexentry{¼@¼ (character 188 (octal 274) (hex bc))}{188} +\indexentry{½@½ (character 189 (octal 275) (hex bd))}{189} +\indexentry{¾@¾ (character 190 (octal 276) (hex be))}{190} +\indexentry{¿@¿ (character 191 (octal 277) (hex bf))}{191} +\indexentry{À@À (character 192 (octal 300) (hex c0))}{192} +\indexentry{Á@Á (character 193 (octal 301) (hex c1))}{193} +\indexentry{Â@ (character 194 (octal 302) (hex c2))}{194} +\indexentry{Ã@à (character 195 (octal 303) (hex c3))}{195} +\indexentry{Ä@Ä (character 196 (octal 304) (hex c4))}{196} +\indexentry{Å@Å (character 197 (octal 305) (hex c5))}{197} +\indexentry{Æ@Æ (character 198 (octal 306) (hex c6))}{198} +\indexentry{Ç@Ç (character 199 (octal 307) (hex c7))}{199} +\indexentry{È@È (character 200 (octal 310) (hex c8))}{200} +\indexentry{É@É (character 201 (octal 311) (hex c9))}{201} +\indexentry{Ê@Ê (character 202 (octal 312) (hex ca))}{202} +\indexentry{Ë@Ë (character 203 (octal 313) (hex cb))}{203} +\indexentry{Ì@Ì (character 204 (octal 314) (hex cc))}{204} +\indexentry{Í@Í (character 205 (octal 315) (hex cd))}{205} +\indexentry{Î@Î (character 206 (octal 316) (hex ce))}{206} +\indexentry{Ï@Ï (character 207 (octal 317) (hex cf))}{207} +\indexentry{Ð@Ð (character 208 (octal 320) (hex d0))}{208} +\indexentry{Ñ@Ñ (character 209 (octal 321) (hex d1))}{209} +\indexentry{Ò@Ò (character 210 (octal 322) (hex d2))}{210} +\indexentry{Ó@Ó (character 211 (octal 323) (hex d3))}{211} +\indexentry{Ô@Ô (character 212 (octal 324) (hex d4))}{212} +\indexentry{Õ@Õ (character 213 (octal 325) (hex d5))}{213} +\indexentry{Ö@Ö (character 214 (octal 326) (hex d6))}{214} +\indexentry{×@× (character 215 (octal 327) (hex d7))}{215} +\indexentry{Ø@Ø (character 216 (octal 330) (hex d8))}{216} +\indexentry{Ù@Ù (character 217 (octal 331) (hex d9))}{217} +\indexentry{Ú@Ú (character 218 (octal 332) (hex da))}{218} +\indexentry{Û@Û (character 219 (octal 333) (hex db))}{219} +\indexentry{Ü@Ü (character 220 (octal 334) (hex dc))}{220} +\indexentry{Ý@Ý (character 221 (octal 335) (hex dd))}{221} +\indexentry{Þ@Þ (character 222 (octal 336) (hex de))}{222} +\indexentry{ß@ß (character 223 (octal 337) (hex df))}{223} +\indexentry{à@à (character 224 (octal 340) (hex e0))}{224} +\indexentry{á@á (character 225 (octal 341) (hex e1))}{225} +\indexentry{â@â (character 226 (octal 342) (hex e2))}{226} +\indexentry{ã@ã (character 227 (octal 343) (hex e3))}{227} +\indexentry{ä@ä (character 228 (octal 344) (hex e4))}{228} +\indexentry{å@å (character 229 (octal 345) (hex e5))}{229} +\indexentry{æ@æ (character 230 (octal 346) (hex e6))}{230} +\indexentry{ç@ç (character 231 (octal 347) (hex e7))}{231} +\indexentry{è@è (character 232 (octal 350) (hex e8))}{232} +\indexentry{é@é (character 233 (octal 351) (hex e9))}{233} +\indexentry{ê@ê (character 234 (octal 352) (hex ea))}{234} +\indexentry{ë@ë (character 235 (octal 353) (hex eb))}{235} +\indexentry{ì@ì (character 236 (octal 354) (hex ec))}{236} +\indexentry{í@í (character 237 (octal 355) (hex ed))}{237} +\indexentry{î@î (character 238 (octal 356) (hex ee))}{238} +\indexentry{ï@ï (character 239 (octal 357) (hex ef))}{239} +\indexentry{ð@ð (character 240 (octal 360) (hex f0))}{240} +\indexentry{ñ@ñ (character 241 (octal 361) (hex f1))}{241} +\indexentry{ò@ò (character 242 (octal 362) (hex f2))}{242} +\indexentry{ó@ó (character 243 (octal 363) (hex f3))}{243} +\indexentry{ô@ô (character 244 (octal 364) (hex f4))}{244} +\indexentry{õ@õ (character 245 (octal 365) (hex f5))}{245} +\indexentry{ö@ö (character 246 (octal 366) (hex f6))}{246} +\indexentry{÷@÷ (character 247 (octal 367) (hex f7))}{247} +\indexentry{ø@ø (character 248 (octal 370) (hex f8))}{248} +\indexentry{ù@ù (character 249 (octal 371) (hex f9))}{249} +\indexentry{ú@ú (character 250 (octal 372) (hex fa))}{250} +\indexentry{û@û (character 251 (octal 373) (hex fb))}{251} +\indexentry{ü@ü (character 252 (octal 374) (hex fc))}{252} +\indexentry{ý@ý (character 253 (octal 375) (hex fd))}{253} +\indexentry{þ@þ (character 254 (octal 376) (hex fe))}{254} +\indexentry{ÿ@ÿ (character 255 (octal 377) (hex ff))}{255} + diff --git a/indexing/makeindex/test/b211e.ltx b/indexing/makeindex/test/b211e.ltx new file mode 100644 index 0000000000..f274ad7078 --- /dev/null +++ b/indexing/makeindex/test/b211e.ltx @@ -0,0 +1,13 @@ +% -*-latex-*- +% Document name: /u/beebe/tex/makeindex/2-11/makeindex/test/b211e.ltx +% Creator: Nelson H. F. Beebe [beebe@rios.math.utah.edu] +% Creation Date: Tue Aug 6 11:14:52 1991 +\documentstyle[makeidx]{article} +\begin{document} +\typeout{===============================================================} +\typeout{=== LaTeX will complain that DELete entry (127) is invalid. ===} +\typeout{=== Just type a RETurn to continue ===} +\typeout{===============================================================} +\hfuzz=10pt +\printindex +\end{document} diff --git a/indexing/makeindex/test/b211f.idx b/indexing/makeindex/test/b211f.idx new file mode 100644 index 0000000000..0b39a307a9 --- /dev/null +++ b/indexing/makeindex/test/b211f.idx @@ -0,0 +1,4 @@ +\indexentry{C++ language|(}{7-2} +\indexentry{C++ language|)}{7-6} +\indexentry{C++ language|(}{7-6} +\indexentry{C++ language|)}{7-10} diff --git a/indexing/makeindex/test/b211g.idx b/indexing/makeindex/test/b211g.idx new file mode 100644 index 0000000000..bd812c4639 --- /dev/null +++ b/indexing/makeindex/test/b211g.idx @@ -0,0 +1,39 @@ +\indexentry{aa@{\it aa\/}!bb@{\it bb\/}!cc@{\it cc\/}}{1} +\indexentry{alpha!beta!gamma}{10} +\indexentry{alpha!beta}{3} +\indexentry{alpha"@beta}{1} +\indexentry{alpha"@beta}{1} +\indexentry{alpha|(}{1} +\indexentry{alpha|)}{5} +\indexentry{alpha}{1} +\indexentry{beta@{\it beta\/}}{1} +\indexentry{beta|(bold}{1} +\indexentry{beta|)}{5} +\indexentry{delta|(}{i} +\indexentry{delta|)}{7} +\indexentry{delta|see{beta}}{1} +\indexentry{delta}{3} +\indexentry{delta}{iv} +\indexentry{epsilon|(}{1} +\indexentry{epsilon|)}{5} +\indexentry{eta|(}{1} +\indexentry{eta|)}{5} +\indexentry{eta|bold}{3} +\indexentry{f\"ur}{1} +\indexentry{foo|bold}{5} +\indexentry{foo|italic}{5} +\indexentry{foo|roman}{5} +\indexentry{foo|sanserif}{5} +\indexentry{foo|slanted}{5} +\indexentry{foo|smallcaps}{5} +\indexentry{foo}{5} +\indexentry{gamma|(}{1} +\indexentry{gamma|)}{5} +\indexentry{gamma|bold}{1} +\indexentry{gamma|bold}{3} +\indexentry{theta|(}{i} +\indexentry{theta|)}{7} +\indexentry{theta}{3} +\indexentry{theta}{iv} +\indexentry{zeta|(bold}{1} +\indexentry{zeta|)}{5} diff --git a/indexing/makeindex/test/b211h.idx b/indexing/makeindex/test/b211h.idx new file mode 100644 index 0000000000..793437f25b --- /dev/null +++ b/indexing/makeindex/test/b211h.idx @@ -0,0 +1,256 @@ +\indexentry{"@\char1 (character 1 (octal 1) (hex 1))}{1} +\indexentry{"@\char2 (character 2 (octal 2) (hex 2))}{2} +\indexentry{"@\char3 (character 3 (octal 3) (hex 3))}{3} +\indexentry{"@\char4 (character 4 (octal 4) (hex 4))}{4} +\indexentry{"@\char5 (character 5 (octal 5) (hex 5))}{5} +\indexentry{"@\char6 (character 6 (octal 6) (hex 6))}{6} +\indexentry{"@\char7 (character 7 (octal 7) (hex 7))}{7} +\indexentry{"@\char8 (character 8 (octal 10) (hex 8))}{8} +\indexentry{" @\char9 (character 9 (octal 11) (hex 9))}{9} +\indexentry{" +@\char10 (character 10 (octal 12) (hex a))}{10} +\indexentry{"@\char11 (character 11 (octal 13) (hex b))}{11} +\indexentry{"@\char12 (character 12 (octal 14) (hex c))}{12} +\indexentry{"
@\char13 (character 13 (octal 15) (hex d))}{13} +\indexentry{"@\char14 (character 14 (octal 16) (hex e))}{14} +\indexentry{"@\char15 (character 15 (octal 17) (hex f))}{15} +\indexentry{"@\char16 (character 16 (octal 20) (hex 10))}{16} +\indexentry{"@\char17 (character 17 (octal 21) (hex 11))}{17} +\indexentry{"@\char18 (character 18 (octal 22) (hex 12))}{18} +\indexentry{"@\char19 (character 19 (octal 23) (hex 13))}{19} +\indexentry{"@\char20 (character 20 (octal 24) (hex 14))}{20} +\indexentry{"@\char21 (character 21 (octal 25) (hex 15))}{21} +\indexentry{"@\char22 (character 22 (octal 26) (hex 16))}{22} +\indexentry{"@\char23 (character 23 (octal 27) (hex 17))}{23} +\indexentry{"@\char24 (character 24 (octal 30) (hex 18))}{24} +\indexentry{"@\char25 (character 25 (octal 31) (hex 19))}{25} + +\indexentry{"@\char27 (character 27 (octal 33) (hex 1b))}{27} +\indexentry{"@\char28 (character 28 (octal 34) (hex 1c))}{28} +\indexentry{"@\char29 (character 29 (octal 35) (hex 1d))}{29} +\indexentry{"@\char30 (character 30 (octal 36) (hex 1e))}{30} +\indexentry{"@\char31 (character 31 (octal 37) (hex 1f))}{31} +\indexentry{" @" (space)}{32} +\indexentry{"!@"! (exclamation point)}{33} +\indexentry{""@"" (quotation mark))}{34} +\indexentry{"#@"\# (sharp sign)}{35} +\indexentry{"$@"\$ (dollar sign)}{36} +\indexentry{"%@"\% (percent sign)}{37} +\indexentry{"&@"\& (ampersand)}{38} +\indexentry{"'@"' (apostrophe)}{39} +\indexentry{"(@"( (left parenthesis)}{40} +\indexentry{")@") (right parenthesis)}{41} +\indexentry{"*@"* (asterisk)}{42} +\indexentry{"+@"+ (plus)}{43} +\indexentry{",@", (comma)}{44} +\indexentry{"-@"- (minus)}{45} +\indexentry{".@". (period)}{46} +\indexentry{"/@"/ (slash)}{47} +\indexentry{0@0}{48} +\indexentry{1@1}{49} +\indexentry{2@2}{50} +\indexentry{3@3}{51} +\indexentry{4@4}{52} +\indexentry{5@5}{53} +\indexentry{6@6}{54} +\indexentry{7@7}{55} +\indexentry{8@8}{56} +\indexentry{9@9}{57} +\indexentry{":@": (colon)}{58} +\indexentry{";@"; (semicolon)}{59} +\indexentry{"<@"$<$ (left angle bracket)}{60} +\indexentry{"=@"= (equals)}{61} +\indexentry{">@"$>$ (right angle bracket)}{62} +\indexentry{"?@"? (query)}{63} +\indexentry{"@@"@ (at sign)}{64} +\indexentry{A@A}{65} +\indexentry{B@B}{66} +\indexentry{C@C}{67} +\indexentry{D@D}{68} +\indexentry{E@E}{69} +\indexentry{F@F}{70} +\indexentry{G@G}{71} +\indexentry{H@H}{72} +\indexentry{I@I}{73} +\indexentry{J@J}{74} +\indexentry{K@K}{75} +\indexentry{L@L}{76} +\indexentry{M@M}{77} +\indexentry{N@N}{78} +\indexentry{O@O}{79} +\indexentry{P@P}{80} +\indexentry{Q@Q}{81} +\indexentry{R@R}{82} +\indexentry{S@S}{83} +\indexentry{T@T}{84} +\indexentry{U@U}{85} +\indexentry{V@V}{86} +\indexentry{W@W}{87} +\indexentry{X@X}{88} +\indexentry{Y@Y}{89} +\indexentry{Z@Z}{90} +\indexentry{"[@"[ (left square bracket)}{91} +\indexentry{"\@"\verb=\= (backslash)}{92} +\indexentry{"]@"] (right square bracket)}{93} +\indexentry{"^@"\verb=^= (caret)}{94} +\indexentry{"_@"\verb=_= (underscore)}{95} +\indexentry{"`@"\verb=~= (grave accent)}{96} +\indexentry{a@a}{97} +\indexentry{b@b}{98} +\indexentry{c@c}{99} +\indexentry{d@d}{100} +\indexentry{e@e}{101} +\indexentry{f@f}{102} +\indexentry{g@g}{103} +\indexentry{h@h}{104} +\indexentry{i@i}{105} +\indexentry{j@j}{106} +\indexentry{k@k}{107} +\indexentry{l@l}{108} +\indexentry{m@m}{109} +\indexentry{n@n}{110} +\indexentry{o@o}{111} +\indexentry{p@p}{112} +\indexentry{q@q}{113} +\indexentry{r@r}{114} +\indexentry{s@s}{115} +\indexentry{t@t}{116} +\indexentry{u@u}{117} +\indexentry{v@v}{118} +\indexentry{w@w}{119} +\indexentry{x@x}{120} +\indexentry{y@y}{121} +\indexentry{z@z}{122} +\indexentry{"{@"\"{ (left brace)}{123} +\indexentry{"|@"\verb="|= (vertical bar)}{124} +\indexentry{"}@"\"} (right brace)}{125} +\indexentry{"~@"\verb=~= (tilde)}{126} +\indexentry{"@"\verb== (DELete)}{127} +\indexentry{€@€ (character 128 (octal 200) (hex 80))}{128} +\indexentry{@ (character 129 (octal 201) (hex 81))}{129} +\indexentry{‚@‚ (character 130 (octal 202) (hex 82))}{130} +\indexentry{ƒ@ƒ (character 131 (octal 203) (hex 83))}{131} +\indexentry{„@„ (character 132 (octal 204) (hex 84))}{132} +\indexentry{…@… (character 133 (octal 205) (hex 85))}{133} +\indexentry{†@† (character 134 (octal 206) (hex 86))}{134} +\indexentry{‡@‡ (character 135 (octal 207) (hex 87))}{135} +\indexentry{ˆ@ˆ (character 136 (octal 210) (hex 88))}{136} +\indexentry{‰@‰ (character 137 (octal 211) (hex 89))}{137} +\indexentry{Š@Š (character 138 (octal 212) (hex 8a))}{138} +\indexentry{‹@‹ (character 139 (octal 213) (hex 8b))}{139} +\indexentry{Œ@Œ (character 140 (octal 214) (hex 8c))}{140} +\indexentry{@ (character 141 (octal 215) (hex 8d))}{141} +\indexentry{Ž@Ž (character 142 (octal 216) (hex 8e))}{142} +\indexentry{@ (character 143 (octal 217) (hex 8f))}{143} +\indexentry{@ (character 144 (octal 220) (hex 90))}{144} +\indexentry{‘@‘ (character 145 (octal 221) (hex 91))}{145} +\indexentry{’@’ (character 146 (octal 222) (hex 92))}{146} +\indexentry{“@“ (character 147 (octal 223) (hex 93))}{147} +\indexentry{”@” (character 148 (octal 224) (hex 94))}{148} +\indexentry{•@• (character 149 (octal 225) (hex 95))}{149} +\indexentry{–@– (character 150 (octal 226) (hex 96))}{150} +\indexentry{—@— (character 151 (octal 227) (hex 97))}{151} +\indexentry{˜@˜ (character 152 (octal 230) (hex 98))}{152} +\indexentry{™@™ (character 153 (octal 231) (hex 99))}{153} +\indexentry{š@š (character 154 (octal 232) (hex 9a))}{154} +\indexentry{›@› (character 155 (octal 233) (hex 9b))}{155} +\indexentry{œ@œ (character 156 (octal 234) (hex 9c))}{156} +\indexentry{@ (character 157 (octal 235) (hex 9d))}{157} +\indexentry{ž@ž (character 158 (octal 236) (hex 9e))}{158} +\indexentry{Ÿ@Ÿ (character 159 (octal 237) (hex 9f))}{159} +\indexentry{ @ (character 160 (octal 240) (hex a0))}{160} +\indexentry{¡@¡ (character 161 (octal 241) (hex a1))}{161} +\indexentry{¢@¢ (character 162 (octal 242) (hex a2))}{162} +\indexentry{£@£ (character 163 (octal 243) (hex a3))}{163} +\indexentry{¤@¤ (character 164 (octal 244) (hex a4))}{164} +\indexentry{¥@¥ (character 165 (octal 245) (hex a5))}{165} +\indexentry{¦@¦ (character 166 (octal 246) (hex a6))}{166} +\indexentry{§@§ (character 167 (octal 247) (hex a7))}{167} +\indexentry{¨@¨ (character 168 (octal 250) (hex a8))}{168} +\indexentry{©@© (character 169 (octal 251) (hex a9))}{169} +\indexentry{ª@ª (character 170 (octal 252) (hex aa))}{170} +\indexentry{«@« (character 171 (octal 253) (hex ab))}{171} +\indexentry{¬@¬ (character 172 (octal 254) (hex ac))}{172} +\indexentry{@ (character 173 (octal 255) (hex ad))}{173} +\indexentry{®@® (character 174 (octal 256) (hex ae))}{174} +\indexentry{¯@¯ (character 175 (octal 257) (hex af))}{175} +\indexentry{°@° (character 176 (octal 260) (hex b0))}{176} +\indexentry{±@± (character 177 (octal 261) (hex b1))}{177} +\indexentry{²@² (character 178 (octal 262) (hex b2))}{178} +\indexentry{³@³ (character 179 (octal 263) (hex b3))}{179} +\indexentry{´@´ (character 180 (octal 264) (hex b4))}{180} +\indexentry{µ@µ (character 181 (octal 265) (hex b5))}{181} +\indexentry{¶@¶ (character 182 (octal 266) (hex b6))}{182} +\indexentry{·@· (character 183 (octal 267) (hex b7))}{183} +\indexentry{¸@¸ (character 184 (octal 270) (hex b8))}{184} +\indexentry{¹@¹ (character 185 (octal 271) (hex b9))}{185} +\indexentry{º@º (character 186 (octal 272) (hex ba))}{186} +\indexentry{»@» (character 187 (octal 273) (hex bb))}{187} +\indexentry{¼@¼ (character 188 (octal 274) (hex bc))}{188} +\indexentry{½@½ (character 189 (octal 275) (hex bd))}{189} +\indexentry{¾@¾ (character 190 (octal 276) (hex be))}{190} +\indexentry{¿@¿ (character 191 (octal 277) (hex bf))}{191} +\indexentry{À@À (character 192 (octal 300) (hex c0))}{192} +\indexentry{Á@Á (character 193 (octal 301) (hex c1))}{193} +\indexentry{Â@ (character 194 (octal 302) (hex c2))}{194} +\indexentry{Ã@à (character 195 (octal 303) (hex c3))}{195} +\indexentry{Ä@Ä (character 196 (octal 304) (hex c4))}{196} +\indexentry{Å@Å (character 197 (octal 305) (hex c5))}{197} +\indexentry{Æ@Æ (character 198 (octal 306) (hex c6))}{198} +\indexentry{Ç@Ç (character 199 (octal 307) (hex c7))}{199} +\indexentry{È@È (character 200 (octal 310) (hex c8))}{200} +\indexentry{É@É (character 201 (octal 311) (hex c9))}{201} +\indexentry{Ê@Ê (character 202 (octal 312) (hex ca))}{202} +\indexentry{Ë@Ë (character 203 (octal 313) (hex cb))}{203} +\indexentry{Ì@Ì (character 204 (octal 314) (hex cc))}{204} +\indexentry{Í@Í (character 205 (octal 315) (hex cd))}{205} +\indexentry{Î@Î (character 206 (octal 316) (hex ce))}{206} +\indexentry{Ï@Ï (character 207 (octal 317) (hex cf))}{207} +\indexentry{Ð@Ð (character 208 (octal 320) (hex d0))}{208} +\indexentry{Ñ@Ñ (character 209 (octal 321) (hex d1))}{209} +\indexentry{Ò@Ò (character 210 (octal 322) (hex d2))}{210} +\indexentry{Ó@Ó (character 211 (octal 323) (hex d3))}{211} +\indexentry{Ô@Ô (character 212 (octal 324) (hex d4))}{212} +\indexentry{Õ@Õ (character 213 (octal 325) (hex d5))}{213} +\indexentry{Ö@Ö (character 214 (octal 326) (hex d6))}{214} +\indexentry{×@× (character 215 (octal 327) (hex d7))}{215} +\indexentry{Ø@Ø (character 216 (octal 330) (hex d8))}{216} +\indexentry{Ù@Ù (character 217 (octal 331) (hex d9))}{217} +\indexentry{Ú@Ú (character 218 (octal 332) (hex da))}{218} +\indexentry{Û@Û (character 219 (octal 333) (hex db))}{219} +\indexentry{Ü@Ü (character 220 (octal 334) (hex dc))}{220} +\indexentry{Ý@Ý (character 221 (octal 335) (hex dd))}{221} +\indexentry{Þ@Þ (character 222 (octal 336) (hex de))}{222} +\indexentry{ß@ß (character 223 (octal 337) (hex df))}{223} +\indexentry{à@à (character 224 (octal 340) (hex e0))}{224} +\indexentry{á@á (character 225 (octal 341) (hex e1))}{225} +\indexentry{â@â (character 226 (octal 342) (hex e2))}{226} +\indexentry{ã@ã (character 227 (octal 343) (hex e3))}{227} +\indexentry{ä@ä (character 228 (octal 344) (hex e4))}{228} +\indexentry{å@å (character 229 (octal 345) (hex e5))}{229} +\indexentry{æ@æ (character 230 (octal 346) (hex e6))}{230} +\indexentry{ç@ç (character 231 (octal 347) (hex e7))}{231} +\indexentry{è@è (character 232 (octal 350) (hex e8))}{232} +\indexentry{é@é (character 233 (octal 351) (hex e9))}{233} +\indexentry{ê@ê (character 234 (octal 352) (hex ea))}{234} +\indexentry{ë@ë (character 235 (octal 353) (hex eb))}{235} +\indexentry{ì@ì (character 236 (octal 354) (hex ec))}{236} +\indexentry{í@í (character 237 (octal 355) (hex ed))}{237} +\indexentry{î@î (character 238 (octal 356) (hex ee))}{238} +\indexentry{ï@ï (character 239 (octal 357) (hex ef))}{239} +\indexentry{ð@ð (character 240 (octal 360) (hex f0))}{240} +\indexentry{ñ@ñ (character 241 (octal 361) (hex f1))}{241} +\indexentry{ò@ò (character 242 (octal 362) (hex f2))}{242} +\indexentry{ó@ó (character 243 (octal 363) (hex f3))}{243} +\indexentry{ô@ô (character 244 (octal 364) (hex f4))}{244} +\indexentry{õ@õ (character 245 (octal 365) (hex f5))}{245} +\indexentry{ö@ö (character 246 (octal 366) (hex f6))}{246} +\indexentry{÷@÷ (character 247 (octal 367) (hex f7))}{247} +\indexentry{ø@ø (character 248 (octal 370) (hex f8))}{248} +\indexentry{ù@ù (character 249 (octal 371) (hex f9))}{249} +\indexentry{ú@ú (character 250 (octal 372) (hex fa))}{250} +\indexentry{û@û (character 251 (octal 373) (hex fb))}{251} +\indexentry{ü@ü (character 252 (octal 374) (hex fc))}{252} +\indexentry{ý@ý (character 253 (octal 375) (hex fd))}{253} +\indexentry{þ@þ (character 254 (octal 376) (hex fe))}{254} +\indexentry{ÿ@ÿ (character 255 (octal 377) (hex ff))}{255} diff --git a/indexing/makeindex/test/b211h.ltx b/indexing/makeindex/test/b211h.ltx new file mode 100644 index 0000000000..77607a5c3c --- /dev/null +++ b/indexing/makeindex/test/b211h.ltx @@ -0,0 +1,13 @@ +% -*-latex-*- +% Document name: /u/beebe/tex/makeindex/2-11/makeindex/test/b211h.ltx +% Creator: Nelson H. F. Beebe [beebe@rios.math.utah.edu] +% Creation Date: Tue Aug 6 11:14:52 1991 +\documentstyle[makeidx]{article} +\begin{document} +\typeout{===============================================================} +\typeout{=== LaTeX will complain that DELete entry (127) is invalid. ===} +\typeout{=== Just type a RETurn to continue ===} +\typeout{===============================================================} +\hfuzz=10pt +\printindex +\end{document} diff --git a/indexing/makeindex/test/book.idx b/indexing/makeindex/test/book.idx new file mode 100644 index 0000000000..dd362cece3 --- /dev/null +++ b/indexing/makeindex/test/book.idx @@ -0,0 +1,4241 @@ +\indexentry{Ada}{i} +\indexentry{Department of Defense}{i} +\indexentry{Sun Microsystems Inc.}{i} +\indexentry{Bell Laboratories}{i} +\indexentry{Moto-Oka, Tohru}{i} +\indexentry{war!Technology War}{v} +\indexentry{war!technology}{v} +\indexentry{information technology}{v} +\indexentry{war!nuclear}{v} +\indexentry{war!conventional}{v} +\indexentry{war}{v} +\indexentry{war!conventional}{v} +\indexentry{war!nuclear}{v} +\indexentry{standard of living}{v} +\indexentry{weapons}{v} +\indexentry{capitalism}{v} +\indexentry{war!Technology War}{v} +\indexentry{World War II}{v} +\indexentry{United States}{v} +\indexentry{United States}{v} +\indexentry{agriculture}{v} +\indexentry{United States}{v} +\indexentry{Asia}{vi} +\indexentry{United States}{vi} +\indexentry{Vietnam War}{vi} +\indexentry{unemployment}{vi} +\indexentry{war!Technology War}{vi} +\indexentry{war!Technology War}{vi} +\indexentry{weapons}{vi} +\indexentry{information technology}{vi} +\indexentry{information technology}{vi} +\indexentry{engineering}{vi} +\indexentry{intellectual property!laws}{vi} +\indexentry{capital}{vi} +\indexentry{education}{vi} +\indexentry{education}{vi} +\indexentry{Europe}{vi} +\indexentry{information technology}{vi} +\indexentry{education}{vi} +\indexentry{Strategic Computing Initiative}{vii} +\indexentry{Strategic Computing Initiative}{vii} +\indexentry{Strategic Defense Initiative}{vii} +\indexentry{ICOT}{vii} +\indexentry{Fifth Generation Computer Program}{vii} +\indexentry{information technology}{vii} +\indexentry{ESPRIT}{vii} +\indexentry{United States}{vii} +\indexentry{Brandin, David~H.}{vii} +\indexentry{Department of Commerce}{vii} +\indexentry{computer science}{vii} +\indexentry{Harrison, Michael~A.}{vii} +\indexentry{computer science}{vii} +\indexentry{information technology}{vii} +\indexentry{Japan}{vii} +\indexentry{China}{vii} +\indexentry{Europe}{vii} +\indexentry{United States}{vii} +\indexentry{Buchanan, Ian}{vii} +\indexentry{Chen, Pehong}{vii} +\indexentry{Coker, John}{vii} +\indexentry{Goldberg, Adele J.}{vii} +\indexentry{Jacob, Jean Paul}{vii} +\indexentry{Jacobs, Michael A.}{vii} +\indexentry{Kahn, Robert E.}{vii} +\indexentry{Kelly, Erin A.}{vii} +\indexentry{Kelly, Joseph}{vii} +\indexentry{Kobayashi, Hishashi}{vii} +\indexentry{Kuo, Franklin F.}{vii} +\indexentry{McCarrell, Jeff}{vii} +\indexentry{Miller, William F.}{vii} +\indexentry{Prestowitz, Clyde}{vii} +\indexentry{Procter, Steven}{vii} +\indexentry{Roubine, Olivier}{vii} +\indexentry{Rubin, Harry}{vii} +\indexentry{Telecki, George}{vii} +\indexentry{Turner, Fran Peche}{vii} +\indexentry{Association for Computing Machinery}{vii} +\indexentry{Cezar Industries, Ltd.}{vii} +\indexentry{University of California at Berkeley}{vii} +\indexentry{National Academy of Sciences}{vii} +\indexentry{National Science Foundation}{vii} +\indexentry{Department of Commerce}{vii} +\indexentry{Department of Defense}{vii} +\indexentry{DARPA}{vii} +\indexentry{DARPA}{vii} +\indexentry{SRI International}{viii} +\indexentry{Brandin, Ellen}{viii} +\indexentry{Harrison, Susan G.}{viii} +\indexentry{Graham, Susan L.}{viii} +\indexentry{Brandin, David~H.}{viii} +\indexentry{Harrison, Michael~A.}{viii} +\indexentry{United States}{3} +\indexentry{Japan}{3} +\indexentry{IBM}{3} +\indexentry{artificial intelligence}{3} +\indexentry{computer}{3} +\indexentry{artificial intelligence}{3} +\indexentry{knowledge engineering}{3} +\indexentry{United States}{3} +\indexentry{Department of Defense}{3} +\indexentry{Department of Justice}{3} +\indexentry{antitrust laws}{3} +\indexentry{antitrust laws}{3} +\indexentry{European Economic Community}{3} +\indexentry{ESPRIT}{3} +\indexentry{information technology}{3} +\indexentry{ESPRIT}{3} +\indexentry{United States}{3} +\indexentry{International Traffic in Arms Regulations}{3} +\indexentry{information technology}{3} +\indexentry{engineering}{3} +\indexentry{information technology}{3} +\indexentry{Great Britain}{4} +\indexentry{Great Britain}{4} +\indexentry{export control}{4} +\indexentry{standard of living}{4} +\indexentry{Department of Commerce}{4} +\indexentry{Japan}{4} +\indexentry{Europe}{4} +\indexentry{International Computers Ltd.}{4} +\indexentry{Japan}{4} +\indexentry{Europe}{4} +\indexentry{United States}{4} +\indexentry{employment}{4} +\indexentry{smokestack industries}{4} +\indexentry{United States}{4} +\indexentry{unemployment}{4} +\indexentry{war!Technology War}{5} +\indexentry{Japan}{5} +\indexentry{World War II}{5} +\indexentry{Soviet Union}{5} +\indexentry{Soviet Union}{5} +\indexentry{war!Technology War}{5} +\indexentry{information technology}{5} +\indexentry{war!Technology War}{5} +\indexentry{United States}{5} +\indexentry{Japan}{5} +\indexentry{Soviet Union}{5} +\indexentry{computer}{5} +\indexentry{education}{5} +\indexentry{computer!literacy}{5} +\indexentry{computer science}{5} +\indexentry{Great Britain!Very High Performance Integrated Circuit Program}{5} +\indexentry{Soviet Union}{5} +\indexentry{Soviet Union}{5} +\indexentry{Nobel Prize}{5} +\indexentry{computer}{5} +\indexentry{United States}{5} +\indexentry{information technology}{5} +\indexentry{information technology}{5} +\indexentry{communications}{6} +\indexentry{information technology}{6} +\indexentry{information technology}{6} +\indexentry{information technology}{6} +\indexentry{software!market}{6} +\indexentry{information technology}{6} +\indexentry{employment}{6} +\indexentry{United States}{6} +\indexentry{information technology}{6} +\indexentry{Europe}{6} +\indexentry{Japan}{6} +\indexentry{United States}{6} +\indexentry{unemployment}{6} +\indexentry{marketshare}{6} +\indexentry{employment}{6} +\indexentry{savings}{6} +\indexentry{marketshare}{6} +\indexentry{information technology}{6} +\indexentry{automobile}{7} +\indexentry{communications}{7} +\indexentry{computer}{7} +\indexentry{communications}{7} +\indexentry{service economy}{7} +\indexentry{communications}{7} +\indexentry{Department of Justice}{7} +\indexentry{IBM}{7} +\indexentry{marketshare}{7} +\indexentry{marketshare}{7} +\indexentry{marketshare}{7} +\indexentry{research and development}{7} +\indexentry{marketshare}{7} +\indexentry{information technology}{7} +\indexentry{capital}{7} +\indexentry{capital}{7} +\indexentry{capital}{7} +\indexentry{information technology}{7} +\indexentry{information technology}{8} +\indexentry{United States}{8} +\indexentry{information technology}{8} +\indexentry{computer}{8} +\indexentry{World War II}{8} +\indexentry{computer}{8} +\indexentry{UNIVAC!Model I}{8} +\indexentry{computer}{8} +\indexentry{computer}{8} +\indexentry{weapons!nuclear}{8} +\indexentry{Carter, President Jimmy}{8} +\indexentry{Federal Automatic Data Processing Reorganization Study}{8} +\indexentry{Department of Defense}{8} +\indexentry{computer}{8} +\indexentry{weapons}{8} +\indexentry{computer}{8} +\indexentry{computer}{8} +\indexentry{computer}{8} +\indexentry{United States!Army}{8} +\indexentry{computer}{9} +\indexentry{World War II}{9} +\indexentry{computer}{9} +\indexentry{encryption}{9} +\indexentry{communications}{9} +\indexentry{National Security Agency}{9} +\indexentry{computer}{9} +\indexentry{information technology}{9} +\indexentry{weapons}{9} +\indexentry{information technology}{9} +\indexentry{Strategic Defense Initiative}{9} +\indexentry{computer}{9} +\indexentry{computer}{9} +\indexentry{computer}{9} +\indexentry{Air Traffic Control}{9} +\indexentry{microelectronics}{9} +\indexentry{supercomputer}{9} +\indexentry{software}{9} +\indexentry{Air Traffic Control}{9} +\indexentry{computer}{9} +\indexentry{Federal Aviation Agency}{9} +\indexentry{computer}{9} +\indexentry{computer}{9} +\indexentry{microelectronics}{10} +\indexentry{computer!architecture}{10} +\indexentry{software!engineering}{10} +\indexentry{war!Technology War}{10} +\indexentry{World War II}{10} +\indexentry{China!Cultural Revolution}{10} +\indexentry{war!Technology War}{10} +\indexentry{marketshare}{11} +\indexentry{engineering}{11} +\indexentry{hardware}{11} +\indexentry{software}{11} +\indexentry{microelectronics}{11} +\indexentry{artificial intelligence}{11} +\indexentry{technology transfer}{11} +\indexentry{education}{11} +\indexentry{United States}{11} +\indexentry{war!Technology War}{13} +\indexentry{Europe}{13} +\indexentry{Japan}{13} +\indexentry{employment}{13} +\indexentry{war!Technology War}{13} +\indexentry{innovation}{13} +\indexentry{physics}{13} +\indexentry{biotechnology}{13} +\indexentry{computer science}{13} +\indexentry{IBM}{14} +\indexentry{NEC}{14} +\indexentry{engineering}{14} +\indexentry{information technology}{14} +\indexentry{engineering}{14} +\indexentry{transistor}{14} +\indexentry{Department of Commerce}{14} +\indexentry{Department of Commerce}{14} +\indexentry{JTECH}{14} +\indexentry{engineering}{14} +\indexentry{computer science}{14} +\indexentry{microelectronics}{14} +\indexentry{optoelectronics}{14} +\indexentry{mechatronics}{14} +\indexentry{robotics}{14} +\indexentry{biotechnology}{14} +\indexentry{engineering}{15} +\indexentry{Japan}{15} +\indexentry{United States}{15} +\indexentry{Japan}{15} +\indexentry{United States}{15} +\indexentry{engineering}{15} +\indexentry{United States}{15} +\indexentry{United States}{15} +\indexentry{engineering}{15} +\indexentry{optoelectronics}{15} +\indexentry{United States}{15} +\indexentry{United States}{15} +\indexentry{optics}{15} +\indexentry{software}{15} +\indexentry{biotechnology}{15} +\indexentry{United States}{15} +\indexentry{robotics}{15} +\indexentry{United States}{15} +\indexentry{software}{15} +\indexentry{United States}{15} +\indexentry{Japan}{15} +\indexentry{Japan}{15} +\indexentry{employment}{15} +\indexentry{innovation}{15} +\indexentry{employment}{16} +\indexentry{Germany}{16} +\indexentry{World War II}{16} +\indexentry{Europe}{16} +\indexentry{Japan}{16} +\indexentry{United States}{16} +\indexentry{Great Britain}{16} +\indexentry{standard of living}{16} +\indexentry{capital}{16} +\indexentry{capital}{16} +\indexentry{United States}{16} +\indexentry{Japan}{16} +\indexentry{capital}{16} +\indexentry{Japan}{16} +\indexentry{microelectronics}{16} +\indexentry{microelectronics}{16} +\indexentry{RAM}{16} +\indexentry{capital}{17} +\indexentry{Japan}{17} +\indexentry{semiconductor manufacturers!merchant}{17} +\indexentry{Japan}{17} +\indexentry{RAM}{17} +\indexentry{United States}{17} +\indexentry{computer science}{17} +\indexentry{United States}{17} +\indexentry{Japan}{17} +\indexentry{Japan}{17} +\indexentry{United States}{17} +\indexentry{United States}{17} +\indexentry{war!Technology War}{17} +\indexentry{United States}{17} +\indexentry{gross national product}{17} +\indexentry{research and development}{18} +\indexentry{computer}{18} +\indexentry{World War II}{18} +\indexentry{Great Britain!Ministry of Defense}{18} +\indexentry{cryptology}{18} +\indexentry{United States}{18} +\indexentry{innovation}{18} +\indexentry{United States}{18} +\indexentry{computer science}{18} +\indexentry{Fifth Generation Computer Program}{18} +\indexentry{computer science}{18} +\indexentry{United States}{18} +\indexentry{information technology}{18} +\indexentry{United States}{18} +\indexentry{hardware}{18} +\indexentry{software}{18} +\indexentry{hardware}{18} +\indexentry{software}{18} +\indexentry{Republic of Korea}{19} +\indexentry{Singapore}{19} +\indexentry{Taiwan}{19} +\indexentry{India}{19} +\indexentry{Malaysia}{19} +\indexentry{education}{19} +\indexentry{software!market}{19} +\indexentry{software}{19} +\indexentry{Japan}{19} +\indexentry{software}{19} +\indexentry{United States}{19} +\indexentry{software!market}{19} +\indexentry{JTECH}{19} +\indexentry{software}{19} +\indexentry{software}{19} +\indexentry{software!market!Japanese}{19} +\indexentry{software}{19} +\indexentry{McClellan, Stephen~T.}{19} +\indexentry{software}{19} +\indexentry{software!custom}{19} +\indexentry{United States}{19} +\indexentry{software!market}{19} +\indexentry{creativity}{19} +\indexentry{software}{19} +\indexentry{Great Britain}{19} +\indexentry{United States}{19} +\indexentry{World War II}{19} +\indexentry{Great Britain}{19} +\indexentry{unemployment}{19} +\indexentry{Great Britain}{19} +\indexentry{United States}{19} +\indexentry{United States}{20} +\indexentry{Japan}{20} +\indexentry{United States}{20} +\indexentry{war!Technology War}{20} +\indexentry{Japan}{20} +\indexentry{information technology}{20} +\indexentry{Japan}{20} +\indexentry{World War II}{20} +\indexentry{United States}{20} +\indexentry{Japan}{20} +\indexentry{Fifth Generation Computer Program}{20} +\indexentry{Moto-Oka, Tohru}{20} +\indexentry{information technology}{20} +\indexentry{research and development}{20} +\indexentry{Japan}{20} +\indexentry{Moto-Oka, Tohru}{20} +\indexentry{Japan}{20} +\indexentry{computer science}{20} +\indexentry{artificial intelligence}{20} +\indexentry{Moto-Oka, Tohru}{20} +\indexentry{war!Technology War}{20} +\indexentry{Japan}{20} +\indexentry{United States}{20} +\indexentry{technology transfer}{21} +\indexentry{war!Technology War}{21} +\indexentry{weapons}{21} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{21} +\indexentry{research and development}{21} +\indexentry{United States}{21} +\indexentry{Europe}{21} +\indexentry{Japan}{21} +\indexentry{innovation}{21} +\indexentry{innovation}{22} +\indexentry{creativity}{22} +\indexentry{JTECH}{22} +\indexentry{Nishizawa, Junichi}{22} +\indexentry{communications!optical}{22} +\indexentry{patent}{22} +\indexentry{communications!optical}{22} +\indexentry{Nishizawa, Junichi}{22} +\indexentry{Nishizawa, Junichi}{22} +\indexentry{United States}{22} +\indexentry{Japan}{22} +\indexentry{creativity}{22} +\indexentry{Nishizawa, Junichi}{23} +\indexentry{patent}{23} +\indexentry{Nishizawa, Junichi}{23} +\indexentry{thyristor}{23} +\indexentry{United States}{23} +\indexentry{thyristor}{23} +\indexentry{United States}{23} +\indexentry{United States}{23} +\indexentry{creativity}{23} +\indexentry{Nishizawa, Junichi}{23} +\indexentry{Esaki, Leo}{23} +\indexentry{Nobel Prize}{23} +\indexentry{physics}{23} +\indexentry{Nobel Prize}{23} +\indexentry{Sony}{23} +\indexentry{IBM}{23} +\indexentry{innovation}{23} +\indexentry{creativity}{23} +\indexentry{innovation}{23} +\indexentry{employment}{24} +\indexentry{technology transfer}{24} +\indexentry{engineering}{24} +\indexentry{engineering}{24} +\indexentry{Europe}{24} +\indexentry{technology transfer}{24} +\indexentry{United States}{24} +\indexentry{United States}{24} +\indexentry{technology transfer}{24} +\indexentry{Japan}{24} +\indexentry{standards}{24} +\indexentry{standards}{24} +\indexentry{Japan}{25} +\indexentry{United States}{25} +\indexentry{Japan}{25} +\indexentry{Republic of Korea}{25} +\indexentry{automobile}{25} +\indexentry{Japan}{25} +\indexentry{Asia}{25} +\indexentry{communications}{25} +\indexentry{telecommunications}{25} +\indexentry{Asia}{25} +\indexentry{United States}{25} +\indexentry{telecommunications}{25} +\indexentry{Japan}{25} +\indexentry{Japan}{25} +\indexentry{war!Technology War}{25} +\indexentry{United States}{25} +\indexentry{software}{25} +\indexentry{Japan}{25} +\indexentry{software}{25} +\indexentry{United States}{26} +\indexentry{Japan}{26} +\indexentry{software}{26} +\indexentry{computer!architecture}{26} +\indexentry{computer!architecture}{26} +\indexentry{United States}{26} +\indexentry{IBM!compatibility}{26} +\indexentry{IBM!compatibility}{26} +\indexentry{IBM}{26} +\indexentry{intellectual property!laws}{26} +\indexentry{intellectual property!rights}{26} +\indexentry{prototype}{26} +\indexentry{computer!architecture}{26} +\indexentry{computer!architecture}{26} +\indexentry{computer!architecture}{26} +\indexentry{computer!architecture}{26} +\indexentry{prototype}{26} +\indexentry{Great Britain}{26} +\indexentry{Great Britain}{26} +\indexentry{prototype}{26} +\indexentry{prototype}{26} +\indexentry{Europe}{26} +\indexentry{Japan}{26} +\indexentry{Europe}{26} +\indexentry{marketshare}{27} +\indexentry{Europe}{27} +\indexentry{United States}{27} +\indexentry{Europe}{27} +\indexentry{United States}{27} +\indexentry{creativity}{27} +\indexentry{innovation}{27} +\indexentry{information technology}{27} +\indexentry{Bell, Eric~T.}{27} +\indexentry{Europe}{27} +\indexentry{Bell, Eric~T.}{27} +\indexentry{Great Britain}{27} +\indexentry{Great Britain}{27} +\indexentry{artificial intelligence}{27} +\indexentry{Great Britain}{27} +\indexentry{Lighthill, Sir James}{27} +\indexentry{artificial intelligence}{27} +\indexentry{Lighthill, Sir James}{27} +\indexentry{artificial intelligence}{27} +\indexentry{Great Britain}{27} +\indexentry{robotics}{28} +\indexentry{Lighthill, Sir James}{28} +\indexentry{robotics}{28} +\indexentry{robotics}{28} +\indexentry{Japan}{28} +\indexentry{Lighthill, Sir James}{28} +\indexentry{artificial intelligence}{28} +\indexentry{United States}{28} +\indexentry{United States}{28} +\indexentry{National Academy of Sciences}{28} +\indexentry{Europe}{28} +\indexentry{European Economic Community}{28} +\indexentry{North Atlantic Treaty Organization}{28} +\indexentry{standards}{28} +\indexentry{standards}{28} +\indexentry{agriculture}{28} +\indexentry{Europe}{28} +\indexentry{ESPRIT}{28} +\indexentry{European Economic Community}{28} +\indexentry{Europe}{28} +\indexentry{Europe}{28} +\indexentry{United States}{28} +\indexentry{Japan}{28} +\indexentry{Europe}{29} +\indexentry{PTT}{29} +\indexentry{PTT}{29} +\indexentry{France}{29} +\indexentry{France}{29} +\indexentry{PTT}{29} +\indexentry{Europe}{29} +\indexentry{Europe}{29} +\indexentry{United States}{29} +\indexentry{Japan}{29} +\indexentry{Europe}{29} +\indexentry{Jefferson, Thomas}{29} +\indexentry{Europe}{29} +\indexentry{war!Technology War}{29} +\indexentry{United States}{29} +\indexentry{Japan}{29} +\indexentry{war!Technology War}{29} +\indexentry{United States}{29} +\indexentry{education}{29} +\indexentry{war!Technology War}{33} +\indexentry{war!Technology War}{33} +\indexentry{information technology}{33} +\indexentry{World War II}{33} +\indexentry{Germany}{33} +\indexentry{World War II}{33} +\indexentry{war!conventional}{33} +\indexentry{Soviet Union}{33} +\indexentry{computer}{33} +\indexentry{weapons}{33} +\indexentry{Great Britain}{33} +\indexentry{Argentina}{33} +\indexentry{weapons}{33} +\indexentry{missile}{33} +\indexentry{missile}{33} +\indexentry{Argentina}{34} +\indexentry{information technology}{34} +\indexentry{information technology}{34} +\indexentry{weapons!nuclear}{34} +\indexentry{weapons}{34} +\indexentry{information technology}{34} +\indexentry{computer}{34} +\indexentry{war!Technology War}{34} +\indexentry{computer}{34} +\indexentry{software}{34} +\indexentry{missile}{34} +\indexentry{information technology}{34} +\indexentry{hardware}{34} +\indexentry{computer!architecture}{34} +\indexentry{software}{34} +\indexentry{communications}{34} +\indexentry{artificial intelligence}{34} +\indexentry{hardware}{34} +\indexentry{computer!architecture}{34} +\indexentry{computer}{34} +\indexentry{computer}{34} +\indexentry{computer}{35} +\indexentry{computer}{35} +\indexentry{automobile}{35} +\indexentry{hardware}{35} +\indexentry{computer!architecture}{35} +\indexentry{computer!architecture}{35} +\indexentry{computer}{35} +\indexentry{von Neumann architecture}{35} +\indexentry{von Neumann, John}{35} +\indexentry{World War II}{35} +\indexentry{computer}{35} +\indexentry{supercomputer}{35} +\indexentry{von Neumann architecture}{35} +\indexentry{computer!architecture}{35} +\indexentry{computer!architecture}{35} +\indexentry{computer!memory}{35} +\indexentry{computer!memory}{35} +\indexentry{computer!memory}{35} +\indexentry{computer!memory}{35} +\indexentry{computer!memory}{35} +\indexentry{computer!memory}{35} +\indexentry{computer!memory}{35} +\indexentry{computer!memory}{35} +\indexentry{computer!address}{35} +\indexentry{computer!address}{36} +\indexentry{computer!address}{36} +\indexentry{microelectronics}{36} +\indexentry{microelectronics}{36} +\indexentry{computer}{36} +\indexentry{computer}{36} +\indexentry{transistor}{36} +\indexentry{transistor}{36} +\indexentry{microelectronics}{36} +\indexentry{integrated circuits}{36} +\indexentry{transistor}{36} +\indexentry{transistor}{36} +\indexentry{byte}{36} +\indexentry{bit}{36} +\indexentry{transistor}{37} +\indexentry{bit}{37} +\indexentry{computer!memory}{37} +\indexentry{Fujitsu}{37} +\indexentry{Hitachi}{37} +\indexentry{Toshiba}{37} +\indexentry{NEC}{37} +\indexentry{Oki Electric Company}{37} +\indexentry{bit}{37} +\indexentry{dynamic RAM}{37} +\indexentry{computer!memory}{37} +\indexentry{Nippon Telephone and Telegraph}{37} +\indexentry{prototype}{37} +\indexentry{hardware}{37} +\indexentry{hardware}{37} +\indexentry{engineering}{37} +\indexentry{microelectronics}{37} +\indexentry{computer!memory}{37} +\indexentry{microelectronics}{37} +\indexentry{minicomputer}{37} +\indexentry{computer!personal}{37} +\indexentry{computer}{37} +\indexentry{computer!memory}{37} +\indexentry{byte}{37} +\indexentry{computer!personal}{38} +\indexentry{computer}{38} +\indexentry{bit}{38} +\indexentry{bit}{38} +\indexentry{workstation}{38} +\indexentry{computer!personal}{38} +\indexentry{computer}{38} +\indexentry{bit}{38} +\indexentry{workstation}{38} +\indexentry{byte}{38} +\indexentry{computer!memory}{38} +\indexentry{workstation}{38} +\indexentry{software!engineering}{38} +\indexentry{workstation}{38} +\indexentry{workstation}{38} +\indexentry{workstation}{38} +\indexentry{workstation}{38} +\indexentry{workstation}{38} +\indexentry{workstation}{38} +\indexentry{supercomputer}{38} +\indexentry{computer}{38} +\indexentry{computer}{38} +\indexentry{supercomputer}{39} +\indexentry{weapons!nuclear}{39} +\indexentry{physics}{39} +\indexentry{weapons}{39} +\indexentry{Strategic Defense Initiative}{39} +\indexentry{supercomputer}{39} +\indexentry{research and development}{39} +\indexentry{computational science}{39} +\indexentry{supercomputer}{39} +\indexentry{computer}{39} +\indexentry{supercomputer}{39} +\indexentry{supercomputer}{39} +\indexentry{supercomputer}{39} +\indexentry{software}{39} +\indexentry{hardware}{39} +\indexentry{United States}{39} +\indexentry{Japan}{39} +\indexentry{supercomputer}{39} +\indexentry{United States}{39} +\indexentry{software}{39} +\indexentry{software!supercomputer}{39} +\indexentry{supercomputer}{39} +\indexentry{supercomputer}{39} +\indexentry{FORTRAN}{39} +\indexentry{software}{40} +\indexentry{software!supercomputer}{40} +\indexentry{supercomputer}{40} +\indexentry{software}{40} +\indexentry{engineering}{40} +\indexentry{supercomputer}{40} +\indexentry{Japan}{40} +\indexentry{software!supercomputer}{40} +\indexentry{supercomputer}{40} +\indexentry{software}{40} +\indexentry{United States}{40} +\indexentry{supercomputer}{40} +\indexentry{supercomputer}{40} +\indexentry{Cray, Seymour}{40} +\indexentry{computer}{40} +\indexentry{supercomputer}{40} +\indexentry{IBM!compatibility}{40} +\indexentry{IBM}{40} +\indexentry{software}{40} +\indexentry{software}{40} +\indexentry{software!engineering}{40} +\indexentry{hardware}{40} +\indexentry{software}{40} +\indexentry{computer}{40} +\indexentry{computer}{40} +\indexentry{computer}{40} +\indexentry{machine language}{40} +\indexentry{software}{40} +\indexentry{machine language}{40} +\indexentry{computer}{40} +\indexentry{machine language}{41} +\indexentry{software}{41} +\indexentry{compiler}{41} +\indexentry{hardware}{41} +\indexentry{software}{41} +\indexentry{computer!memory}{41} +\indexentry{compiler}{41} +\indexentry{computer}{41} +\indexentry{software}{41} +\indexentry{hardware}{41} +\indexentry{hardware}{41} +\indexentry{software}{41} +\indexentry{standards}{41} +\indexentry{machine language}{41} +\indexentry{hardware}{41} +\indexentry{software}{41} +\indexentry{software}{41} +\indexentry{software}{41} +\indexentry{communications}{42} +\indexentry{communications}{42} +\indexentry{communications}{42} +\indexentry{computer}{42} +\indexentry{communications}{42} +\indexentry{hardware}{42} +\indexentry{software}{42} +\indexentry{communications}{42} +\indexentry{Department of Defense}{42} +\indexentry{AT\&T}{42} +\indexentry{hardware}{42} +\indexentry{communications}{42} +\indexentry{software}{42} +\indexentry{artificial intelligence}{42} +\indexentry{artificial intelligence}{42} +\indexentry{computer}{42} +\indexentry{computer}{42} +\indexentry{artificial intelligence}{43} +\indexentry{Strategic Defense Initiative}{43} +\indexentry{weapons}{43} +\indexentry{artificial intelligence}{43} +\indexentry{artificial intelligence}{43} +\indexentry{artificial intelligence}{43} +\indexentry{Turing!test}{43} +\indexentry{Turing, Alan}{43} +\indexentry{artificial intelligence}{43} +\indexentry{computer}{43} +\indexentry{computer}{43} +\indexentry{Association for Computing Machinery}{43} +\indexentry{computer}{43} +\indexentry{machines, thinking}{43} +\indexentry{computer}{43} +\indexentry{war!Technology War}{43} +\indexentry{machines, thinking}{44} +\indexentry{machines, thinking}{44} +\indexentry{machines, thinking}{44} +\indexentry{artificial intelligence}{44} +\indexentry{war!Technology War}{44} +\indexentry{machines, thinking}{44} +\indexentry{artificial intelligence}{44} +\indexentry{computer}{44} +\indexentry{Europe}{44} +\indexentry{machines, thinking}{45} +\indexentry{machines, thinking}{45} +\indexentry{expert systems}{45} +\indexentry{knowledge-based systems}{45} +\indexentry{expert systems}{45} +\indexentry{machine inference}{45} +\indexentry{knowledge-based systems}{45} +\indexentry{expert systems}{45} +\indexentry{artificial intelligence}{45} +\indexentry{knowledge-based systems}{45} +\indexentry{expert systems}{45} +\indexentry{Prospector}{45} +\indexentry{expert systems}{45} +\indexentry{Prospector}{46} +\indexentry{uranium}{46} +\indexentry{Prospector}{46} +\indexentry{expert systems}{46} +\indexentry{McCarthy, John}{46} +\indexentry{expert systems}{46} +\indexentry{Stanford University}{46} +\indexentry{knowledge-based systems}{46} +\indexentry{expert systems}{46} +\indexentry{knowledge-based systems}{46} +\indexentry{war!Technology War}{47} +\indexentry{computer-aided design}{47} +\indexentry{computer-aided design}{47} +\indexentry{computer-aided engineering}{47} +\indexentry{computer-aided manufacturing}{47} +\indexentry{computer-integrated manufacturing}{47} +\indexentry{computer-integrated manufacturing}{47} +\indexentry{robotics}{47} +\indexentry{flexible manufacturing systems}{47} +\indexentry{flexible manufacturing systems}{47} +\indexentry{mechatronics}{47} +\indexentry{mechatronics}{47} +\indexentry{flexible manufacturing systems}{47} +\indexentry{computer-integrated manufacturing}{47} +\indexentry{software}{47} +\indexentry{computer-integrated manufacturing}{47} +\indexentry{mechatronics}{47} +\indexentry{robotics}{47} +\indexentry{computer-aided design}{47} +\indexentry{computer-aided engineering}{47} +\indexentry{software}{47} +\indexentry{computer-aided process planning}{47} +\indexentry{computer-aided manufacturing}{48} +\indexentry{robotics}{48} +\indexentry{flexible manufacturing systems}{48} +\indexentry{numerical control}{48} +\indexentry{computer-aided manufacturing}{48} +\indexentry{numerical control}{48} +\indexentry{computer}{48} +\indexentry{Boeing Aircraft Corporation}{48} +\indexentry{computer-aided manufacturing}{48} +\indexentry{numerical control}{48} +\indexentry{numerical control}{48} +\indexentry{United States}{48} +\indexentry{United States}{48} +\indexentry{numerical control}{48} +\indexentry{flexible manufacturing systems}{48} +\indexentry{computer}{49} +\indexentry{engineering}{49} +\indexentry{computer-integrated manufacturing}{49} +\indexentry{robotics}{49} +\indexentry{robotics}{49} +\indexentry{robotics}{49} +\indexentry{Europe}{49} +\indexentry{robotics}{49} +\indexentry{robotics}{49} +\indexentry{Japan!robots}{49} +\indexentry{robotics}{49} +\indexentry{capital}{49} +\indexentry{Japan}{49} +\indexentry{Japan!robots}{49} +\indexentry{robotics}{49} +\indexentry{Japan}{49} +\indexentry{robotics}{49} +\indexentry{United States}{49} +\indexentry{Europe}{49} +\indexentry{Japan!robots}{49} +\indexentry{robotics}{49} +\indexentry{United States}{49} +\indexentry{robotics}{49} +\indexentry{Japan!robots}{49} +\indexentry{robotics}{49} +\indexentry{war!Technology War}{49} +\indexentry{war!Technology War}{50} +\indexentry{technology transfer}{50} +\indexentry{technology transfer}{50} +\indexentry{technology transfer}{51} +\indexentry{war!Technology War}{51} +\indexentry{technology transfer}{51} +\indexentry{technology transfer}{51} +\indexentry{war!Technology War}{51} +\indexentry{technology transfer}{51} +\indexentry{education}{52} +\indexentry{physics!nuclear}{52} +\indexentry{atomic bomb}{52} +\indexentry{Einstein, Albert}{52} +\indexentry{weapons}{52} +\indexentry{Einstein, Albert}{52} +\indexentry{uranium}{52} +\indexentry{Einstein, Albert}{52} +\indexentry{uranium}{52} +\indexentry{uranium}{52} +\indexentry{uranium}{52} +\indexentry{uranium}{52} +\indexentry{uranium}{52} +\indexentry{uranium}{52} +\indexentry{atomic bomb}{52} +\indexentry{uranium}{53} +\indexentry{plutonium}{53} +\indexentry{plutonium}{53} +\indexentry{uranium}{53} +\indexentry{plutonium}{53} +\indexentry{uranium}{53} +\indexentry{weapons!nuclear}{53} +\indexentry{weapons}{53} +\indexentry{uranium}{53} +\indexentry{plutonium}{53} +\indexentry{uranium}{53} +\indexentry{World War II}{53} +\indexentry{uranium}{53} +\indexentry{uranium}{53} +\indexentry{uranium}{53} +\indexentry{uranium}{53} +\indexentry{uranium}{53} +\indexentry{engineering}{53} +\indexentry{weapons}{53} +\indexentry{technology transfer}{53} +\indexentry{atomic bomb}{53} +\indexentry{Germany}{53} +\indexentry{physics!nuclear}{53} +\indexentry{Europe}{53} +\indexentry{United States}{53} +\indexentry{innovation}{53} +\indexentry{Norway}{53} +\indexentry{Germany}{53} +\indexentry{technology transfer}{54} +\indexentry{technology transfer}{54} +\indexentry{technology transfer}{54} +\indexentry{Food and Drug Administration}{54} +\indexentry{technology transfer}{54} +\indexentry{biotechnology}{54} +\indexentry{biotechnology}{54} +\indexentry{United States}{54} +\indexentry{biotechnology}{54} +\indexentry{innovation}{54} +\indexentry{Federal Communications Commission}{54} +\indexentry{Japan}{54} +\indexentry{IBM}{55} +\indexentry{antitrust laws}{55} +\indexentry{innovation}{55} +\indexentry{IBM}{55} +\indexentry{communications}{55} +\indexentry{technology transfer}{55} +\indexentry{technology transfer}{55} +\indexentry{technology transfer}{55} +\indexentry{Xerox}{55} +\indexentry{Xerox!Palo Alto Research Center}{55} +\indexentry{innovation}{55} +\indexentry{workstation}{55} +\indexentry{Xerox!Palo Alto Research Center}{55} +\indexentry{Xerox}{55} +\indexentry{Xerox!copiers}{55} +\indexentry{Xerox}{55} +\indexentry{Xerox}{55} +\indexentry{computer}{55} +\indexentry{Xerox!STAR computer}{55} +\indexentry{Xerox!Palo Alto Research Center}{55} +\indexentry{Apple Computer Company}{55} +\indexentry{Xerox}{56} +\indexentry{innovation}{56} +\indexentry{Apple Computer Company!Macintosh}{56} +\indexentry{Xerox}{56} +\indexentry{IBM}{56} +\indexentry{technology transfer}{56} +\indexentry{IBM}{56} +\indexentry{IBM}{56} +\indexentry{technology transfer}{56} +\indexentry{Xerox}{56} +\indexentry{technology transfer}{56} +\indexentry{Spencer, William~J.}{56} +\indexentry{Xerox!Palo Alto Research Center}{56} +\indexentry{technology transfer}{56} +\indexentry{technology transfer}{57} +\indexentry{Israel}{57} +\indexentry{Israel}{57} +\indexentry{United States}{57} +\indexentry{France}{57} +\indexentry{Israel}{57} +\indexentry{Israel}{57} +\indexentry{Israel}{57} +\indexentry{exports}{57} +\indexentry{Israel}{57} +\indexentry{technology transfer}{57} +\indexentry{Germany}{57} +\indexentry{University of California at Berkeley}{57} +\indexentry{Germany}{57} +\indexentry{Germany}{57} +\indexentry{Germany}{57} +\indexentry{Germany}{57} +\indexentry{physics}{57} +\indexentry{Germany}{57} +\indexentry{physics}{57} +\indexentry{technology transfer}{57} +\indexentry{Meiji Period}{58} +\indexentry{Dutch Learning}{58} +\indexentry{Great Britain}{58} +\indexentry{technology transfer}{58} +\indexentry{World War II}{58} +\indexentry{technology transfer}{58} +\indexentry{physics!nuclear}{58} +\indexentry{United States}{58} +\indexentry{Great Britain}{58} +\indexentry{Germany}{58} +\indexentry{Soviet Union}{58} +\indexentry{intellectual property!laws}{58} +\indexentry{United States}{59} +\indexentry{United States!Constitution}{59} +\indexentry{United States!Constitution}{59} +\indexentry{trademark}{59} +\indexentry{trade secret}{59} +\indexentry{patent}{59} +\indexentry{copyright}{59} +\indexentry{intellectual property!laws}{59} +\indexentry{technology transfer}{59} +\indexentry{intellectual property!laws}{59} +\indexentry{United States}{59} +\indexentry{technology transfer}{59} +\indexentry{copyright}{59} +\indexentry{software}{59} +\indexentry{intellectual property!laws}{59} +\indexentry{copyright}{59} +\indexentry{machine language}{59} +\indexentry{copyright}{59} +\indexentry{software!protection}{59} +\indexentry{machine language}{59} +\indexentry{software}{59} +\indexentry{machine language}{59} +\indexentry{software}{59} +\indexentry{standards}{59} +\indexentry{software}{60} +\indexentry{Apple Computer Company!Lisa}{60} +\indexentry{Xerox!Palo Alto Research Center}{60} +\indexentry{Apple Computer Company}{60} +\indexentry{software}{60} +\indexentry{software!protection}{60} +\indexentry{algorithm}{60} +\indexentry{copyright}{60} +\indexentry{trade secret}{60} +\indexentry{software!protection}{60} +\indexentry{algorithm}{60} +\indexentry{patent}{60} +\indexentry{hardware}{60} +\indexentry{algorithm}{60} +\indexentry{software!protection}{60} +\indexentry{software}{60} +\indexentry{patent}{60} +\indexentry{trade secret}{60} +\indexentry{patent!Patent Secrecy act}{60} +\indexentry{Public Crypto. Study Group}{60} +\indexentry{cryptology}{60} +\indexentry{patent}{60} +\indexentry{weapons}{60} +\indexentry{technology transfer}{61} +\indexentry{venture capital}{61} +\indexentry{patent}{61} +\indexentry{copyright}{61} +\indexentry{trade secret}{61} +\indexentry{intellectual property!rights}{61} +\indexentry{software}{61} +\indexentry{innovation}{61} +\indexentry{Universal Copyright Convention}{61} +\indexentry{Berne Convention}{61} +\indexentry{United States}{61} +\indexentry{Department of Commerce}{61} +\indexentry{China}{61} +\indexentry{Hong Kong}{61} +\indexentry{Taiwan}{61} +\indexentry{Singapore}{61} +\indexentry{Indonesia}{61} +\indexentry{software}{61} +\indexentry{innovation}{61} +\indexentry{Singapore}{62} +\indexentry{software!protection}{62} +\indexentry{software}{62} +\indexentry{Singapore!National Computer Board}{62} +\indexentry{software!protection}{62} +\indexentry{Department of Education}{62} +\indexentry{copyright}{62} +\indexentry{Singapore}{62} +\indexentry{software}{62} +\indexentry{intellectual property!laws}{62} +\indexentry{Japan}{62} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{62} +\indexentry{software}{62} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{62} +\indexentry{software}{62} +\indexentry{copyright}{62} +\indexentry{software!protection}{62} +\indexentry{software}{62} +\indexentry{Japan}{63} +\indexentry{Japan}{63} +\indexentry{Asia}{63} +\indexentry{United States}{63} +\indexentry{Department of Commerce}{63} +\indexentry{exports}{63} +\indexentry{computer}{63} +\indexentry{software}{63} +\indexentry{United States}{63} +\indexentry{National Academy of Sciences}{64} +\indexentry{exports}{64} +\indexentry{Commodity Control List}{64} +\indexentry{license!general}{64} +\indexentry{license!validated}{64} +\indexentry{computer}{64} +\indexentry{software}{64} +\indexentry{hardware}{64} +\indexentry{Commodity Control List}{64} +\indexentry{United States}{64} +\indexentry{Soviet Union}{64} +\indexentry{computer}{64} +\indexentry{export control}{64} +\indexentry{IBM!compatibility}{64} +\indexentry{computer!personal}{64} +\indexentry{Department of State}{64} +\indexentry{Department of Defense}{64} +\indexentry{software}{64} +\indexentry{Military Critical Technologies List (MCTL)}{64} +\indexentry{Military Critical Technologies List (MCTL)}{65} +\indexentry{war!Technology War}{65} +\indexentry{export control}{65} +\indexentry{International Traffic in Arms Regulations}{65} +\indexentry{exports}{65} +\indexentry{export control}{65} +\indexentry{encryption}{65} +\indexentry{telecommunications}{65} +\indexentry{export control}{65} +\indexentry{International Traffic in Arms Regulations}{65} +\indexentry{United States}{65} +\indexentry{International Traffic in Arms Regulations}{65} +\indexentry{International Traffic in Arms Regulations}{65} +\indexentry{Commodity Control List}{65} +\indexentry{Japan}{65} +\indexentry{Coordinating Committee}{65} +\indexentry{Coordinating Committee}{65} +\indexentry{Department of State}{65} +\indexentry{Department of Commerce}{65} +\indexentry{Department of Defense}{65} +\indexentry{Central Intelligence Agency}{65} +\indexentry{Department of Energy}{65} +\indexentry{National Aeronautics and Space Administration (NASA)}{65} +\indexentry{Commodity Control List}{65} +\indexentry{Coordinating Committee}{66} +\indexentry{export control}{66} +\indexentry{exports}{66} +\indexentry{export control}{66} +\indexentry{technology transfer}{66} +\indexentry{Department of Defense}{66} +\indexentry{exports}{66} +\indexentry{Europe}{66} +\indexentry{Japan}{66} +\indexentry{Alvey program}{66} +\indexentry{Europe}{66} +\indexentry{United States}{66} +\indexentry{Reagan, President Ronald}{66} +\indexentry{export control}{66} +\indexentry{United States!Senate}{66} +\indexentry{South Africa}{66} +\indexentry{Libya}{66} +\indexentry{United States!Senate}{66} +\indexentry{software}{67} +\indexentry{technology transfer}{67} +\indexentry{weapons}{67} +\indexentry{intellectual property}{67} +\indexentry{intellectual property!rights}{67} +\indexentry{United States}{67} +\indexentry{war!Technology War}{67} +\indexentry{United States}{67} +\indexentry{Japan}{67} +\indexentry{Digital Equipment Corporation}{67} +\indexentry{Hewlett-Packard}{67} +\indexentry{IBM}{67} +\indexentry{AT\&T}{67} +\indexentry{Apple Computer Company}{67} +\indexentry{war!Technology War}{67} +\indexentry{war!conventional}{67} +\indexentry{Inman, Admiral Bobby R.}{67} +\indexentry{United States}{67} +\indexentry{France}{68} +\indexentry{Japan}{68} +\indexentry{United States}{68} +\indexentry{automobile}{68} +\indexentry{education}{69} +\indexentry{antitrust laws}{70} +\indexentry{Japan}{70} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{70} +\indexentry{Japan}{70} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{70} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{70} +\indexentry{World War II}{70} +\indexentry{Japan}{70} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{70} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{70} +\indexentry{Japan}{70} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{70} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{70} +\indexentry{University of Tokyo}{70} +\indexentry{World War II}{70} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{70} +\indexentry{MacArthur, General Douglas}{70} +\indexentry{SCAP}{70} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{70} +\indexentry{SCAP}{70} +\indexentry{SCAP}{70} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{70} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{70} +\indexentry{SCAP}{71} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{71} +\indexentry{United States}{71} +\indexentry{Japan}{71} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{71} +\indexentry{patent}{71} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{71} +\indexentry{Japan}{71} +\indexentry{Japan}{71} +\indexentry{war!Technology War}{71} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{71} +\indexentry{IBM}{71} +\indexentry{Japan}{71} +\indexentry{IBM}{71} +\indexentry{IBM}{71} +\indexentry{Japan}{71} +\indexentry{yen}{71} +\indexentry{IBM}{71} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{71} +\indexentry{IBM}{71} +\indexentry{patent}{71} +\indexentry{IBM}{71} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{71} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{71} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{71} +\indexentry{Johnson, Chalmers}{71} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{71} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{71} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{72} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{72} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{72} +\indexentry{steel}{72} +\indexentry{automobile}{72} +\indexentry{Japan}{72} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{72} +\indexentry{Germany}{72} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{72} +\indexentry{Japan!Incorporated}{72} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{72} +\indexentry{Japan}{72} +\indexentry{Japan}{72} +\indexentry{computer}{72} +\indexentry{United States}{72} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{72} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{72} +\indexentry{United States}{72} +\indexentry{Department of Commerce}{72} +\indexentry{Department of Defense}{72} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{72} +\indexentry{Department of Defense}{72} +\indexentry{information technology}{72} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{73} +\indexentry{Japan}{73} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{73} +\indexentry{Department of Defense}{73} +\indexentry{Japan}{73} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{73} +\indexentry{United States}{73} +\indexentry{Iacocca, Lee}{73} +\indexentry{United States}{73} +\indexentry{antitrust laws}{73} +\indexentry{Japan}{73} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{73} +\indexentry{antitrust laws}{73} +\indexentry{United States}{73} +\indexentry{information technology}{73} +\indexentry{United States versus IBM suit}{73} +\indexentry{IBM}{73} +\indexentry{International Trade Commission}{73} +\indexentry{Department of Commerce}{73} +\indexentry{antitrust laws}{73} +\indexentry{innovation}{73} +\indexentry{antitrust laws}{73} +\indexentry{research and development}{73} +\indexentry{Baxter, William~F.}{74} +\indexentry{antitrust laws}{74} +\indexentry{Department of Justice}{74} +\indexentry{Baxter, William~F.}{74} +\indexentry{Department of Justice}{74} +\indexentry{marketshare}{74} +\indexentry{Department of Justice}{74} +\indexentry{United States}{74} +\indexentry{Microelectronics and Computer Technology Corporation}{74} +\indexentry{Microelectronics Center of North Carolina}{74} +\indexentry{Software Productivity Consortium}{74} +\indexentry{National Productivity and Innovation Act}{74} +\indexentry{antitrust laws}{74} +\indexentry{intellectual property}{74} +\indexentry{war!Technology War}{74} +\indexentry{information technology}{74} +\indexentry{capital}{74} +\indexentry{exchange rate}{75} +\indexentry{savings}{75} +\indexentry{United States!procurement system}{75} +\indexentry{information technology}{75} +\indexentry{World War II}{75} +\indexentry{Japan}{75} +\indexentry{Japan}{75} +\indexentry{Japan}{75} +\indexentry{steel}{75} +\indexentry{capital}{75} +\indexentry{capital}{75} +\indexentry{capital}{75} +\indexentry{savings}{75} +\indexentry{Bergamini, David}{75} +\indexentry{Japan}{75} +\indexentry{savings}{75} +\indexentry{savings}{75} +\indexentry{capital}{76} +\indexentry{capital}{76} +\indexentry{imports}{76} +\indexentry{exports}{76} +\indexentry{employment}{76} +\indexentry{exchange rate}{76} +\indexentry{Japan}{76} +\indexentry{yen}{76} +\indexentry{exchange rate}{76} +\indexentry{exports}{76} +\indexentry{employment}{76} +\indexentry{unemployment}{76} +\indexentry{yen}{76} +\indexentry{Japan}{76} +\indexentry{employment}{76} +\indexentry{exports}{76} +\indexentry{balance of trade}{77} +\indexentry{capital}{77} +\indexentry{capital}{77} +\indexentry{information technology}{77} +\indexentry{capital}{77} +\indexentry{workstation}{77} +\indexentry{capital}{77} +\indexentry{VLSI}{77} +\indexentry{computer!architecture}{77} +\indexentry{computer!architecture}{77} +\indexentry{capital}{77} +\indexentry{war!Technology War}{77} +\indexentry{exchange rate}{77} +\indexentry{capital}{77} +\indexentry{war!Technology War}{77} +\indexentry{United States}{77} +\indexentry{information technology}{77} +\indexentry{balance of trade}{77} +\indexentry{exports}{77} +\indexentry{hardware}{77} +\indexentry{imports}{77} +\indexentry{hardware}{77} +\indexentry{balance of trade}{77} +\indexentry{exports}{77} +\indexentry{imports}{77} +\indexentry{exports}{77} +\indexentry{imports}{77} +\indexentry{Japan}{78} +\indexentry{Asia}{78} +\indexentry{Republic of Korea}{78} +\indexentry{balance of trade}{78} +\indexentry{balance of trade}{78} +\indexentry{Great Britain}{78} +\indexentry{United States}{78} +\indexentry{exchange rate}{78} +\indexentry{yen}{78} +\indexentry{United States}{78} +\indexentry{Europe}{78} +\indexentry{Europe}{78} +\indexentry{Europe}{78} +\indexentry{Europe}{78} +\indexentry{balance of trade}{78} +\indexentry{Great Britain}{79} +\indexentry{imports}{79} +\indexentry{New Zealand}{79} +\indexentry{France}{79} +\indexentry{imports}{79} +\indexentry{European Economic Community}{79} +\indexentry{Great Britain}{79} +\indexentry{yen}{79} +\indexentry{Japan}{79} +\indexentry{yen}{79} +\indexentry{exports}{79} +\indexentry{imports}{79} +\indexentry{exports}{79} +\indexentry{imports}{79} +\indexentry{balance of trade}{79} +\indexentry{United States}{80} +\indexentry{Europe}{80} +\indexentry{Japan}{80} +\indexentry{Fujitsu}{80} +\indexentry{Fairchild Camera and Instrument Corporation}{80} +\indexentry{microelectronics}{80} +\indexentry{yen}{80} +\indexentry{balance of trade}{80} +\indexentry{Japan}{80} +\indexentry{Japan}{81} +\indexentry{marketshare}{81} +\indexentry{war!Technology War}{81} +\indexentry{International Trade Commission}{81} +\indexentry{Department of Commerce}{81} +\indexentry{Japan}{81} +\indexentry{marketshare}{81} +\indexentry{employment}{81} +\indexentry{Department of Commerce}{81} +\indexentry{research and development}{81} +\indexentry{United States}{81} +\indexentry{Republic of Korea}{82} +\indexentry{Europe}{82} +\indexentry{marketshare}{82} +\indexentry{Matsushita Electric Industrial Co.}{82} +\indexentry{Germany}{82} +\indexentry{microelectronics}{82} +\indexentry{United States}{82} +\indexentry{Japan}{82} +\indexentry{Japan}{82} +\indexentry{telecommunications}{82} +\indexentry{microelectronics}{82} +\indexentry{United States}{83} +\indexentry{Japan}{83} +\indexentry{United States}{83} +\indexentry{United States}{83} +\indexentry{RAM}{83} +\indexentry{war!Technology War}{83} +\indexentry{Johnson, Chalmers}{83} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{83} +\indexentry{bushido}{83} +\indexentry{Japan}{83} +\indexentry{Japan}{84} +\indexentry{Soviet Union}{84} +\indexentry{Soviet Union}{84} +\indexentry{United States!Senate}{84} +\indexentry{United States}{84} +\indexentry{Japan}{84} +\indexentry{Mexico}{84} +\indexentry{Panama}{84} +\indexentry{Japan}{84} +\indexentry{employment!lifetime}{84} +\indexentry{Japan}{84} +\indexentry{Churchill, Winston}{84} +\indexentry{engineering}{84} +\indexentry{Japan}{85} +\indexentry{gross national product}{85} +\indexentry{gross national product}{85} +\indexentry{research and development}{85} +\indexentry{United States}{85} +\indexentry{United States}{85} +\indexentry{research and development}{85} +\indexentry{gross national product}{85} +\indexentry{United States}{85} +\indexentry{technology transfer}{85} +\indexentry{technology transfer}{85} +\indexentry{Japan}{85} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{85} +\indexentry{technology transfer}{85} +\indexentry{Japan}{85} +\indexentry{war!Technology War}{86} +\indexentry{Japan}{86} +\indexentry{war!Technology War}{86} +\indexentry{Europe}{86} +\indexentry{war!Technology War}{87} +\indexentry{war!Technology War}{87} +\indexentry{Asia}{87} +\indexentry{war!Technology War}{87} +\indexentry{education}{89} +\indexentry{war!Technology War}{89} +\indexentry{scientists and engineers!demographics of}{89} +\indexentry{algorithm}{89} +\indexentry{software}{89} +\indexentry{United States}{89} +\indexentry{United States versus IBM suit}{89} +\indexentry{IBM}{89} +\indexentry{education}{90} +\indexentry{United States}{90} +\indexentry{Nobel Prize}{90} +\indexentry{innovation}{90} +\indexentry{xerography}{90} +\indexentry{Bell, Alexander Graham}{90} +\indexentry{Edison, Thomas A.}{90} +\indexentry{Eastman, George}{90} +\indexentry{Land, Edward}{90} +\indexentry{innovation}{90} +\indexentry{United States}{90} +\indexentry{Nobel Prize}{90} +\indexentry{Nobel Prize}{90} +\indexentry{creativity}{90} +\indexentry{United States}{90} +\indexentry{patent}{90} +\indexentry{patent}{90} +\indexentry{United States}{90} +\indexentry{innovation}{90} +\indexentry{education}{90} +\indexentry{physics}{90} +\indexentry{physics}{90} +\indexentry{United States}{90} +\indexentry{France}{91} +\indexentry{Germany}{91} +\indexentry{Soviet Union}{91} +\indexentry{physics}{91} +\indexentry{United States}{91} +\indexentry{education}{91} +\indexentry{United States}{91} +\indexentry{education}{91} +\indexentry{education!engineering}{91} +\indexentry{United States}{91} +\indexentry{scientists and engineers!demographics of}{91} +\indexentry{United States}{91} +\indexentry{research and development}{91} +\indexentry{United States}{91} +\indexentry{Japan}{91} +\indexentry{United States}{91} +\indexentry{education}{91} +\indexentry{engineering!education}{91} +\indexentry{United States}{91} +\indexentry{accreditation}{91} +\indexentry{education}{92} +\indexentry{United States}{92} +\indexentry{degrees!master's}{92} +\indexentry{engineering}{92} +\indexentry{United States}{92} +\indexentry{scientists and engineers!demographics of}{92} +\indexentry{education!engineering}{92} +\indexentry{computer science}{92} +\indexentry{computer science}{92} +\indexentry{degrees!master's}{92} +\indexentry{engineering}{92} +\indexentry{engineering!faculty}{92} +\indexentry{degrees!doctoral}{92} +\indexentry{engineering}{92} +\indexentry{scientists and engineers!demographics of}{92} +\indexentry{education!engineering}{92} +\indexentry{Great Britain}{92} +\indexentry{India}{92} +\indexentry{Harvard University}{92} +\indexentry{education}{93} +\indexentry{engineering}{93} +\indexentry{United States}{93} +\indexentry{computer science}{93} +\indexentry{Wozniak, Stephen}{93} +\indexentry{University of California at Berkeley}{93} +\indexentry{Apple Computer Company}{93} +\indexentry{Wozniak, Stephen}{93} +\indexentry{Bechtolsheim, Andy}{93} +\indexentry{Joy, William N.}{93} +\indexentry{Sun Microsystems Inc.}{93} +\indexentry{degrees!doctoral}{93} +\indexentry{degrees!doctoral}{93} +\indexentry{engineering!faculty}{93} +\indexentry{degrees!master's}{93} +\indexentry{education}{93} +\indexentry{computer science}{93} +\indexentry{computer science}{93} +\indexentry{Vietnam War}{94} +\indexentry{Asia}{94} +\indexentry{engineering!faculty}{94} +\indexentry{scientists and engineers!demographics of}{94} +\indexentry{education!engineering}{94} +\indexentry{engineering!education}{94} +\indexentry{United States}{94} +\indexentry{United States}{94} +\indexentry{engineering!faculty}{94} +\indexentry{Department of Defense}{94} +\indexentry{World War II}{94} +\indexentry{scientists and engineers!demographics of}{94} +\indexentry{education!engineering}{94} +\indexentry{engineering!faculty}{94} +\indexentry{engineering!faculty}{94} +\indexentry{scientists and engineers!demographics of}{94} +\indexentry{education!engineering}{94} +\indexentry{United States}{94} +\indexentry{engineering!faculty}{94} +\indexentry{education}{95} +\indexentry{MIT}{95} +\indexentry{Stanford University}{95} +\indexentry{National Science Foundation}{95} +\indexentry{National Science Foundation!Engineering Research Centers}{95} +\indexentry{biotechnology}{95} +\indexentry{telecommunications}{95} +\indexentry{robotics}{95} +\indexentry{United States}{95} +\indexentry{research and development}{95} +\indexentry{research and development}{95} +\indexentry{engineering}{96} +\indexentry{education!engineering}{96} +\indexentry{education}{96} +\indexentry{accreditation}{96} +\indexentry{education!engineering}{96} +\indexentry{Shapley, Deborah}{96} +\indexentry{Roy, Rustum}{96} +\indexentry{United States}{96} +\indexentry{France}{96} +\indexentry{United States}{96} +\indexentry{engineering}{96} +\indexentry{education}{96} +\indexentry{engineering!education}{96} +\indexentry{Wang Institute}{97} +\indexentry{degrees!master's}{97} +\indexentry{software!engineering}{97} +\indexentry{Wang, An}{97} +\indexentry{Wang Computers}{97} +\indexentry{engineering}{97} +\indexentry{Wang Institute}{97} +\indexentry{education}{97} +\indexentry{education!continuing}{97} +\indexentry{education}{97} +\indexentry{education!continuing}{97} +\indexentry{education}{97} +\indexentry{education!continuing}{97} +\indexentry{professional societies}{97} +\indexentry{professional societies}{97} +\indexentry{education}{97} +\indexentry{Japan}{97} +\indexentry{war!Technology War}{97} +\indexentry{Japan}{98} +\indexentry{United States}{98} +\indexentry{United States}{98} +\indexentry{Japan}{98} +\indexentry{education}{98} +\indexentry{Japan}{98} +\indexentry{University of Tokyo}{98} +\indexentry{Kyoto University}{98} +\indexentry{Osaka University}{98} +\indexentry{Tohoku University}{98} +\indexentry{Hokaido University}{98} +\indexentry{Nagoya University}{98} +\indexentry{Kyushu University}{98} +\indexentry{University of Tokyo}{98} +\indexentry{Japan}{98} +\indexentry{Harvard University}{98} +\indexentry{United States}{98} +\indexentry{education!engineering}{98} +\indexentry{University of Tokyo}{98} +\indexentry{Kyoto University}{98} +\indexentry{United States}{98} +\indexentry{education!engineering}{98} +\indexentry{Japan}{98} +\indexentry{United States}{98} +\indexentry{Japan}{98} +\indexentry{Japan}{98} +\indexentry{United States}{98} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{98} +\indexentry{Japan}{98} +\indexentry{Japan}{99} +\indexentry{United States}{99} +\indexentry{Japan}{99} +\indexentry{Kyoto University}{99} +\indexentry{United States}{99} +\indexentry{University of California at Berkeley}{99} +\indexentry{degrees!bachelor's}{99} +\indexentry{Japan}{99} +\indexentry{United States}{99} +\indexentry{education!engineering}{99} +\indexentry{Japan}{99} +\indexentry{Meiji Period}{100} +\indexentry{engineering}{100} +\indexentry{education!engineering}{100} +\indexentry{engineering}{100} +\indexentry{Japan}{100} +\indexentry{education!engineering}{100} +\indexentry{Japan}{100} +\indexentry{education}{100} +\indexentry{scientists and engineers!demographics of}{100} +\indexentry{education!engineering}{100} +\indexentry{United States}{100} +\indexentry{degrees!bachelor's}{100} +\indexentry{degrees!master's}{100} +\indexentry{degrees!master's}{100} +\indexentry{degrees!doctoral}{100} +\indexentry{degrees!master's}{100} +\indexentry{Japan}{101} +\indexentry{United States}{101} +\indexentry{Japan}{101} +\indexentry{Europe}{101} +\indexentry{education}{101} +\indexentry{education}{101} +\indexentry{Europe}{101} +\indexentry{China}{101} +\indexentry{Europe}{101} +\indexentry{China}{101} +\indexentry{China!Cultural Revolution}{101} +\indexentry{education}{101} +\indexentry{China}{101} +\indexentry{unemployment}{101} +\indexentry{China}{101} +\indexentry{computer science}{102} +\indexentry{China}{102} +\indexentry{computer science}{102} +\indexentry{computer science}{102} +\indexentry{education}{102} +\indexentry{computer science}{102} +\indexentry{computer}{102} +\indexentry{computer science}{102} +\indexentry{China}{102} +\indexentry{Association for Computing Machinery}{102} +\indexentry{war!Technology War}{102} +\indexentry{education}{102} +\indexentry{computer science}{102} +\indexentry{China!Cultural Revolution}{102} +\indexentry{computer science}{102} +\indexentry{China}{102} +\indexentry{United States}{102} +\indexentry{China}{103} +\indexentry{China}{103} +\indexentry{education}{103} +\indexentry{degrees!master's}{103} +\indexentry{degrees!master's}{103} +\indexentry{degrees!doctoral}{103} +\indexentry{degrees!doctoral}{103} +\indexentry{computer science}{103} +\indexentry{China}{103} +\indexentry{China}{103} +\indexentry{war!Technology War}{103} +\indexentry{war!Technology War}{103} +\indexentry{China}{103} +\indexentry{Great Britain}{103} +\indexentry{Great Britain}{103} +\indexentry{education}{103} +\indexentry{Great Britain}{103} +\indexentry{Babbage, Charles}{103} +\indexentry{Lovelace, Countess Augusta Ada Byron}{103} +\indexentry{Turing, Alan}{103} +\indexentry{education}{103} +\indexentry{scientists and engineers!demographics of}{103} +\indexentry{Great Britain}{103} +\indexentry{Great Britain}{103} +\indexentry{scientists and engineers!demographics of}{103} +\indexentry{education!engineering}{103} +\indexentry{information technology}{103} +\indexentry{United States}{103} +\indexentry{Japan}{103} +\indexentry{capital}{104} +\indexentry{education}{104} +\indexentry{research and development}{104} +\indexentry{war!Technology War}{104} +\indexentry{Great Britain}{104} +\indexentry{United States}{104} +\indexentry{degrees!doctoral}{104} +\indexentry{graduate schools of business}{104} +\indexentry{United States}{104} +\indexentry{United States}{104} +\indexentry{Japan}{104} +\indexentry{research and development}{104} +\indexentry{Great Britain}{104} +\indexentry{Alvey program}{104} +\indexentry{education}{104} +\indexentry{Great Britain}{104} +\indexentry{Great Britain}{104} +\indexentry{education}{104} +\indexentry{Germany}{105} +\indexentry{Germany}{105} +\indexentry{education!engineering}{105} +\indexentry{Technical University of Munich}{105} +\indexentry{University of Berlin}{105} +\indexentry{University of Karlsruhe}{105} +\indexentry{University of Erlangen}{105} +\indexentry{University of Saarbr\"ucken}{105} +\indexentry{Germany}{105} +\indexentry{computer science}{105} +\indexentry{Informatik}{105} +\indexentry{physics}{105} +\indexentry{Germany}{105} +\indexentry{education}{105} +\indexentry{United States}{105} +\indexentry{Germany}{105} +\indexentry{United States}{105} +\indexentry{Germany}{105} +\indexentry{Szilard, Leo}{105} +\indexentry{Einstein, Albert}{105} +\indexentry{Roosevelt, President Franklin}{105} +\indexentry{atomic bomb}{105} +\indexentry{Teller, Edward}{105} +\indexentry{hydrogen bomb}{105} +\indexentry{Bethe, Hans}{105} +\indexentry{Franck, James}{105} +\indexentry{Nordheim, Lothar W.}{105} +\indexentry{Rabinowitch, Eugene}{105} +\indexentry{United States}{105} +\indexentry{World War II}{105} +\indexentry{Germany}{105} +\indexentry{Germany}{105} +\indexentry{Germany}{106} +\indexentry{Germany}{106} +\indexentry{Germany}{106} +\indexentry{war!Technology War}{106} +\indexentry{France}{106} +\indexentry{education}{106} +\indexentry{physics}{106} +\indexentry{creativity}{106} +\indexentry{France}{106} +\indexentry{education}{106} +\indexentry{United States}{106} +\indexentry{degrees!doctoral}{106} +\indexentry{education}{107} +\indexentry{France}{107} +\indexentry{France}{107} +\indexentry{scientists and engineers!demographics of}{107} +\indexentry{education!engineering}{107} +\indexentry{scientists and engineers!demographics of}{107} +\indexentry{education!engineering}{107} +\indexentry{France}{107} +\indexentry{scientists and engineers!demographics of}{107} +\indexentry{education!engineering}{107} +\indexentry{scientists and engineers!demographics of}{107} +\indexentry{education!engineering}{107} +\indexentry{education!engineering}{107} +\indexentry{education!engineering}{107} +\indexentry{education}{107} +\indexentry{war!Technology War}{107} +\indexentry{war!conventional}{107} +\indexentry{degrees!doctoral}{107} +\indexentry{Nazis}{107} +\indexentry{United States}{108} +\indexentry{education}{108} +\indexentry{Japan}{108} +\indexentry{education!engineering}{108} +\indexentry{Japan}{108} +\indexentry{education}{108} +\indexentry{Japan}{108} +\indexentry{education}{108} +\indexentry{engineering!education}{108} +\indexentry{engineering}{108} +\indexentry{Japan}{108} +\indexentry{engineering}{108} +\indexentry{employment!lifetime}{108} +\indexentry{employment}{108} +\indexentry{technology transfer}{108} +\indexentry{technology transfer}{108} +\indexentry{Japan}{108} +\indexentry{employment!lifetime}{109} +\indexentry{employment}{109} +\indexentry{Europe}{109} +\indexentry{Japan}{109} +\indexentry{United States}{109} +\indexentry{Europe}{109} +\indexentry{venture capital}{109} +\indexentry{Japan}{109} +\indexentry{Europe}{109} +\indexentry{United States}{109} +\indexentry{Japan}{109} +\indexentry{employment!lifetime}{109} +\indexentry{Europe}{109} +\indexentry{Europe}{109} +\indexentry{education}{109} +\indexentry{war!Technology War}{109} +\indexentry{United States}{109} +\indexentry{education}{109} +\indexentry{education}{109} +\indexentry{computer science}{109} +\indexentry{engineering!education}{109} +\indexentry{innovation}{109} +\indexentry{United States}{109} +\indexentry{education}{109} +\indexentry{Germany}{109} +\indexentry{France}{109} +\indexentry{education}{109} +\indexentry{engineering!education}{109} +\indexentry{Great Britain}{109} +\indexentry{Japan}{109} +\indexentry{education}{109} +\indexentry{education!continuing}{109} +\indexentry{education}{110} +\indexentry{education!engineering}{110} +\indexentry{marketshare}{110} +\indexentry{unemployment}{110} +\indexentry{Singapore}{110} +\indexentry{Japan}{110} +\indexentry{United States}{110} +\indexentry{education}{110} +\indexentry{war!Technology War}{110} +\indexentry{war!Technology War}{110} +\indexentry{education}{110} +\indexentry{war!Technology War}{113} +\indexentry{capital}{113} +\indexentry{Japan}{113} +\indexentry{United States}{113} +\indexentry{Europe}{113} +\indexentry{United States}{113} +\indexentry{National Science Foundation}{113} +\indexentry{National Aeronautics and Space Administration (NASA)}{113} +\indexentry{information technology}{113} +\indexentry{United States}{113} +\indexentry{Department of Defense}{113} +\indexentry{Department of Defense}{113} +\indexentry{United States}{113} +\indexentry{war!conventional}{113} +\indexentry{war!nuclear}{113} +\indexentry{Soviet Union}{114} +\indexentry{Department of Defense}{114} +\indexentry{Soviet Union}{114} +\indexentry{United States}{114} +\indexentry{weapons}{114} +\indexentry{North Atlantic Treaty Organization}{114} +\indexentry{United States}{114} +\indexentry{weapons}{114} +\indexentry{World War II}{114} +\indexentry{war!Technology War}{114} +\indexentry{war!conventional}{114} +\indexentry{war!Technology War}{114} +\indexentry{weapons}{114} +\indexentry{weapons}{114} +\indexentry{Department of Defense}{115} +\indexentry{engineering}{115} +\indexentry{DARPA}{115} +\indexentry{Department of Defense}{115} +\indexentry{research and development}{115} +\indexentry{National Aeronautics and Space Administration (NASA)}{115} +\indexentry{DARPA}{115} +\indexentry{National Aeronautics and Space Administration (NASA)}{115} +\indexentry{DARPA}{115} +\indexentry{missile}{115} +\indexentry{ballistic missile defense}{115} +\indexentry{DARPA}{115} +\indexentry{DARPA}{115} +\indexentry{DARPA}{115} +\indexentry{DARPA}{115} +\indexentry{DARPA}{116} +\indexentry{Department of Defense}{116} +\indexentry{DARPA}{116} +\indexentry{artificial intelligence}{116} +\indexentry{DARPA}{116} +\indexentry{computer}{116} +\indexentry{United States}{116} +\indexentry{ARPANET}{116} +\indexentry{research support!computing}{116} +\indexentry{communications}{116} +\indexentry{computer science}{116} +\indexentry{ARPANET}{116} +\indexentry{communications}{116} +\indexentry{Department of Defense}{116} +\indexentry{ARPANET}{116} +\indexentry{TELENET}{116} +\indexentry{DARPA}{116} +\indexentry{Strategic Computing Initiative}{116} +\indexentry{computer!architecture}{116} +\indexentry{computer!architecture}{116} +\indexentry{DARPA}{116} +\indexentry{expert systems}{116} +\indexentry{DARPA}{117} +\indexentry{DARPA}{117} +\indexentry{Strategic Computing Initiative}{117} +\indexentry{missile}{117} +\indexentry{DARPA}{117} +\indexentry{Pilot's Associate}{117} +\indexentry{weapons}{117} +\indexentry{weapons}{117} +\indexentry{DARPA}{117} +\indexentry{Pilot's Associate}{117} +\indexentry{expert systems}{117} +\indexentry{DARPA}{117} +\indexentry{DARPA}{118} +\indexentry{Strategic Defense Initiative}{118} +\indexentry{Reagan, President Ronald}{118} +\indexentry{weapons!nuclear}{118} +\indexentry{weapons}{118} +\indexentry{Strategic Defense Initiative}{118} +\indexentry{Strategic Defense Initiative}{118} +\indexentry{information technology}{118} +\indexentry{Strategic Defense Initiative}{118} +\indexentry{DARPA}{118} +\indexentry{DARPA}{118} +\indexentry{gallium arsenide}{118} +\indexentry{Strategic Defense Initiative}{118} +\indexentry{Strategic Defense Initiative}{118} +\indexentry{DARPA}{118} +\indexentry{Strategic Defense Initiative}{118} +\indexentry{war!nuclear}{119} +\indexentry{North Atlantic Treaty Organization}{119} +\indexentry{United States}{119} +\indexentry{Strategic Defense Initiative}{119} +\indexentry{Strategic Defense Initiative}{119} +\indexentry{Japan}{119} +\indexentry{weapons!nuclear}{119} +\indexentry{United States}{119} +\indexentry{gallium arsenide}{119} +\indexentry{United States}{119} +\indexentry{Japan}{119} +\indexentry{Strategic Defense Initiative}{119} +\indexentry{Strategic Defense Initiative}{119} +\indexentry{software}{119} +\indexentry{computer science}{119} +\indexentry{Strategic Defense Initiative}{119} +\indexentry{missile}{119} +\indexentry{ballistic missile defense}{119} +\indexentry{software}{119} +\indexentry{Strategic Defense Initiative}{119} +\indexentry{weapons!nuclear}{119} +\indexentry{software}{119} +\indexentry{Strategic Defense Initiative}{120} +\indexentry{Department of Defense}{120} +\indexentry{Strategic Defense Initiative}{120} +\indexentry{software}{120} +\indexentry{computer!architecture}{120} +\indexentry{computer!architecture}{120} +\indexentry{information technology}{120} +\indexentry{United States}{120} +\indexentry{war!Technology War}{120} +\indexentry{Strategic Defense Initiative}{120} +\indexentry{Strategic Defense Initiative}{120} +\indexentry{physics}{120} +\indexentry{Strategic Defense Initiative}{121} +\indexentry{war!Technology War}{121} +\indexentry{information technology}{121} +\indexentry{Strategic Defense Initiative}{121} +\indexentry{National Aeronautics and Space Administration (NASA)}{121} +\indexentry{Department of Defense}{121} +\indexentry{Strategic Defense Initiative}{121} +\indexentry{war!Technology War}{121} +\indexentry{Department of Defense}{121} +\indexentry{software}{121} +\indexentry{software!market}{121} +\indexentry{software}{121} +\indexentry{Department of Defense}{121} +\indexentry{Department of Defense}{121} +\indexentry{software}{122} +\indexentry{computer}{122} +\indexentry{software}{122} +\indexentry{software}{122} +\indexentry{technology transfer}{122} +\indexentry{algorithm}{122} +\indexentry{software}{122} +\indexentry{algorithm}{122} +\indexentry{Department of Defense}{122} +\indexentry{technology transfer}{122} +\indexentry{software}{122} +\indexentry{Department of Defense}{122} +\indexentry{software}{122} +\indexentry{standards}{122} +\indexentry{Department of Defense}{122} +\indexentry{Ada}{122} +\indexentry{Ada}{122} +\indexentry{Lovelace, Countess Augusta Ada Byron}{122} +\indexentry{Babbage, Charles}{122} +\indexentry{computer}{122} +\indexentry{Ada}{122} +\indexentry{hardware}{123} +\indexentry{Ada}{123} +\indexentry{Department of Defense}{123} +\indexentry{Ada}{123} +\indexentry{compiler}{123} +\indexentry{Ada}{123} +\indexentry{compiler}{123} +\indexentry{computer}{123} +\indexentry{compiler}{123} +\indexentry{Ada}{123} +\indexentry{Ada}{123} +\indexentry{Ada}{123} +\indexentry{Department of Defense}{123} +\indexentry{Ada}{123} +\indexentry{software}{123} +\indexentry{Ada}{123} +\indexentry{STARS Program}{123} +\indexentry{STARS Program}{123} +\indexentry{software}{123} +\indexentry{STARS Program}{123} +\indexentry{United States!procurement system}{123} +\indexentry{Department of Defense}{123} +\indexentry{software!engineering}{123} +\indexentry{Software Engineering Institute}{123} +\indexentry{Department of Defense}{123} +\indexentry{Carnegie-Mellon University}{123} +\indexentry{technology transfer}{123} +\indexentry{software}{123} +\indexentry{Department of Defense}{124} +\indexentry{technology transfer}{124} +\indexentry{education}{124} +\indexentry{technology transfer}{124} +\indexentry{degrees!master's}{124} +\indexentry{software!engineering}{124} +\indexentry{software}{124} +\indexentry{Department of Defense}{124} +\indexentry{United States!procurement system}{124} +\indexentry{software}{124} +\indexentry{software!engineering}{124} +\indexentry{software!engineering}{124} +\indexentry{software!engineering}{124} +\indexentry{Department of Defense}{124} +\indexentry{integrated circuits}{124} +\indexentry{VHSIC}{124} +\indexentry{VHSIC}{124} +\indexentry{VHSIC}{124} +\indexentry{weapons}{124} +\indexentry{computer-aided design}{124} +\indexentry{integrated circuits}{124} +\indexentry{prototype}{124} +\indexentry{VHSIC}{124} +\indexentry{VHSIC}{124} +\indexentry{STARS Program}{124} +\indexentry{National Science Foundation}{125} +\indexentry{National Science Foundation}{125} +\indexentry{engineering}{125} +\indexentry{National Science Foundation}{125} +\indexentry{National Science Foundation}{125} +\indexentry{education!engineering}{125} +\indexentry{education}{125} +\indexentry{National Science Foundation!Presidential Young Investigators}{125} +\indexentry{National Science Foundation}{125} +\indexentry{National Science Foundation}{125} +\indexentry{National Science Foundation}{125} +\indexentry{computational science}{125} +\indexentry{National Science Foundation}{125} +\indexentry{National Science Foundation}{125} +\indexentry{National Science Foundation!CISE Program}{125} +\indexentry{information technology}{125} +\indexentry{National Science Foundation!CISE Program}{125} +\indexentry{robotics}{125} +\indexentry{microelectronics}{125} +\indexentry{supercomputer}{125} +\indexentry{robotics}{125} +\indexentry{National Science Foundation}{126} +\indexentry{Bloch, Erich}{126} +\indexentry{engineering}{126} +\indexentry{National Science Foundation}{126} +\indexentry{National Science Foundation}{126} +\indexentry{National Science Foundation!CISE Program}{126} +\indexentry{DARPA}{126} +\indexentry{Department of Defense}{126} +\indexentry{National Science Foundation}{126} +\indexentry{computer science}{126} +\indexentry{National Science Foundation}{126} +\indexentry{United States}{126} +\indexentry{National Science Foundation}{126} +\indexentry{DARPA}{126} +\indexentry{Reagan, President Ronald}{126} +\indexentry{National Science Foundation}{126} +\indexentry{White House}{126} +\indexentry{Department of Energy}{126} +\indexentry{Argonne National Laboratory}{126} +\indexentry{Brookhaven National Laboratory}{126} +\indexentry{Lawrence Livermore National Laboratory}{126} +\indexentry{Los Alamos National Laboratories}{126} +\indexentry{Oak Ridge National Laboratory}{126} +\indexentry{Sandia National Laboratory}{126} +\indexentry{physics!nuclear}{127} +\indexentry{Department of Energy}{127} +\indexentry{computer}{127} +\indexentry{computer science}{127} +\indexentry{Department of Energy}{127} +\indexentry{supercomputer}{127} +\indexentry{supercomputer}{127} +\indexentry{Department of Energy}{127} +\indexentry{Department of Energy}{127} +\indexentry{supercomputer}{127} +\indexentry{Department of Energy}{127} +\indexentry{Soviet Union}{127} +\indexentry{China}{127} +\indexentry{Department of State}{127} +\indexentry{Department of Energy}{127} +\indexentry{Department of Defense}{127} +\indexentry{supercomputer}{127} +\indexentry{Europe}{127} +\indexentry{Department of Commerce}{127} +\indexentry{Cray Research}{127} +\indexentry{supercomputer}{127} +\indexentry{supercomputer}{127} +\indexentry{Europe}{127} +\indexentry{Department of Energy}{128} +\indexentry{Lawrence Livermore National Laboratory}{128} +\indexentry{supercomputer}{128} +\indexentry{supercomputer}{128} +\indexentry{Lawrence Livermore National Laboratory}{128} +\indexentry{prototype}{128} +\indexentry{computer}{128} +\indexentry{supercomputer}{128} +\indexentry{Lawrence Livermore National Laboratory}{128} +\indexentry{World War II}{128} +\indexentry{weapons}{128} +\indexentry{physics}{128} +\indexentry{engineering}{128} +\indexentry{weapons}{128} +\indexentry{technology transfer}{128} +\indexentry{technology transfer}{128} +\indexentry{research support!computing}{128} +\indexentry{research and development}{128} +\indexentry{Department of Defense}{128} +\indexentry{research and development}{128} +\indexentry{Reagan, President Ronald}{128} +\indexentry{Department of Defense}{128} +\indexentry{Department of Defense}{128} +\indexentry{research support!computing}{129} +\indexentry{computer!architecture}{129} +\indexentry{computer!architecture}{129} +\indexentry{research support!computing}{129} +\indexentry{computer!architecture}{129} +\indexentry{computer!architecture}{129} +\indexentry{Strategic Defense Initiative}{130} +\indexentry{Department of Defense}{130} +\indexentry{gross national product}{130} +\indexentry{gross national product}{130} +\indexentry{United States}{130} +\indexentry{United States}{130} +\indexentry{research and development}{130} +\indexentry{Japan}{130} +\indexentry{gross national product}{130} +\indexentry{Japan}{130} +\indexentry{research and development}{130} +\indexentry{IBM}{130} +\indexentry{capital}{130} +\indexentry{information technology}{131} +\indexentry{computer science}{131} +\indexentry{artificial intelligence}{131} +\indexentry{TRW}{131} +\indexentry{General Motors}{131} +\indexentry{information technology}{131} +\indexentry{war!Technology War}{131} +\indexentry{IBM}{131} +\indexentry{IBM}{131} +\indexentry{IBM}{131} +\indexentry{computer}{131} +\indexentry{UNIVAC}{131} +\indexentry{IBM}{131} +\indexentry{computer science}{131} +\indexentry{IBM}{132} +\indexentry{information technology}{132} +\indexentry{IBM!compatibility}{132} +\indexentry{IBM}{132} +\indexentry{IBM!System 360}{132} +\indexentry{information technology}{132} +\indexentry{IBM}{132} +\indexentry{computer!MARK I}{132} +\indexentry{Harvard University}{132} +\indexentry{World War II}{132} +\indexentry{IBM}{132} +\indexentry{IBM}{132} +\indexentry{IBM}{132} +\indexentry{IBM!compatibility}{132} +\indexentry{IBM}{132} +\indexentry{hardware}{132} +\indexentry{software}{132} +\indexentry{IBM}{132} +\indexentry{balance of trade}{132} +\indexentry{IBM}{132} +\indexentry{marketshare}{132} +\indexentry{Gartner Group}{132} +\indexentry{IBM}{132} +\indexentry{computer}{132} +\indexentry{Gartner Group}{133} +\indexentry{IBM}{133} +\indexentry{marketshare}{133} +\indexentry{IBM}{133} +\indexentry{software!market}{133} +\indexentry{software}{133} +\indexentry{software}{133} +\indexentry{marketshare}{133} +\indexentry{marketshare}{133} +\indexentry{standards}{133} +\indexentry{computer!personal}{133} +\indexentry{IBM}{133} +\indexentry{Malik, Rex}{133} +\indexentry{IBM}{133} +\indexentry{IBM}{133} +\indexentry{Europe}{133} +\indexentry{Europe}{133} +\indexentry{IBM}{133} +\indexentry{IBM}{133} +\indexentry{balance of trade}{133} +\indexentry{Department of Commerce}{133} +\indexentry{Department of Defense}{133} +\indexentry{IBM}{133} +\indexentry{IBM}{133} +\indexentry{Department of Justice}{133} +\indexentry{antitrust laws}{133} +\indexentry{IBM}{133} +\indexentry{United States}{133} +\indexentry{antitrust laws}{133} +\indexentry{IBM}{133} +\indexentry{antitrust laws}{133} +\indexentry{IBM}{133} +\indexentry{Reagan, President Ronald}{133} +\indexentry{Reagan administration}{134} +\indexentry{IBM}{134} +\indexentry{IBM}{134} +\indexentry{war!Technology War}{134} +\indexentry{research and development}{134} +\indexentry{IBM}{134} +\indexentry{IBM!Research Centers}{134} +\indexentry{IBM!Research Centers!San Jose}{134} +\indexentry{Switzerland}{134} +\indexentry{IBM}{134} +\indexentry{IBM}{134} +\indexentry{research and development}{134} +\indexentry{engineering}{134} +\indexentry{IBM}{134} +\indexentry{IBM}{134} +\indexentry{hardware}{134} +\indexentry{IBM}{134} +\indexentry{RAMAC}{134} +\indexentry{IBM}{134} +\indexentry{RAMAC}{134} +\indexentry{bit}{134} +\indexentry{IBM}{134} +\indexentry{IBM!3380 disk unit}{134} +\indexentry{bit}{134} +\indexentry{Silicon Valley}{134} +\indexentry{computer}{134} +\indexentry{software}{135} +\indexentry{IBM}{135} +\indexentry{Codd, Ted}{135} +\indexentry{relational database}{135} +\indexentry{Codd, Ted}{135} +\indexentry{IBM!Research Centers!San Jose}{135} +\indexentry{System R}{135} +\indexentry{relational database}{135} +\indexentry{relational database}{135} +\indexentry{Codd, Ted}{135} +\indexentry{Association for Computing Machinery}{135} +\indexentry{Turing!award}{135} +\indexentry{IBM}{135} +\indexentry{physics!surface}{135} +\indexentry{IBM}{135} +\indexentry{bit}{135} +\indexentry{bit}{135} +\indexentry{dynamic RAM}{135} +\indexentry{RAM}{135} +\indexentry{IBM}{135} +\indexentry{ballistic transport}{135} +\indexentry{IBM}{135} +\indexentry{innovation}{135} +\indexentry{IBM}{135} +\indexentry{IBM}{135} +\indexentry{IBM!Fellow}{135} +\indexentry{IBM!Fellow}{135} +\indexentry{IBM!Fellow}{135} +\indexentry{IBM}{136} +\indexentry{computer science}{136} +\indexentry{Bell Laboratories}{136} +\indexentry{Xerox}{136} +\indexentry{Xerox!Palo Alto Research Center}{136} +\indexentry{Bell Laboratories}{136} +\indexentry{IBM}{136} +\indexentry{IBM}{136} +\indexentry{innovation}{136} +\indexentry{artificial intelligence}{136} +\indexentry{IBM}{136} +\indexentry{artificial intelligence}{136} +\indexentry{IBM}{136} +\indexentry{IBM!Research Centers}{136} +\indexentry{innovation}{136} +\indexentry{technology transfer}{136} +\indexentry{United States}{136} +\indexentry{Xerox}{136} +\indexentry{Bell Laboratories}{136} +\indexentry{innovation}{136} +\indexentry{AT\&T}{136} +\indexentry{Bell, Alexander Graham}{136} +\indexentry{United States}{136} +\indexentry{Department of Justice}{137} +\indexentry{antitrust laws}{137} +\indexentry{AT\&T}{137} +\indexentry{AT\&T}{137} +\indexentry{AT\&T}{137} +\indexentry{communications}{137} +\indexentry{antitrust laws}{137} +\indexentry{Federal Communications Commission}{137} +\indexentry{communications}{137} +\indexentry{innovation}{137} +\indexentry{communications}{137} +\indexentry{Federal Communications Commission}{137} +\indexentry{communications}{137} +\indexentry{communications}{137} +\indexentry{communications}{137} +\indexentry{Federal Communications Commission}{137} +\indexentry{communications}{138} +\indexentry{AT\&T}{138} +\indexentry{computer}{138} +\indexentry{Radio Corporation of America}{138} +\indexentry{Philco Corporation}{138} +\indexentry{Xerox}{138} +\indexentry{General Electric Company}{138} +\indexentry{communications}{138} +\indexentry{war!Technology War}{138} +\indexentry{NEC}{138} +\indexentry{Nippon Telephone and Telegraph}{138} +\indexentry{Japan}{138} +\indexentry{Japan}{138} +\indexentry{Bell Laboratories}{138} +\indexentry{Japan}{138} +\indexentry{Electro-Technical Laboratories}{138} +\indexentry{Bell Laboratories}{138} +\indexentry{Bell Laboratories}{138} +\indexentry{war!Technology War}{138} +\indexentry{AT\&T}{138} +\indexentry{Bell Laboratories}{138} +\indexentry{patent}{139} +\indexentry{Bell Laboratories}{139} +\indexentry{Bell Laboratories}{139} +\indexentry{transistor}{139} +\indexentry{Bell Laboratories}{139} +\indexentry{transistor}{139} +\indexentry{technology transfer}{139} +\indexentry{transistor}{139} +\indexentry{transistor}{139} +\indexentry{Bell Laboratories}{139} +\indexentry{UNIX operating system}{139} +\indexentry{Bell Laboratories}{139} +\indexentry{Ritchie, Dennis~M.}{139} +\indexentry{Thompson, Ken}{139} +\indexentry{technology transfer}{139} +\indexentry{UNIX operating system}{139} +\indexentry{Thompson, Ken}{139} +\indexentry{Digital Equipment Corporation}{139} +\indexentry{Digital Equipment Corporation!PDP-7}{139} +\indexentry{computer}{139} +\indexentry{computer!personal}{139} +\indexentry{Ritchie, Dennis~M.}{139} +\indexentry{UNIX operating system}{139} +\indexentry{Ritchie, Dennis~M.}{139} +\indexentry{Thompson, Ken}{139} +\indexentry{Association for Computing Machinery}{139} +\indexentry{Turing!award}{139} +\indexentry{Ritchie, Dennis~M.}{139} +\indexentry{Bell Laboratories}{139} +\indexentry{Bell Laboratories}{139} +\indexentry{UNIX operating system}{139} +\indexentry{IBM}{139} +\indexentry{computer}{139} +\indexentry{AT\&T}{140} +\indexentry{AT\&T}{140} +\indexentry{Bell Communication Research}{140} +\indexentry{United States}{140} +\indexentry{Bell Communication Research}{140} +\indexentry{United States}{140} +\indexentry{computer science}{140} +\indexentry{physics!solid state}{140} +\indexentry{communications}{140} +\indexentry{software}{140} +\indexentry{Bell Laboratories}{140} +\indexentry{Bell Laboratories}{140} +\indexentry{technology transfer}{140} +\indexentry{Bell Laboratories}{140} +\indexentry{technology transfer}{140} +\indexentry{Bell Laboratories}{140} +\indexentry{Karmarkar, Narendra}{140} +\indexentry{algorithm}{140} +\indexentry{linear programming}{140} +\indexentry{linear programming}{140} +\indexentry{linear programming}{140} +\indexentry{linear programming}{140} +\indexentry{algorithm}{140} +\indexentry{algorithm!Khachiyan's}{140} +\indexentry{algorithm}{140} +\indexentry{Karmarkar, Narendra}{141} +\indexentry{algorithm!Karmarkar's}{141} +\indexentry{algorithm}{141} +\indexentry{linear programming}{141} +\indexentry{Bell Laboratories}{141} +\indexentry{Bell Laboratories}{141} +\indexentry{Karmarkar, Narendra}{141} +\indexentry{algorithm!Karmarkar's}{141} +\indexentry{algorithm}{141} +\indexentry{Bell Laboratories}{141} +\indexentry{Bell Laboratories}{141} +\indexentry{technology transfer}{141} +\indexentry{Digital Equipment Corporation}{141} +\indexentry{United States}{141} +\indexentry{Olsen, Kenneth H.}{141} +\indexentry{minicomputer}{141} +\indexentry{Digital Equipment Corporation}{141} +\indexentry{minicomputer}{141} +\indexentry{Digital Equipment Corporation!PDP-8}{141} +\indexentry{minicomputer}{141} +\indexentry{minicomputer}{141} +\indexentry{Digital Equipment Corporation}{141} +\indexentry{Digital Equipment Corporation}{141} +\indexentry{Digital Equipment Corporation}{141} +\indexentry{computer!VAX}{141} +\indexentry{Digital Equipment Corporation!VAX}{141} +\indexentry{computer}{141} +\indexentry{hardware}{141} +\indexentry{communications}{141} +\indexentry{Digital Equipment Corporation}{141} +\indexentry{IBM}{141} +\indexentry{Digital Equipment Corporation}{141} +\indexentry{computer}{142} +\indexentry{Digital Equipment Corporation}{142} +\indexentry{IBM}{142} +\indexentry{Digital Equipment Corporation}{142} +\indexentry{computer!personal}{142} +\indexentry{Digital Equipment Corporation}{142} +\indexentry{computer!personal}{142} +\indexentry{Digital Equipment Corporation}{142} +\indexentry{minicomputer}{142} +\indexentry{Digital Equipment Corporation}{142} +\indexentry{Digital Equipment Corporation}{142} +\indexentry{IBM}{142} +\indexentry{IBM}{142} +\indexentry{Sun Microsystems Inc.}{142} +\indexentry{Unisys}{142} +\indexentry{Digital Equipment Corporation}{142} +\indexentry{IBM}{142} +\indexentry{Digital Equipment Corporation}{142} +\indexentry{war!Technology War}{142} +\indexentry{Digital Equipment Corporation}{142} +\indexentry{marketshare}{142} +\indexentry{workstation}{142} +\indexentry{Digital Equipment Corporation}{142} +\indexentry{Digital Equipment Corporation}{142} +\indexentry{war!Technology War}{142} +\indexentry{Digital Equipment Corporation}{142} +\indexentry{Digital Equipment Corporation!VAX}{142} +\indexentry{Digital Equipment Corporation}{142} +\indexentry{Digital Equipment Corporation}{142} +\indexentry{Xerox}{142} +\indexentry{technology transfer}{143} +\indexentry{Digital Equipment Corporation}{143} +\indexentry{IBM}{143} +\indexentry{BUNCH}{143} +\indexentry{BUNCH}{143} +\indexentry{Burroughs}{143} +\indexentry{Sperry Univac}{143} +\indexentry{Unisys}{143} +\indexentry{Burroughs}{143} +\indexentry{Sperry Univac}{143} +\indexentry{National Cash Register Company}{143} +\indexentry{Control Data Corp.}{143} +\indexentry{Honeywell}{143} +\indexentry{BUNCH}{143} +\indexentry{Digital Equipment Corporation}{143} +\indexentry{IBM}{143} +\indexentry{IBM!compatibility}{143} +\indexentry{United States}{143} +\indexentry{BUNCH}{143} +\indexentry{hardware}{143} +\indexentry{BUNCH}{143} +\indexentry{General Electric Company}{143} +\indexentry{Radio Corporation of America}{143} +\indexentry{BUNCH}{143} +\indexentry{Seven Dwarfs}{143} +\indexentry{IBM}{143} +\indexentry{General Electric Company}{143} +\indexentry{Radio Corporation of America}{143} +\indexentry{General Electric Company}{143} +\indexentry{Radio Corporation of America}{143} +\indexentry{Seven Dwarfs}{143} +\indexentry{BUNCH}{143} +\indexentry{IBM}{143} +\indexentry{war!Technology War}{143} +\indexentry{IBM}{143} +\indexentry{war!Technology War}{143} +\indexentry{hardware}{144} +\indexentry{software}{144} +\indexentry{IBM}{144} +\indexentry{IBM!compatibility}{144} +\indexentry{IBM}{144} +\indexentry{Anderson, William S.}{144} +\indexentry{National Cash Register Company}{144} +\indexentry{BUNCH}{144} +\indexentry{BUNCH}{144} +\indexentry{marketshare}{144} +\indexentry{BUNCH}{144} +\indexentry{IBM}{144} +\indexentry{IBM}{144} +\indexentry{IBM!compatibility}{144} +\indexentry{IBM}{144} +\indexentry{IBM}{144} +\indexentry{IBM!compatibility}{144} +\indexentry{BUNCH}{144} +\indexentry{marketshare}{144} +\indexentry{BUNCH}{144} +\indexentry{minicomputer}{144} +\indexentry{Digital Equipment Corporation}{144} +\indexentry{Hewlett-Packard}{144} +\indexentry{BUNCH}{144} +\indexentry{BUNCH}{145} +\indexentry{IBM!compatibility}{145} +\indexentry{IBM}{145} +\indexentry{IBM}{145} +\indexentry{BUNCH}{145} +\indexentry{IBM}{145} +\indexentry{computer}{145} +\indexentry{Unisys}{145} +\indexentry{Burroughs}{145} +\indexentry{Sperry Univac}{145} +\indexentry{communications}{145} +\indexentry{Burroughs}{145} +\indexentry{hardware}{145} +\indexentry{IBM}{145} +\indexentry{marketshare}{145} +\indexentry{marketshare}{145} +\indexentry{Sperry Univac}{145} +\indexentry{communications}{145} +\indexentry{UNIVAC!Model I}{145} +\indexentry{UNIVAC}{145} +\indexentry{transistor}{145} +\indexentry{Sperry Univac}{145} +\indexentry{Sperry Univac}{145} +\indexentry{Radio Corporation of America}{145} +\indexentry{Sperry Univac}{145} +\indexentry{Burroughs}{145} +\indexentry{Unisys}{146} +\indexentry{Sperry Univac}{146} +\indexentry{Burroughs}{146} +\indexentry{Honeywell}{146} +\indexentry{General Electric Company}{146} +\indexentry{National Cash Register Company}{146} +\indexentry{Watson, Sr., Thomas J.}{146} +\indexentry{IBM}{146} +\indexentry{computer}{146} +\indexentry{National Cash Register Company}{146} +\indexentry{IBM!compatibility}{146} +\indexentry{communications}{146} +\indexentry{UNIX operating system}{146} +\indexentry{Control Data Corp.}{146} +\indexentry{computer}{146} +\indexentry{Plato system}{146} +\indexentry{supercomputer}{146} +\indexentry{supercomputer}{146} +\indexentry{Cray Research}{146} +\indexentry{IBM}{146} +\indexentry{antitrust laws}{146} +\indexentry{Control Data Corp.}{146} +\indexentry{Control Data Corp.}{146} +\indexentry{war!Technology War}{146} +\indexentry{Microelectronics and Computer Technology Corporation}{146} +\indexentry{Honeywell}{146} +\indexentry{General Electric Company}{146} +\indexentry{Honeywell}{146} +\indexentry{Xerox}{147} +\indexentry{marketshare}{147} +\indexentry{IBM}{147} +\indexentry{Fishman, Katherine~D.}{147} +\indexentry{IBM}{147} +\indexentry{IBM!System 360}{147} +\indexentry{Honeywell}{147} +\indexentry{IBM}{147} +\indexentry{Honeywell}{147} +\indexentry{NEC}{147} +\indexentry{Bull}{147} +\indexentry{NEC}{147} +\indexentry{hardware}{147} +\indexentry{Honeywell}{147} +\indexentry{war!Technology War}{147} +\indexentry{Hewlett-Packard}{147} +\indexentry{Silicon Valley}{147} +\indexentry{Hewlett-Packard}{147} +\indexentry{technology transfer}{147} +\indexentry{Hewlett-Packard}{147} +\indexentry{Hewlett-Packard}{147} +\indexentry{Hewlett-Packard}{147} +\indexentry{minicomputer}{147} +\indexentry{Hewlett-Packard}{147} +\indexentry{software}{148} +\indexentry{Hewlett-Packard}{148} +\indexentry{Hewlett-Packard}{148} +\indexentry{Hewlett-Packard}{148} +\indexentry{computer}{148} +\indexentry{Hewlett-Packard}{148} +\indexentry{minicomputer}{148} +\indexentry{Hewlett-Packard}{148} +\indexentry{computer}{148} +\indexentry{Hewlett-Packard}{148} +\indexentry{minicomputer}{148} +\indexentry{workstation}{148} +\indexentry{Apple Computer Company}{148} +\indexentry{Xerox}{148} +\indexentry{Sun Microsystems Inc.}{148} +\indexentry{innovation}{148} +\indexentry{Apple Computer Company}{149} +\indexentry{computer!personal}{149} +\indexentry{Apple Computer Company!II}{149} +\indexentry{Apple Computer Company}{149} +\indexentry{Apple Computer Company}{149} +\indexentry{Apple Computer Company}{149} +\indexentry{Apple Computer Company}{149} +\indexentry{Apple Computer Company!III}{149} +\indexentry{McKenna, Regis}{149} +\indexentry{Apple Computer Company!III}{149} +\indexentry{Apple Computer Company!II}{149} +\indexentry{Apple Computer Company!IIe}{149} +\indexentry{Apple Computer Company}{149} +\indexentry{Apple Computer Company!IIe}{149} +\indexentry{Jobs, Steve}{149} +\indexentry{computer!personal}{149} +\indexentry{software}{149} +\indexentry{Xerox}{149} +\indexentry{Xerox!Palo Alto Research Center}{149} +\indexentry{Jobs, Steve}{149} +\indexentry{Apple Computer Company!Lisa}{149} +\indexentry{Apple Computer Company!Lisa}{149} +\indexentry{Apple Computer Company!Lisa}{149} +\indexentry{computer!personal}{149} +\indexentry{IBM!compatibility}{149} +\indexentry{Apple Computer Company!Macintosh}{149} +\indexentry{software}{149} +\indexentry{Apple Computer Company!Macintosh}{149} +\indexentry{Apple Computer Company}{149} +\indexentry{Apple Computer Company!Macintosh}{150} +\indexentry{Apple Computer Company!Macintosh}{150} +\indexentry{Apple Computer Company}{150} +\indexentry{technology transfer}{150} +\indexentry{Apple Computer Company}{150} +\indexentry{intellectual property!rights}{150} +\indexentry{intellectual property!laws}{150} +\indexentry{copyright}{150} +\indexentry{software!protection}{150} +\indexentry{software}{150} +\indexentry{Apple Computer Company}{150} +\indexentry{war!Technology War}{150} +\indexentry{Xerox}{150} +\indexentry{Xerox!914 copier}{150} +\indexentry{Xerox!copiers}{150} +\indexentry{Xerox!914 copier}{150} +\indexentry{Xerox}{150} +\indexentry{Xerox!914 copier}{150} +\indexentry{Xerox}{150} +\indexentry{Xerox}{150} +\indexentry{marketshare}{150} +\indexentry{Xerox!copiers}{150} +\indexentry{Canon Inc.}{150} +\indexentry{Ricoh Inc.}{150} +\indexentry{Xerox}{150} +\indexentry{Xerox}{150} +\indexentry{Japan}{150} +\indexentry{Eastman Kodak Company}{150} +\indexentry{IBM}{150} +\indexentry{Xerox}{150} +\indexentry{computer}{150} +\indexentry{Xerox}{150} +\indexentry{Xerox}{151} +\indexentry{Scientific Data Systems}{151} +\indexentry{minicomputer}{151} +\indexentry{Xerox}{151} +\indexentry{Xerox}{151} +\indexentry{Xerox}{151} +\indexentry{Xerox!Palo Alto Research Center}{151} +\indexentry{workstation}{151} +\indexentry{Xerox}{151} +\indexentry{computer}{151} +\indexentry{Xerox}{151} +\indexentry{Xerox!STAR computer}{151} +\indexentry{workstation}{151} +\indexentry{Xerox}{151} +\indexentry{Xerox!STAR computer}{151} +\indexentry{Xerox}{151} +\indexentry{marketshare}{151} +\indexentry{Xerox!copiers}{151} +\indexentry{Xerox}{151} +\indexentry{Fuji Xerox}{151} +\indexentry{Xerox}{151} +\indexentry{Xerox!copiers}{151} +\indexentry{computer}{151} +\indexentry{IBM}{151} +\indexentry{communications}{151} +\indexentry{Sun Microsystems Inc.}{151} +\indexentry{Sun Microsystems Inc.}{151} +\indexentry{workstation}{151} +\indexentry{Sun Microsystems Inc.}{151} +\indexentry{venture capital}{151} +\indexentry{Sun Microsystems Inc.}{152} +\indexentry{Joy, William N.}{152} +\indexentry{University of California at Berkeley}{152} +\indexentry{Sun Microsystems Inc.}{152} +\indexentry{Joy, William N.}{152} +\indexentry{UNIX operating system!4.2 BSD}{152} +\indexentry{software}{152} +\indexentry{Sun Microsystems Inc.}{152} +\indexentry{Sun Microsystems Inc.}{152} +\indexentry{Sun Microsystems Inc.}{152} +\indexentry{workstation}{152} +\indexentry{Digital Equipment Corporation}{152} +\indexentry{Sun Microsystems Inc.}{152} +\indexentry{Sun Microsystems Inc.}{152} +\indexentry{Sun Microsystems Inc.}{152} +\indexentry{Motorola}{152} +\indexentry{computer!memory}{152} +\indexentry{Sun Microsystems Inc.}{152} +\indexentry{UNIX operating system}{152} +\indexentry{UNIX operating system}{152} +\indexentry{UNIX operating system!System V}{152} +\indexentry{AT\&T}{152} +\indexentry{workstation}{152} +\indexentry{Sun Microsystems Inc.}{152} +\indexentry{IBM}{152} +\indexentry{computer!personal}{152} +\indexentry{workstation}{152} +\indexentry{IBM}{152} +\indexentry{Sun Microsystems Inc.}{152} +\indexentry{innovation}{152} +\indexentry{IBM}{152} +\indexentry{Sun Microsystems Inc.}{152} +\indexentry{technology transfer}{152} +\indexentry{war!Technology War}{152} +\indexentry{information technology}{153} +\indexentry{NEC}{153} +\indexentry{Department of Justice}{153} +\indexentry{Department of Commerce}{153} +\indexentry{Norris, William C.}{153} +\indexentry{Control Data Corp.}{153} +\indexentry{capital}{153} +\indexentry{Norris, William C.}{153} +\indexentry{Inman, Admiral Bobby R.}{153} +\indexentry{Central Intelligence Agency}{153} +\indexentry{National Security Agency}{153} +\indexentry{Inman, Admiral Bobby R.}{153} +\indexentry{United States}{153} +\indexentry{United States}{153} +\indexentry{Inman, Admiral Bobby R.}{153} +\indexentry{United States!Congress}{154} +\indexentry{Inman, Admiral Bobby R.}{154} +\indexentry{Norris, William C.}{154} +\indexentry{microelectronics}{154} +\indexentry{Microelectronics and Computer Technology Corporation}{154} +\indexentry{Microelectronics and Computer Technology Corporation}{154} +\indexentry{research and development}{154} +\indexentry{Microelectronics and Computer Technology Corporation}{154} +\indexentry{Microelectronics and Computer Technology Corporation}{154} +\indexentry{artificial intelligence}{154} +\indexentry{computer!architecture}{154} +\indexentry{computer!architecture}{154} +\indexentry{expert systems}{154} +\indexentry{computer!architecture}{154} +\indexentry{computer!architecture}{154} +\indexentry{Microelectronics and Computer Technology Corporation}{154} +\indexentry{computer-aided design}{154} +\indexentry{Microelectronics and Computer Technology Corporation}{154} +\indexentry{Microelectronics and Computer Technology Corporation}{154} +\indexentry{software}{154} +\indexentry{computer science}{154} +\indexentry{Microelectronics and Computer Technology Corporation}{154} +\indexentry{Microelectronics and Computer Technology Corporation}{154} +\indexentry{Microelectronics and Computer Technology Corporation}{154} +\indexentry{technology transfer}{154} +\indexentry{Microelectronics and Computer Technology Corporation}{154} +\indexentry{technology transfer}{154} +\indexentry{Inman, Admiral Bobby R.}{155} +\indexentry{Microelectronics and Computer Technology Corporation}{155} +\indexentry{technology transfer}{155} +\indexentry{Microelectronics and Computer Technology Corporation}{155} +\indexentry{Inman, Admiral Bobby R.}{155} +\indexentry{Microelectronics and Computer Technology Corporation}{155} +\indexentry{Semiconductor Research Corporation}{155} +\indexentry{microelectronics}{155} +\indexentry{marketshare}{155} +\indexentry{United States}{155} +\indexentry{research and development}{155} +\indexentry{Semiconductor Research Corporation}{155} +\indexentry{Semiconductor Research Corporation}{155} +\indexentry{Semiconductor Research Corporation}{155} +\indexentry{Semiconductor Research Corporation}{155} +\indexentry{patent}{155} +\indexentry{microelectronics}{155} +\indexentry{Microelectronics Center of North Carolina}{155} +\indexentry{microelectronics}{155} +\indexentry{Microelectronics Center of North Carolina}{155} +\indexentry{Research Triangle Institute}{155} +\indexentry{research and development}{155} +\indexentry{computer science}{155} +\indexentry{computer-aided design}{155} +\indexentry{Microelectronics Center of North Carolina}{156} +\indexentry{microelectronics}{156} +\indexentry{computer!architecture}{156} +\indexentry{computer!architecture}{156} +\indexentry{Microelectronics Center of North Carolina}{156} +\indexentry{Fifth Generation Computer Program}{156} +\indexentry{Japan}{157} +\indexentry{World War II}{157} +\indexentry{Japan}{157} +\indexentry{Japan}{157} +\indexentry{Japan}{157} +\indexentry{exports}{157} +\indexentry{exports}{157} +\indexentry{marketshare}{157} +\indexentry{war!Technology War}{157} +\indexentry{World War II}{157} +\indexentry{Japan}{158} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{158} +\indexentry{Japan}{158} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{158} +\indexentry{Japan}{158} +\indexentry{war!Technology War}{158} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{158} +\indexentry{war!Technology War}{158} +\indexentry{robotics}{158} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{158} +\indexentry{research and development}{158} +\indexentry{information technology}{158} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{158} +\indexentry{Japan}{158} +\indexentry{Fujitsu}{158} +\indexentry{Hitachi}{158} +\indexentry{Mitsubishi Electric Company}{158} +\indexentry{Matsushita Electric Industrial Co.}{158} +\indexentry{NEC}{158} +\indexentry{Toshiba}{158} +\indexentry{Oki Electric Company}{158} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{158} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{158} +\indexentry{capital}{158} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{158} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{158} +\indexentry{steel}{158} +\indexentry{Sumitomo Steel}{158} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{159} +\indexentry{marketshare}{159} +\indexentry{steel}{159} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{159} +\indexentry{Toshiba}{159} +\indexentry{NEC}{159} +\indexentry{Mitsubishi Electric Company}{159} +\indexentry{UNIVAC}{159} +\indexentry{Oki Electric Company}{159} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{159} +\indexentry{NEC}{159} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{159} +\indexentry{NEC}{159} +\indexentry{IBM}{159} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{159} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{159} +\indexentry{Ministry of Education}{159} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{159} +\indexentry{University of Tokyo}{159} +\indexentry{Keio University}{159} +\indexentry{Kyoto University}{159} +\indexentry{University of Tsukuba}{159} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{159} +\indexentry{Japan}{159} +\indexentry{United States}{159} +\indexentry{National Bureau of Standards}{159} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{159} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{159} +\indexentry{Electro-Technical Laboratories}{159} +\indexentry{Tsukuba}{159} +\indexentry{Electro-Technical Laboratories}{159} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{159} +\indexentry{research and development}{159} +\indexentry{Electro-Technical Laboratories}{159} +\indexentry{National Bureau of Standards}{160} +\indexentry{Los Alamos National Laboratories}{160} +\indexentry{Electro-Technical Laboratories}{160} +\indexentry{information technology}{160} +\indexentry{computer science}{160} +\indexentry{Electro-Technical Laboratories}{160} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{160} +\indexentry{Electro-Technical Laboratories}{160} +\indexentry{Japan}{160} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{160} +\indexentry{Tsukuba}{160} +\indexentry{Japan}{160} +\indexentry{Tsukuba}{160} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{160} +\indexentry{information technology}{160} +\indexentry{ICOT}{160} +\indexentry{ICOT}{160} +\indexentry{ICOT}{160} +\indexentry{Electro-Communications Laboratories}{160} +\indexentry{Nippon Telephone and Telegraph}{160} +\indexentry{Electro-Technical Laboratories}{160} +\indexentry{ICOT}{160} +\indexentry{ICOT}{160} +\indexentry{technology transfer}{160} +\indexentry{ICOT}{160} +\indexentry{ICOT}{160} +\indexentry{technology transfer}{160} +\indexentry{ICOT}{160} +\indexentry{Toshiba}{161} +\indexentry{ICOT}{161} +\indexentry{Toshiba}{161} +\indexentry{ICOT}{161} +\indexentry{ICOT}{161} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{161} +\indexentry{ICOT}{161} +\indexentry{ICOT}{161} +\indexentry{Fifth Generation Computer Program}{161} +\indexentry{ICOT}{161} +\indexentry{computer}{161} +\indexentry{knowledge engineering}{161} +\indexentry{expert systems}{161} +\indexentry{war!Technology War}{161} +\indexentry{computer}{161} +\indexentry{transistor}{161} +\indexentry{transistor}{161} +\indexentry{VLSI}{161} +\indexentry{computer}{161} +\indexentry{computer!architecture}{162} +\indexentry{hardware}{162} +\indexentry{software}{162} +\indexentry{United States}{162} +\indexentry{Europe}{162} +\indexentry{VLSI}{162} +\indexentry{computer-aided design}{162} +\indexentry{ICOT}{162} +\indexentry{Fuchi, Kazuhiro}{162} +\indexentry{ICOT}{162} +\indexentry{ICOT}{162} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{162} +\indexentry{hardware}{162} +\indexentry{ICOT}{162} +\indexentry{personal sequential inference machine}{162} +\indexentry{machine inference}{162} +\indexentry{personal sequential inference machine}{162} +\indexentry{PROLOG}{162} +\indexentry{personal sequential inference machine}{162} +\indexentry{Mitsubishi Electric Company}{162} +\indexentry{PROLOG}{162} +\indexentry{PROLOG}{162} +\indexentry{United States}{162} +\indexentry{artificial intelligence}{162} +\indexentry{United States}{162} +\indexentry{PROLOG}{162} +\indexentry{artificial intelligence}{162} +\indexentry{Japan}{162} +\indexentry{ICOT}{162} +\indexentry{ICOT}{162} +\indexentry{Fuchi, Kazuhiro}{163} +\indexentry{ICOT}{163} +\indexentry{Moto-Oka, Tohru}{163} +\indexentry{artificial intelligence}{163} +\indexentry{Japan}{163} +\indexentry{artificial intelligence}{163} +\indexentry{artificial intelligence}{163} +\indexentry{ICOT}{163} +\indexentry{ICOT}{163} +\indexentry{National Science Foundation}{163} +\indexentry{ICOT}{163} +\indexentry{ICOT}{163} +\indexentry{ICOT}{163} +\indexentry{ICOT}{163} +\indexentry{National Science Foundation}{163} +\indexentry{ICOT}{163} +\indexentry{United States}{163} +\indexentry{Fifth Generation Computer Program}{163} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{163} +\indexentry{information technology}{163} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{163} +\indexentry{information technology}{163} +\indexentry{Japan!National Superspeed Computer Project}{163} +\indexentry{computer}{163} +\indexentry{computer!memory}{164} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{164} +\indexentry{Fujitsu}{164} +\indexentry{Hitachi}{164} +\indexentry{computer!architecture}{164} +\indexentry{computer!architecture}{164} +\indexentry{Mitsubishi Electric Company}{164} +\indexentry{gallium arsenide}{164} +\indexentry{NEC}{164} +\indexentry{Oki Electric Company}{164} +\indexentry{computer!architecture}{164} +\indexentry{computer!architecture}{164} +\indexentry{Toshiba}{164} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{164} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{164} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{164} +\indexentry{Japan!National Superspeed Computer Project}{164} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{164} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{164} +\indexentry{Electro-Technical Laboratories}{164} +\indexentry{Mitsubishi Electric Company}{164} +\indexentry{supercomputer}{165} +\indexentry{Aiso, Hideo}{165} +\indexentry{Keio University}{165} +\indexentry{supercomputer}{165} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{165} +\indexentry{Moto-Oka, Tohru}{165} +\indexentry{Fifth Generation Computer Program}{165} +\indexentry{Japan!Next Generation Industries Program}{165} +\indexentry{microelectronics}{165} +\indexentry{Sigma Program}{165} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{165} +\indexentry{software}{165} +\indexentry{software}{165} +\indexentry{Japan}{165} +\indexentry{software}{165} +\indexentry{Japan}{165} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{165} +\indexentry{Sigma Program}{165} +\indexentry{software!engineering}{165} +\indexentry{software}{165} +\indexentry{Sigma Program}{165} +\indexentry{software}{165} +\indexentry{Japan}{165} +\indexentry{software}{165} +\indexentry{Sigma Program}{165} +\indexentry{Japan}{165} +\indexentry{software!market!Japanese}{165} +\indexentry{Japan}{166} +\indexentry{software!engineering}{166} +\indexentry{Sigma Program}{166} +\indexentry{Japan}{166} +\indexentry{software!market!Japanese}{166} +\indexentry{war!Technology War}{166} +\indexentry{optoelectronics!Joint Research Laboratory}{166} +\indexentry{Japan}{166} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{166} +\indexentry{optoelectronics!Joint Research Laboratory}{166} +\indexentry{ICOT}{166} +\indexentry{JTECH}{166} +\indexentry{optoelectronics}{166} +\indexentry{Japan}{166} +\indexentry{Japan}{166} +\indexentry{Mu Program}{166} +\indexentry{Japan!Science and Technology Agency}{166} +\indexentry{Mu Program}{166} +\indexentry{Japan}{166} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{167} +\indexentry{Fujitsu}{167} +\indexentry{Japan}{167} +\indexentry{marketshare}{167} +\indexentry{Fujitsu}{167} +\indexentry{research and development}{167} +\indexentry{Fujitsu}{167} +\indexentry{research and development}{167} +\indexentry{computer!architecture}{167} +\indexentry{computer!architecture}{167} +\indexentry{artificial intelligence}{167} +\indexentry{software!engineering}{167} +\indexentry{knowledge engineering}{167} +\indexentry{computer!architecture}{167} +\indexentry{computer!architecture}{167} +\indexentry{Fujitsu}{167} +\indexentry{IBM}{167} +\indexentry{Japan}{167} +\indexentry{Fujitsu}{167} +\indexentry{hardware}{167} +\indexentry{yen}{167} +\indexentry{computer}{167} +\indexentry{Hitachi}{167} +\indexentry{Fujitsu}{167} +\indexentry{software!market!Japanese}{167} +\indexentry{Japan}{167} +\indexentry{United States}{167} +\indexentry{Fujitsu}{167} +\indexentry{TRW}{167} +\indexentry{Fairchild Camera and Instrument Corporation}{167} +\indexentry{microelectronics}{167} +\indexentry{GTE}{167} +\indexentry{Fujitsu}{167} +\indexentry{communications}{167} +\indexentry{communications}{167} +\indexentry{Fujitsu}{168} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{168} +\indexentry{computer}{168} +\indexentry{IBM!compatibility}{168} +\indexentry{IBM}{168} +\indexentry{computer!architecture}{168} +\indexentry{supercomputer}{168} +\indexentry{Fujitsu}{168} +\indexentry{IBM}{168} +\indexentry{NEC}{168} +\indexentry{communications}{168} +\indexentry{marketshare}{168} +\indexentry{Japan}{168} +\indexentry{NEC}{168} +\indexentry{Honeywell}{168} +\indexentry{Bull}{168} +\indexentry{NEC}{168} +\indexentry{IBM!compatibility}{168} +\indexentry{IBM}{168} +\indexentry{Nippon Telephone and Telegraph}{168} +\indexentry{NEC}{168} +\indexentry{communications}{168} +\indexentry{NEC}{168} +\indexentry{software!engineering}{168} +\indexentry{software}{168} +\indexentry{NEC}{168} +\indexentry{software}{168} +\indexentry{NEC}{168} +\indexentry{UNIX operating system}{168} +\indexentry{Digital Equipment Corporation}{168} +\indexentry{computer!VAX}{168} +\indexentry{Digital Equipment Corporation!VAX}{168} +\indexentry{United States}{168} +\indexentry{Hitachi}{168} +\indexentry{supercomputer}{168} +\indexentry{marketshare}{168} +\indexentry{IBM}{168} +\indexentry{marketshare}{168} +\indexentry{Japan}{168} +\indexentry{computer}{168} +\indexentry{Hitachi}{168} +\indexentry{Hitachi}{168} +\indexentry{Hitachi}{169} +\indexentry{information technology}{169} +\indexentry{computer!architecture}{169} +\indexentry{computer!architecture}{169} +\indexentry{knowledge engineering}{169} +\indexentry{Hitachi}{169} +\indexentry{intellectual property!laws}{169} +\indexentry{intellectual property!rights}{169} +\indexentry{war!Technology War}{169} +\indexentry{Stanford University}{169} +\indexentry{hardware}{169} +\indexentry{software}{169} +\indexentry{IBM}{169} +\indexentry{IBM}{169} +\indexentry{Federal Bureau of Investigation}{169} +\indexentry{Federal Bureau of Investigation}{169} +\indexentry{Hitachi}{169} +\indexentry{United States}{169} +\indexentry{Japan}{169} +\indexentry{IBM}{169} +\indexentry{Hitachi}{169} +\indexentry{IBM}{169} +\indexentry{Hitachi}{169} +\indexentry{IBM}{169} +\indexentry{Hitachi}{169} +\indexentry{Hitachi}{169} +\indexentry{Toshiba}{169} +\indexentry{Toshiba}{169} +\indexentry{research and development}{170} +\indexentry{Toshiba}{170} +\indexentry{integrated circuits}{170} +\indexentry{computer-aided design}{170} +\indexentry{computer-aided manufacturing}{170} +\indexentry{software!engineering}{170} +\indexentry{Toshiba}{170} +\indexentry{Mitsubishi Electric Company}{170} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{170} +\indexentry{ICOT}{170} +\indexentry{Mitsubishi Electric Company}{170} +\indexentry{software!engineering}{170} +\indexentry{Mitsubishi Electric Company}{170} +\indexentry{software!engineering}{170} +\indexentry{Mitsubishi Electric Company}{170} +\indexentry{Mitsubishi Electric Company}{170} +\indexentry{personal sequential inference machine}{170} +\indexentry{Japan}{170} +\indexentry{ICOT}{170} +\indexentry{workstation}{170} +\indexentry{personal sequential inference machine}{170} +\indexentry{VLSI}{170} +\indexentry{Nippon Telephone and Telegraph}{171} +\indexentry{information technology}{171} +\indexentry{Nippon Telephone and Telegraph}{171} +\indexentry{communications}{171} +\indexentry{Nippon Telephone and Telegraph}{171} +\indexentry{Bell Laboratories}{171} +\indexentry{Nippon Telephone and Telegraph}{171} +\indexentry{Electro-Communications Laboratories}{171} +\indexentry{Electro-Communications Laboratories}{171} +\indexentry{Bell Laboratories}{171} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{171} +\indexentry{Electro-Communications Laboratories}{171} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{171} +\indexentry{Nippon Telephone and Telegraph}{171} +\indexentry{communications}{171} +\indexentry{Electro-Communications Laboratories}{171} +\indexentry{Nippon Telephone and Telegraph}{171} +\indexentry{Nippon Telephone and Telegraph!information network system}{171} +\indexentry{Nippon Telephone and Telegraph!information network system}{171} +\indexentry{VLSI}{171} +\indexentry{Nippon Telephone and Telegraph}{171} +\indexentry{Nippon Telephone and Telegraph!information network system}{171} +\indexentry{Japan}{171} +\indexentry{Nippon Telephone and Telegraph}{171} +\indexentry{Nippon Telephone and Telegraph!information network system}{171} +\indexentry{optoelectronics}{171} +\indexentry{Nippon Telephone and Telegraph!information network system}{172} +\indexentry{United States}{172} +\indexentry{France}{172} +\indexentry{Nippon Telephone and Telegraph}{172} +\indexentry{research and development}{172} +\indexentry{computer}{172} +\indexentry{telecommunications}{172} +\indexentry{Electro-Communications Laboratories}{172} +\indexentry{communications}{172} +\indexentry{microelectronics}{172} +\indexentry{VLSI}{172} +\indexentry{computer-aided design}{172} +\indexentry{gallium arsenide}{172} +\indexentry{Japan}{172} +\indexentry{marketshare}{172} +\indexentry{Japan}{172} +\indexentry{Eastman Kodak Company}{172} +\indexentry{Xerox}{172} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{173} +\indexentry{ICOT}{173} +\indexentry{Fujitsu}{173} +\indexentry{NEC}{173} +\indexentry{Hitachi}{173} +\indexentry{Japan}{173} +\indexentry{Xerox}{173} +\indexentry{Xerox}{173} +\indexentry{Xerox!copiers}{173} +\indexentry{microelectronics}{173} +\indexentry{computer-integrated manufacturing}{173} +\indexentry{Japan}{173} +\indexentry{General Motors}{173} +\indexentry{automobile}{173} +\indexentry{Japan}{173} +\indexentry{Boeing Aircraft Corporation}{173} +\indexentry{information technology}{173} +\indexentry{Japan}{173} +\indexentry{research and development}{173} +\indexentry{United States}{173} +\indexentry{war!Technology War}{174} +\indexentry{Japan}{174} +\indexentry{yen}{174} +\indexentry{exports}{174} +\indexentry{unemployment}{174} +\indexentry{Asia}{174} +\indexentry{Japan}{174} +\indexentry{software}{174} +\indexentry{workstation}{174} +\indexentry{computer!personal}{174} +\indexentry{Apple Computer Company}{174} +\indexentry{Sun Microsystems Inc.}{174} +\indexentry{Japan}{174} +\indexentry{Japan}{174} +\indexentry{war!Technology War}{175} +\indexentry{United States}{175} +\indexentry{Japan}{175} +\indexentry{Europe}{175} +\indexentry{Asia}{175} +\indexentry{Europe}{175} +\indexentry{standards}{175} +\indexentry{Industrial Revolution}{175} +\indexentry{war!Technology War}{175} +\indexentry{Asia}{175} +\indexentry{marketshare}{175} +\indexentry{Europe}{176} +\indexentry{Japan}{176} +\indexentry{Fifth Generation Computer Program}{176} +\indexentry{ESPRIT}{176} +\indexentry{ESPRIT}{176} +\indexentry{Europe}{176} +\indexentry{information technology}{176} +\indexentry{ESPRIT}{176} +\indexentry{Cie. Generale de L'\'Electricit\'e}{176} +\indexentry{information technology}{176} +\indexentry{European Economic Community}{176} +\indexentry{Europe}{176} +\indexentry{Japan}{176} +\indexentry{Europe}{176} +\indexentry{ESPRIT}{176} +\indexentry{microelectronics}{176} +\indexentry{software}{176} +\indexentry{computer-integrated manufacturing}{176} +\indexentry{ESPRIT}{176} +\indexentry{ESPRIT}{176} +\indexentry{European Economic Community}{176} +\indexentry{ESPRIT}{176} +\indexentry{Europe}{177} +\indexentry{ESPRIT}{177} +\indexentry{European Economic Community}{177} +\indexentry{Europe}{177} +\indexentry{ESPRIT}{177} +\indexentry{Europe}{177} +\indexentry{war!Technology War}{177} +\indexentry{Microelectronics and Computer Technology Corporation}{177} +\indexentry{European Economic Community}{177} +\indexentry{ESPRIT}{177} +\indexentry{European Economic Community}{177} +\indexentry{Austria}{177} +\indexentry{Finland}{177} +\indexentry{Iceland}{177} +\indexentry{Norway}{177} +\indexentry{Sweden}{177} +\indexentry{Switzerland}{177} +\indexentry{Jefferson, Thomas}{177} +\indexentry{ESPRIT}{177} +\indexentry{ESPRIT}{177} +\indexentry{ESPRIT}{177} +\indexentry{microelectronics}{177} +\indexentry{standards}{177} +\indexentry{standards}{177} +\indexentry{standards}{177} +\indexentry{standards}{177} +\indexentry{Europe}{177} +\indexentry{ESPRIT}{177} +\indexentry{software!engineering}{177} +\indexentry{ESPRIT}{177} +\indexentry{VLSI}{177} +\indexentry{Europe}{177} +\indexentry{ESPRIT}{178} +\indexentry{Europe}{178} +\indexentry{telecommunications}{178} +\indexentry{Europe}{178} +\indexentry{RACE}{178} +\indexentry{Europe}{178} +\indexentry{Europe}{178} +\indexentry{Nippon Telephone and Telegraph}{178} +\indexentry{Nippon Telephone and Telegraph!information network system}{178} +\indexentry{Europe}{178} +\indexentry{RACE}{178} +\indexentry{ESPRIT}{178} +\indexentry{communications}{178} +\indexentry{Europe}{178} +\indexentry{Europe}{178} +\indexentry{war!Technology War}{178} +\indexentry{ECRC}{178} +\indexentry{Eureka}{178} +\indexentry{Bull}{178} +\indexentry{International Computers Ltd.}{178} +\indexentry{Siemens}{178} +\indexentry{artificial intelligence}{178} +\indexentry{expert systems}{178} +\indexentry{ECRC}{178} +\indexentry{ESPRIT}{178} +\indexentry{ECRC}{179} +\indexentry{Inst. for New Generation Computer Technology}{179} +\indexentry{ECRC}{179} +\indexentry{Gallaire, Herv\'e}{179} +\indexentry{United States}{179} +\indexentry{ECRC}{179} +\indexentry{ECRC}{179} +\indexentry{knowledge-based systems}{179} +\indexentry{expert systems}{179} +\indexentry{computer!architecture}{179} +\indexentry{computer!architecture}{179} +\indexentry{Microelectronics and Computer Technology Corporation}{179} +\indexentry{Inst. for New Generation Computer Technology}{179} +\indexentry{technology transfer}{179} +\indexentry{Europe}{179} +\indexentry{United States}{179} +\indexentry{Eureka}{179} +\indexentry{Europe}{179} +\indexentry{Strategic Defense Initiative}{179} +\indexentry{United States}{179} +\indexentry{Europe}{179} +\indexentry{United States}{179} +\indexentry{Strategic Defense Initiative}{179} +\indexentry{Europe}{179} +\indexentry{Strategic Defense Initiative}{179} +\indexentry{Eureka}{179} +\indexentry{Europe}{179} +\indexentry{Strategic Defense Initiative}{179} +\indexentry{Europe}{180} +\indexentry{information technology}{180} +\indexentry{North Atlantic Treaty Organization}{180} +\indexentry{France}{180} +\indexentry{Strategic Defense Initiative}{180} +\indexentry{Strategic Defense Initiative}{180} +\indexentry{optoelectronics}{180} +\indexentry{artificial intelligence}{180} +\indexentry{microelectronics}{180} +\indexentry{Eurobot}{180} +\indexentry{robotics}{180} +\indexentry{Eurocom}{180} +\indexentry{communications}{180} +\indexentry{France}{180} +\indexentry{Germany}{180} +\indexentry{Europe}{180} +\indexentry{Strategic Defense Initiative}{180} +\indexentry{Germany}{180} +\indexentry{Eureka}{180} +\indexentry{Germany}{180} +\indexentry{France}{180} +\indexentry{Great Britain}{180} +\indexentry{Eureka}{180} +\indexentry{Soviet Union}{180} +\indexentry{Eureka}{180} +\indexentry{Eureka}{180} +\indexentry{Coordinating Committee}{180} +\indexentry{Japan}{180} +\indexentry{exports}{180} +\indexentry{Eureka}{180} +\indexentry{supercomputer}{180} +\indexentry{Europe}{181} +\indexentry{ESPRIT}{181} +\indexentry{research and development}{181} +\indexentry{information technology}{181} +\indexentry{ESPRIT}{181} +\indexentry{Alvey program}{181} +\indexentry{Great Britain}{181} +\indexentry{France}{181} +\indexentry{Fifth Generation Computer Program}{181} +\indexentry{information technology}{181} +\indexentry{Great Britain}{181} +\indexentry{Alvey program}{181} +\indexentry{Great Britain}{182} +\indexentry{Alvey program}{182} +\indexentry{Alvey, John}{182} +\indexentry{British Telecom}{182} +\indexentry{Great Britain!Department of Trade and Industry}{182} +\indexentry{Great Britain!Ministry of Defense}{182} +\indexentry{Alvey program}{182} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{182} +\indexentry{Inst. for New Generation Computer Technology}{182} +\indexentry{DARPA}{182} +\indexentry{Alvey program}{182} +\indexentry{software!engineering}{182} +\indexentry{VLSI}{182} +\indexentry{knowledge-based systems}{182} +\indexentry{microelectronics}{182} +\indexentry{integrated circuits}{182} +\indexentry{knowledge-based systems}{182} +\indexentry{gallium arsenide}{182} +\indexentry{VLSI}{182} +\indexentry{Great Britain!Ministry of Defense}{182} +\indexentry{Great Britain!Very High Performance Integrated Circuit Program}{182} +\indexentry{VLSI}{182} +\indexentry{Alvey program}{182} +\indexentry{Alvey program}{182} +\indexentry{Great Britain}{183} +\indexentry{United States}{183} +\indexentry{Japan}{183} +\indexentry{war!Technology War}{183} +\indexentry{International Computers Ltd.}{183} +\indexentry{International Computers Ltd.}{183} +\indexentry{Great Britain}{183} +\indexentry{International Telephone and Telegraph}{183} +\indexentry{International Computers Ltd.}{183} +\indexentry{International Computers Ltd.}{183} +\indexentry{International Computers Ltd.}{183} +\indexentry{Great Britain}{183} +\indexentry{North Atlantic Treaty Organization}{183} +\indexentry{Alvey program}{183} +\indexentry{ESPRIT}{183} +\indexentry{ECRC}{183} +\indexentry{computer-aided design}{183} +\indexentry{International Computers Ltd.}{183} +\indexentry{innovation}{183} +\indexentry{marketshare}{183} +\indexentry{General Electric Company (UK)}{183} +\indexentry{General Electric Company (UK)}{183} +\indexentry{General Electric Company (UK)}{183} +\indexentry{General Electric Company (UK)}{184} +\indexentry{VLSI}{184} +\indexentry{gallium arsenide}{184} +\indexentry{artificial intelligence}{184} +\indexentry{software!engineering}{184} +\indexentry{computer science}{184} +\indexentry{General Electric Company (UK)}{184} +\indexentry{Great Britain}{184} +\indexentry{Plessey Company Ltd.}{184} +\indexentry{communications}{184} +\indexentry{Ferranti}{184} +\indexentry{INMOS}{184} +\indexentry{Thorn EMI}{184} +\indexentry{Great Britain}{184} +\indexentry{microelectronics}{184} +\indexentry{INMOS}{184} +\indexentry{United States}{184} +\indexentry{Great Britain}{184} +\indexentry{INMOS}{184} +\indexentry{RAM}{184} +\indexentry{United States}{184} +\indexentry{information technology}{184} +\indexentry{Mitterrand, President Fran\c cois}{184} +\indexentry{France}{184} +\indexentry{France}{185} +\indexentry{Chirac, Premier Jacques}{185} +\indexentry{denationalization}{185} +\indexentry{privatization}{185} +\indexentry{IBM}{185} +\indexentry{PTT}{185} +\indexentry{AT\&T}{185} +\indexentry{Nippon Telephone and Telegraph}{185} +\indexentry{British Telecom}{185} +\indexentry{France}{185} +\indexentry{Groupe de Recherche Coordonn\'e}{185} +\indexentry{Centre National de Recherche Scientifique}{185} +\indexentry{Bull}{185} +\indexentry{Cie. Generale de L'\'Electricit\'e}{185} +\indexentry{Thompson-Brandt}{185} +\indexentry{robotics}{185} +\indexentry{relational database}{185} +\indexentry{knowledge-based systems}{185} +\indexentry{artificial intelligence}{185} +\indexentry{software!engineering}{185} +\indexentry{France!Ministry of Defense}{185} +\indexentry{Direction de Recherche d'\'Etudes et Technique}{185} +\indexentry{DARPA}{185} +\indexentry{United States}{185} +\indexentry{Nippon Telephone and Telegraph!information network system}{185} +\indexentry{software}{186} +\indexentry{Colmerauer, Alain}{186} +\indexentry{PROLOG}{186} +\indexentry{Ichbiah, Jean}{186} +\indexentry{Ada}{186} +\indexentry{France}{186} +\indexentry{telecommunications}{186} +\indexentry{United States}{186} +\indexentry{information technology}{186} +\indexentry{Mitterrand, President Fran\c cois}{186} +\indexentry{research and development}{186} +\indexentry{research and development}{186} +\indexentry{de Vignemont, Minister C.}{186} +\indexentry{de Vignemont, Minister C.}{186} +\indexentry{France}{186} +\indexentry{war!Technology War}{186} +\indexentry{Bull}{186} +\indexentry{International Computers Ltd.}{186} +\indexentry{Great Britain}{186} +\indexentry{Siemens}{186} +\indexentry{Germany}{186} +\indexentry{Bull}{186} +\indexentry{Bull}{186} +\indexentry{IBM}{186} +\indexentry{IBM}{186} +\indexentry{software}{186} +\indexentry{Bull}{187} +\indexentry{Stern, Jacques}{187} +\indexentry{Bull}{187} +\indexentry{Honeywell}{187} +\indexentry{NEC}{187} +\indexentry{research and development}{187} +\indexentry{Bull}{187} +\indexentry{research and development}{187} +\indexentry{Bull}{187} +\indexentry{privatization}{187} +\indexentry{Bull}{187} +\indexentry{Germany}{187} +\indexentry{expert systems}{187} +\indexentry{robotics}{187} +\indexentry{computer!architecture}{187} +\indexentry{computer!architecture}{187} +\indexentry{expert systems}{187} +\indexentry{Nixdorf Computers}{187} +\indexentry{Siemens}{187} +\indexentry{expert systems}{187} +\indexentry{Germany!BMFT}{187} +\indexentry{Germany}{187} +\indexentry{Germany}{187} +\indexentry{communications}{187} +\indexentry{Germany!Bundespost}{188} +\indexentry{telecommunications}{188} +\indexentry{videoconferencing}{188} +\indexentry{Germany}{188} +\indexentry{Germany}{188} +\indexentry{war!Technology War}{188} +\indexentry{physics!nuclear}{188} +\indexentry{Beckurts, Karl Heinz}{188} +\indexentry{Siemens}{188} +\indexentry{Strategic Defense Initiative}{188} +\indexentry{Dornier}{188} +\indexentry{Sperry Univac}{188} +\indexentry{Strategic Defense Initiative}{188} +\indexentry{Siemens}{188} +\indexentry{Siemens}{188} +\indexentry{communications}{188} +\indexentry{war!Technology War}{188} +\indexentry{IBM}{188} +\indexentry{Europe}{188} +\indexentry{Siemens}{188} +\indexentry{Germany}{188} +\indexentry{research and development}{188} +\indexentry{Germany!BMFT}{188} +\indexentry{GTE}{188} +\indexentry{communications}{188} +\indexentry{GTE}{188} +\indexentry{Siemens}{188} +\indexentry{GTE}{188} +\indexentry{Italy}{188} +\indexentry{Belgium}{188} +\indexentry{Taiwan}{188} +\indexentry{Siemens}{188} +\indexentry{ECRC}{188} +\indexentry{ESPRIT}{188} +\indexentry{computer!architecture}{188} +\indexentry{computer!architecture}{188} +\indexentry{computer!personal}{188} +\indexentry{VLSI}{188} +\indexentry{Siemens}{188} +\indexentry{bit}{188} +\indexentry{RAM}{188} +\indexentry{bit}{189} +\indexentry{Siemens}{189} +\indexentry{workstation}{189} +\indexentry{Siemens}{189} +\indexentry{information technology}{189} +\indexentry{Europe}{189} +\indexentry{marketshare}{189} +\indexentry{Nixdorf Computers}{189} +\indexentry{Siemens}{189} +\indexentry{Germany}{189} +\indexentry{war!Technology War}{189} +\indexentry{war!Technology War}{189} +\indexentry{Europe}{189} +\indexentry{Philips' Gloeilampenfabrieken}{189} +\indexentry{NEC}{189} +\indexentry{Philips' Gloeilampenfabrieken}{189} +\indexentry{Europe}{189} +\indexentry{microelectronics}{189} +\indexentry{ESPRIT}{189} +\indexentry{Siemens}{189} +\indexentry{Philips' Gloeilampenfabrieken}{189} +\indexentry{Europe}{189} +\indexentry{United States}{189} +\indexentry{Olivetti SPA}{189} +\indexentry{Siemens}{189} +\indexentry{Olivetti SPA}{189} +\indexentry{Nixdorf Computers}{189} +\indexentry{AEG-Telefunken AG}{189} +\indexentry{ESPRIT}{189} +\indexentry{Europe}{189} +\indexentry{International Computers Ltd.}{190} +\indexentry{Great Britain}{190} +\indexentry{Asia}{190} +\indexentry{Republic of Korea}{190} +\indexentry{Taiwan}{190} +\indexentry{Singapore}{190} +\indexentry{Malaysia}{190} +\indexentry{Japan}{190} +\indexentry{China}{190} +\indexentry{Big Dragon}{190} +\indexentry{China}{190} +\indexentry{war!Technology War}{190} +\indexentry{China}{190} +\indexentry{China}{190} +\indexentry{China}{190} +\indexentry{Big Dragon}{190} +\indexentry{education}{190} +\indexentry{China}{190} +\indexentry{China}{190} +\indexentry{China!Cultural Revolution}{190} +\indexentry{China}{190} +\indexentry{China!Cultural Revolution}{190} +\indexentry{China}{190} +\indexentry{China}{191} +\indexentry{gross national product}{191} +\indexentry{China}{191} +\indexentry{research and development}{191} +\indexentry{Soviet Union}{191} +\indexentry{China}{191} +\indexentry{venture capital}{191} +\indexentry{venture capital}{191} +\indexentry{China}{191} +\indexentry{China}{191} +\indexentry{Japan}{191} +\indexentry{patent!law}{191} +\indexentry{China}{191} +\indexentry{exports}{191} +\indexentry{China}{192} +\indexentry{China}{192} +\indexentry{China}{192} +\indexentry{China}{192} +\indexentry{China}{192} +\indexentry{Republic of Korea}{192} +\indexentry{Little Dragons}{192} +\indexentry{China}{192} +\indexentry{Big Dragon}{192} +\indexentry{Republic of Korea}{192} +\indexentry{Singapore}{192} +\indexentry{Taiwan}{192} +\indexentry{Hong Kong}{192} +\indexentry{Little Dragons}{192} +\indexentry{Little Dragons}{192} +\indexentry{information technology}{192} +\indexentry{Republic of Korea}{192} +\indexentry{Japan}{192} +\indexentry{United States}{192} +\indexentry{gross national product}{192} +\indexentry{Singapore}{192} +\indexentry{Republic of Korea}{192} +\indexentry{Republic of Korea}{193} +\indexentry{computer}{193} +\indexentry{automobile}{193} +\indexentry{automobile}{193} +\indexentry{United States}{193} +\indexentry{Republic of Korea}{193} +\indexentry{automobile}{193} +\indexentry{Japan}{193} +\indexentry{Republic of Korea}{193} +\indexentry{automobile}{193} +\indexentry{computer!personal}{193} +\indexentry{microelectronics}{193} +\indexentry{microelectronics}{193} +\indexentry{Republic of Korea}{193} +\indexentry{war!Technology War}{193} +\indexentry{microelectronics}{193} +\indexentry{International Telephone and Telegraph}{193} +\indexentry{VLSI}{193} +\indexentry{Republic of Korea}{193} +\indexentry{Daewoo Telecom}{193} +\indexentry{ZyMos}{193} +\indexentry{microelectronics}{193} +\indexentry{automobile}{193} +\indexentry{dynamic RAM}{193} +\indexentry{Republic of Korea}{193} +\indexentry{Japan}{193} +\indexentry{capital}{193} +\indexentry{standard of living}{193} +\indexentry{Republic of Korea}{193} +\indexentry{Republic of Korea}{194} +\indexentry{Republic of Korea}{194} +\indexentry{intellectual property}{194} +\indexentry{intellectual property!rights}{194} +\indexentry{Singapore}{194} +\indexentry{Singapore}{194} +\indexentry{standard of living}{194} +\indexentry{information technology}{194} +\indexentry{robotics}{194} +\indexentry{artificial intelligence}{194} +\indexentry{microelectronics}{194} +\indexentry{optics}{194} +\indexentry{communications}{194} +\indexentry{information technology}{194} +\indexentry{information technology}{194} +\indexentry{Singapore}{194} +\indexentry{information technology}{194} +\indexentry{Singapore}{194} +\indexentry{Singapore!National Computer Board}{194} +\indexentry{telecommunications}{194} +\indexentry{Singapore}{194} +\indexentry{Singapore}{194} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{194} +\indexentry{Japan}{194} +\indexentry{software}{194} +\indexentry{Singapore}{194} +\indexentry{knowledge-based systems}{194} +\indexentry{expert systems}{194} +\indexentry{computer-aided design}{195} +\indexentry{computer-aided manufacturing}{195} +\indexentry{telecommunications}{195} +\indexentry{computer!literacy}{195} +\indexentry{Singapore}{195} +\indexentry{Singapore}{195} +\indexentry{research and development}{195} +\indexentry{gross national product}{195} +\indexentry{United States}{195} +\indexentry{Singapore}{195} +\indexentry{scientists and engineers!demographics of}{195} +\indexentry{United States}{195} +\indexentry{Singapore}{195} +\indexentry{Singapore}{195} +\indexentry{Japan}{195} +\indexentry{Asia}{195} +\indexentry{Taiwan}{195} +\indexentry{Singapore}{195} +\indexentry{Little Dragons}{195} +\indexentry{Israel}{195} +\indexentry{Taiwan}{195} +\indexentry{Taiwan}{195} +\indexentry{software}{195} +\indexentry{VLSI}{195} +\indexentry{information technology}{195} +\indexentry{software}{195} +\indexentry{Taiwan}{195} +\indexentry{software!market}{195} +\indexentry{Hong Kong}{195} +\indexentry{China}{195} +\indexentry{Little Dragons}{195} +\indexentry{Asia}{195} +\indexentry{Hong Kong}{196} +\indexentry{China}{196} +\indexentry{China}{196} +\indexentry{Little Dragons}{196} +\indexentry{China}{196} +\indexentry{Singapore}{196} +\indexentry{Hong Kong}{196} +\indexentry{war!Technology War}{196} +\indexentry{Hong Kong}{196} +\indexentry{United States}{196} +\indexentry{Apple Computer Company}{196} +\indexentry{Hong Kong}{196} +\indexentry{copyright}{196} +\indexentry{Little Dragons}{196} +\indexentry{Malaysia}{196} +\indexentry{microelectronics}{196} +\indexentry{Malaysia}{196} +\indexentry{integrated circuits}{196} +\indexentry{employment}{196} +\indexentry{microelectronics}{196} +\indexentry{Malaysia}{196} +\indexentry{research and development}{196} +\indexentry{microelectronics}{196} +\indexentry{Malaysia}{196} +\indexentry{research and development}{196} +\indexentry{microelectronics}{196} +\indexentry{microelectronics}{196} +\indexentry{Malaysia}{196} +\indexentry{war!Technology War}{196} +\indexentry{war!Technology War}{197} +\indexentry{Telex Corporation}{197} +\indexentry{Memorex}{197} +\indexentry{General Electric Company}{197} +\indexentry{Radio Corporation of America}{197} +\indexentry{Sperry Univac}{197} +\indexentry{GTE}{197} +\indexentry{International Telephone and Telegraph}{197} +\indexentry{ZyMos}{197} +\indexentry{innovation}{197} +\indexentry{war!Technology War}{197} +\indexentry{war!Technology War}{201} +\indexentry{United States}{201} +\indexentry{education}{201} +\indexentry{United States}{201} +\indexentry{smokestack industries}{201} +\indexentry{steel}{201} +\indexentry{automobile}{201} +\indexentry{innovation}{201} +\indexentry{World War II}{201} +\indexentry{war!Technology War}{202} +\indexentry{agriculture}{202} +\indexentry{agriculture}{202} +\indexentry{service economy}{202} +\indexentry{service economy}{202} +\indexentry{service economy}{202} +\indexentry{agriculture}{202} +\indexentry{deficit!budget}{202} +\indexentry{deficit!trade}{202} +\indexentry{education}{202} +\indexentry{war!Technology War}{202} +\indexentry{capital}{202} +\indexentry{General Motors}{202} +\indexentry{Perot, H. Ross}{202} +\indexentry{unemployment}{202} +\indexentry{United States}{202} +\indexentry{unemployment}{203} +\indexentry{Japan}{203} +\indexentry{unemployment}{203} +\indexentry{Republic of Korea}{203} +\indexentry{education}{203} +\indexentry{Reagan, President Ronald}{203} +\indexentry{education}{203} +\indexentry{robotics}{203} +\indexentry{United States}{203} +\indexentry{computer!personal}{203} +\indexentry{Fujitsu}{204} +\indexentry{TOW missile}{204} +\indexentry{missile}{204} +\indexentry{national debt}{204} +\indexentry{service economy}{204} +\indexentry{education}{204} +\indexentry{Nakasone, Prime Minister Yasuhiro}{204} +\indexentry{unemployment}{204} +\indexentry{education}{204} +\indexentry{Republic of Korea}{204} +\indexentry{Japan}{204} +\indexentry{Europe}{204} +\indexentry{standard of living}{205} +\indexentry{war!Technology War}{205} +\indexentry{Nobel Prize}{205} +\indexentry{education}{205} +\indexentry{innovation}{205} +\indexentry{Japan}{205} +\indexentry{United States}{205} +\indexentry{Chrysler Corporation}{205} +\indexentry{automobile}{205} +\indexentry{United States}{205} +\indexentry{marketshare}{205} +\indexentry{moon}{205} +\indexentry{supercollider}{205} +\indexentry{deficit!budget}{205} +\indexentry{deficit!budget}{205} +\indexentry{Gramm-Rudman bill}{206} +\indexentry{Rudman, Senator Warren B.}{206} +\indexentry{war!Technology War}{206} +\indexentry{Cohen, Steven}{206} +\indexentry{JTECH}{206} +\indexentry{Japan}{206} +\indexentry{automobile}{206} +\indexentry{imports}{206} +\indexentry{war!Technology War}{206} +\indexentry{education}{206} +\indexentry{war!Technology War}{206} +\indexentry{graduate schools of business}{207} +\indexentry{graduate schools of business}{207} +\indexentry{service economy}{207} +\indexentry{moon}{207} +\indexentry{United States}{207} +\indexentry{Nixon, President Richard M.}{207} +\indexentry{Presidential Science Advisor}{207} +\indexentry{Reagan, President Ronald}{207} +\indexentry{Presidential Science Advisor}{207} +\indexentry{White House}{207} +\indexentry{White House}{207} +\indexentry{war!Technology War}{207} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{208} +\indexentry{Department of Defense}{208} +\indexentry{Industrial Revolution}{208} +\indexentry{United States}{208} +\indexentry{war!Technology War}{208} +\indexentry{capital}{208} +\indexentry{deficit!budget}{208} +\indexentry{missile}{208} +\indexentry{deficit!budget}{208} +\indexentry{Germany}{208} +\indexentry{German mark}{208} +\indexentry{Bingaman, Senator Jeff}{208} +\indexentry{deficit!trade}{208} +\indexentry{Rudman, Senator Warren B.}{208} +\indexentry{Glenn, Senator John}{209} +\indexentry{Silicon Valley}{209} +\indexentry{level playing field}{209} +\indexentry{imports}{209} +\indexentry{marketshare}{209} +\indexentry{Japan}{209} +\indexentry{Japan}{209} +\indexentry{marketshare}{209} +\indexentry{United States}{209} +\indexentry{steel}{209} +\indexentry{innovation}{209} +\indexentry{creativity}{209} +\indexentry{marketshare}{210} +\indexentry{employment}{210} +\indexentry{marketshare}{210} +\indexentry{employment}{210} +\indexentry{intellectual property!rights}{210} +\indexentry{capital}{210} +\indexentry{war!Technology War}{210} +\indexentry{education}{210} +\indexentry{war!Technology War}{210} +\indexentry{Department of Defense}{210} +\indexentry{Department of State}{210} +\indexentry{World War II}{211} +\indexentry{Department of Commerce and Technology (DCT)}{211} +\indexentry{Ministry of Intl. Trade and Industry (MITI)}{211} +\indexentry{Department of Commerce}{211} +\indexentry{National Bureau of Standards}{211} +\indexentry{National Science Foundation}{211} +\indexentry{White House!Office of Science and Technology Policy (OSTP)}{211} +\indexentry{White House}{211} +\indexentry{Department of Defense}{211} +\indexentry{research and development}{211} +\indexentry{Department of Commerce and Technology (DCT)}{211} +\indexentry{Great Britain!Department of Trade and Industry}{211} +\indexentry{war!Technology War}{211} +\indexentry{capital}{212} +\indexentry{education}{212} +\indexentry{semiconductor manufacturers!merchant}{212} +\indexentry{United States!Congress}{212} +\indexentry{United States!Senate}{212} +\indexentry{Glenn, Senator John}{212} +\indexentry{Brown, Representative George~E.}{212} +\indexentry{United States!Congress}{212} +\indexentry{war!Technology War}{212} +\indexentry{war!Technology War}{212} +\indexentry{Sanders, Jerry}{212} +\indexentry{American Micro Devices}{212} +\indexentry{United States}{212} +\indexentry{Japan}{212} +\indexentry{deficit!trade}{212} +\indexentry{balance of trade}{212} +\indexentry{deficit!trade}{212} +\indexentry{deficit!trade}{212} +\indexentry{Japan}{212} +\indexentry{yen}{212} +\indexentry{deficit!budget}{213} +\indexentry{deficit!trade}{213} +\indexentry{Japan}{213} +\indexentry{Republic of Korea}{213} +\indexentry{International Trade Commission}{213} +\indexentry{Japan}{213} +\indexentry{employment}{213} +\indexentry{yen}{213} +\indexentry{Republic of Korea}{213} +\indexentry{United States}{213} +\indexentry{microelectronics}{213} +\indexentry{International Computers Ltd.}{213} +\indexentry{United States!Congress}{214} +\indexentry{Gephardt amendment}{214} +\indexentry{Gephardt, Representative Richard~A.}{214} +\indexentry{Japan}{214} +\indexentry{deficit!trade}{214} +\indexentry{United States}{214} +\indexentry{weapons}{214} +\indexentry{engineering!faculty}{214} +\indexentry{Europe}{214} +\indexentry{Soviet Union}{214} +\indexentry{technology transfer}{214} +\indexentry{technology transfer}{215} +\indexentry{United States}{215} +\indexentry{Libya}{215} +\indexentry{technology transfer}{215} +\indexentry{war!Technology War}{215} +\indexentry{research and development}{215} +\indexentry{war!Technology War}{215} +\indexentry{Strategic Defense Initiative}{216} +\indexentry{spinoff}{216} +\indexentry{spinoff}{216} +\indexentry{spinoff}{216} +\indexentry{Boeing 707 airplane}{216} +\indexentry{spinoff}{216} +\indexentry{Reagan, President Ronald}{216} +\indexentry{spinoff}{216} +\indexentry{research and development}{216} +\indexentry{Department of Defense}{216} +\indexentry{National Aeronautics and Space Administration (NASA)}{216} +\indexentry{supercollider}{216} +\indexentry{exports}{217} +\indexentry{National Academy of Sciences}{217} +\indexentry{export control}{217} +\indexentry{marketshare}{217} +\indexentry{export control}{217} +\indexentry{export control}{217} +\indexentry{Perle, Richard}{217} +\indexentry{war!Technology War}{217} +\indexentry{gross national product}{217} +\indexentry{spinoff}{217} +\indexentry{United States!Congress}{218} +\indexentry{United States}{218} +\indexentry{Department of Defense}{218} +\indexentry{United States!Congress}{218} +\indexentry{war!Technology War}{218} +\indexentry{education}{218} +\indexentry{education}{218} +\indexentry{education}{218} +\indexentry{education}{218} +\indexentry{Wright, Speaker James~C.}{218} +\indexentry{Reagan, President Ronald}{218} +\indexentry{education}{218} +\indexentry{Wright, Speaker James~C.}{218} +\indexentry{weapons}{218} +\indexentry{education}{218} +\indexentry{engineering!faculty}{219} +\indexentry{education}{219} +\indexentry{technology transfer}{219} +\indexentry{White House}{219} +\indexentry{Reagan, President Ronald}{219} +\indexentry{war!Technology War}{219} +\indexentry{Soviet Union}{220} +\indexentry{Soviet Union}{220} +\indexentry{Russian Revolution}{220} +\indexentry{Pearl Harbor}{220} +\indexentry{Watergate}{220} +\indexentry{Kahn, Robert E.}{220} +\indexentry{DARPA}{220} +\indexentry{United States}{220} +\indexentry{war!Technology War}{220} +\indexentry{unemployment}{220} +\indexentry{war!Technology War}{220} +\indexentry{war!Technology War}{220} +\indexentry{education}{220} +\indexentry{Fisher, Franklin~M.}{221} +\indexentry{McGowen, John~J.}{221} +\indexentry{Greenwood, Joel~E.}{221} +\indexentry{Wriston, Walter~B.}{221} +\indexentry{Clarke, Arthur~C.}{221} +\indexentry{Barzini, Luigi}{221} +\indexentry{Davis, K.}{221} +\indexentry{Blomstrom, R.~L.}{221} +\indexentry{Reischauer, Edwin~O.}{221} +\indexentry{Crawford, Mark}{221} +\indexentry{McClellan, Stephen~T.}{221} +\indexentry{Solomon, Ezra}{222} +\indexentry{Tzu, Sun}{222} +\indexentry{Rudzinski, Joe}{222} +\indexentry{Murakami, Kunio}{222} +\indexentry{Brandin, David~H.}{222} +\indexentry{Bentley, J.}{222} +\indexentry{Gannon, T.}{222} +\indexentry{Harrison, Michael~A.}{222} +\indexentry{Riganati, J.}{222} +\indexentry{Ris, F.}{222} +\indexentry{Sondheimer, N.}{222} +\indexentry{Yukuta, Toshio}{222} +\indexentry{Kitihara, Eiji}{222} +\indexentry{Hegg, Warren}{222} +\indexentry{Brodie, Ivor}{222} +\indexentry{Murray, Julius}{222} +\indexentry{Cullinan, Terrence}{222} +\indexentry{Nishizawa, Junichi}{222} +\indexentry{Lohr, Steve}{222} +\indexentry{Bell, Eric~T.}{222} +\indexentry{Feigenbaum, Edward}{222} +\indexentry{McCorduck, Pamela}{222} +\indexentry{Borrus, Michael}{223} +\indexentry{Millstein, James}{223} +\indexentry{Zysman, John}{223} +\indexentry{Morris, J.}{223} +\indexentry{Chandler, A.~R.}{223} +\indexentry{Dreyfus, Herbert~L.}{223} +\indexentry{Dreyfus, Stuart~E.}{223} +\indexentry{Nevins, J.}{223} +\indexentry{Albus, J.}{223} +\indexentry{Binford, T.}{223} +\indexentry{Brady, M.}{223} +\indexentry{Caplan, N.}{223} +\indexentry{Kutcher, M.}{223} +\indexentry{MacVicar-Whelan, P.~J.}{223} +\indexentry{Miller, G.~L.}{223} +\indexentry{Rossol, L.}{223} +\indexentry{Schutz, K.}{223} +\indexentry{Kahn, David}{223} +\indexentry{Spencer, William~J.}{223} +\indexentry{Davis III, G.~Gervaise}{223} +\indexentry{Gilchrist, Bruce}{224} +\indexentry{Wessel, Milton~R.}{224} +\indexentry{Rositzke, Harry}{224} +\indexentry{Hirschon, Michael~Wels}{224} +\indexentry{Bergamini, David}{224} +\indexentry{Johnson, Chalmers}{224} +\indexentry{Iacocca, Lee}{224} +\indexentry{Novak, William}{224} +\indexentry{Baxter, William~F.}{224} +\indexentry{Baxter, William~F.}{224} +\indexentry{Borrus, Michael}{225} +\indexentry{Millstein, James}{225} +\indexentry{Zysman, John}{225} +\indexentry{Simpson, Janice~C.}{225} +\indexentry{Weidenbaum, Murray~L.}{225} +\indexentry{Tuchman, Barbara~W.}{225} +\indexentry{Churchill, Winston}{225} +\indexentry{Kato, K.}{225} +\indexentry{Grayson, Lawrence~P.}{225} +\indexentry{Smith, Bruce~L.}{225} +\indexentry{Bloch, Erich}{225} +\indexentry{Snyder, Robert~G.}{226} +\indexentry{Doigan, Paul}{226} +\indexentry{Brooks, Harvey}{226} +\indexentry{Willenbrock, F.~Karl}{226} +\indexentry{Shapley, Deborah}{226} +\indexentry{Roy, Rustum}{226} +\indexentry{Miller, Judith}{226} +\indexentry{Vogel, Ezra}{227} +\indexentry{Etzold, Thomas~H.}{227} +\indexentry{Waldrop, M.~Mitchell}{227} +\indexentry{Smith, R.}{227} +\indexentry{Vliet, J.~C. van}{227} +\indexentry{Lieblein, Edward}{227} +\indexentry{Harrison, Michael~A.}{227} +\indexentry{Malik, Rex}{228} +\indexentry{Robinson, Arthur~L.}{228} +\indexentry{Fagen, M.~D.}{228} +\indexentry{Smits, F.~M.}{228} +\indexentry{Ritchie, Dennis~M.}{228} +\indexentry{Beardsley, Tim}{228} +\indexentry{Kurihara, T.}{228} +\indexentry{Hunter, Philip}{228} +\indexentry{Ewing, Tom}{229} +\indexentry{Fishman, Katherine~D.}{229} +\indexentry{McKenna, Regis}{229} +\indexentry{Jacobson, Gary}{229} +\indexentry{Hillkirk, John}{229} +\indexentry{Donlon, J.~P.}{229} +\indexentry{Ouichi, William}{229} +\indexentry{Wieder, H.}{229} +\indexentry{Spicer, W.}{229} +\indexentry{Bauer, R.}{229} +\indexentry{Capasso, F.}{229} +\indexentry{Collins, D.}{229} +\indexentry{Hess, K.}{229} +\indexentry{Kroger, H.}{229} +\indexentry{Scace, R.}{229} +\indexentry{Nagao, Makoto}{229} +\indexentry{Nishida, Toyoaki}{229} +\indexentry{Tsujii, Junichi}{229} +\indexentry{Archbold, Pamela}{229} +\indexentry{Hodges, Parker}{229} +\indexentry{Tajima, Denji}{229} +\indexentry{Matsubara, Tomoo}{229} +\indexentry{Lulin, Gao}{230} +\indexentry{Zhaoxiang, Xu}{230} +\indexentry{Teng, Teng}{230} +\indexentry{Kraar, Louis}{230} +\indexentry{Jonas, Norman}{230} +\indexentry{Boyd, Gerald~M.}{230} +\indexentry{Sollorzano, Lucia}{230} +\indexentry{Port, Otis}{230} +\indexentry{Wilson, John~W. }{230} +\indexentry{Diamond, S.}{231} +\indexentry{Brookes, Warren~T.}{231} +\indexentry{Tolchin, Martin}{231} +\indexentry{Glenn, Senator John}{231} +\indexentry{Clark, Don}{231} +\indexentry{Thurow, Lester~C.}{231} +\indexentry{Solomon, Steven}{231} +\indexentry{Greenhouse, Linda}{231} +\indexentry{Brandin, David~H.}{231} diff --git a/indexing/makeindex/test/dosdiff.bat b/indexing/makeindex/test/dosdiff.bat new file mode 100644 index 0000000000..5f808fdd83 --- /dev/null +++ b/indexing/makeindex/test/dosdiff.bat @@ -0,0 +1,138 @@ +:# Test of MakeIndex for PC DOS +:# [12-Sep-1991] + + +echo off +echo ################################################## +echo Expect only letter case differences in the output, +echo and differences in the program name in the banner. +echo ################################################## + + +echo ################################################## +echo test file = b209a +..\src\makeindx b209a +diff b209a.ind ok-b209a.ind +diff b209a.ilg ok-b209a.ilg + + +echo ################################################## +echo test file = b209b +..\src\makeindx b209b +diff b209b.ind ok-b209b.ind +diff b209b.ilg ok-b209b.ilg + + +echo ################################################## +echo test file = b209c +..\src\makeindx b209c +diff b209c.ind ok-b209c.ind +diff b209c.ilg ok-b209c.ilg + + +echo ################################################## +echo test file = b209d +..\src\makeindx b209d +diff b209d.ind ok-b209d.ind +diff b209d.ilg ok-b209d.ilg + + +echo ################################################## +echo test file = b209e +..\src\makeindx b209e +diff b209e.ind ok-b209e.ind +diff b209e.ilg ok-b209e.ilg + + +echo ################################################## +echo test file = b209f +..\src\makeindx b209f +diff b209f.ind ok-b209f.ind +diff b209f.ilg ok-b209f.ilg + + +echo ################################################## +echo test file = b211a +..\src\makeindx b211a +diff b211a.ind ok-b211a.ind +diff b211a.ilg ok-b211a.ilg + + +echo ################################################## +echo test file = b211d +..\src\makeindx b211d +diff b211d.ind ok-b211d.ind +diff b211d.ilg ok-b211d.ilg + + +:# b211e has a Ctl-Z, which is a problem on PC DOS +:# b211h is the same file, minus that one line +:# echo ################################################## +:# echo test file = b211e +:# ..\src\makeindx b211e +:# diff b211e.ind ok-b211e.ind +:# diff b211e.ilg ok-b211e.ilg + + +echo ################################################## +echo test file = b211f +..\src\makeindx b211f +diff b211f.ind ok-b211f.ind +diff b211f.ilg ok-b211f.ilg + + +echo ################################################## +echo test file = b211g +..\src\makeindx b211g +diff b211g.ind ok-b211g.ind +diff b211g.ilg ok-b211g.ilg + + +echo ################################################## +echo test file = b211h +..\src\makeindx b211h +diff b211h.ind ok-b211h.ind +diff b211h.ilg ok-b211h.ilg + + +echo ################################################## +echo test file = book +..\src\makeindx book +diff book.ind ok-book.ind +diff book.ilg ok-book.ilg + + +echo ################################################## +echo test file = test +..\src\makeindx test +diff test.ind ok-test.ind +diff test.ilg ok-test.ilg + + +echo ################################################## +echo test file = tort +..\src\makeindx tort +diff tort.ind ok-tort.ind +diff tort.ilg ok-tort.ilg + + +echo ################################################## +echo test file = b211b (German sort option) +..\src\makeindx -s b211b.ist -g b211b +diff b211b.ind ok-b211b.ind +diff b211b.ilg ok-b211b.ilg + + +echo ################################################## +echo test file = b210a (Private style file) +..\src\makeindx -s b210a.ist b210a +diff b210a.ind ok-b210a.ind +diff b210a.ilg ok-b210a.ilg + + +echo ################################################## +echo test file = b211c (Private style file) +..\src\makeindx -s b211c.ist b211c +diff b211c.ind ok-b211c.ind +diff b211c.ilg ok-b211c.ilg + diff --git a/indexing/makeindex/test/foo.bat b/indexing/makeindex/test/foo.bat new file mode 100644 index 0000000000..3737a55ac6 --- /dev/null +++ b/indexing/makeindex/test/foo.bat @@ -0,0 +1,138 @@ +:# Test of MakeIndex for PC DOS
+:# [12-Sep-1991]
+
+
+echo off
+echo ##################################################
+echo Expect only letter case differences in the output,
+echo and differences in the program name in the banner.
+echo ##################################################
+
+
+echo ##################################################
+echo test file = b209a
+makeindx b209a
+diff b209a.ind ok-b209a.ind
+diff b209a.ilg ok-b209a.ilg
+
+
+echo ##################################################
+echo test file = b209b
+makeindx b209b
+diff b209b.ind ok-b209b.ind
+diff b209b.ilg ok-b209b.ilg
+
+
+echo ##################################################
+echo test file = b209c
+makeindx b209c
+diff b209c.ind ok-b209c.ind
+diff b209c.ilg ok-b209c.ilg
+
+
+echo ##################################################
+echo test file = b209d
+makeindx b209d
+diff b209d.ind ok-b209d.ind
+diff b209d.ilg ok-b209d.ilg
+
+
+echo ##################################################
+echo test file = b209e
+makeindx b209e
+diff b209e.ind ok-b209e.ind
+diff b209e.ilg ok-b209e.ilg
+
+
+echo ##################################################
+echo test file = b209f
+makeindx b209f
+diff b209f.ind ok-b209f.ind
+diff b209f.ilg ok-b209f.ilg
+
+
+echo ##################################################
+echo test file = b211a
+makeindx b211a
+diff b211a.ind ok-b211a.ind
+diff b211a.ilg ok-b211a.ilg
+
+
+echo ##################################################
+echo test file = b211d
+makeindx b211d
+diff b211d.ind ok-b211d.ind
+diff b211d.ilg ok-b211d.ilg
+
+
+:# b211e has a Ctl-Z, which is a problem on PC DOS
+:# b211h is the same file, minus that one line
+:# echo ##################################################
+:# echo test file = b211e
+:# makeindx b211e
+:# diff b211e.ind ok-b211e.ind
+:# diff b211e.ilg ok-b211e.ilg
+
+
+echo ##################################################
+echo test file = b211f
+makeindx b211f
+diff b211f.ind ok-b211f.ind
+diff b211f.ilg ok-b211f.ilg
+
+
+echo ##################################################
+echo test file = b211g
+makeindx b211g
+diff b211g.ind ok-b211g.ind
+diff b211g.ilg ok-b211g.ilg
+
+
+echo ##################################################
+echo test file = b211h
+makeindx b211h
+diff b211h.ind ok-b211h.ind
+diff b211h.ilg ok-b211h.ilg
+
+
+echo ##################################################
+echo test file = book
+makeindx book
+diff book.ind ok-book.ind
+diff book.ilg ok-book.ilg
+
+
+echo ##################################################
+echo test file = test
+makeindx test
+diff test.ind ok-test.ind
+diff test.ilg ok-test.ilg
+
+
+echo ##################################################
+echo test file = tort
+makeindx tort
+diff tort.ind ok-tort.ind
+diff tort.ilg ok-tort.ilg
+
+
+echo ##################################################
+echo test file = b211b (German sort option)
+makeindx -s b211b.ist -g b211b
+diff b211b.ind ok-b211b.ind
+diff b211b.ilg ok-b211b.ilg
+
+
+echo ##################################################
+echo test file = b210a (Private style file)
+makeindx -s b210a.ist b210a
+diff b210a.ind ok-b210a.ind
+diff b210a.ilg ok-b210a.ilg
+
+
+echo ##################################################
+echo test file = b211c (Private style file)
+makeindx -s b211c.ist b211c
+diff b211c.ind ok-b211c.ind
+diff b211c.ilg ok-b211c.ilg
+
diff --git a/indexing/makeindex/test/ok-b209a.ilg b/indexing/makeindex/test/ok-b209a.ilg new file mode 100644 index 0000000000..54b3127dc0 --- /dev/null +++ b/indexing/makeindex/test/ok-b209a.ilg @@ -0,0 +1,6 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning input file b209a.idx....done (4 entries accepted, 0 rejected). +Sorting entries....done (9 comparisons). +Generating output file b209a.ind....done (5 lines written, 0 warnings). +Output written in b209a.ind. +Transcript written in b209a.ilg. diff --git a/indexing/makeindex/test/ok-b209a.ind b/indexing/makeindex/test/ok-b209a.ind new file mode 100644 index 0000000000..d0fe6e0088 --- /dev/null +++ b/indexing/makeindex/test/ok-b209a.ind @@ -0,0 +1,5 @@ +\begin{theindex} + + \item {\Ss alignment}, \bf{215}, 216, 217 + +\end{theindex} diff --git a/indexing/makeindex/test/ok-b209b.ilg b/indexing/makeindex/test/ok-b209b.ilg new file mode 100644 index 0000000000..3fcd6612a3 --- /dev/null +++ b/indexing/makeindex/test/ok-b209b.ilg @@ -0,0 +1,6 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning input file b209b.idx....done (5 entries accepted, 0 rejected). +Sorting entries....done (15 comparisons). +Generating output file b209b.ind....done (13 lines written, 0 warnings). +Output written in b209b.ind. +Transcript written in b209b.ilg. diff --git a/indexing/makeindex/test/ok-b209b.ind b/indexing/makeindex/test/ok-b209b.ind new file mode 100644 index 0000000000..2c9820abb2 --- /dev/null +++ b/indexing/makeindex/test/ok-b209b.ind @@ -0,0 +1,13 @@ +\begin{theindex} + + \item bar, 193--194 + + \indexspace + + \item foo, 93 + + \indexspace + + \item gnu, 111 + +\end{theindex} diff --git a/indexing/makeindex/test/ok-b209c.ilg b/indexing/makeindex/test/ok-b209c.ilg new file mode 100644 index 0000000000..d2cf18597d --- /dev/null +++ b/indexing/makeindex/test/ok-b209c.ilg @@ -0,0 +1,6 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning input file b209c.idx....done (5 entries accepted, 0 rejected). +Sorting entries....done (12 comparisons). +Generating output file b209c.ind....done (13 lines written, 0 warnings). +Output written in b209c.ind. +Transcript written in b209c.ilg. diff --git a/indexing/makeindex/test/ok-b209c.ind b/indexing/makeindex/test/ok-b209c.ind new file mode 100644 index 0000000000..2c9820abb2 --- /dev/null +++ b/indexing/makeindex/test/ok-b209c.ind @@ -0,0 +1,13 @@ +\begin{theindex} + + \item bar, 193--194 + + \indexspace + + \item foo, 93 + + \indexspace + + \item gnu, 111 + +\end{theindex} diff --git a/indexing/makeindex/test/ok-b209d.ilg b/indexing/makeindex/test/ok-b209d.ilg new file mode 100644 index 0000000000..b8a1d457a8 --- /dev/null +++ b/indexing/makeindex/test/ok-b209d.ilg @@ -0,0 +1,6 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning input file b209d.idx....done (5 entries accepted, 0 rejected). +Sorting entries....done (14 comparisons). +Generating output file b209d.ind....done (13 lines written, 0 warnings). +Output written in b209d.ind. +Transcript written in b209d.ilg. diff --git a/indexing/makeindex/test/ok-b209d.ind b/indexing/makeindex/test/ok-b209d.ind new file mode 100644 index 0000000000..04e8830f28 --- /dev/null +++ b/indexing/makeindex/test/ok-b209d.ind @@ -0,0 +1,13 @@ +\begin{theindex} + + \item axiomatic method, 13 + + \indexspace + + \item continuum mechanics, 11 + + \indexspace + + \item Noll, 11, 12 + +\end{theindex} diff --git a/indexing/makeindex/test/ok-b209e.ilg b/indexing/makeindex/test/ok-b209e.ilg new file mode 100644 index 0000000000..1db294fcf4 --- /dev/null +++ b/indexing/makeindex/test/ok-b209e.ilg @@ -0,0 +1,15 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning input file b209e.idx....done (85 entries accepted, 0 rejected). +Sorting entries....done (525 comparisons). +Generating output file b209e.ind.... +## Warning (input = b209e.idx, line = 4; output = b209e.ind, line = 4): + -- Conflicting entries: multiple encaps for the same page under same key. + +## Warning (input = b209e.idx, line = 51; output = b209e.ind, line = 19): + -- Conflicting entries: multiple encaps for the same page under same key. + +## Warning (input = b209e.idx, line = 82; output = b209e.ind, line = 28): + -- Conflicting entries: multiple encaps for the same page under same key. +done (30 lines written, 3 warnings). +Output written in b209e.ind. +Transcript written in b209e.ilg. diff --git a/indexing/makeindex/test/ok-b209e.ind b/indexing/makeindex/test/ok-b209e.ind new file mode 100644 index 0000000000..827ecf63b0 --- /dev/null +++ b/indexing/makeindex/test/ok-b209e.ind @@ -0,0 +1,30 @@ +\begin{theindex} + + \item {\Ss abstract}, 166, \bf{177} + \item {\Ss access rights}, 166, 183, \bf{183} + \item active position, \bf{198} + \item {\Ss additional information}, 166, 184, \bf{185} + \item {\Ss aggregate}, 77, 78 + \item aligned around, \bf{201} + \item {\Ss aligned-around}, 216, 217 + \item {\Ss alignment}, 111--113, 156, 207, \bf{215}, 216, 217, 219, + 227, 236, 240 + \item {\Ss alignment string}, 216, 217 + \item {\Ss alternative representation}, 60, 61, 80, 92, 93, \bf{94}, + 149, 150, 152, 174 + \item {\Ss alternative representation character sets}, 64, 93, 94, + 166, 173, \bf{174} + \item alternative representation character string, \bf{64} + \item {\it alternative representation character string\/}, 94 + \item {\Ss application comments}, 43--51, 53--59, 80, 102, 103, + \bf{103}, 137 + \item {\Ss applies}, 113, 114 + \item assured reproduction area, 161 + \item atomic string expression, \bf{69} + \item {\it atomic string expression\/}, \bf{69} + \item attribute, \bf{38} + \item {\Ss author's organization}, 180 + \item {\Ss authorization}, 166, 179, \bf{181} + \item {\Ss authors}, 166, 179, 180, \bf{180} + +\end{theindex} diff --git a/indexing/makeindex/test/ok-b209f.ilg b/indexing/makeindex/test/ok-b209f.ilg new file mode 100644 index 0000000000..b7cdce749d --- /dev/null +++ b/indexing/makeindex/test/ok-b209f.ilg @@ -0,0 +1,6 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning input file b209f.idx....done (76 entries accepted, 0 rejected). +Sorting entries....done (484 comparisons). +Generating output file b209f.ind....done (116 lines written, 0 warnings). +Output written in b209f.ind. +Transcript written in b209f.ilg. diff --git a/indexing/makeindex/test/ok-b209f.ind b/indexing/makeindex/test/ok-b209f.ind new file mode 100644 index 0000000000..60ae3a515c --- /dev/null +++ b/indexing/makeindex/test/ok-b209f.ind @@ -0,0 +1,116 @@ +\begin{theindex} + + \item \CL {:ALL-PATHS}, 22 + \item :AUTO-BACKTRACK, \ITIDX{16}, \ITIDX{18, 19} + \item \CL {:AUTO-BACKTRACK}, 22 + \item :AUTO-DEFINE, \ITIDX{19} + \item \CL {:AUTO-DEFINE}, 22 + \item :AUTO-REFERENCE, \ITIDX{19} + \item \CL {:AUTO-REFERENCE}, 22 + \item \CL {:DEPTH-FIRST}, 22 + \item :DISPLAY, \ITIDX{23, 24} + \item \CL {:DISPLAY}, 22 + \item \CL {:DURATIONS}, 22 + \item :FLOATS, \ITIDX{6}, \ITIDX{23} + \item \CL {:FLOATS}, 22 + \item \CL {:LEAVES-ONLY}, 23 + \item \CL {:RELATIONS}, 23 + \item \CL {:SORT}, 23 + \item :STATS, \ITIDX{21} + \item \CL {:STATS}, 23 + \item :TOLERANCE, \ITIDX{22} + \item \CL {:TOLERANCE}, 23 + \item :TRACE, \ITIDX{21, 22} + \item \CL {:TRACE}, 23 + \item \CL {:WAIT}, 24 + + \indexspace + + \item ADD-INTERVAL-CONSTRAINT, \ITIDX{5}, \ITIDX{7}, \ITIDX{18}, + \ITIDX{20} + \item \CL {(ADD-INTERVAL-CONSTRAINT {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}x constraint y {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Key}}\relax context {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss ({\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}type\/}}}\relax :REL)}}\relax \/}}}\relax )}, + 19 + + \indexspace + + \item \CL {(CONTEXT-DEFINED-P {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}name\/}}}\relax )}, + 18 + \item \CL {(CONTEXT-TREE {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss ({\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}name\/}}}\relax T)}}\relax \/}}}\relax )}, + 19 + + \indexspace + + \item \CL {(DEFINE-CONTEXT {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax name parent\/}}}\relax )}, + 18 + \item \CL {(DEFINE-INTERVAL {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax int ref {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Key}}\relax context\/}}}\relax )}, + 19 + \item \CL {(DEFINED-CONTEXTS)}, 18 + \item \CL {(DEFINED-INTERVALS)}, 19 + \item \CL {(DELETE-CONTEXT {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}name\/}}}\relax )}, + 18 + \item \CL {(DISPLAY-INTERVALS {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Key}}\relax ints context {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss ({\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}clear\/}}}\relax T)}}\relax \/}}}\relax )}, + 20 + + \indexspace + + \item GET-INTERVAL-CONSTRAINT, \ITIDX{5}, \ITIDX{7} + \item \CL {(GET-INTERVAL-CONSTRAINT {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}x y {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Key}}\relax context {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss ({\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}type\/}}}\relax :REL)}}\relax \/}}}\relax )}, + 20 + \item \CL {(GRAPH-INTERVALS {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax ints\/}}}\relax )}, + 21 + + \indexspace + + \item \CL {(INTERVAL-DEFINED-P {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}int\/}}}\relax )}, + 19 + + \indexspace + + \item \CL {(POP-CONTEXT {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax dont-delete-p\/}}}\relax )}, + 18 + \item \CL {(PUSH-CONTEXT)}, 18 + + \indexspace + + \item \CL {(REFERENCE-INTERVALS {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}int {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax inverse-p {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Key}}\relax context\/}}}\relax )}, + 19 + \item \CL {(RELATED-INTERVALS {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}int {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Key}}\relax context type\/}}}\relax )}, + 19 + + \indexspace + + \item \CL {(SHOW-INTERVAL-CONSTRAINTS {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}int {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Key}}\relax with-ints context {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss ({\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}type\/}}}\relax :REL)}}\relax \/}}}\relax )}, + 20 + \item \CL {(SWITCH-CONTEXT {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}name\/}}}\relax )}, + 18 + + \indexspace + + \item \CL {(TEST-INTERVAL-CONSTRAINT {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}x constraint y {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Key}}\relax context {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss ({\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}type\/}}}\relax :REL) ({\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}test\/}}}\relax :INTERSECT)}}\relax \/}}}\relax )}, + 20 + \item TIMELOGIC-BACKTRACK, \ITIDX{15}, \ITIDX{20} + \item \CL {(TIMELOGIC-BACKTRACK {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax btpoint\/}}}\relax )}, + 20 + \item TIMELOGIC-CHECKPOINT, \ITIDX{20} + \item \CL {(TIMELOGIC-CHECKPOINT)}, 20 + \item \CL {(TIMELOGIC-CHECKPOINT-P {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax btpoint\/}}}\relax )}, + 20 + \item TIMELOGIC-INIT, \ITIDX{21} + \item \CL {(TIMELOGIC-INIT)}, 18 + \item TIMELOGIC-PROP, \ITIDX{23} + \item \CL {(TIMELOGIC-PROP {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}propname {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax newpropvalue\/}}}\relax )}, + 21 + \item TIMELOGIC-RESET-PROPS, \ITIDX{18} + \item \CL {(TIMELOGIC-RESET-PROPS {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Rest}}\relax keywords\/}}}\relax )}, + 21 + \item \CL {(TIMELOGIC-STATS)}, 21 + \item TRACE-INTERVAL, \ITIDX{20, 21} + \item \CL {(TRACE-INTERVAL {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}int {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax with-ints\/}}}\relax )}, + 21 + + \indexspace + + \item \CL {(UNTRACE-INTERVAL {\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss {\pem {}{\let \pem {}=\tenssi \let \pbf =\tenssbx {\tenss \&Optional}}\relax int\/}}}\relax )}, + 21 + +\end{theindex} diff --git a/indexing/makeindex/test/ok-b210a.ilg b/indexing/makeindex/test/ok-b210a.ilg new file mode 100644 index 0000000000..f25fcbbb6d --- /dev/null +++ b/indexing/makeindex/test/ok-b210a.ilg @@ -0,0 +1,7 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning style file b210a.ist..........done (10 attributes redefined, 0 ignored). +Scanning input file b210a.idx....done (12 entries accepted, 0 rejected). +Sorting entries....done (38 comparisons). +Generating output file b210a.ind....done (21 lines written, 0 warnings). +Output written in b210a.ind. +Transcript written in b210a.ilg. diff --git a/indexing/makeindex/test/ok-b210a.ind b/indexing/makeindex/test/ok-b210a.ind new file mode 100644 index 0000000000..a08619d7de --- /dev/null +++ b/indexing/makeindex/test/ok-b210a.ind @@ -0,0 +1,21 @@ +\begin{theindex} + + 0\item a-delim0-1 + 01\subitem ab-delim1-2 + 1\subitem ac-delim1-3 + 1\subitem ad-delim1-4 + 12\subsubitem ae-delim2-5 + 2\subsubitem af-delim2-6 + 2\subsubitem ag-delim2-7 + + \indexspace + + 0\item b + x1\subitem bb-delim1-1 + 1\subitem bc-delim1-2 + 1\subitem bd + x2\subsubitem be-delim2-3 + 2\subsubitem bf-delim2-4 + 2\subsubitem bg-delim2-5 + +\end{theindex} diff --git a/indexing/makeindex/test/ok-b211a.ilg b/indexing/makeindex/test/ok-b211a.ilg new file mode 100644 index 0000000000..0b5e90c959 --- /dev/null +++ b/indexing/makeindex/test/ok-b211a.ilg @@ -0,0 +1,11 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning input file b211a.idx.... +!! Input index error (file = b211a.idx, line = 5): + -- First argument too long (max 1024). +!! Input index error (file = b211a.idx, line = 6): + -- First argument too long (max 1024). +done (10 entries accepted, 2 rejected). +Sorting entries....done (35 comparisons). +Generating output file b211a.ind....done (34 lines written, 0 warnings). +Output written in b211a.ind. +Transcript written in b211a.ilg. diff --git a/indexing/makeindex/test/ok-b211a.ind b/indexing/makeindex/test/ok-b211a.ind new file mode 100644 index 0000000000..e5dfcaba64 --- /dev/null +++ b/indexing/makeindex/test/ok-b211a.ind @@ -0,0 +1,34 @@ +\begin{theindex} + + \item abc, \italic{3} + + \indexspace + + \item bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb, + \BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB{513} + + \indexspace + + \item xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, + 256 + \item xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, + \EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE{1005} + \item xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, + \EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE{1021} + \item xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, + \EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE{1023} + \item AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA, + 1023 + \item xyz, \bold{3} + + \indexspace + + \item yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy, + 257 + + \indexspace + + \item zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz, + 1023 + +\end{theindex} diff --git a/indexing/makeindex/test/ok-b211b.ilg b/indexing/makeindex/test/ok-b211b.ilg new file mode 100644 index 0000000000..53598d5b20 --- /dev/null +++ b/indexing/makeindex/test/ok-b211b.ilg @@ -0,0 +1,7 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning style file b211b.ist.done (1 attributes redefined, 0 ignored). +Scanning input file b211b.idx....done (23 entries accepted, 0 rejected). +Sorting entries....done (102 comparisons). +Generating output file b211b.ind....done (45 lines written, 0 warnings). +Output written in b211b.ind. +Transcript written in b211b.ilg. diff --git a/indexing/makeindex/test/ok-b211b.ind b/indexing/makeindex/test/ok-b211b.ind new file mode 100644 index 0000000000..965f47cb0d --- /dev/null +++ b/indexing/makeindex/test/ok-b211b.ind @@ -0,0 +1,45 @@ +\begin{theindex} + + \item aesel, 2 + \item "asel, 1 + \item Aesel, 20 + \item "Asel, 10 + + \indexspace + + \item Gleitkaesten, 2 + \item Gleitk"asten, 1 + \item Gleitkasten, 3 + + \indexspace + + \item laesst, 2 + \item l"a"st, 1 + + \indexspace + + \item oestrig, 4 + \item "ostrig, 3 + \item Oestrig, 40 + \item "Ostrig, 30 + + \indexspace + + \item Schriftgroessen, 3 + \item Schriftgr"o"sen, 19 + + \indexspace + + \item ueber, 6 + \item "uber, 5 + \item Ueber, 60 + \item "Uber, 50 + + \indexspace + + \item wasser, 8 + \item wa"ser, 7 + \item Wasser, 80 + \item Wa"ser, 70 + +\end{theindex} diff --git a/indexing/makeindex/test/ok-b211c.ilg b/indexing/makeindex/test/ok-b211c.ilg new file mode 100644 index 0000000000..9fb8f69b45 --- /dev/null +++ b/indexing/makeindex/test/ok-b211c.ilg @@ -0,0 +1,7 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning style file b211c.ist..........done (10 attributes redefined, 0 ignored). +Scanning input file b211c.idx....done (12 entries accepted, 0 rejected). +Sorting entries....done (38 comparisons). +Generating output file b211c.ind....done (21 lines written, 0 warnings). +Output written in b211c.ind. +Transcript written in b211c.ilg. diff --git a/indexing/makeindex/test/ok-b211c.ind b/indexing/makeindex/test/ok-b211c.ind new file mode 100644 index 0000000000..a08619d7de --- /dev/null +++ b/indexing/makeindex/test/ok-b211c.ind @@ -0,0 +1,21 @@ +\begin{theindex} + + 0\item a-delim0-1 + 01\subitem ab-delim1-2 + 1\subitem ac-delim1-3 + 1\subitem ad-delim1-4 + 12\subsubitem ae-delim2-5 + 2\subsubitem af-delim2-6 + 2\subsubitem ag-delim2-7 + + \indexspace + + 0\item b + x1\subitem bb-delim1-1 + 1\subitem bc-delim1-2 + 1\subitem bd + x2\subsubitem be-delim2-3 + 2\subsubitem bf-delim2-4 + 2\subsubitem bg-delim2-5 + +\end{theindex} diff --git a/indexing/makeindex/test/ok-b211d.ilg b/indexing/makeindex/test/ok-b211d.ilg new file mode 100644 index 0000000000..40409a024e --- /dev/null +++ b/indexing/makeindex/test/ok-b211d.ilg @@ -0,0 +1,6 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning input file b211d.idx....done (4 entries accepted, 0 rejected). +Sorting entries....done (9 comparisons). +Generating output file b211d.ind....done (5 lines written, 0 warnings). +Output written in b211d.ind. +Transcript written in b211d.ilg. diff --git a/indexing/makeindex/test/ok-b211d.ind b/indexing/makeindex/test/ok-b211d.ind new file mode 100644 index 0000000000..4351eca4a6 --- /dev/null +++ b/indexing/makeindex/test/ok-b211d.ind @@ -0,0 +1,5 @@ +\begin{theindex} + + \item foo, 27--28 + +\end{theindex} diff --git a/indexing/makeindex/test/ok-b211e.ilg b/indexing/makeindex/test/ok-b211e.ilg new file mode 100644 index 0000000000..7a33d08870 --- /dev/null +++ b/indexing/makeindex/test/ok-b211e.ilg @@ -0,0 +1,6 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning input file b211e.idx....done (255 entries accepted, 0 rejected). +Sorting entries.....done (1996 comparisons). +Generating output file b211e.ind....done (823 lines written, 0 warnings). +Output written in b211e.ind. +Transcript written in b211e.ilg. diff --git a/indexing/makeindex/test/ok-b211e.ind b/indexing/makeindex/test/ok-b211e.ind new file mode 100644 index 0000000000..91093827d2 --- /dev/null +++ b/indexing/makeindex/test/ok-b211e.ind @@ -0,0 +1,823 @@ +\begin{theindex} + + \item ! (exclamation point), 33 + \item " (quotation mark)), 34 + \item \# (sharp sign), 35 + \item \$ (dollar sign), 36 + \item \% (percent sign), 37 + \item \& (ampersand), 38 + \item ' (apostrophe), 39 + \item ( (left parenthesis), 40 + \item ) (right parenthesis), 41 + \item * (asterisk), 42 + \item + (plus), 43 + \item , (comma), 44 + \item - (minus), 45 + \item . (period), 46 + \item / (slash), 47 + \item : (colon), 58 + \item ; (semicolon), 59 + \item $<$ (left angle bracket), 60 + \item = (equals), 61 + \item $>$ (right angle bracket), 62 + \item ? (query), 63 + \item @ (at sign), 64 + \item [ (left square bracket), 91 + \item \verb=\= (backslash), 92 + \item ] (right square bracket), 93 + \item \verb=^= (caret), 94 + \item \verb=_= (underscore), 95 + \item \verb=~= (grave accent), 96 + \item \{ (left brace), 123 + \item \verb=|= (vertical bar), 124 + \item \} (right brace), 125 + \item \verb=~= (tilde), 126 + + \indexspace + + \item 0, 48 + \item 1, 49 + \item 2, 50 + \item 3, 51 + \item 4, 52 + \item 5, 53 + \item 6, 54 + \item 7, 55 + \item 8, 56 + \item 9, 57 + + \indexspace + + \item \char1 (character 1 (octal 1) (hex 1)), 1 + + \indexspace + + \item \char2 (character 2 (octal 2) (hex 2)), 2 + + \indexspace + + \item \char3 (character 3 (octal 3) (hex 3)), 3 + + \indexspace + + \item \char4 (character 4 (octal 4) (hex 4)), 4 + + \indexspace + + \item \char5 (character 5 (octal 5) (hex 5)), 5 + + \indexspace + + \item \char6 (character 6 (octal 6) (hex 6)), 6 + + \indexspace + + \item \char7 (character 7 (octal 7) (hex 7)), 7 + + \indexspace + + \item \char8 (character 8 (octal 10) (hex 8)), 8 + + \indexspace + + \item \char9 (character 9 (octal 11) (hex 9)), 9 + + \indexspace + + \item \char10 (character 10 (octal 12) (hex a)), 10 + + \indexspace + + \item \char11 (character 11 (octal 13) (hex b)), 11 + + \indexspace + + \item \char12 (character 12 (octal 14) (hex c)), 12 + + \indexspace + + \item \char13 (character 13 (octal 15) (hex d)), 13 + + \indexspace + + \item \char14 (character 14 (octal 16) (hex e)), 14 + + \indexspace + + \item \char15 (character 15 (octal 17) (hex f)), 15 + + \indexspace + + \item \char16 (character 16 (octal 20) (hex 10)), 16 + + \indexspace + + \item \char17 (character 17 (octal 21) (hex 11)), 17 + + \indexspace + + \item \char18 (character 18 (octal 22) (hex 12)), 18 + + \indexspace + + \item \char19 (character 19 (octal 23) (hex 13)), 19 + + \indexspace + + \item \char20 (character 20 (octal 24) (hex 14)), 20 + + \indexspace + + \item \char21 (character 21 (octal 25) (hex 15)), 21 + + \indexspace + + \item \char22 (character 22 (octal 26) (hex 16)), 22 + + \indexspace + + \item \char23 (character 23 (octal 27) (hex 17)), 23 + + \indexspace + + \item \char24 (character 24 (octal 30) (hex 18)), 24 + + \indexspace + + \item \char25 (character 25 (octal 31) (hex 19)), 25 + + \indexspace + + \item \char26 (character 26 (octal 32) (hex 1a)), 26 + + \indexspace + + \item \char27 (character 27 (octal 33) (hex 1b)), 27 + + \indexspace + + \item \char28 (character 28 (octal 34) (hex 1c)), 28 + + \indexspace + + \item \char29 (character 29 (octal 35) (hex 1d)), 29 + + \indexspace + + \item \char30 (character 30 (octal 36) (hex 1e)), 30 + + \indexspace + + \item \char31 (character 31 (octal 37) (hex 1f)), 31 + + \indexspace + + \item (space), 32 + + \indexspace + + \item A, 65 + \item a, 97 + + \indexspace + + \item B, 66 + \item b, 98 + + \indexspace + + \item C, 67 + \item c, 99 + + \indexspace + + \item D, 68 + \item d, 100 + + \indexspace + + \item E, 69 + \item e, 101 + + \indexspace + + \item F, 70 + \item f, 102 + + \indexspace + + \item G, 71 + \item g, 103 + + \indexspace + + \item H, 72 + \item h, 104 + + \indexspace + + \item I, 73 + \item i, 105 + + \indexspace + + \item J, 74 + \item j, 106 + + \indexspace + + \item K, 75 + \item k, 107 + + \indexspace + + \item L, 76 + \item l, 108 + + \indexspace + + \item M, 77 + \item m, 109 + + \indexspace + + \item N, 78 + \item n, 110 + + \indexspace + + \item O, 79 + \item o, 111 + + \indexspace + + \item P, 80 + \item p, 112 + + \indexspace + + \item Q, 81 + \item q, 113 + + \indexspace + + \item R, 82 + \item r, 114 + + \indexspace + + \item S, 83 + \item s, 115 + + \indexspace + + \item T, 84 + \item t, 116 + + \indexspace + + \item U, 85 + \item u, 117 + + \indexspace + + \item V, 86 + \item v, 118 + + \indexspace + + \item W, 87 + \item w, 119 + + \indexspace + + \item X, 88 + \item x, 120 + + \indexspace + + \item Y, 89 + \item y, 121 + + \indexspace + + \item Z, 90 + \item z, 122 + + \indexspace + + \item \verb== (DELete), 127 + + \indexspace + + \item € (character 128 (octal 200) (hex 80)), 128 + + \indexspace + + \item (character 129 (octal 201) (hex 81)), 129 + + \indexspace + + \item ‚ (character 130 (octal 202) (hex 82)), 130 + + \indexspace + + \item ƒ (character 131 (octal 203) (hex 83)), 131 + + \indexspace + + \item „ (character 132 (octal 204) (hex 84)), 132 + + \indexspace + + \item … (character 133 (octal 205) (hex 85)), 133 + + \indexspace + + \item † (character 134 (octal 206) (hex 86)), 134 + + \indexspace + + \item ‡ (character 135 (octal 207) (hex 87)), 135 + + \indexspace + + \item ˆ (character 136 (octal 210) (hex 88)), 136 + + \indexspace + + \item ‰ (character 137 (octal 211) (hex 89)), 137 + + \indexspace + + \item Š (character 138 (octal 212) (hex 8a)), 138 + + \indexspace + + \item ‹ (character 139 (octal 213) (hex 8b)), 139 + + \indexspace + + \item Œ (character 140 (octal 214) (hex 8c)), 140 + + \indexspace + + \item (character 141 (octal 215) (hex 8d)), 141 + + \indexspace + + \item Ž (character 142 (octal 216) (hex 8e)), 142 + + \indexspace + + \item (character 143 (octal 217) (hex 8f)), 143 + + \indexspace + + \item (character 144 (octal 220) (hex 90)), 144 + + \indexspace + + \item ‘ (character 145 (octal 221) (hex 91)), 145 + + \indexspace + + \item ’ (character 146 (octal 222) (hex 92)), 146 + + \indexspace + + \item “ (character 147 (octal 223) (hex 93)), 147 + + \indexspace + + \item ” (character 148 (octal 224) (hex 94)), 148 + + \indexspace + + \item • (character 149 (octal 225) (hex 95)), 149 + + \indexspace + + \item – (character 150 (octal 226) (hex 96)), 150 + + \indexspace + + \item — (character 151 (octal 227) (hex 97)), 151 + + \indexspace + + \item ˜ (character 152 (octal 230) (hex 98)), 152 + + \indexspace + + \item ™ (character 153 (octal 231) (hex 99)), 153 + + \indexspace + + \item š (character 154 (octal 232) (hex 9a)), 154 + + \indexspace + + \item › (character 155 (octal 233) (hex 9b)), 155 + + \indexspace + + \item œ (character 156 (octal 234) (hex 9c)), 156 + + \indexspace + + \item (character 157 (octal 235) (hex 9d)), 157 + + \indexspace + + \item ž (character 158 (octal 236) (hex 9e)), 158 + + \indexspace + + \item Ÿ (character 159 (octal 237) (hex 9f)), 159 + + \indexspace + + \item (character 160 (octal 240) (hex a0)), 160 + + \indexspace + + \item ¡ (character 161 (octal 241) (hex a1)), 161 + + \indexspace + + \item ¢ (character 162 (octal 242) (hex a2)), 162 + + \indexspace + + \item £ (character 163 (octal 243) (hex a3)), 163 + + \indexspace + + \item ¤ (character 164 (octal 244) (hex a4)), 164 + + \indexspace + + \item ¥ (character 165 (octal 245) (hex a5)), 165 + + \indexspace + + \item ¦ (character 166 (octal 246) (hex a6)), 166 + + \indexspace + + \item § (character 167 (octal 247) (hex a7)), 167 + + \indexspace + + \item ¨ (character 168 (octal 250) (hex a8)), 168 + + \indexspace + + \item © (character 169 (octal 251) (hex a9)), 169 + + \indexspace + + \item ª (character 170 (octal 252) (hex aa)), 170 + + \indexspace + + \item « (character 171 (octal 253) (hex ab)), 171 + + \indexspace + + \item ¬ (character 172 (octal 254) (hex ac)), 172 + + \indexspace + + \item (character 173 (octal 255) (hex ad)), 173 + + \indexspace + + \item ® (character 174 (octal 256) (hex ae)), 174 + + \indexspace + + \item ¯ (character 175 (octal 257) (hex af)), 175 + + \indexspace + + \item ° (character 176 (octal 260) (hex b0)), 176 + + \indexspace + + \item ± (character 177 (octal 261) (hex b1)), 177 + + \indexspace + + \item ² (character 178 (octal 262) (hex b2)), 178 + + \indexspace + + \item ³ (character 179 (octal 263) (hex b3)), 179 + + \indexspace + + \item ´ (character 180 (octal 264) (hex b4)), 180 + + \indexspace + + \item µ (character 181 (octal 265) (hex b5)), 181 + + \indexspace + + \item ¶ (character 182 (octal 266) (hex b6)), 182 + + \indexspace + + \item · (character 183 (octal 267) (hex b7)), 183 + + \indexspace + + \item ¸ (character 184 (octal 270) (hex b8)), 184 + + \indexspace + + \item ¹ (character 185 (octal 271) (hex b9)), 185 + + \indexspace + + \item º (character 186 (octal 272) (hex ba)), 186 + + \indexspace + + \item » (character 187 (octal 273) (hex bb)), 187 + + \indexspace + + \item ¼ (character 188 (octal 274) (hex bc)), 188 + + \indexspace + + \item ½ (character 189 (octal 275) (hex bd)), 189 + + \indexspace + + \item ¾ (character 190 (octal 276) (hex be)), 190 + + \indexspace + + \item ¿ (character 191 (octal 277) (hex bf)), 191 + + \indexspace + + \item À (character 192 (octal 300) (hex c0)), 192 + + \indexspace + + \item Á (character 193 (octal 301) (hex c1)), 193 + + \indexspace + + \item  (character 194 (octal 302) (hex c2)), 194 + + \indexspace + + \item à (character 195 (octal 303) (hex c3)), 195 + + \indexspace + + \item Ä (character 196 (octal 304) (hex c4)), 196 + + \indexspace + + \item Å (character 197 (octal 305) (hex c5)), 197 + + \indexspace + + \item Æ (character 198 (octal 306) (hex c6)), 198 + + \indexspace + + \item Ç (character 199 (octal 307) (hex c7)), 199 + + \indexspace + + \item È (character 200 (octal 310) (hex c8)), 200 + + \indexspace + + \item É (character 201 (octal 311) (hex c9)), 201 + + \indexspace + + \item Ê (character 202 (octal 312) (hex ca)), 202 + + \indexspace + + \item Ë (character 203 (octal 313) (hex cb)), 203 + + \indexspace + + \item Ì (character 204 (octal 314) (hex cc)), 204 + + \indexspace + + \item Í (character 205 (octal 315) (hex cd)), 205 + + \indexspace + + \item Î (character 206 (octal 316) (hex ce)), 206 + + \indexspace + + \item Ï (character 207 (octal 317) (hex cf)), 207 + + \indexspace + + \item Ð (character 208 (octal 320) (hex d0)), 208 + + \indexspace + + \item Ñ (character 209 (octal 321) (hex d1)), 209 + + \indexspace + + \item Ò (character 210 (octal 322) (hex d2)), 210 + + \indexspace + + \item Ó (character 211 (octal 323) (hex d3)), 211 + + \indexspace + + \item Ô (character 212 (octal 324) (hex d4)), 212 + + \indexspace + + \item Õ (character 213 (octal 325) (hex d5)), 213 + + \indexspace + + \item Ö (character 214 (octal 326) (hex d6)), 214 + + \indexspace + + \item × (character 215 (octal 327) (hex d7)), 215 + + \indexspace + + \item Ø (character 216 (octal 330) (hex d8)), 216 + + \indexspace + + \item Ù (character 217 (octal 331) (hex d9)), 217 + + \indexspace + + \item Ú (character 218 (octal 332) (hex da)), 218 + + \indexspace + + \item Û (character 219 (octal 333) (hex db)), 219 + + \indexspace + + \item Ü (character 220 (octal 334) (hex dc)), 220 + + \indexspace + + \item Ý (character 221 (octal 335) (hex dd)), 221 + + \indexspace + + \item Þ (character 222 (octal 336) (hex de)), 222 + + \indexspace + + \item ß (character 223 (octal 337) (hex df)), 223 + + \indexspace + + \item à (character 224 (octal 340) (hex e0)), 224 + + \indexspace + + \item á (character 225 (octal 341) (hex e1)), 225 + + \indexspace + + \item â (character 226 (octal 342) (hex e2)), 226 + + \indexspace + + \item ã (character 227 (octal 343) (hex e3)), 227 + + \indexspace + + \item ä (character 228 (octal 344) (hex e4)), 228 + + \indexspace + + \item å (character 229 (octal 345) (hex e5)), 229 + + \indexspace + + \item æ (character 230 (octal 346) (hex e6)), 230 + + \indexspace + + \item ç (character 231 (octal 347) (hex e7)), 231 + + \indexspace + + \item è (character 232 (octal 350) (hex e8)), 232 + + \indexspace + + \item é (character 233 (octal 351) (hex e9)), 233 + + \indexspace + + \item ê (character 234 (octal 352) (hex ea)), 234 + + \indexspace + + \item ë (character 235 (octal 353) (hex eb)), 235 + + \indexspace + + \item ì (character 236 (octal 354) (hex ec)), 236 + + \indexspace + + \item í (character 237 (octal 355) (hex ed)), 237 + + \indexspace + + \item î (character 238 (octal 356) (hex ee)), 238 + + \indexspace + + \item ï (character 239 (octal 357) (hex ef)), 239 + + \indexspace + + \item ð (character 240 (octal 360) (hex f0)), 240 + + \indexspace + + \item ñ (character 241 (octal 361) (hex f1)), 241 + + \indexspace + + \item ò (character 242 (octal 362) (hex f2)), 242 + + \indexspace + + \item ó (character 243 (octal 363) (hex f3)), 243 + + \indexspace + + \item ô (character 244 (octal 364) (hex f4)), 244 + + \indexspace + + \item õ (character 245 (octal 365) (hex f5)), 245 + + \indexspace + + \item ö (character 246 (octal 366) (hex f6)), 246 + + \indexspace + + \item ÷ (character 247 (octal 367) (hex f7)), 247 + + \indexspace + + \item ø (character 248 (octal 370) (hex f8)), 248 + + \indexspace + + \item ù (character 249 (octal 371) (hex f9)), 249 + + \indexspace + + \item ú (character 250 (octal 372) (hex fa)), 250 + + \indexspace + + \item û (character 251 (octal 373) (hex fb)), 251 + + \indexspace + + \item ü (character 252 (octal 374) (hex fc)), 252 + + \indexspace + + \item ý (character 253 (octal 375) (hex fd)), 253 + + \indexspace + + \item þ (character 254 (octal 376) (hex fe)), 254 + + \indexspace + + \item ÿ (character 255 (octal 377) (hex ff)), 255 + +\end{theindex} diff --git a/indexing/makeindex/test/ok-b211f.ilg b/indexing/makeindex/test/ok-b211f.ilg new file mode 100644 index 0000000000..1e8f9adcbe --- /dev/null +++ b/indexing/makeindex/test/ok-b211f.ilg @@ -0,0 +1,6 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning input file b211f.idx....done (4 entries accepted, 0 rejected). +Sorting entries....done (9 comparisons). +Generating output file b211f.ind....done (5 lines written, 0 warnings). +Output written in b211f.ind. +Transcript written in b211f.ilg. diff --git a/indexing/makeindex/test/ok-b211f.ind b/indexing/makeindex/test/ok-b211f.ind new file mode 100644 index 0000000000..b1dad11e78 --- /dev/null +++ b/indexing/makeindex/test/ok-b211f.ind @@ -0,0 +1,5 @@ +\begin{theindex} + + \item C++ language, 7-2--7-10 + +\end{theindex} diff --git a/indexing/makeindex/test/ok-b211g.ilg b/indexing/makeindex/test/ok-b211g.ilg new file mode 100644 index 0000000000..88718562d8 --- /dev/null +++ b/indexing/makeindex/test/ok-b211g.ilg @@ -0,0 +1,39 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning input file b211g.idx....done (39 entries accepted, 0 rejected). +Sorting entries....done (196 comparisons). +Generating output file b211g.ind.... +## Warning (input = b211g.idx, line = 14; output = b211g.ind, line = 18): + -- Illegal range formation: starting & ending pages are of different types. + +## Warning (input = b211g.idx, line = 21; output = b211g.ind, line = 23): + -- Inconsistent page encapsulator bold within range. + +## Warning (input = b211g.idx, line = 23; output = b211g.ind, line = 28): + -- Conflicting entries: multiple encaps for the same page under same key. + +## Warning (input = b211g.idx, line = 24; output = b211g.ind, line = 28): + -- Conflicting entries: multiple encaps for the same page under same key. + +## Warning (input = b211g.idx, line = 25; output = b211g.ind, line = 28): + -- Conflicting entries: multiple encaps for the same page under same key. + +## Warning (input = b211g.idx, line = 26; output = b211g.ind, line = 28): + -- Conflicting entries: multiple encaps for the same page under same key. + +## Warning (input = b211g.idx, line = 27; output = b211g.ind, line = 28): + -- Conflicting entries: multiple encaps for the same page under same key. + +## Warning (input = b211g.idx, line = 28; output = b211g.ind, line = 29): + -- Conflicting entries: multiple encaps for the same page under same key. + +## Warning (input = b211g.idx, line = 32; output = b211g.ind, line = 33): + -- Inconsistent page encapsulator bold within range. + +## Warning (input = b211g.idx, line = 33; output = b211g.ind, line = 33): + -- Inconsistent page encapsulator bold within range. + +## Warning (input = b211g.idx, line = 36; output = b211g.ind, line = 37): + -- Illegal range formation: starting & ending pages are of different types. +done (43 lines written, 11 warnings). +Output written in b211g.ind. +Transcript written in b211g.ilg. diff --git a/indexing/makeindex/test/ok-b211g.ind b/indexing/makeindex/test/ok-b211g.ind new file mode 100644 index 0000000000..d0a25e9018 --- /dev/null +++ b/indexing/makeindex/test/ok-b211g.ind @@ -0,0 +1,43 @@ +\begin{theindex} + + \item {\it aa\/} + \subitem {\it bb\/} + \subsubitem {\it cc\/}, 1 + \item alpha, 1--5 + \subitem beta, 3 + \subsubitem gamma, 10 + \item alpha@beta, 1 + + \indexspace + + \item beta, \bold{1--5} + \item {\it beta\/}, 1 + + \indexspace + + \item delta, i--iv, \see{beta}{1--7} + + \indexspace + + \item epsilon, 1--5 + \item eta, \bold{3}, 1--5 + + \indexspace + + \item f\"ur, 1 + \item foo, 5, \bold{5}, \italic{5}, \roman{5}, \sanserif{5}, + \slanted{5}, \smallcaps{5} + + \indexspace + + \item gamma, \bold{1}, \bold{3}, 1--5 + + \indexspace + + \item theta, i--iv, 3--7 + + \indexspace + + \item zeta, \bold{1--5} + +\end{theindex} diff --git a/indexing/makeindex/test/ok-b211h.ilg b/indexing/makeindex/test/ok-b211h.ilg new file mode 100644 index 0000000000..42b162a588 --- /dev/null +++ b/indexing/makeindex/test/ok-b211h.ilg @@ -0,0 +1,6 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning input file b211h.idx....done (254 entries accepted, 0 rejected). +Sorting entries.....done (1930 comparisons). +Generating output file b211h.ind....done (819 lines written, 0 warnings). +Output written in b211h.ind. +Transcript written in b211h.ilg. diff --git a/indexing/makeindex/test/ok-b211h.ind b/indexing/makeindex/test/ok-b211h.ind new file mode 100644 index 0000000000..2d91b74920 --- /dev/null +++ b/indexing/makeindex/test/ok-b211h.ind @@ -0,0 +1,819 @@ +\begin{theindex} + + \item ! (exclamation point), 33 + \item " (quotation mark)), 34 + \item \# (sharp sign), 35 + \item \$ (dollar sign), 36 + \item \% (percent sign), 37 + \item \& (ampersand), 38 + \item ' (apostrophe), 39 + \item ( (left parenthesis), 40 + \item ) (right parenthesis), 41 + \item * (asterisk), 42 + \item + (plus), 43 + \item , (comma), 44 + \item - (minus), 45 + \item . (period), 46 + \item / (slash), 47 + \item : (colon), 58 + \item ; (semicolon), 59 + \item $<$ (left angle bracket), 60 + \item = (equals), 61 + \item $>$ (right angle bracket), 62 + \item ? (query), 63 + \item @ (at sign), 64 + \item [ (left square bracket), 91 + \item \verb=\= (backslash), 92 + \item ] (right square bracket), 93 + \item \verb=^= (caret), 94 + \item \verb=_= (underscore), 95 + \item \verb=~= (grave accent), 96 + \item \{ (left brace), 123 + \item \verb=|= (vertical bar), 124 + \item \} (right brace), 125 + \item \verb=~= (tilde), 126 + + \indexspace + + \item 0, 48 + \item 1, 49 + \item 2, 50 + \item 3, 51 + \item 4, 52 + \item 5, 53 + \item 6, 54 + \item 7, 55 + \item 8, 56 + \item 9, 57 + + \indexspace + + \item \char1 (character 1 (octal 1) (hex 1)), 1 + + \indexspace + + \item \char2 (character 2 (octal 2) (hex 2)), 2 + + \indexspace + + \item \char3 (character 3 (octal 3) (hex 3)), 3 + + \indexspace + + \item \char4 (character 4 (octal 4) (hex 4)), 4 + + \indexspace + + \item \char5 (character 5 (octal 5) (hex 5)), 5 + + \indexspace + + \item \char6 (character 6 (octal 6) (hex 6)), 6 + + \indexspace + + \item \char7 (character 7 (octal 7) (hex 7)), 7 + + \indexspace + + \item \char8 (character 8 (octal 10) (hex 8)), 8 + + \indexspace + + \item \char9 (character 9 (octal 11) (hex 9)), 9 + + \indexspace + + \item \char10 (character 10 (octal 12) (hex a)), 10 + + \indexspace + + \item \char11 (character 11 (octal 13) (hex b)), 11 + + \indexspace + + \item \char12 (character 12 (octal 14) (hex c)), 12 + + \indexspace + + \item \char13 (character 13 (octal 15) (hex d)), 13 + + \indexspace + + \item \char14 (character 14 (octal 16) (hex e)), 14 + + \indexspace + + \item \char15 (character 15 (octal 17) (hex f)), 15 + + \indexspace + + \item \char16 (character 16 (octal 20) (hex 10)), 16 + + \indexspace + + \item \char17 (character 17 (octal 21) (hex 11)), 17 + + \indexspace + + \item \char18 (character 18 (octal 22) (hex 12)), 18 + + \indexspace + + \item \char19 (character 19 (octal 23) (hex 13)), 19 + + \indexspace + + \item \char20 (character 20 (octal 24) (hex 14)), 20 + + \indexspace + + \item \char21 (character 21 (octal 25) (hex 15)), 21 + + \indexspace + + \item \char22 (character 22 (octal 26) (hex 16)), 22 + + \indexspace + + \item \char23 (character 23 (octal 27) (hex 17)), 23 + + \indexspace + + \item \char24 (character 24 (octal 30) (hex 18)), 24 + + \indexspace + + \item \char25 (character 25 (octal 31) (hex 19)), 25 + + \indexspace + + \item \char27 (character 27 (octal 33) (hex 1b)), 27 + + \indexspace + + \item \char28 (character 28 (octal 34) (hex 1c)), 28 + + \indexspace + + \item \char29 (character 29 (octal 35) (hex 1d)), 29 + + \indexspace + + \item \char30 (character 30 (octal 36) (hex 1e)), 30 + + \indexspace + + \item \char31 (character 31 (octal 37) (hex 1f)), 31 + + \indexspace + + \item (space), 32 + + \indexspace + + \item A, 65 + \item a, 97 + + \indexspace + + \item B, 66 + \item b, 98 + + \indexspace + + \item C, 67 + \item c, 99 + + \indexspace + + \item D, 68 + \item d, 100 + + \indexspace + + \item E, 69 + \item e, 101 + + \indexspace + + \item F, 70 + \item f, 102 + + \indexspace + + \item G, 71 + \item g, 103 + + \indexspace + + \item H, 72 + \item h, 104 + + \indexspace + + \item I, 73 + \item i, 105 + + \indexspace + + \item J, 74 + \item j, 106 + + \indexspace + + \item K, 75 + \item k, 107 + + \indexspace + + \item L, 76 + \item l, 108 + + \indexspace + + \item M, 77 + \item m, 109 + + \indexspace + + \item N, 78 + \item n, 110 + + \indexspace + + \item O, 79 + \item o, 111 + + \indexspace + + \item P, 80 + \item p, 112 + + \indexspace + + \item Q, 81 + \item q, 113 + + \indexspace + + \item R, 82 + \item r, 114 + + \indexspace + + \item S, 83 + \item s, 115 + + \indexspace + + \item T, 84 + \item t, 116 + + \indexspace + + \item U, 85 + \item u, 117 + + \indexspace + + \item V, 86 + \item v, 118 + + \indexspace + + \item W, 87 + \item w, 119 + + \indexspace + + \item X, 88 + \item x, 120 + + \indexspace + + \item Y, 89 + \item y, 121 + + \indexspace + + \item Z, 90 + \item z, 122 + + \indexspace + + \item \verb== (DELete), 127 + + \indexspace + + \item € (character 128 (octal 200) (hex 80)), 128 + + \indexspace + + \item (character 129 (octal 201) (hex 81)), 129 + + \indexspace + + \item ‚ (character 130 (octal 202) (hex 82)), 130 + + \indexspace + + \item ƒ (character 131 (octal 203) (hex 83)), 131 + + \indexspace + + \item „ (character 132 (octal 204) (hex 84)), 132 + + \indexspace + + \item … (character 133 (octal 205) (hex 85)), 133 + + \indexspace + + \item † (character 134 (octal 206) (hex 86)), 134 + + \indexspace + + \item ‡ (character 135 (octal 207) (hex 87)), 135 + + \indexspace + + \item ˆ (character 136 (octal 210) (hex 88)), 136 + + \indexspace + + \item ‰ (character 137 (octal 211) (hex 89)), 137 + + \indexspace + + \item Š (character 138 (octal 212) (hex 8a)), 138 + + \indexspace + + \item ‹ (character 139 (octal 213) (hex 8b)), 139 + + \indexspace + + \item Œ (character 140 (octal 214) (hex 8c)), 140 + + \indexspace + + \item (character 141 (octal 215) (hex 8d)), 141 + + \indexspace + + \item Ž (character 142 (octal 216) (hex 8e)), 142 + + \indexspace + + \item (character 143 (octal 217) (hex 8f)), 143 + + \indexspace + + \item (character 144 (octal 220) (hex 90)), 144 + + \indexspace + + \item ‘ (character 145 (octal 221) (hex 91)), 145 + + \indexspace + + \item ’ (character 146 (octal 222) (hex 92)), 146 + + \indexspace + + \item “ (character 147 (octal 223) (hex 93)), 147 + + \indexspace + + \item ” (character 148 (octal 224) (hex 94)), 148 + + \indexspace + + \item • (character 149 (octal 225) (hex 95)), 149 + + \indexspace + + \item – (character 150 (octal 226) (hex 96)), 150 + + \indexspace + + \item — (character 151 (octal 227) (hex 97)), 151 + + \indexspace + + \item ˜ (character 152 (octal 230) (hex 98)), 152 + + \indexspace + + \item ™ (character 153 (octal 231) (hex 99)), 153 + + \indexspace + + \item š (character 154 (octal 232) (hex 9a)), 154 + + \indexspace + + \item › (character 155 (octal 233) (hex 9b)), 155 + + \indexspace + + \item œ (character 156 (octal 234) (hex 9c)), 156 + + \indexspace + + \item (character 157 (octal 235) (hex 9d)), 157 + + \indexspace + + \item ž (character 158 (octal 236) (hex 9e)), 158 + + \indexspace + + \item Ÿ (character 159 (octal 237) (hex 9f)), 159 + + \indexspace + + \item (character 160 (octal 240) (hex a0)), 160 + + \indexspace + + \item ¡ (character 161 (octal 241) (hex a1)), 161 + + \indexspace + + \item ¢ (character 162 (octal 242) (hex a2)), 162 + + \indexspace + + \item £ (character 163 (octal 243) (hex a3)), 163 + + \indexspace + + \item ¤ (character 164 (octal 244) (hex a4)), 164 + + \indexspace + + \item ¥ (character 165 (octal 245) (hex a5)), 165 + + \indexspace + + \item ¦ (character 166 (octal 246) (hex a6)), 166 + + \indexspace + + \item § (character 167 (octal 247) (hex a7)), 167 + + \indexspace + + \item ¨ (character 168 (octal 250) (hex a8)), 168 + + \indexspace + + \item © (character 169 (octal 251) (hex a9)), 169 + + \indexspace + + \item ª (character 170 (octal 252) (hex aa)), 170 + + \indexspace + + \item « (character 171 (octal 253) (hex ab)), 171 + + \indexspace + + \item ¬ (character 172 (octal 254) (hex ac)), 172 + + \indexspace + + \item (character 173 (octal 255) (hex ad)), 173 + + \indexspace + + \item ® (character 174 (octal 256) (hex ae)), 174 + + \indexspace + + \item ¯ (character 175 (octal 257) (hex af)), 175 + + \indexspace + + \item ° (character 176 (octal 260) (hex b0)), 176 + + \indexspace + + \item ± (character 177 (octal 261) (hex b1)), 177 + + \indexspace + + \item ² (character 178 (octal 262) (hex b2)), 178 + + \indexspace + + \item ³ (character 179 (octal 263) (hex b3)), 179 + + \indexspace + + \item ´ (character 180 (octal 264) (hex b4)), 180 + + \indexspace + + \item µ (character 181 (octal 265) (hex b5)), 181 + + \indexspace + + \item ¶ (character 182 (octal 266) (hex b6)), 182 + + \indexspace + + \item · (character 183 (octal 267) (hex b7)), 183 + + \indexspace + + \item ¸ (character 184 (octal 270) (hex b8)), 184 + + \indexspace + + \item ¹ (character 185 (octal 271) (hex b9)), 185 + + \indexspace + + \item º (character 186 (octal 272) (hex ba)), 186 + + \indexspace + + \item » (character 187 (octal 273) (hex bb)), 187 + + \indexspace + + \item ¼ (character 188 (octal 274) (hex bc)), 188 + + \indexspace + + \item ½ (character 189 (octal 275) (hex bd)), 189 + + \indexspace + + \item ¾ (character 190 (octal 276) (hex be)), 190 + + \indexspace + + \item ¿ (character 191 (octal 277) (hex bf)), 191 + + \indexspace + + \item À (character 192 (octal 300) (hex c0)), 192 + + \indexspace + + \item Á (character 193 (octal 301) (hex c1)), 193 + + \indexspace + + \item  (character 194 (octal 302) (hex c2)), 194 + + \indexspace + + \item à (character 195 (octal 303) (hex c3)), 195 + + \indexspace + + \item Ä (character 196 (octal 304) (hex c4)), 196 + + \indexspace + + \item Å (character 197 (octal 305) (hex c5)), 197 + + \indexspace + + \item Æ (character 198 (octal 306) (hex c6)), 198 + + \indexspace + + \item Ç (character 199 (octal 307) (hex c7)), 199 + + \indexspace + + \item È (character 200 (octal 310) (hex c8)), 200 + + \indexspace + + \item É (character 201 (octal 311) (hex c9)), 201 + + \indexspace + + \item Ê (character 202 (octal 312) (hex ca)), 202 + + \indexspace + + \item Ë (character 203 (octal 313) (hex cb)), 203 + + \indexspace + + \item Ì (character 204 (octal 314) (hex cc)), 204 + + \indexspace + + \item Í (character 205 (octal 315) (hex cd)), 205 + + \indexspace + + \item Î (character 206 (octal 316) (hex ce)), 206 + + \indexspace + + \item Ï (character 207 (octal 317) (hex cf)), 207 + + \indexspace + + \item Ð (character 208 (octal 320) (hex d0)), 208 + + \indexspace + + \item Ñ (character 209 (octal 321) (hex d1)), 209 + + \indexspace + + \item Ò (character 210 (octal 322) (hex d2)), 210 + + \indexspace + + \item Ó (character 211 (octal 323) (hex d3)), 211 + + \indexspace + + \item Ô (character 212 (octal 324) (hex d4)), 212 + + \indexspace + + \item Õ (character 213 (octal 325) (hex d5)), 213 + + \indexspace + + \item Ö (character 214 (octal 326) (hex d6)), 214 + + \indexspace + + \item × (character 215 (octal 327) (hex d7)), 215 + + \indexspace + + \item Ø (character 216 (octal 330) (hex d8)), 216 + + \indexspace + + \item Ù (character 217 (octal 331) (hex d9)), 217 + + \indexspace + + \item Ú (character 218 (octal 332) (hex da)), 218 + + \indexspace + + \item Û (character 219 (octal 333) (hex db)), 219 + + \indexspace + + \item Ü (character 220 (octal 334) (hex dc)), 220 + + \indexspace + + \item Ý (character 221 (octal 335) (hex dd)), 221 + + \indexspace + + \item Þ (character 222 (octal 336) (hex de)), 222 + + \indexspace + + \item ß (character 223 (octal 337) (hex df)), 223 + + \indexspace + + \item à (character 224 (octal 340) (hex e0)), 224 + + \indexspace + + \item á (character 225 (octal 341) (hex e1)), 225 + + \indexspace + + \item â (character 226 (octal 342) (hex e2)), 226 + + \indexspace + + \item ã (character 227 (octal 343) (hex e3)), 227 + + \indexspace + + \item ä (character 228 (octal 344) (hex e4)), 228 + + \indexspace + + \item å (character 229 (octal 345) (hex e5)), 229 + + \indexspace + + \item æ (character 230 (octal 346) (hex e6)), 230 + + \indexspace + + \item ç (character 231 (octal 347) (hex e7)), 231 + + \indexspace + + \item è (character 232 (octal 350) (hex e8)), 232 + + \indexspace + + \item é (character 233 (octal 351) (hex e9)), 233 + + \indexspace + + \item ê (character 234 (octal 352) (hex ea)), 234 + + \indexspace + + \item ë (character 235 (octal 353) (hex eb)), 235 + + \indexspace + + \item ì (character 236 (octal 354) (hex ec)), 236 + + \indexspace + + \item í (character 237 (octal 355) (hex ed)), 237 + + \indexspace + + \item î (character 238 (octal 356) (hex ee)), 238 + + \indexspace + + \item ï (character 239 (octal 357) (hex ef)), 239 + + \indexspace + + \item ð (character 240 (octal 360) (hex f0)), 240 + + \indexspace + + \item ñ (character 241 (octal 361) (hex f1)), 241 + + \indexspace + + \item ò (character 242 (octal 362) (hex f2)), 242 + + \indexspace + + \item ó (character 243 (octal 363) (hex f3)), 243 + + \indexspace + + \item ô (character 244 (octal 364) (hex f4)), 244 + + \indexspace + + \item õ (character 245 (octal 365) (hex f5)), 245 + + \indexspace + + \item ö (character 246 (octal 366) (hex f6)), 246 + + \indexspace + + \item ÷ (character 247 (octal 367) (hex f7)), 247 + + \indexspace + + \item ø (character 248 (octal 370) (hex f8)), 248 + + \indexspace + + \item ù (character 249 (octal 371) (hex f9)), 249 + + \indexspace + + \item ú (character 250 (octal 372) (hex fa)), 250 + + \indexspace + + \item û (character 251 (octal 373) (hex fb)), 251 + + \indexspace + + \item ü (character 252 (octal 374) (hex fc)), 252 + + \indexspace + + \item ý (character 253 (octal 375) (hex fd)), 253 + + \indexspace + + \item þ (character 254 (octal 376) (hex fe)), 254 + + \indexspace + + \item ÿ (character 255 (octal 377) (hex ff)), 255 + +\end{theindex} diff --git a/indexing/makeindex/test/ok-book.ilg b/indexing/makeindex/test/ok-book.ilg new file mode 100644 index 0000000000..7c492f9ea3 --- /dev/null +++ b/indexing/makeindex/test/ok-book.ilg @@ -0,0 +1,6 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning input file book.idx........done (4241 entries accepted, 0 rejected). +Sorting entries...........................................done (59366 comparisons). +Generating output file book.ind......done (785 lines written, 0 warnings). +Output written in book.ind. +Transcript written in book.ilg. diff --git a/indexing/makeindex/test/ok-book.ind b/indexing/makeindex/test/ok-book.ind new file mode 100644 index 0000000000..49b939289b --- /dev/null +++ b/indexing/makeindex/test/ok-book.ind @@ -0,0 +1,785 @@ +\begin{theindex} + + \item accreditation, 91, 96 + \item Ada, i, 122, 123, 186 + \item AEG-Telefunken AG, 189 + \item agriculture, v, 28, 202 + \item Air Traffic Control, 9 + \item Aiso, Hideo, 165 + \item Albus, J., 223 + \item algorithm, 60, 89, 122, 140, 141 + \subitem Karmarkar's, 141 + \subitem Khachiyan's, 140 + \item Alvey program, 66, 104, 181--183 + \item Alvey, John, 182 + \item American Micro Devices, 212 + \item Anderson, William S., 144 + \item antitrust laws, 3, 55, 70, 73, 74, 133, 137, 146 + \item Apple Computer Company, 55, 60, 67, 93, 148--150, 174, 196 + \subitem II, 149 + \subitem IIe, 149 + \subitem III, 149 + \subitem Lisa, 60, 149 + \subitem Macintosh, 56, 149, 150 + \item Archbold, Pamela, 229 + \item Argentina, 33, 34 + \item Argonne National Laboratory, 126 + \item ARPANET, 116 + \item artificial intelligence, 3, 11, 20, 27, 28, 34, 42--45, 116, + 131, 136, 154, 162, 163, 167, 178, 180, 184, 185, 194 + \item Asia, vi, 25, 63, 78, 87, 94, 174, 175, 190, 195 + \item Association for Computing Machinery, vii, 43, 102, 135, 139 + \item AT\&T, 42, 67, 136--138, 140, 152, 185 + \item atomic bomb, 52, 53, 105 + \item Austria, 177 + \item automobile, 7, 25, 35, 68, 72, 173, 193, 201, 205, 206 + + \indexspace + + \item Babbage, Charles, 103, 122 + \item balance of trade, 77--80, 132, 133, 212 + \item ballistic missile defense, 115, 119 + \item ballistic transport, 135 + \item Barzini, Luigi, 221 + \item Bauer, R., 229 + \item Baxter, William~F., 74, 224 + \item Beardsley, Tim, 228 + \item Bechtolsheim, Andy, 93 + \item Beckurts, Karl Heinz, 188 + \item Belgium, 188 + \item Bell Communication Research, 140 + \item Bell Laboratories, i, 136, 138--141, 171 + \item Bell, Alexander Graham, 90, 136 + \item Bell, Eric~T., 27, 222 + \item Bentley, J., 222 + \item Bergamini, David, 75, 224 + \item Berne Convention, 61 + \item Bethe, Hans, 105 + \item Big Dragon, 190, 192 + \item Binford, T., 223 + \item Bingaman, Senator Jeff, 208 + \item biotechnology, 13--15, 54, 95 + \item bit, 36--38, 134, 135, 188, 189 + \item Bloch, Erich, 126, 225 + \item Blomstrom, R.~L., 221 + \item Boeing 707 airplane, 216 + \item Boeing Aircraft Corporation, 48, 173 + \item Borrus, Michael, 223, 225 + \item Boyd, Gerald~M., 230 + \item Brady, M., 223 + \item Brandin, David~H., vii, viii, 222, 231 + \item Brandin, Ellen, viii + \item British Telecom, 182, 185 + \item Brodie, Ivor, 222 + \item Brookes, Warren~T., 231 + \item Brookhaven National Laboratory, 126 + \item Brooks, Harvey, 226 + \item Brown, Representative George~E., 212 + \item Buchanan, Ian, vii + \item Bull, 147, 168, 178, 185--187 + \item BUNCH, 143--145 + \item Burroughs, 143, 145, 146 + \item bushido, 83 + \item byte, 36--38 + + \indexspace + + \item Canon Inc., 150 + \item Capasso, F., 229 + \item capital, vi, 7, 16, 17, 49, 74--77, 104, 113, 130, 153, 158, + 193, 202, 208, 210, 212 + \item capitalism, v + \item Caplan, N., 223 + \item Carnegie-Mellon University, 123 + \item Carter, President Jimmy, 8 + \item Central Intelligence Agency, 65, 153 + \item Centre National de Recherche Scientifique, 185 + \item Cezar Industries, Ltd., vii + \item Chandler, A.~R., 223 + \item Chen, Pehong, vii + \item China, vii, 61, 101--103, 127, 190--192, 195, 196 + \subitem Cultural Revolution, 10, 101, 102, 190 + \item Chirac, Premier Jacques, 185 + \item Chrysler Corporation, 205 + \item Churchill, Winston, 84, 225 + \item Cie. Generale de L'\'Electricit\'e, 176, 185 + \item Clark, Don, 231 + \item Clarke, Arthur~C., 221 + \item Codd, Ted, 135 + \item Cohen, Steven, 206 + \item Coker, John, vii + \item Collins, D., 229 + \item Colmerauer, Alain, 186 + \item Commodity Control List, 64, 65 + \item communications, 6, 7, 9, 25, 34, 42, 55, 116, 137, 138, + 140, 141, 145, 146, 151, 167, 168, 171, 172, 178, 180, + 184, 187, 188, 194 + \subitem optical, 22 + \item compiler, 41, 123 + \item computational science, 39, 125 + \item computer, 3, 5, 7--9, 18, 33--44, 48, 49, 55, 63, 64, 72, 102, + 116, 122, 123, 127, 128, 131, 132, 134, 138, 139, + 141, 142, 145, 146, 148, 150, 151, 161, 163, 167, 168, + 172, 193 + \subitem address, 35, 36 + \subitem architecture, 10, 26, 34, 35, 77, 116, 120, 129, 154, 156, + 162, 164, 167--169, 179, 187, 188 + \subitem literacy, 5, 195 + \subitem MARK I, 132 + \subitem memory, 35, 37, 38, 41, 152, 164 + \subitem personal, 37, 38, 64, 133, 139, 142, 149, 152, 174, 188, + 193, 203 + \subitem VAX, 141, 168 + \item computer science, vii, 5, 13, 14, 17, 18, 20, 92, 93, 102, 103, + 105, 109, 116, 119, 126, 127, 131, 136, 140, 154, 155, + 160, 184 + \item computer-aided design, 47, 124, 154, 155, 162, 170, 172, 183, + 195 + \item computer-aided engineering, 47 + \item computer-aided manufacturing, 47, 48, 170, 195 + \item computer-aided process planning, 47 + \item computer-integrated manufacturing, 47, 49, 173, 176 + \item Control Data Corp., 143, 146, 153 + \item Coordinating Committee, 65, 66, 180 + \item copyright, 59--62, 150, 196 + \item Crawford, Mark, 221 + \item Cray Research, 127, 146 + \item Cray, Seymour, 40 + \item creativity, 19, 22, 23, 27, 90, 106, 209 + \item cryptology, 18, 60 + \item Cullinan, Terrence, 222 + + \indexspace + + \item Daewoo Telecom, 193 + \item DARPA, vii, 115--118, 126, 182, 185, 220 + \item Davis III, G.~Gervaise, 223 + \item Davis, K., 221 + \item de Vignemont, Minister C., 186 + \item deficit + \subitem budget, 202, 205, 208, 213 + \subitem trade, 202, 208, 212--214 + \item degrees + \subitem bachelor's, 99, 100 + \subitem doctoral, 92, 93, 100, 103, 104, 106, 107 + \subitem master's, 92, 93, 97, 100, 103, 124 + \item denationalization, 185 + \item Department of Commerce, vii, 4, 14, 61, 63, 65, 72, 73, 81, 127, + 133, 153, 211 + \item Department of Commerce and Technology (DCT), 211 + \item Department of Defense, i, vii, 3, 8, 42, 64--66, 72, 73, 94, + 113--116, 120--124, 126--128, 130, 133, 208, 210, 211, + 216, 218 + \item Department of Education, 62 + \item Department of Energy, 65, 126--128 + \item Department of Justice, 3, 7, 74, 133, 137, 153 + \item Department of State, 64, 65, 127, 210 + \item Diamond, S., 231 + \item Digital Equipment Corporation, 67, 139, 141--144, 152, 168 + \subitem PDP-7, 139 + \subitem PDP-8, 141 + \subitem VAX, 141, 142, 168 + \item Direction de Recherche d'\'Etudes et Technique, 185 + \item Doigan, Paul, 226 + \item Donlon, J.~P., 229 + \item Dornier, 188 + \item Dreyfus, Herbert~L., 223 + \item Dreyfus, Stuart~E., 223 + \item Dutch Learning, 58 + \item dynamic RAM, 37, 135, 193 + + \indexspace + + \item Eastman Kodak Company, 150, 172 + \item Eastman, George, 90 + \item ECRC, 178, 179, 183, 188 + \item Edison, Thomas A., 90 + \item education, vi, 5, 11, 19, 29, 52, 69, 89--93, 95--98, 100--110, + 124, 125, 190, 201--206, 210, 212, 218--220 + \subitem continuing, 97, 109 + \subitem engineering, 91, 92, 94, 96, 98--100, 103, 105, 107, 108, + 110, 125 + \item Einstein, Albert, 52, 105 + \item Electro-Communications Laboratories, 160, 171, 172 + \item Electro-Technical Laboratories, 138, 159, 160, 164 + \item employment, 4, 6, 13, 15, 16, 24, 76, 81, 108, 109, 196, 210, + 213 + \subitem lifetime, 84, 108, 109 + \item encryption, 9, 65 + \item engineering, vi, 3, 11, 14, 15, 24, 37, 40, 49, 53, 84, 92, 93, + 96, 97, 100, 108, 115, 125, 126, 128, 134 + \subitem education, 91, 94, 96, 108, 109 + \subitem faculty, 92--94, 214, 219 + \item Esaki, Leo, 23 + \item ESPRIT, vii, 3, 28, 176--178, 181, 183, 188, 189 + \item Etzold, Thomas~H., 227 + \item Eureka, 178--180 + \item Eurobot, 180 + \item Eurocom, 180 + \item Europe, vi, vii, 4, 6, 13, 16, 21, 24, 26--29, 44, 49, 53, 66, + 78, 80, 82, 86, 101, 109, 113, 127, 133, 162, 175--181, + 188, 189, 204, 214 + \item European Economic Community, 3, 28, 79, 176, 177 + \item Ewing, Tom, 229 + \item exchange rate, 75--78 + \item expert systems, 45, 46, 116, 117, 154, 161, 178, 179, 187, 194 + \item export control, 4, 64--66, 217 + \item exports, 57, 63--66, 76, 77, 79, 157, 174, 180, 191, 217 + + \indexspace + + \item Fagen, M.~D., 228 + \item Fairchild Camera and Instrument Corporation, 80, 167 + \item Federal Automatic Data Processing Reorganization Study, 8 + \item Federal Aviation Agency, 9 + \item Federal Bureau of Investigation, 169 + \item Federal Communications Commission, 54, 137 + \item Feigenbaum, Edward, 222 + \item Ferranti, 184 + \item Fifth Generation Computer Program, vii, 18, 20, 156, 161, 163, + 165, 176, 181 + \item Finland, 177 + \item Fisher, Franklin~M., 221 + \item Fishman, Katherine~D., 147, 229 + \item flexible manufacturing systems, 47, 48 + \item Food and Drug Administration, 54 + \item FORTRAN, 39 + \item France, 29, 57, 68, 79, 91, 96, 106, 107, 109, 172, 180, 181, + 184--186 + \subitem Ministry of Defense, 185 + \item Franck, James, 105 + \item Fuchi, Kazuhiro, 162, 163 + \item Fuji Xerox, 151 + \item Fujitsu, 37, 80, 158, 164, 167, 168, 173, 204 + + \indexspace + + \item Gallaire, Herv\'e, 179 + \item gallium arsenide, 118, 119, 164, 172, 182, 184 + \item Gannon, T., 222 + \item Gartner Group, 132, 133 + \item General Electric Company, 138, 143, 146, 197 + \item General Electric Company (UK), 183, 184 + \item General Motors, 131, 173, 202 + \item Gephardt amendment, 214 + \item Gephardt, Representative Richard~A., 214 + \item German mark, 208 + \item Germany, 16, 33, 53, 57, 58, 72, 82, 91, 105, 106, 109, 180, + 186--189, 208 + \subitem BMFT, 187, 188 + \subitem Bundespost, 188 + \item Gilchrist, Bruce, 224 + \item Glenn, Senator John, 209, 212, 231 + \item Goldberg, Adele J., vii + \item graduate schools of business, 104, 207 + \item Graham, Susan L., viii + \item Gramm-Rudman bill, 206 + \item Grayson, Lawrence~P., 225 + \item Great Britain, 4, 16, 19, 26, 27, 33, 58, 78, 79, 92, 103, 104, + 109, 180--184, 186, 190 + \subitem Department of Trade and Industry, 182, 211 + \subitem Ministry of Defense, 18, 182 + \subitem Very High Performance Integrated Circuit Program, 5, 182 + \item Greenhouse, Linda, 231 + \item Greenwood, Joel~E., 221 + \item gross national product, 17, 85, 130, 191, 192, 195, 217 + \item Groupe de Recherche Coordonn\'e, 185 + \item GTE, 167, 188, 197 + + \indexspace + + \item hardware, 11, 18, 34, 35, 37, 39--42, 60, 64, 77, 123, 132, 134, + 141, 143--145, 147, 162, 167, 169 + \item Harrison, Michael~A., vii, viii, 222, 227 + \item Harrison, Susan G., viii + \item Harvard University, 92, 98, 132 + \item Hegg, Warren, 222 + \item Hess, K., 229 + \item Hewlett-Packard, 67, 144, 147, 148 + \item Hillkirk, John, 229 + \item Hirschon, Michael~Wels, 224 + \item Hitachi, 37, 158, 164, 167--169, 173 + \item Hodges, Parker, 229 + \item Hokaido University, 98 + \item Honeywell, 143, 146, 147, 168, 187 + \item Hong Kong, 61, 192, 195, 196 + \item Hunter, Philip, 228 + \item hydrogen bomb, 105 + + \indexspace + + \item Iacocca, Lee, 73, 224 + \item IBM, 3, 7, 14, 23, 26, 40, 55, 56, 67, 71, 73, 89, 130--136, + 139, 141--147, 150--152, 159, 167--169, 185, 186, 188 + \subitem 3380 disk unit, 134 + \subitem compatibility, 26, 40, 64, 132, 143--146, 149, 168 + \subitem Fellow, 135 + \subitem Research Centers, 134, 136 + \subsubitem San Jose, 134, 135 + \subitem System 360, 132, 147 + \item Iceland, 177 + \item Ichbiah, Jean, 186 + \item ICOT, vii, 160--163, 166, 170, 173 + \item imports, 76, 77, 79, 206, 209 + \item India, 19, 92 + \item Indonesia, 61 + \item Industrial Revolution, 175, 208 + \item Informatik, 105 + \item information technology, v--vii, 3, 5--9, 14, 18, 20, 27, 33, 34, + 72--75, 77, 103, 113, 118, 120, 121, 125, 131, 132, + 153, 158, 160, 163, 169, 171, 173, 176, 180, 181, 184, + 186, 189, 192, 194, 195 + \item Inman, Admiral Bobby R., 67, 153--155 + \item INMOS, 184 + \item innovation, 13, 15, 18, 21--23, 27, 53--56, 61, 73, 90, 109, + 135--137, 148, 152, 183, 197, 201, 205, 209 + \item Inst. for New Generation Computer Technology, 179, 182 + \item integrated circuits, 36, 124, 170, 182, 196 + \item intellectual property, 67, 74, 194 + \subitem laws, vi, 26, 58, 59, 62, 150, 169 + \subitem rights, 26, 61, 67, 150, 169, 194, 210 + \item International Computers Ltd., 4, 178, 183, 186, 190, 213 + \item International Telephone and Telegraph, 183, 193, 197 + \item International Trade Commission, 73, 81, 213 + \item International Traffic in Arms Regulations, 3, 65 + \item Israel, 57, 195 + \item Italy, 188 + + \indexspace + + \item Jacob, Jean Paul, vii + \item Jacobs, Michael A., vii + \item Jacobson, Gary, 229 + \item Japan, vii, 3--6, 13, 15--17, 19--22, 24--26, 28, 29, 39, 40, + 49, 54, 62, 63, 65--68, 70--73, 75, 76, 78--86, 91, + 97--101, 103, 104, 108--110, 113, 119, 130, 138, 150, + 157--160, 162, 163, 165--176, 180, 183, 190--195, + 203--206, 209, 212--214 + \subitem Incorporated, 72 + \subitem National Superspeed Computer Project, 163, 164 + \subitem Next Generation Industries Program, 165 + \subitem robots, 49 + \subitem Science and Technology Agency, 166 + \item Jefferson, Thomas, 29, 177 + \item Jobs, Steve, 149 + \item Johnson, Chalmers, 71, 83, 224 + \item Jonas, Norman, 230 + \item Joy, William N., 93, 152 + \item JTECH, 14, 19, 22, 166, 206 + + \indexspace + + \item Kahn, David, 223 + \item Kahn, Robert E., vii, 220 + \item Karmarkar, Narendra, 140, 141 + \item Kato, K., 225 + \item Keio University, 159, 165 + \item Kelly, Erin A., vii + \item Kelly, Joseph, vii + \item Kitihara, Eiji, 222 + \item knowledge engineering, 3, 161, 167, 169 + \item knowledge-based systems, 45, 46, 179, 182, 185, 194 + \item Kobayashi, Hishashi, vii + \item Kraar, Louis, 230 + \item Kroger, H., 229 + \item Kuo, Franklin F., vii + \item Kurihara, T., 228 + \item Kutcher, M., 223 + \item Kyoto University, 98, 99, 159 + \item Kyushu University, 98 + + \indexspace + + \item Land, Edward, 90 + \item Lawrence Livermore National Laboratory, 126, 128 + \item level playing field, 209 + \item Libya, 66, 215 + \item license + \subitem general, 64 + \subitem validated, 64 + \item Lieblein, Edward, 227 + \item Lighthill, Sir James, 27, 28 + \item linear programming, 140, 141 + \item Little Dragons, 192, 195, 196 + \item Lohr, Steve, 222 + \item Los Alamos National Laboratories, 126, 160 + \item Lovelace, Countess Augusta Ada Byron, 103, 122 + \item Lulin, Gao, 230 + + \indexspace + + \item MacArthur, General Douglas, 70 + \item machine inference, 45, 162 + \item machine language, 40, 41, 59 + \item machines, thinking, 43--45 + \item MacVicar-Whelan, P.~J., 223 + \item Malaysia, 19, 190, 196 + \item Malik, Rex, 133, 228 + \item marketshare, 6, 7, 11, 27, 74, 81, 82, 110, 132, 133, 142, + 144, 145, 147, 150, 151, 155, 157, 159, 167, 168, 172, + 175, 183, 189, 205, 209, 210, 217 + \item Matsubara, Tomoo, 229 + \item Matsushita Electric Industrial Co., 82, 158 + \item McCarrell, Jeff, vii + \item McCarthy, John, 46 + \item McClellan, Stephen~T., 19, 221 + \item McCorduck, Pamela, 222 + \item McGowen, John~J., 221 + \item McKenna, Regis, 149, 229 + \item mechatronics, 14, 47 + \item Meiji Period, 58, 100 + \item Memorex, 197 + \item Mexico, 84 + \item microelectronics, 9--11, 14, 16, 36, 37, 80, 82, 125, 154--156, + 165, 167, 172, 173, 176, 177, 180, 182, 184, 189, + 193, 194, 196, 213 + \item Microelectronics and Computer Technology Corporation, 74, 146, + 154, 155, 177, 179 + \item Microelectronics Center of North Carolina, 74, 155, 156 + \item Military Critical Technologies List (MCTL), 64, 65 + \item Miller, G.~L., 223 + \item Miller, Judith, 226 + \item Miller, William F., vii + \item Millstein, James, 223, 225 + \item minicomputer, 37, 141, 142, 144, 147, 148, 151 + \item Ministry of Education, 159 + \item Ministry of Intl. Trade and Industry (MITI), 21, 62, 70--73, 83, + 85, 98, 158--168, 170, 171, 173, 182, 194, 208, 211 + \item missile, 33, 34, 115, 117, 119, 204, 208 + \item MIT, 95 + \item Mitsubishi Electric Company, 158, 159, 162, 164, 170 + \item Mitterrand, President Fran\c cois, 184, 186 + \item moon, 205, 207 + \item Morris, J., 223 + \item Moto-Oka, Tohru, i, 20, 163, 165 + \item Motorola, 152 + \item Mu Program, 166 + \item Murakami, Kunio, 222 + \item Murray, Julius, 222 + + \indexspace + + \item Nagao, Makoto, 229 + \item Nagoya University, 98 + \item Nakasone, Prime Minister Yasuhiro, 204 + \item National Academy of Sciences, vii, 28, 64, 217 + \item National Aeronautics and Space Administration (NASA), 65, 113, + 115, 121, 216 + \item National Bureau of Standards, 159, 160, 211 + \item National Cash Register Company, 143, 144, 146 + \item national debt, 204 + \item National Productivity and Innovation Act, 74 + \item National Science Foundation, vii, 95, 113, 125, 126, 163, 211 + \subitem CISE Program, 125, 126 + \subitem Engineering Research Centers, 95 + \subitem Presidential Young Investigators, 125 + \item National Security Agency, 9, 153 + \item Nazis, 107 + \item NEC, 14, 37, 138, 147, 153, 158, 159, 164, 168, 173, 187, 189 + \item Nevins, J., 223 + \item New Zealand, 79 + \item Nippon Telephone and Telegraph, 37, 138, 160, 168, 171, 172, + 178, 185 + \subitem information network system, 171, 172, 178, 185 + \item Nishida, Toyoaki, 229 + \item Nishizawa, Junichi, 22, 23, 222 + \item Nixdorf Computers, 187, 189 + \item Nixon, President Richard M., 207 + \item Nobel Prize, 5, 23, 90, 205 + \item Nordheim, Lothar W., 105 + \item Norris, William C., 153, 154 + \item North Atlantic Treaty Organization, 28, 114, 119, 180, 183 + \item Norway, 53, 177 + \item Novak, William, 224 + \item numerical control, 48 + + \indexspace + + \item Oak Ridge National Laboratory, 126 + \item Oki Electric Company, 37, 158, 159, 164 + \item Olivetti SPA, 189 + \item Olsen, Kenneth H., 141 + \item optics, 15, 194 + \item optoelectronics, 14, 15, 166, 171, 180 + \subitem Joint Research Laboratory, 166 + \item Osaka University, 98 + \item Ouichi, William, 229 + + \indexspace + + \item Panama, 84 + \item patent, 22, 23, 59--61, 71, 90, 139, 155 + \subitem law, 191 + \subitem Patent Secrecy act, 60 + \item Pearl Harbor, 220 + \item Perle, Richard, 217 + \item Perot, H. Ross, 202 + \item personal sequential inference machine, 162, 170 + \item Philco Corporation, 138 + \item Philips' Gloeilampenfabrieken, 189 + \item physics, 13, 23, 39, 57, 90, 91, 105, 106, 120, 128 + \subitem nuclear, 52, 53, 58, 127, 188 + \subitem solid state, 140 + \subitem surface, 135 + \item Pilot's Associate, 117 + \item Plato system, 146 + \item Plessey Company Ltd., 184 + \item plutonium, 53 + \item Port, Otis, 230 + \item Presidential Science Advisor, 207 + \item Prestowitz, Clyde, vii + \item privatization, 185, 187 + \item Procter, Steven, vii + \item professional societies, 97 + \item PROLOG, 162, 186 + \item Prospector, 45, 46 + \item prototype, 26, 37, 124, 128 + \item PTT, 29, 185 + \item Public Crypto. Study Group, 60 + + \indexspace + + \item Rabinowitch, Eugene, 105 + \item RACE, 178 + \item Radio Corporation of America, 138, 143, 145, 197 + \item RAM, 16, 17, 83, 135, 184, 188 + \item RAMAC, 134 + \item Reagan administration, 134 + \item Reagan, President Ronald, 66, 118, 126, 128, 133, 203, 207, 216, + 218, 219 + \item Reischauer, Edwin~O., 221 + \item relational database, 135, 185 + \item Republic of Korea, 19, 25, 78, 82, 190, 192--194, 203, 204, 213 + \item research and development, 7, 18, 20, 21, 39, 73, 81, 85, 91, 95, + 104, 115, 128, 130, 134, 154, 155, 158, 159, 167, 170, + 172, 173, 181, 186--188, 191, 195, 196, 211, 215, 216 + \item research support + \subitem computing, 116, 128, 129 + \item Research Triangle Institute, 155 + \item Ricoh Inc., 150 + \item Riganati, J., 222 + \item Ris, F., 222 + \item Ritchie, Dennis~M., 139, 228 + \item Robinson, Arthur~L., 228 + \item robotics, 14, 15, 28, 47--49, 95, 125, 158, 180, 185, 187, 194, + 203 + \item Roosevelt, President Franklin, 105 + \item Rositzke, Harry, 224 + \item Rossol, L., 223 + \item Roubine, Olivier, vii + \item Roy, Rustum, 96, 226 + \item Rubin, Harry, vii + \item Rudman, Senator Warren B., 206, 208 + \item Rudzinski, Joe, 222 + \item Russian Revolution, 220 + + \indexspace + + \item Sanders, Jerry, 212 + \item Sandia National Laboratory, 126 + \item savings, 6, 75 + \item Scace, R., 229 + \item SCAP, 70, 71 + \item Schutz, K., 223 + \item Scientific Data Systems, 151 + \item scientists and engineers + \subitem demographics of, 89, 91, 92, 94, 100, 103, 107, 195 + \item semiconductor manufacturers + \subitem merchant, 17, 212 + \item Semiconductor Research Corporation, 155 + \item service economy, 7, 202, 204, 207 + \item Seven Dwarfs, 143 + \item Shapley, Deborah, 96, 226 + \item Siemens, 178, 186--189 + \item Sigma Program, 165, 166 + \item Silicon Valley, 134, 147, 209 + \item Simpson, Janice~C., 225 + \item Singapore, 19, 61, 62, 110, 190, 192, 194--196 + \subitem National Computer Board, 62, 194 + \item Smith, Bruce~L., 225 + \item Smith, R., 227 + \item Smits, F.~M., 228 + \item smokestack industries, 4, 201 + \item Snyder, Robert~G., 226 + \item software, 9, 11, 15, 18, 19, 25, 26, 34, 39--42, 47, 59--64, 67, + 89, 119--124, 132, 133, 135, 140, 144, 148--150, 152, + 154, 162, 165, 168, 169, 174, 176, 186, 194, 195 + \subitem custom, 19 + \subitem engineering, 10, 38, 40, 97, 123, 124, 165--168, 170, 177, + 182, 184, 185 + \subitem market, 6, 19, 121, 133, 195 + \subsubitem Japanese, 19, 165--167 + \subitem protection, 59, 60, 62, 150 + \subitem supercomputer, 39, 40 + \item Software Engineering Institute, 123 + \item Software Productivity Consortium, 74 + \item Sollorzano, Lucia, 230 + \item Solomon, Ezra, 222 + \item Solomon, Steven, 231 + \item Sondheimer, N., 222 + \item Sony, 23 + \item South Africa, 66 + \item Soviet Union, 5, 33, 58, 64, 84, 91, 114, 127, 180, 191, 214, + 220 + \item Spencer, William~J., 56, 223 + \item Sperry Univac, 143, 145, 146, 188, 197 + \item Spicer, W., 229 + \item spinoff, 216, 217 + \item SRI International, viii + \item standard of living, v, 4, 16, 193, 194, 205 + \item standards, 24, 28, 41, 59, 122, 133, 175, 177 + \item Stanford University, 46, 95, 169 + \item STARS Program, 123, 124 + \item steel, 72, 75, 158, 159, 201, 209 + \item Stern, Jacques, 187 + \item Strategic Computing Initiative, vii, 116, 117 + \item Strategic Defense Initiative, vii, 9, 39, 43, 118--121, 130, + 179, 180, 188, 216 + \item Sumitomo Steel, 158 + \item Sun Microsystems Inc., i, 93, 142, 148, 151, 152, 174 + \item supercollider, 205, 216 + \item supercomputer, 9, 35, 38--40, 125, 127, 128, 146, 165, 168, 180 + \item Sweden, 177 + \item Switzerland, 134, 177 + \item System R, 135 + \item Szilard, Leo, 105 + + \indexspace + + \item Taiwan, 19, 61, 188, 190, 192, 195 + \item Tajima, Denji, 229 + \item Technical University of Munich, 105 + \item technology transfer, 11, 21, 24, 50, 51, 53--59, 61, 66, 67, 85, + 108, 122--124, 128, 136, 139--141, 143, 147, 150, 152, + 154, 155, 160, 179, 214, 215, 219 + \item Telecki, George, vii + \item telecommunications, 25, 65, 82, 95, 172, 178, 186, 188, + 194, 195 + \item TELENET, 116 + \item Telex Corporation, 197 + \item Teller, Edward, 105 + \item Teng, Teng, 230 + \item Thompson, Ken, 139 + \item Thompson-Brandt, 185 + \item Thorn EMI, 184 + \item Thurow, Lester~C., 231 + \item thyristor, 23 + \item Tohoku University, 98 + \item Tolchin, Martin, 231 + \item Toshiba, 37, 158, 159, 161, 164, 169, 170 + \item TOW missile, 204 + \item trade secret, 59--61 + \item trademark, 59 + \item transistor, 14, 36, 37, 139, 145, 161 + \item TRW, 131, 167 + \item Tsujii, Junichi, 229 + \item Tsukuba, 159, 160 + \item Tuchman, Barbara~W., 225 + \item Turing + \subitem award, 135, 139 + \subitem test, 43 + \item Turing, Alan, 43, 103 + \item Turner, Fran Peche, vii + \item Tzu, Sun, 222 + + \indexspace + + \item unemployment, vi, 4, 6, 19, 76, 101, 110, 174, 202--204, 220 + \item Unisys, 142, 143, 145, 146 + \item United States, v--vii, 3--6, 8, 11, 15--29, 39, 40, 48, 49, + 53, 54, 57--59, 61, 63--68, 71--74, 77, 78, 80--85, + 89--96, 98--106, 108--110, 113, 114, 116, 119, 120, + 126, 130, 133, 136, 140, 141, 143, 153, 155, 159, + 162, 163, 167--169, 172, 173, 175, 179, 183--186, 189, + 192, 193, 195, 196, 201--203, 205, 207--209, 212--215, + 218, 220 + \subitem Army, 8 + \subitem Congress, 154, 212, 214, 218 + \subitem Constitution, 59 + \subitem procurement system, 75, 123, 124 + \subitem Senate, 66, 84, 212 + \item United States versus IBM suit, 73, 89 + \item UNIVAC, 131, 145, 159 + \subitem Model I, 8, 145 + \item Universal Copyright Convention, 61 + \item University of Berlin, 105 + \item University of California at Berkeley, vii, 57, 93, 99, 152 + \item University of Erlangen, 105 + \item University of Karlsruhe, 105 + \item University of Saarbr\"ucken, 105 + \item University of Tokyo, 70, 98, 159 + \item University of Tsukuba, 159 + \item UNIX operating system, 139, 146, 152, 168 + \subitem 4.2 BSD, 152 + \subitem System V, 152 + \item uranium, 46, 52, 53 + + \indexspace + + \item venture capital, 61, 109, 151, 191 + \item VHSIC, 124 + \item videoconferencing, 188 + \item Vietnam War, vi, 94 + \item Vliet, J.~C. van, 227 + \item VLSI, 77, 161, 162, 170--172, 177, 182, 184, 188, 193, 195 + \item Vogel, Ezra, 227 + \item von Neumann architecture, 35 + \item von Neumann, John, 35 + + \indexspace + + \item Waldrop, M.~Mitchell, 227 + \item Wang Computers, 97 + \item Wang Institute, 97 + \item Wang, An, 97 + \item war, v + \subitem conventional, v, 33, 67, 107, 113, 114 + \subitem nuclear, v, 113, 119 + \subitem technology, v + \subitem Technology War, v, vi, 5, 10, 13, 17, 20, 21, 25, 29, + 33, 34, 43, 44, 47, 49--51, 65, 67, 71, 74, 77, 81, 83, + 86, 87, 89, 97, 102--104, 106, 107, 109, 110, 113, 114, + 120, 121, 131, 134, 138, 142, 143, 146, 147, 150, 152, + 157, 158, 161, 166, 169, 174, 175, 177, 178, 183, 186, + 188--190, 193, 196, 197, 201, 202, 205--208, 210--212, + 215, 217--220 + \item Watergate, 220 + \item Watson, Sr., Thomas J., 146 + \item weapons, v, vi, 8, 9, 21, 33, 34, 39, 43, 52, 53, 60, 67, 114, + 117, 118, 124, 128, 214, 218 + \subitem nuclear, 8, 34, 39, 53, 118, 119 + \item Weidenbaum, Murray~L., 225 + \item Wessel, Milton~R., 224 + \item White House, 126, 207, 211, 219 + \subitem Office of Science and Technology Policy (OSTP), 211 + \item Wieder, H., 229 + \item Willenbrock, F.~Karl, 226 + \item Wilson, John~W. , 230 + \item workstation, 38, 55, 77, 142, 148, 151, 152, 170, 174, 189 + \item World War II, v, 5, 8--10, 16, 18--20, 33, 35, 53, 58, 70, 75, + 94, 105, 114, 128, 132, 157, 201, 211 + \item Wozniak, Stephen, 93 + \item Wright, Speaker James~C., 218 + \item Wriston, Walter~B., 221 + + \indexspace + + \item xerography, 90 + \item Xerox, 55, 56, 136, 138, 142, 147--151, 172, 173 + \subitem 914 copier, 150 + \subitem copiers, 55, 150, 151, 173 + \subitem Palo Alto Research Center, 55, 56, 60, 136, 149, 151 + \subitem STAR computer, 55, 151 + + \indexspace + + \item yen, 71, 76, 78--80, 167, 174, 212, 213 + \item Yukuta, Toshio, 222 + + \indexspace + + \item Zhaoxiang, Xu, 230 + \item ZyMos, 193, 197 + \item Zysman, John, 223, 225 + +\end{theindex} diff --git a/indexing/makeindex/test/ok-test.ilg b/indexing/makeindex/test/ok-test.ilg new file mode 100644 index 0000000000..6b25b629a4 --- /dev/null +++ b/indexing/makeindex/test/ok-test.ilg @@ -0,0 +1,9 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning input file test.idx....done (125 entries accepted, 0 rejected). +Sorting entries....done (956 comparisons). +Generating output file test.ind.... +## Warning (input = test.idx, line = 85; output = test.ind, line = 121): + -- Conflicting entries: multiple encaps for the same page under same key. +done (164 lines written, 1 warning). +Output written in test.ind. +Transcript written in test.ilg. diff --git a/indexing/makeindex/test/ok-test.ind b/indexing/makeindex/test/ok-test.ind new file mode 100644 index 0000000000..cd9ab1ac9e --- /dev/null +++ b/indexing/makeindex/test/ok-test.ind @@ -0,0 +1,164 @@ +\begin{theindex} + + \item \verb=!= character, 3, 7 + \item \verb="= character, 6 + \item \verb=@= character, 4, 7 + + \indexspace + + \item ambiguities, 3 + + \indexspace + + \item Beebe, Nelson H.F., 8 + \item behavior + \subitem frowned-upon, 4 + \item braces + \subitem matching, 6 + + \indexspace + + \item C language, 8 + \item cards + \subitem index, 2 + \item Chen, Pehong, 8 + \item commands + \subitem fragile, 5 + \subitem robust, 5 + \item cross-reference, 4 + + \indexspace + + \item {\tt delatex}, 2 + + \indexspace + + \item editing + \subitem avoiding, 2 + \item entries + \subitem subsubsubentries (can't have), 3 + \item error messages, 1, 6 + \item examples, 3--6 + \item experts, 4 + \subitem behavior of, 4 + + \indexspace + + \item ff. + \subitem avoiding, 4 + \item files + \subitem {\tt idx}, 1, 3, 5--7 + \subitem {\tt ilg}, 6 + \subitem {\tt ind}, 1, 6 + \item fragile commands, 5 + + \indexspace + + \item {\tt idx} file, 1, 3, 5--7 + \item {\tt ilg} file, 6 + \item {\tt ind} file, 1, 6 + \item index + \subitem alphabetizing, 4 + \subitem cards, 2 + \subitem conflicting entries in, 8 + \subitem cross-reference, 4 + \subitem don't split across lines, 6 + \subitem entries, 3 + \subitem expansion of commands in, 5 + \subitem funny characters in, 4, 6 + \subitem getting started, 2 + \subitem long arguments, 7 + \subitem main entries, 3 + \subitem making a word list, 2 + \subitem maximum levels allowed, 3 + \subitem professional guidelines, 2 + \subitem quoting characters in, 6 + \subitem spaces in, 6 + \subitem subentries, 3 + \subitem subsubentries, 3 + \subitem the hard way, 2 + \subitem unique words, 2 + \item \verb=\index=, 1, 3 + \subitem duplicates, 3 + \item indexing + \subitem professional advice, 2 + + \indexspace + + \item \LaTeX\ commands + \subitem stripping, 2 + \item \LaTeX\ manual, 1 + + \indexspace + + \item {\tt makeidx} document-style option, 1, 5 + \item \MakeIndex + \subitem in Web language, 8 + \subitem running, 1 + \item \verb=\makeindex= command + \subitem removing, 1 + \item mistakes, 2, \see{errors}{8} + + \indexspace + + \item page breaks, \see{ambiguities}{8} + \item page numbers, 5 + \subitem arabic, 6 + \subitem entries in footnotes, 5 + \subitem italic, 5 + \subitem order of, 6 + \subitem roman numerals, 6 + \item page range, 4, 8 + \subitem avoiding ff., 4 + \subitem closing command, 4 + \subitem opening command, 4 + \item Pascal language, \see{Web language}{8} + \item pen + \subitem ball-point, 2 + \subitem quill, 2 + \item \verb=\printindex=, 1 + \item producing the index, 1 + \item \verb=\protect=, 5, \see{{\tt \symbol{'134}string}}{5} + \item \verb=\string=, \see{{\tt \symbol{'134}protect}}{5} + + \indexspace + + \item quote character, 6 + + \indexspace + + \item range, \see{page}{8} + \subitem of pages, 8 + \item robust commands, 5 + \item Rose, Marshall, 8 + \item running \MakeIndex, 1 + + \indexspace + + \item {\tt see} command + \subitem example, 5 + \subitem placement of, 4 + \subitem using, 4 + \item Spiker, Sina, 2 + \item {\tt \symbol{'134}string}, 5 + \item subentries, 3 + \item subsubentries, 3 + \item subsubsubentries, 3 + + \indexspace + + \item Trickey, Howard, 2 + + \indexspace + + \item unique words, 2 + \item Urban, Mike, 8 + + \indexspace + + \item Web language, 8 + \item Wisconsin Press, 2 + \item word list, 2 + \subitem making a, 2 + +\end{theindex} diff --git a/indexing/makeindex/test/ok-test.tex b/indexing/makeindex/test/ok-test.tex new file mode 100644 index 0000000000..a3797c143c --- /dev/null +++ b/indexing/makeindex/test/ok-test.tex @@ -0,0 +1,686 @@ + +% Test LaTeX file for MakeIndex, adapted from makeindex.tex by addition +% of several (not entirely useful) index entries +% makeindex.tex -- released 17 February 1987 +% Copyright(c) 1987 by Leslie Lamport +% for LaTeX version 2.09 +% +\documentstyle[11pt,makeidx,showidx]{article} +\makeindex +%&v&\verb|#|& +%&i&\verb|\index{#}|& +%&t&{\tt #}& +\newcommand{\MakeIndex}{{\it MakeIndex\/}} +\newcommand{\fn}{} +\newcommand{\ff} + + +% Definition of the iexample environment and \sindex command. +% They are used as follows: +% \begin{iexample} +% Page 7 & \verb|\index{foo}|\\ +% Page 22 & \verb|\index{bar}| +% \sindex +% bar, 22 \\ +% foo, 7 +% \end{iexample} +\newenvironment{iexample}{\begin{quote} + \begin{tabular}[t]{@{}ll||@{\hspace{1em}}}}{\end{tabbing}\end{minipage} + \end{quote}} +\newcommand{\sindex}{\end{tabular}\hspace{1em}\begin{minipage}[t]{\textwidth} + \begin{tabbing}} + +\newcommand{\sitem}{\hspace*{20pt}} +\newcommand{\ssitem}{\hspace*{30pt}} + + +\title{\MakeIndex: An Index Processor For \LaTeX} + +\author{Leslie Lamport} +\date{17 February 1987} +\begin{document} +\maketitle + +\section{How to Use \MakeIndex} + +\MakeIndex\ is a program for +making an index in a document generated with \LaTeX. The first step in +producing% +\index{producing the index} +the index +is to put the necessary \verb|\index|% +\index{index@\verb=\index=} +commands in +your document, as described in the next section. Here, I describe how +to generate the index after the \verb|\index| commands are in place. + +Let's suppose that the root file of your document is {\tt myfile.tex}. +You must make the following changes to your document: +\begin{itemize} + +\item Add the {\tt makeidx}% +\index{makeidx document-style option@{\tt makeidx} document-style option} +document-style option to the list of +options in the \verb|\documentstyle| command. (See page 21 of the +\LaTeX\ manual.)% +\index{LaTeX manual@\LaTeX\ manual} + +\item Put a \verb|\makeindex| command in the preamble (between the + \linebreak%%%%% +\verb|\documentstyle| and \verb|\begin{document}| commands). + +\item Put a \verb|\printindex| command% +\index{printindex@\verb=\printindex=} +where you want the index to +appear---usually at the end, right before the \verb|\end{document}| +command. +\end{itemize} +You then run \LaTeX\ on your entire document, causing it to +generate the file {\tt myfile.idx}, which I will call the +{\tt idx}% +\index{idx file@{\tt idx} file} +\index{files@files!{\tt idx}} +file. +Next, run the \MakeIndex\ program by +typing the following Unix command: +\begin{quote} + {\tt makeindex myfile.idx} +\end{quote} +\index{running makeindex@running \MakeIndex} +\index{makeindex@\MakeIndex!running} +This produces the file {\tt myfile.ind}, which I will call the {\tt +ind}% +\index{ind file@{\tt ind} file} +\index{files@files!{\tt ind}} +file. If \MakeIndex\ generated no error messages, you can now rerun +\LaTeX\ on your document and the index will appear. (You can remove +the \verb|\makeindex|% +\index{makeindex command@\verb=\makeindex= command!removing} +command first so the +{\tt idx}% +\index{idx file@{\tt idx} file} +\index{files@files!{\tt idx}} +file is not +regenerated.) If there were error messages,% +\index{error messages} +see +Section~\ref{sec:errors}. + +By reading the index, you may discover additional +mistakes.% +\index{mistakes} +These should be +corrected by changing the appropriate \verb|\index| commands in the +document and regenerating the {\tt ind} file. If there are +problems that cannot be corrected in this way, you can always edit +the {\tt ind} file directly. However, such +editing% +\index{editing!avoiding} +is to be +avoided because it must be repeated every time you generate a new +version of the index. + + +\section{How to Generate Index Entries} + +\subsection{When, Why, What, and How to Index} + +It's tempting to generate the index as you write the document. Resist +the temptation. It is virtually impossible to obtain any consistency +in an index that is generated in this way. + +An index is there to help the reader find what he's looking for. With +this in mind, common sense can help in figuring out what should be in +the index and how it should be organized. Since it's often hard to +distinguish common sense from equally common nonsense, professional +advice% +\index{indexing!professional advice} +is useful. Many style guides discuss indexing; the pamphlet +{\em Indexing Your Book\/} by Sina Spiker% +\index{Spiker, Sina} +(The University of Wisconsin% +\index{Wisconsin Press} +Press, 1954) is, according to its subtitle, ``A Practical +Guide for Authors''.% +\index{index!professional guidelines} + +Unfortunately, these guides to indexing seem to have been written when +high tech meant using a ball-point pen% +\index{pen!ball-point} +instead of a quill,% +\index{pen!quill} +so their +advice on the mechanics of creating an index revolve around how to +stack your $3\times 5$ index cards.% +\index{index!cards} +\index{cards!index} +\index{index!the hard way} +You'll have to figure out your own +method of using the computer to lighten the chore. An alphabetical +list of every word% +\index{word list!making a} +in your document, with duplicates removed, is not a +bad place to start. If your system has Howard Trickey's +\index{Trickey, Howard} +{\tt delatex}% +\index{delatex@{\tt delatex}} +\index{LaTeX commands@\LaTeX\ commands!stripping} +program, then the following Unix command generates such a list from the +file {\tt myfile.tex} and puts it on the file {\tt foo}: +\begin{quote} +\index{index!getting started} +\index{index!making a word list} +\index{index!unique words} +\index{unique words} +\index{word list} +\tt delatex myfile.tex | sort -uf > foo +\end{quote} + +The computer is only a tool; it can't write the index for you. It may +be easy to choose which words are important and mechanically generate +an index citing every occurrence of those words, but the resulting +index will not be as useful to the reader as one prepared with more +care. + + + + +\subsection{The Basics} + +Each \verb|\index|% +\index{index@\verb=\index=} +\index{index!entries} +command causes \LaTeX\ to write an entry on the {\tt +idx}% +\index{idx file@{\tt idx} file} +\index{files@files!{\tt idx}} +file. The following example shows some simple +\verb|\index| commands and the index entries that they produce. The +page number refers to the page containing the text where the +\verb|\index| command appears.\footnote{To avoid any ambiguity if a +page break% +\index{ambiguities} +occurs right at an {\tt \symbol{'134}index} command, it's a +good idea to attach the command to a word instead of putting it between +words.} +\begin{iexample}% +\index{examples} +Page ii & \verb|\index{Alpha}| \\ +Page viii: & \verb|\index{alpha}| \\ +Page ix: & \verb|\index{alpha}| \\ + & \verb|\index{Alphabet}| \\ +Page 22: & \verb|\index{alpha}| \\ + & \verb|\index{alphas}| \\ +Page 23: & \verb|\index{alphabet}| \\ + & \verb|\index{alphabet}| \\ +Page 24: & \verb|\index{alpha bet}| +\sindex +Alpha, ii \\ +alpha, viii, ix, 22 \\ +alpha bet, 24\\ +Alphabet, ix\\ +alphabet, 23\\ +alphas, 22 +\end{iexample} +Note that the duplicate +\verb|\index{alphabet}|% +\index{index@\verb=\index=!duplicates} +commands on +page 23 produce only one ``23'' in the index. + + +To produce a subentry,% +\index{subentries} +\index{index!subentries} +the argument of the \verb|\index| +command should contain both the main% +\index{index!main entries} +entry and the subentry, separated +by a \verb|!| character.% +\index{"! character@\verb="!= character} +\begin{iexample}% +\index{examples} +Page 7: & \verb|\index{gnat!size of}| \\ +Page 32: & \verb|\index{gnat}| \\ +Page 35: & \verb|\index{gnat!anatomy}| \\ + & \verb|\index{gnus!good}| \\ +Page 38: & \verb|\index{gnus!bad}| \\ + & +\sindex +gnat, 32 \\ +\sitem anatomy, 35 \\ +\sitem size of, 7\\ +gnus \\ +\sitem bad, 38\\ +\sitem good, 35 +\end{iexample} +You can also have +subsubentries.% +\index{subsubentries} +\index{index!subsubentries} +\begin{iexample}% +\index{examples} +Page 8: & \verb|\index{bites!animal!gnats}| \\ +Page 10: & \verb|\index{bites!animal!gnus}| \\ +Page 12 : & \verb|\index{bites!vegetable}| \\ + & \\ + & +\sindex +bites \\ +\sitem animal \\ +\ssitem gnats, 8 \\ +\ssitem gnus, 10 \\ +\sitem vegetable, 12 +\end{iexample} +\LaTeX\ and \MakeIndex\ support only three levels of indexing; you +can't have +subsubsubentries.% +\index{subsubsubentries} +\index{entries!subsubsubentries (can't have)} +\index{index!maximum levels allowed} + +To specify a page range,% +\index{page range} +put an \verb/\index{...|(}/% +\index{page range!opening command} +command at the beginning of the range and an \verb/\index{...|)}/ +command at the end of the range. +\index{page range!closing command} +\begin{iexample}% +\index{examples} +Page vi: & \verb/\index{gnat|(}/ \\ +Page x: & \verb/\index{gnat|)}/ \\ +Page 22: & \verb|\index{gnat}| \\ + & \verb/\index{gnus!bad|(}/ \\ + & \verb/\index{gnus!bad|)}/ \\ +Page 28: & \verb/\index{gnus!good|(}/ \\ +Page 30: & \verb|\index{gnus!good}| \\ +Page 32: & \verb/\index{gnus!good|)}/ +\sindex +gnat, vi--x, 22 \\ +gnus \\ +\sitem bad, 22\\ +\sitem good, 28--32 +\end{iexample} +Note that \MakeIndex\ does the right thing when both ends of the range +fall on the same page.\footnote{The use of +``28ff.''% +\index{page range!avoiding ff.} +\index{ff.!avoiding} +rather than +``28--32'' is frowned% +\index{behavior!frowned-upon} +upon by the experts.% +\index{experts} +\index{experts!behavior of}} + +Sometimes, you want to add a cross-reference% +\index{index!cross-reference} +\index{cross-reference} +\index{see command@{\tt see} command!using} +with no page +number. This is done as follows; +\begin{iexample}% +\index{examples} +Page 2: & \verb|\index{at}| \\ +Page 2: & \verb/\index{at!bat|see{bat, at}}/ +\sindex +at, 2 \\ +\sitem bat, {\em see\/} bat, at +\end{iexample} +Since the ``see'' entry does not print any page number, it doesn't +matter where the \verb/\index{...|see{...}}/ +command% +\index{see command@{\tt see} command!placement of} +goes, so +long as it follows the \verb|\begin{document}| command. You +might want to put all such cross-referencing commands in one place. + + +If you specify an entry of the form +$\sigma$\verb|@|$\tau$,% +\index{"@ character@\verb="@= character} +the string +$\sigma$ determines the +alphabetical% +\index{index!alphabetizing} +\index{index!funny characters in} +position of the entry, while the +string $\tau$ produces the text of the entry. +\begin{iexample} +Page 44: & \verb|\index{twenty}| \\ +Page 46: & \verb|\index{twenty-one}| \\ +Page 55: & \verb|\index{twenty@xx}| +\sindex +twenty, 44 \\ +xx, 55 \\ +twenty-one, 46 +\end{iexample} +This feature is useful because the argument of the \verb|\index| +command provides the actual input string that \LaTeX\ uses to generate +the index entry. In the following example, the input \verb|$\alpha$| +produces the symbol $\alpha$, +\begin{iexample} +Page 12: & \verb|\index{alphas}| \\ +Page 13: & \verb|\index{alpha}| \\ +Page 14: & \verb|\index{alpha@$\alpha$}| +\sindex +alpha, 13 \\ +$\alpha$, 14 \\ +alphas, 12 +\end{iexample} +Similarly, the command \verb|\index{gnu@{\bf gnu}}| produces +a boldface {\bf gnu} index entry. + +In some indexes, certain page numbers% +\index{page numbers} +are specially formatted---for +example, an italic page number% +\index{page numbers!italic} +may indicate the primary reference, and +an {\em n\/} after a page number may denote that the item appears in a +footnote% +\index{page numbers!entries in footnotes} +on that page. \MakeIndex\ makes it easy to format an +individual page number any way you want. For any string of characters +$\sigma$, the command \verb/\index{...|/$\sigma$\verb|}| produces a +page number of the form \verb|\|$\sigma$\verb|{|$n$\verb|}|. +Similarly, the command \verb/\index{...|(/$\sigma$\verb|}| may produce +a page number of the form \verb|\|$\sigma$\verb|{|$n$--$m$\verb|}|. +Thus, suppose the document contains the following command definitions: +\begin{quote} +\verb|\newcommand{\ii}[1]{{\it #1}}| \\ +\verb|\newcommand{\nn}[1]{#1n}| +\end{quote} +We could then have: +\begin{iexample} +\index{examples} +Page 3: & \verb/\index{gnat|ii}/ \\ +Page 4: & \verb/\index{gnat|nn}/ \\ +Page 5: & \verb/\index{gnu}/ \\ +Page 44: & \verb/\index{gnu|(ii}/ \\ +Page 46: & \verb/\index{gnu|)}/ +\sindex +gnat, {\em 3}, 4n \\ +gnu, 5, {\em 44--46} +\end{iexample} +The ``see''% +\index{see command@{\tt see} command!example} +option is a special case of this facility, where the +\verb|\see| command is predefined by the {\tt makeidx} +\index{makeidx document-style option@{\tt makeidx} document-style option} +document-style +option. + + +\subsection{The Fine Print} + +Commands in an index entry are expanded when the index is typeset, +not when the {\tt idx}% +\index{idx file@{\tt idx} file} +\index{files@files!{\tt idx}} +file is written.% +\index{index!expansion of commands in} +Hence, the command +\verb|\index{\gnu}| produces an entry that is alphabetized by +\verb|\gnu|, regardless of how the \verb|\gnu| command is defined. + +Recall that special characters like \verb|\| may appear in the argument +of an \verb|\index| command only if that command is not itself +contained in the argument of another command. This is most likely to +be a problem when indexing items in a footnote. Even in this case, +robust commands% +\index{robust commands} +\index{commands!robust} +can be placed in the ``\verb|@|'' part of an entry, as +in \verb|\index{gnu@{\it gnu}}|, and +fragile commands% +\index{fragile commands} +\index{commands!fragile} +can be used +if protected with the \verb|\protect|% +\index{protect@\verb=\protect=} +\index{protect@\verb=\protect=|see{{\tt \symbol{'134}string}}} +\index{protect@\verb=\string=|see{{\tt \symbol{'134}protect}}} +command.\footnote{In +versions of \LaTeX\ released before 3 February 1987, you must +use the {\tt\symbol{'134}string} +command instead of +{\tt\symbol{'134}protect}.}% +\index{string@{\tt \symbol{'134}string}} + +Remember that the argument of an \verb|\index| command must always have +matching braces,% +\index{braces!matching} +where the brace in a \verb|\{| or \verb|\}| command +counts. + +\MakeIndex\ assumes that all page numbers are either +arabic% +\index{page numbers!arabic} +or lower-case +roman numerals;% +\index{page numbers!roman numerals} +it assumes that pages +numbered with roman numerals +precede those numbered with arabic numerals.% +\index{page numbers!order of} + +To put a \verb|!|, \verb|@|, or \verb/|/ character in an index entry, +\index{index!funny characters in} +{\em quote\/} it by preceding the character with a +\verb|"|.% +\index{"" character@\verb=""= character} +\index{quote character} +\index{index!quoting characters in} +More +precisely, any a character is said to be quoted if it follows an +unquoted \verb|"| that is not part of a \verb|\"| command. A quoted +\verb|!|, \verb|@|, or \verb/|/ character is treated like an +ordinary character rather than having its usual meaning. The +\verb|"| preceding a quoted character is deleted before the +entries are alphabetized. +\begin{iexample}% +\index{examples} +Page 2: & \verb|\index{exclaim ("!)}| \\ +Page 3: & \verb|\index{exclaim ("!)!loudly}| \\ +Page 4: & \verb|\index{fur@f\"{u}r}| \\ +Page 5: & \verb|\index{quote (\verb+""+)}| +\sindex +exclaim (!), 2 \\ +\sitem loudly, 3\\ +f\"{u}r, 4\\ +quote (\verb+""+), 5 +\end{iexample} + + +\MakeIndex\ regards spaces% +\index{index!spaces in} +as ordinary characters when alphabetizing the +entries and deciding whether two entries are the same. Thus, letting +``\verb*| |'' denote a space character, the commands +\verb*|\index{gnu}|, \verb*|\index{ gnu}|, and \verb*|\index{gnu }| +produce three separate entries, the first appearing near the beginning +of the index, since \verb*| | comes before any letter in \MakeIndex's +``alphabetical'' order. All three entries look the same when +printed, since \LaTeX\ ignores extra spaces in the input. Similarly, + \verb*|\index{a space}| and \verb*|\index{a space}| produce two +different entries that look the same when printed. Do not +split the argument of an \verb|\index| command across lines in the +input file.% +\index{index!don't split across lines} + + + +\section{Error Messages} \label{sec:errors} +\index{error messages} + +\MakeIndex\ types out on the terminal the number of lines read and +written and how many errors were found. Message to identify the error +are written on a file with extension +{\tt ilg}.% +\index{ilg file@{\tt ilg} file} +\index{files@files!{\tt ilg}} +There are two phases +in which \MakeIndex\ can produce error messages: when it is reading the +{\tt idx}% +\index{idx file@{\tt idx} file} +\index{files@files!{\tt idx}} +file, and when it is writing the +{\tt ind}% +\index{ind file@{\tt ind} file} +\index{files@files!{\tt ind}} +file. Each error +message prints the nature of the error followed by a line number, +identifying where in the file the error occurs. In the reading phase, +the line number refers to the {\tt idx} file; in the writing phase, it +refers to the {\tt ind} file. + +\subsection{Errors in Reading Phase} + +\subsubsection*{\tt Extra `!' at position ...} + +\index{"! character@\verb="!= character} +The \verb|\index| command's argument has more than two unquoted +\verb|!| characters. Perhaps some of them should be quoted. + +\subsubsection*{\tt Extra `@' at position ...} + +\index{"@ character@\verb="@= character} +The \verb|\index| command argument has two or more unquoted \verb|@| +characters with no intervening \verb|!|. Perhaps one of the \verb|@| +characters should be quoted. + +\subsubsection*{\tt Extra `|' at position ...} + +\index{"! character@\verb="!= character} +The \verb|\index| command's argument has more than one unquoted \verb|!| +characters. Perhaps the extras should be quoted. + +\subsubsection*{\tt Illegal null field} + +The \verb|\index| command argument doesn't make sense because some +string is null that shouldn't be. The command \verb|\index{!big}| will +produce this error, since it specifies a subentry ``big'' with no +entry. Similarly, the command \verb|\index{@big}| is incorrect because +it specifies a null string for alphabetizing. + +%\subsubsection*{\tt No \symbol{'134}indexentry} +% +%Each line of an {\tt idx} file written by \LaTeX\ should contain an +%\verb|\indexentry| command. \MakeIndex\ has found a line in the {\tt idx} +%file that does not contain an \verb|\indexentry| command. The {\tt +%idx} file has probably been corrupted. +% +%\subsubsection*{\tt Missing \symbol{'173}} +% +%\MakeIndex\ believes that the braces in the argument of the \verb|\index| +%command are not properly matched. Since \LaTeX\ must +%have thought that the braces were properly matched, the problem +%is probably due to a corrupted {\tt idx} file. +% +%\subsubsection*{\tt Missing \symbol{'175}} +% +%See ``{\tt Missing \symbol{'173}}'' error. + +\subsubsection*{\tt Argument ... too long (max 1024).} + +\index{index!long arguments} +Your document contained an \verb|\index| command with a very long +argument. You probably forgot the right brace that was supposed +to delimit the argument. + +\subsubsection*{Other errors} + +\MakeIndex\ can produce a variety of other error messages indicating +that something is seriously wrong with the +{\tt idx}% +\index{idx file@{\tt idx} file} +\index{files@files!{\tt idx}} +file. If you +get one, it probably means that the {\tt idx} file was corrupted in +some way. If \LaTeX\ did not generate any errors when it created +the {\tt idx} file, then it is highly unlikely to have produced +a bad {\tt idx} file. If it did, you'll have to examine the +{\tt idx} file to figure out what went wrong. + + +\subsection{Errors in Writing Phase} + +\subsubsection*{\tt Unmatched range opening operator} + +An \verb/\index{...|(}/ command was not followed by a matching + \linebreak%%%%% +\verb/\index{...|)}/ command. The ``\verb|...|'' in the two +commands must be completely identical. + + +\subsubsection*{\tt Unmatched range closing operator } + +An \verb/\index{...|(}/ command was not preceded by a matching + \linebreak%%%%% +\verb/\index{...|)}/ command. + +\subsubsection*{\tt Extra range opening operator } + +Two \verb/\index{...|(}/ commands appear in the document with no intervening +\verb/\index{...|)}/ command. + + + +\subsubsection*{\tt Inconsistent page encapsulator ... within range} + +\MakeIndex\ has been instructed to include a page +range% +\index{page range} +\index{range!of pages} +for an entry +and a single page number within that range that is formatted +differently---for example, by having a +\verb+\index{gnu|ii}+ command between a \verb+\index{gnu|(}+ +and a \verb+\index{gnu|)}+ command. + + +\subsubsection*{\tt Conflicting entries} + +\index{index!conflicting entries in} +\MakeIndex\ thinks it has been instructed to print the same page number +twice in two different ways---for example, by the commands +\verb|\index{gnu}| and \verb/\index{gnu|(see{...}}/ appearing on the +same page. + + + +\section*{Acknowledgements} + +\MakeIndex\ is a C +\index{C language} + program written by Pehong Chen,% +\index{Chen, Pehong} +with a little +advice from me. It was inspired by a program written by Mike Urban,% +\index{Urban, Mike} +which was based on a program written by Marshall Rose.% +\index{Rose, Marshall} + Perhaps someday +someone will rewrite \MakeIndex\ in Web,% +\index{Web language} +\index{Pascal language|see{Web language}} +\index{makeindex@\MakeIndex!in Web language} +making it available to all +\LaTeX\ users. + +This version of {\tt makeindex.\-tex}, {\tt test.\-tex}, has index +entries generated by Nelson H.F.~Beebe% +\index{Beebe, Nelson H.F.} +to serve as a test file for the +\MakeIndex{} program. + +\index{mistakes|see{errors}} +\index{page breaks|see{ambiguities}} +\index{range|see{page}} + + +%\printindex +\input{\jobname.ind} +\end{document} diff --git a/indexing/makeindex/test/ok-tort.ilg b/indexing/makeindex/test/ok-tort.ilg new file mode 100644 index 0000000000..b0ade0b681 --- /dev/null +++ b/indexing/makeindex/test/ok-tort.ilg @@ -0,0 +1,47 @@ +This is makeindex, portable version 2.12 [26-May-1993]. +Scanning input file tort.idx... +!! Input index error (file = tort.idx, line = 1): + -- Illegal null field. +!! Input index error (file = tort.idx, line = 2): + -- Illegal null field. +!! Input index error (file = tort.idx, line = 3): + -- Extra `@' at position 14 of first argument. +!! Input index error (file = tort.idx, line = 4): + -- Extra `!' at position 18 of first argument. +!! Input index error (file = tort.idx, line = 5): + -- Extra `|' at position 15 of first argument. +.done (29 entries accepted, 5 rejected). +Sorting entries....done (135 comparisons). +Generating output file tort.ind.... +## Warning (input = tort.idx, line = 23; output = tort.ind, line = 3): + -- Range closing operator has an inconsistent encapsulator iii. + +## Warning (input = tort.idx, line = 26; output = tort.ind, line = 8): + -- Inconsistent page encapsulator ii within range. + +## Warning (input = tort.idx, line = 30; output = tort.ind, line = 9): + -- Inconsistent page encapsulator ii within range. + +## Warning (input = tort.idx, line = 7; output = tort.ind, line = 10): + -- Conflicting entries: multiple encaps for the same page under same key. + +## Warning (input = tort.idx, line = 14; output = tort.ind, line = 14): + -- Unmatched range closing operator ). + +## Warning (input = tort.idx, line = 15; output = tort.ind, line = 15): + -- Unmatched range opening operator (. + +## Warning (input = tort.idx, line = 34; output = tort.ind, line = 16): + -- Illegal range formation: starting & ending pages are of different types. + +## Warning (input = tort.idx, line = 38; output = tort.ind, line = 17): + -- Illegal range formation: starting & ending pages are of different types. + +## Warning (input = tort.idx, line = 42; output = tort.ind, line = 18): + -- Inconsistent page encapsulator xx within range. + +## Warning (input = tort.idx, line = 43; output = tort.ind, line = 18): + -- Illegal range formation: starting & ending pages are of different types. +done (24 lines written, 10 warnings). +Output written in tort.ind. +Transcript written in tort.ilg. diff --git a/indexing/makeindex/test/ok-tort.ind b/indexing/makeindex/test/ok-tort.ind new file mode 100644 index 0000000000..bbd7178301 --- /dev/null +++ b/indexing/makeindex/test/ok-tort.ind @@ -0,0 +1,24 @@ +\begin{theindex} + + \item bad-encaps, \ii{5--7} + + \indexspace + + \item implicit-range, 10--12 + \item incons-encaps, \ii{6}, 5--7 + \item incons-encaps2, \ii{5}, 5 + \item incons-entries, 6, \xx{6} + + \indexspace + + \item missing(, 6 + \item missing), 6 + \item mixed-range, i, 6 + \item mixed-range1, i--iv, 3--6 + \item mixed-range2, \xx{ii}, i--ii, \yy{3--6} + + \indexspace + + \item ok-encaps, \ii{5--7} + +\end{theindex} diff --git a/indexing/makeindex/test/test.idx b/indexing/makeindex/test/test.idx new file mode 100644 index 0000000000..d0a9688b1e --- /dev/null +++ b/indexing/makeindex/test/test.idx @@ -0,0 +1,125 @@ +\indexentry{producing the index}{1} +\indexentry{index@\verb=\index=}{1} +\indexentry{makeidx document-style option@{\tt makeidx} document-style option}{1} +\indexentry{LaTeX manual@\LaTeX\ manual}{1} +\indexentry{printindex@\verb=\printindex=}{1} +\indexentry{idx file@{\tt idx} file}{1} +\indexentry{files@files!{\tt idx}}{1} +\indexentry{running makeindex@running \MakeIndex}{1} +\indexentry{makeindex@\MakeIndex!running}{1} +\indexentry{ind file@{\tt ind} file}{1} +\indexentry{files@files!{\tt ind}}{1} +\indexentry{makeindex command@\verb=\makeindex= command!removing}{1} +\indexentry{idx file@{\tt idx} file}{1} +\indexentry{files@files!{\tt idx}}{1} +\indexentry{error messages}{1} +\indexentry{mistakes}{2} +\indexentry{editing!avoiding}{2} +\indexentry{indexing!professional advice}{2} +\indexentry{Spiker, Sina}{2} +\indexentry{Wisconsin Press}{2} +\indexentry{index!professional guidelines}{2} +\indexentry{pen!ball-point}{2} +\indexentry{pen!quill}{2} +\indexentry{index!cards}{2} +\indexentry{cards!index}{2} +\indexentry{index!the hard way}{2} +\indexentry{word list!making a}{2} +\indexentry{Trickey, Howard}{2} +\indexentry{delatex@{\tt delatex}}{2} +\indexentry{LaTeX commands@\LaTeX\ commands!stripping}{2} +\indexentry{index!getting started}{2} +\indexentry{index!making a word list}{2} +\indexentry{index!unique words}{2} +\indexentry{unique words}{2} +\indexentry{word list}{2} +\indexentry{index@\verb=\index=}{3} +\indexentry{index!entries}{3} +\indexentry{idx file@{\tt idx} file}{3} +\indexentry{files@files!{\tt idx}}{3} +\indexentry{examples}{3} +\indexentry{index@\verb=\index=!duplicates}{3} +\indexentry{subentries}{3} +\indexentry{index!subentries}{3} +\indexentry{index!main entries}{3} +\indexentry{"! character@\verb="!= character}{3} +\indexentry{examples}{3} +\indexentry{subsubentries}{3} +\indexentry{index!subsubentries}{3} +\indexentry{examples}{3} +\indexentry{subsubsubentries}{3} +\indexentry{entries!subsubsubentries (can't have)}{3} +\indexentry{index!maximum levels allowed}{3} +\indexentry{ambiguities}{3} +\indexentry{page range}{4} +\indexentry{page range!opening command}{4} +\indexentry{page range!closing command}{4} +\indexentry{examples}{4} +\indexentry{index!cross-reference}{4} +\indexentry{cross-reference}{4} +\indexentry{see command@{\tt see} command!using}{4} +\indexentry{examples}{4} +\indexentry{see command@{\tt see} command!placement of}{4} +\indexentry{"@ character@\verb="@= character}{4} +\indexentry{index!alphabetizing}{4} +\indexentry{index!funny characters in}{4} +\indexentry{page range!avoiding ff.}{4} +\indexentry{ff.!avoiding}{4} +\indexentry{behavior!frowned-upon}{4} +\indexentry{experts}{4} +\indexentry{experts!behavior of}{4} +\indexentry{page numbers}{5} +\indexentry{page numbers!italic}{5} +\indexentry{page numbers!entries in footnotes}{5} +\indexentry{examples}{5} +\indexentry{see command@{\tt see} command!example}{5} +\indexentry{makeidx document-style option@{\tt makeidx} document-style option}{5} +\indexentry{idx file@{\tt idx} file}{5} +\indexentry{files@files!{\tt idx}}{5} +\indexentry{index!expansion of commands in}{5} +\indexentry{robust commands}{5} +\indexentry{commands!robust}{5} +\indexentry{fragile commands}{5} +\indexentry{commands!fragile}{5} +\indexentry{protect@\verb=\protect=}{5} +\indexentry{protect@\verb=\protect=|see{{\tt \symbol{'134}string}}}{5} +\indexentry{protect@\verb=\string=|see{{\tt \symbol{'134}protect}}}{5} +\indexentry{string@{\tt \symbol{'134}string}}{5} +\indexentry{braces!matching}{6} +\indexentry{page numbers!arabic}{6} +\indexentry{page numbers!roman numerals}{6} +\indexentry{page numbers!order of}{6} +\indexentry{index!funny characters in}{6} +\indexentry{"" character@\verb=""= character}{6} +\indexentry{quote character}{6} +\indexentry{index!quoting characters in}{6} +\indexentry{examples}{6} +\indexentry{index!spaces in}{6} +\indexentry{index!don't split across lines}{6} +\indexentry{error messages}{6} +\indexentry{ilg file@{\tt ilg} file}{6} +\indexentry{files@files!{\tt ilg}}{6} +\indexentry{idx file@{\tt idx} file}{6} +\indexentry{files@files!{\tt idx}}{6} +\indexentry{ind file@{\tt ind} file}{6} +\indexentry{files@files!{\tt ind}}{6} +\indexentry{"! character@\verb="!= character}{7} +\indexentry{"@ character@\verb="@= character}{7} +\indexentry{"! character@\verb="!= character}{7} +\indexentry{index!long arguments}{7} +\indexentry{idx file@{\tt idx} file}{7} +\indexentry{files@files!{\tt idx}}{7} +\indexentry{page range}{8} +\indexentry{range!of pages}{8} +\indexentry{index!conflicting entries in}{8} +\indexentry{C language}{8} +\indexentry{Chen, Pehong}{8} +\indexentry{Urban, Mike}{8} +\indexentry{Rose, Marshall}{8} +\indexentry{Web language}{8} +\indexentry{Pascal language|see{Web language}}{8} +\indexentry{makeindex@\MakeIndex!in Web language}{8} +\indexentry{Beebe, Nelson H.F.}{8} +\indexentry{mistakes|see{errors}}{8} +\indexentry{page breaks|see{ambiguities}}{8} +\indexentry{range|see{page}}{8} diff --git a/indexing/makeindex/test/test.tex b/indexing/makeindex/test/test.tex new file mode 100644 index 0000000000..a3797c143c --- /dev/null +++ b/indexing/makeindex/test/test.tex @@ -0,0 +1,686 @@ + +% Test LaTeX file for MakeIndex, adapted from makeindex.tex by addition +% of several (not entirely useful) index entries +% makeindex.tex -- released 17 February 1987 +% Copyright(c) 1987 by Leslie Lamport +% for LaTeX version 2.09 +% +\documentstyle[11pt,makeidx,showidx]{article} +\makeindex +%&v&\verb|#|& +%&i&\verb|\index{#}|& +%&t&{\tt #}& +\newcommand{\MakeIndex}{{\it MakeIndex\/}} +\newcommand{\fn}{} +\newcommand{\ff} + + +% Definition of the iexample environment and \sindex command. +% They are used as follows: +% \begin{iexample} +% Page 7 & \verb|\index{foo}|\\ +% Page 22 & \verb|\index{bar}| +% \sindex +% bar, 22 \\ +% foo, 7 +% \end{iexample} +\newenvironment{iexample}{\begin{quote} + \begin{tabular}[t]{@{}ll||@{\hspace{1em}}}}{\end{tabbing}\end{minipage} + \end{quote}} +\newcommand{\sindex}{\end{tabular}\hspace{1em}\begin{minipage}[t]{\textwidth} + \begin{tabbing}} + +\newcommand{\sitem}{\hspace*{20pt}} +\newcommand{\ssitem}{\hspace*{30pt}} + + +\title{\MakeIndex: An Index Processor For \LaTeX} + +\author{Leslie Lamport} +\date{17 February 1987} +\begin{document} +\maketitle + +\section{How to Use \MakeIndex} + +\MakeIndex\ is a program for +making an index in a document generated with \LaTeX. The first step in +producing% +\index{producing the index} +the index +is to put the necessary \verb|\index|% +\index{index@\verb=\index=} +commands in +your document, as described in the next section. Here, I describe how +to generate the index after the \verb|\index| commands are in place. + +Let's suppose that the root file of your document is {\tt myfile.tex}. +You must make the following changes to your document: +\begin{itemize} + +\item Add the {\tt makeidx}% +\index{makeidx document-style option@{\tt makeidx} document-style option} +document-style option to the list of +options in the \verb|\documentstyle| command. (See page 21 of the +\LaTeX\ manual.)% +\index{LaTeX manual@\LaTeX\ manual} + +\item Put a \verb|\makeindex| command in the preamble (between the + \linebreak%%%%% +\verb|\documentstyle| and \verb|\begin{document}| commands). + +\item Put a \verb|\printindex| command% +\index{printindex@\verb=\printindex=} +where you want the index to +appear---usually at the end, right before the \verb|\end{document}| +command. +\end{itemize} +You then run \LaTeX\ on your entire document, causing it to +generate the file {\tt myfile.idx}, which I will call the +{\tt idx}% +\index{idx file@{\tt idx} file} +\index{files@files!{\tt idx}} +file. +Next, run the \MakeIndex\ program by +typing the following Unix command: +\begin{quote} + {\tt makeindex myfile.idx} +\end{quote} +\index{running makeindex@running \MakeIndex} +\index{makeindex@\MakeIndex!running} +This produces the file {\tt myfile.ind}, which I will call the {\tt +ind}% +\index{ind file@{\tt ind} file} +\index{files@files!{\tt ind}} +file. If \MakeIndex\ generated no error messages, you can now rerun +\LaTeX\ on your document and the index will appear. (You can remove +the \verb|\makeindex|% +\index{makeindex command@\verb=\makeindex= command!removing} +command first so the +{\tt idx}% +\index{idx file@{\tt idx} file} +\index{files@files!{\tt idx}} +file is not +regenerated.) If there were error messages,% +\index{error messages} +see +Section~\ref{sec:errors}. + +By reading the index, you may discover additional +mistakes.% +\index{mistakes} +These should be +corrected by changing the appropriate \verb|\index| commands in the +document and regenerating the {\tt ind} file. If there are +problems that cannot be corrected in this way, you can always edit +the {\tt ind} file directly. However, such +editing% +\index{editing!avoiding} +is to be +avoided because it must be repeated every time you generate a new +version of the index. + + +\section{How to Generate Index Entries} + +\subsection{When, Why, What, and How to Index} + +It's tempting to generate the index as you write the document. Resist +the temptation. It is virtually impossible to obtain any consistency +in an index that is generated in this way. + +An index is there to help the reader find what he's looking for. With +this in mind, common sense can help in figuring out what should be in +the index and how it should be organized. Since it's often hard to +distinguish common sense from equally common nonsense, professional +advice% +\index{indexing!professional advice} +is useful. Many style guides discuss indexing; the pamphlet +{\em Indexing Your Book\/} by Sina Spiker% +\index{Spiker, Sina} +(The University of Wisconsin% +\index{Wisconsin Press} +Press, 1954) is, according to its subtitle, ``A Practical +Guide for Authors''.% +\index{index!professional guidelines} + +Unfortunately, these guides to indexing seem to have been written when +high tech meant using a ball-point pen% +\index{pen!ball-point} +instead of a quill,% +\index{pen!quill} +so their +advice on the mechanics of creating an index revolve around how to +stack your $3\times 5$ index cards.% +\index{index!cards} +\index{cards!index} +\index{index!the hard way} +You'll have to figure out your own +method of using the computer to lighten the chore. An alphabetical +list of every word% +\index{word list!making a} +in your document, with duplicates removed, is not a +bad place to start. If your system has Howard Trickey's +\index{Trickey, Howard} +{\tt delatex}% +\index{delatex@{\tt delatex}} +\index{LaTeX commands@\LaTeX\ commands!stripping} +program, then the following Unix command generates such a list from the +file {\tt myfile.tex} and puts it on the file {\tt foo}: +\begin{quote} +\index{index!getting started} +\index{index!making a word list} +\index{index!unique words} +\index{unique words} +\index{word list} +\tt delatex myfile.tex | sort -uf > foo +\end{quote} + +The computer is only a tool; it can't write the index for you. It may +be easy to choose which words are important and mechanically generate +an index citing every occurrence of those words, but the resulting +index will not be as useful to the reader as one prepared with more +care. + + + + +\subsection{The Basics} + +Each \verb|\index|% +\index{index@\verb=\index=} +\index{index!entries} +command causes \LaTeX\ to write an entry on the {\tt +idx}% +\index{idx file@{\tt idx} file} +\index{files@files!{\tt idx}} +file. The following example shows some simple +\verb|\index| commands and the index entries that they produce. The +page number refers to the page containing the text where the +\verb|\index| command appears.\footnote{To avoid any ambiguity if a +page break% +\index{ambiguities} +occurs right at an {\tt \symbol{'134}index} command, it's a +good idea to attach the command to a word instead of putting it between +words.} +\begin{iexample}% +\index{examples} +Page ii & \verb|\index{Alpha}| \\ +Page viii: & \verb|\index{alpha}| \\ +Page ix: & \verb|\index{alpha}| \\ + & \verb|\index{Alphabet}| \\ +Page 22: & \verb|\index{alpha}| \\ + & \verb|\index{alphas}| \\ +Page 23: & \verb|\index{alphabet}| \\ + & \verb|\index{alphabet}| \\ +Page 24: & \verb|\index{alpha bet}| +\sindex +Alpha, ii \\ +alpha, viii, ix, 22 \\ +alpha bet, 24\\ +Alphabet, ix\\ +alphabet, 23\\ +alphas, 22 +\end{iexample} +Note that the duplicate +\verb|\index{alphabet}|% +\index{index@\verb=\index=!duplicates} +commands on +page 23 produce only one ``23'' in the index. + + +To produce a subentry,% +\index{subentries} +\index{index!subentries} +the argument of the \verb|\index| +command should contain both the main% +\index{index!main entries} +entry and the subentry, separated +by a \verb|!| character.% +\index{"! character@\verb="!= character} +\begin{iexample}% +\index{examples} +Page 7: & \verb|\index{gnat!size of}| \\ +Page 32: & \verb|\index{gnat}| \\ +Page 35: & \verb|\index{gnat!anatomy}| \\ + & \verb|\index{gnus!good}| \\ +Page 38: & \verb|\index{gnus!bad}| \\ + & +\sindex +gnat, 32 \\ +\sitem anatomy, 35 \\ +\sitem size of, 7\\ +gnus \\ +\sitem bad, 38\\ +\sitem good, 35 +\end{iexample} +You can also have +subsubentries.% +\index{subsubentries} +\index{index!subsubentries} +\begin{iexample}% +\index{examples} +Page 8: & \verb|\index{bites!animal!gnats}| \\ +Page 10: & \verb|\index{bites!animal!gnus}| \\ +Page 12 : & \verb|\index{bites!vegetable}| \\ + & \\ + & +\sindex +bites \\ +\sitem animal \\ +\ssitem gnats, 8 \\ +\ssitem gnus, 10 \\ +\sitem vegetable, 12 +\end{iexample} +\LaTeX\ and \MakeIndex\ support only three levels of indexing; you +can't have +subsubsubentries.% +\index{subsubsubentries} +\index{entries!subsubsubentries (can't have)} +\index{index!maximum levels allowed} + +To specify a page range,% +\index{page range} +put an \verb/\index{...|(}/% +\index{page range!opening command} +command at the beginning of the range and an \verb/\index{...|)}/ +command at the end of the range. +\index{page range!closing command} +\begin{iexample}% +\index{examples} +Page vi: & \verb/\index{gnat|(}/ \\ +Page x: & \verb/\index{gnat|)}/ \\ +Page 22: & \verb|\index{gnat}| \\ + & \verb/\index{gnus!bad|(}/ \\ + & \verb/\index{gnus!bad|)}/ \\ +Page 28: & \verb/\index{gnus!good|(}/ \\ +Page 30: & \verb|\index{gnus!good}| \\ +Page 32: & \verb/\index{gnus!good|)}/ +\sindex +gnat, vi--x, 22 \\ +gnus \\ +\sitem bad, 22\\ +\sitem good, 28--32 +\end{iexample} +Note that \MakeIndex\ does the right thing when both ends of the range +fall on the same page.\footnote{The use of +``28ff.''% +\index{page range!avoiding ff.} +\index{ff.!avoiding} +rather than +``28--32'' is frowned% +\index{behavior!frowned-upon} +upon by the experts.% +\index{experts} +\index{experts!behavior of}} + +Sometimes, you want to add a cross-reference% +\index{index!cross-reference} +\index{cross-reference} +\index{see command@{\tt see} command!using} +with no page +number. This is done as follows; +\begin{iexample}% +\index{examples} +Page 2: & \verb|\index{at}| \\ +Page 2: & \verb/\index{at!bat|see{bat, at}}/ +\sindex +at, 2 \\ +\sitem bat, {\em see\/} bat, at +\end{iexample} +Since the ``see'' entry does not print any page number, it doesn't +matter where the \verb/\index{...|see{...}}/ +command% +\index{see command@{\tt see} command!placement of} +goes, so +long as it follows the \verb|\begin{document}| command. You +might want to put all such cross-referencing commands in one place. + + +If you specify an entry of the form +$\sigma$\verb|@|$\tau$,% +\index{"@ character@\verb="@= character} +the string +$\sigma$ determines the +alphabetical% +\index{index!alphabetizing} +\index{index!funny characters in} +position of the entry, while the +string $\tau$ produces the text of the entry. +\begin{iexample} +Page 44: & \verb|\index{twenty}| \\ +Page 46: & \verb|\index{twenty-one}| \\ +Page 55: & \verb|\index{twenty@xx}| +\sindex +twenty, 44 \\ +xx, 55 \\ +twenty-one, 46 +\end{iexample} +This feature is useful because the argument of the \verb|\index| +command provides the actual input string that \LaTeX\ uses to generate +the index entry. In the following example, the input \verb|$\alpha$| +produces the symbol $\alpha$, +\begin{iexample} +Page 12: & \verb|\index{alphas}| \\ +Page 13: & \verb|\index{alpha}| \\ +Page 14: & \verb|\index{alpha@$\alpha$}| +\sindex +alpha, 13 \\ +$\alpha$, 14 \\ +alphas, 12 +\end{iexample} +Similarly, the command \verb|\index{gnu@{\bf gnu}}| produces +a boldface {\bf gnu} index entry. + +In some indexes, certain page numbers% +\index{page numbers} +are specially formatted---for +example, an italic page number% +\index{page numbers!italic} +may indicate the primary reference, and +an {\em n\/} after a page number may denote that the item appears in a +footnote% +\index{page numbers!entries in footnotes} +on that page. \MakeIndex\ makes it easy to format an +individual page number any way you want. For any string of characters +$\sigma$, the command \verb/\index{...|/$\sigma$\verb|}| produces a +page number of the form \verb|\|$\sigma$\verb|{|$n$\verb|}|. +Similarly, the command \verb/\index{...|(/$\sigma$\verb|}| may produce +a page number of the form \verb|\|$\sigma$\verb|{|$n$--$m$\verb|}|. +Thus, suppose the document contains the following command definitions: +\begin{quote} +\verb|\newcommand{\ii}[1]{{\it #1}}| \\ +\verb|\newcommand{\nn}[1]{#1n}| +\end{quote} +We could then have: +\begin{iexample} +\index{examples} +Page 3: & \verb/\index{gnat|ii}/ \\ +Page 4: & \verb/\index{gnat|nn}/ \\ +Page 5: & \verb/\index{gnu}/ \\ +Page 44: & \verb/\index{gnu|(ii}/ \\ +Page 46: & \verb/\index{gnu|)}/ +\sindex +gnat, {\em 3}, 4n \\ +gnu, 5, {\em 44--46} +\end{iexample} +The ``see''% +\index{see command@{\tt see} command!example} +option is a special case of this facility, where the +\verb|\see| command is predefined by the {\tt makeidx} +\index{makeidx document-style option@{\tt makeidx} document-style option} +document-style +option. + + +\subsection{The Fine Print} + +Commands in an index entry are expanded when the index is typeset, +not when the {\tt idx}% +\index{idx file@{\tt idx} file} +\index{files@files!{\tt idx}} +file is written.% +\index{index!expansion of commands in} +Hence, the command +\verb|\index{\gnu}| produces an entry that is alphabetized by +\verb|\gnu|, regardless of how the \verb|\gnu| command is defined. + +Recall that special characters like \verb|\| may appear in the argument +of an \verb|\index| command only if that command is not itself +contained in the argument of another command. This is most likely to +be a problem when indexing items in a footnote. Even in this case, +robust commands% +\index{robust commands} +\index{commands!robust} +can be placed in the ``\verb|@|'' part of an entry, as +in \verb|\index{gnu@{\it gnu}}|, and +fragile commands% +\index{fragile commands} +\index{commands!fragile} +can be used +if protected with the \verb|\protect|% +\index{protect@\verb=\protect=} +\index{protect@\verb=\protect=|see{{\tt \symbol{'134}string}}} +\index{protect@\verb=\string=|see{{\tt \symbol{'134}protect}}} +command.\footnote{In +versions of \LaTeX\ released before 3 February 1987, you must +use the {\tt\symbol{'134}string} +command instead of +{\tt\symbol{'134}protect}.}% +\index{string@{\tt \symbol{'134}string}} + +Remember that the argument of an \verb|\index| command must always have +matching braces,% +\index{braces!matching} +where the brace in a \verb|\{| or \verb|\}| command +counts. + +\MakeIndex\ assumes that all page numbers are either +arabic% +\index{page numbers!arabic} +or lower-case +roman numerals;% +\index{page numbers!roman numerals} +it assumes that pages +numbered with roman numerals +precede those numbered with arabic numerals.% +\index{page numbers!order of} + +To put a \verb|!|, \verb|@|, or \verb/|/ character in an index entry, +\index{index!funny characters in} +{\em quote\/} it by preceding the character with a +\verb|"|.% +\index{"" character@\verb=""= character} +\index{quote character} +\index{index!quoting characters in} +More +precisely, any a character is said to be quoted if it follows an +unquoted \verb|"| that is not part of a \verb|\"| command. A quoted +\verb|!|, \verb|@|, or \verb/|/ character is treated like an +ordinary character rather than having its usual meaning. The +\verb|"| preceding a quoted character is deleted before the +entries are alphabetized. +\begin{iexample}% +\index{examples} +Page 2: & \verb|\index{exclaim ("!)}| \\ +Page 3: & \verb|\index{exclaim ("!)!loudly}| \\ +Page 4: & \verb|\index{fur@f\"{u}r}| \\ +Page 5: & \verb|\index{quote (\verb+""+)}| +\sindex +exclaim (!), 2 \\ +\sitem loudly, 3\\ +f\"{u}r, 4\\ +quote (\verb+""+), 5 +\end{iexample} + + +\MakeIndex\ regards spaces% +\index{index!spaces in} +as ordinary characters when alphabetizing the +entries and deciding whether two entries are the same. Thus, letting +``\verb*| |'' denote a space character, the commands +\verb*|\index{gnu}|, \verb*|\index{ gnu}|, and \verb*|\index{gnu }| +produce three separate entries, the first appearing near the beginning +of the index, since \verb*| | comes before any letter in \MakeIndex's +``alphabetical'' order. All three entries look the same when +printed, since \LaTeX\ ignores extra spaces in the input. Similarly, + \verb*|\index{a space}| and \verb*|\index{a space}| produce two +different entries that look the same when printed. Do not +split the argument of an \verb|\index| command across lines in the +input file.% +\index{index!don't split across lines} + + + +\section{Error Messages} \label{sec:errors} +\index{error messages} + +\MakeIndex\ types out on the terminal the number of lines read and +written and how many errors were found. Message to identify the error +are written on a file with extension +{\tt ilg}.% +\index{ilg file@{\tt ilg} file} +\index{files@files!{\tt ilg}} +There are two phases +in which \MakeIndex\ can produce error messages: when it is reading the +{\tt idx}% +\index{idx file@{\tt idx} file} +\index{files@files!{\tt idx}} +file, and when it is writing the +{\tt ind}% +\index{ind file@{\tt ind} file} +\index{files@files!{\tt ind}} +file. Each error +message prints the nature of the error followed by a line number, +identifying where in the file the error occurs. In the reading phase, +the line number refers to the {\tt idx} file; in the writing phase, it +refers to the {\tt ind} file. + +\subsection{Errors in Reading Phase} + +\subsubsection*{\tt Extra `!' at position ...} + +\index{"! character@\verb="!= character} +The \verb|\index| command's argument has more than two unquoted +\verb|!| characters. Perhaps some of them should be quoted. + +\subsubsection*{\tt Extra `@' at position ...} + +\index{"@ character@\verb="@= character} +The \verb|\index| command argument has two or more unquoted \verb|@| +characters with no intervening \verb|!|. Perhaps one of the \verb|@| +characters should be quoted. + +\subsubsection*{\tt Extra `|' at position ...} + +\index{"! character@\verb="!= character} +The \verb|\index| command's argument has more than one unquoted \verb|!| +characters. Perhaps the extras should be quoted. + +\subsubsection*{\tt Illegal null field} + +The \verb|\index| command argument doesn't make sense because some +string is null that shouldn't be. The command \verb|\index{!big}| will +produce this error, since it specifies a subentry ``big'' with no +entry. Similarly, the command \verb|\index{@big}| is incorrect because +it specifies a null string for alphabetizing. + +%\subsubsection*{\tt No \symbol{'134}indexentry} +% +%Each line of an {\tt idx} file written by \LaTeX\ should contain an +%\verb|\indexentry| command. \MakeIndex\ has found a line in the {\tt idx} +%file that does not contain an \verb|\indexentry| command. The {\tt +%idx} file has probably been corrupted. +% +%\subsubsection*{\tt Missing \symbol{'173}} +% +%\MakeIndex\ believes that the braces in the argument of the \verb|\index| +%command are not properly matched. Since \LaTeX\ must +%have thought that the braces were properly matched, the problem +%is probably due to a corrupted {\tt idx} file. +% +%\subsubsection*{\tt Missing \symbol{'175}} +% +%See ``{\tt Missing \symbol{'173}}'' error. + +\subsubsection*{\tt Argument ... too long (max 1024).} + +\index{index!long arguments} +Your document contained an \verb|\index| command with a very long +argument. You probably forgot the right brace that was supposed +to delimit the argument. + +\subsubsection*{Other errors} + +\MakeIndex\ can produce a variety of other error messages indicating +that something is seriously wrong with the +{\tt idx}% +\index{idx file@{\tt idx} file} +\index{files@files!{\tt idx}} +file. If you +get one, it probably means that the {\tt idx} file was corrupted in +some way. If \LaTeX\ did not generate any errors when it created +the {\tt idx} file, then it is highly unlikely to have produced +a bad {\tt idx} file. If it did, you'll have to examine the +{\tt idx} file to figure out what went wrong. + + +\subsection{Errors in Writing Phase} + +\subsubsection*{\tt Unmatched range opening operator} + +An \verb/\index{...|(}/ command was not followed by a matching + \linebreak%%%%% +\verb/\index{...|)}/ command. The ``\verb|...|'' in the two +commands must be completely identical. + + +\subsubsection*{\tt Unmatched range closing operator } + +An \verb/\index{...|(}/ command was not preceded by a matching + \linebreak%%%%% +\verb/\index{...|)}/ command. + +\subsubsection*{\tt Extra range opening operator } + +Two \verb/\index{...|(}/ commands appear in the document with no intervening +\verb/\index{...|)}/ command. + + + +\subsubsection*{\tt Inconsistent page encapsulator ... within range} + +\MakeIndex\ has been instructed to include a page +range% +\index{page range} +\index{range!of pages} +for an entry +and a single page number within that range that is formatted +differently---for example, by having a +\verb+\index{gnu|ii}+ command between a \verb+\index{gnu|(}+ +and a \verb+\index{gnu|)}+ command. + + +\subsubsection*{\tt Conflicting entries} + +\index{index!conflicting entries in} +\MakeIndex\ thinks it has been instructed to print the same page number +twice in two different ways---for example, by the commands +\verb|\index{gnu}| and \verb/\index{gnu|(see{...}}/ appearing on the +same page. + + + +\section*{Acknowledgements} + +\MakeIndex\ is a C +\index{C language} + program written by Pehong Chen,% +\index{Chen, Pehong} +with a little +advice from me. It was inspired by a program written by Mike Urban,% +\index{Urban, Mike} +which was based on a program written by Marshall Rose.% +\index{Rose, Marshall} + Perhaps someday +someone will rewrite \MakeIndex\ in Web,% +\index{Web language} +\index{Pascal language|see{Web language}} +\index{makeindex@\MakeIndex!in Web language} +making it available to all +\LaTeX\ users. + +This version of {\tt makeindex.\-tex}, {\tt test.\-tex}, has index +entries generated by Nelson H.F.~Beebe% +\index{Beebe, Nelson H.F.} +to serve as a test file for the +\MakeIndex{} program. + +\index{mistakes|see{errors}} +\index{page breaks|see{ambiguities}} +\index{range|see{page}} + + +%\printindex +\input{\jobname.ind} +\end{document} diff --git a/indexing/makeindex/test/tort.idx b/indexing/makeindex/test/tort.idx new file mode 100644 index 0000000000..207fa68136 --- /dev/null +++ b/indexing/makeindex/test/tort.idx @@ -0,0 +1,44 @@ +\indexentry{@illegal-null-field}{9} +\indexentry{!illegal-null-field}{10} +\indexentry{too-may-ats@x@}{10} +\indexentry{too-may-bangs!x!y!z}{10} +\indexentry{too-may-bars|x|}{10} + +\indexentry{incons-entries|xx}{6} +\indexentry{incons-entries}{6} + +\indexentry{implicit-range}{10} +\indexentry{implicit-range}{11} +\indexentry{implicit-range}{12} + +\indexentry{missing(|)}{6} +\indexentry{missing)|(}{6} + +\indexentry{ok-encaps|(ii}{5} +\indexentry{ok-encaps|ii}{6} +\indexentry{ok-encaps|)}{7} + +\indexentry{bad-encaps|(ii}{5} +\indexentry{bad-encaps|ii}{6} +\indexentry{bad-encaps|)iii}{7} + +\indexentry{incons-encaps|(}{5} +\indexentry{incons-encaps|ii}{6} +\indexentry{incons-encaps|)}{7} + +\indexentry{incons-encaps2|(}{5} +\indexentry{incons-encaps2|ii}{5} +\indexentry{incons-encaps2|)}{5} + +\indexentry{mixed-range|(}{i} +\indexentry{mixed-range|)}{6} + +\indexentry{mixed-range1|(}{i} +\indexentry{mixed-range1}{iv} +\indexentry{mixed-range1}{3} +\indexentry{mixed-range1|)}{6} + +\indexentry{mixed-range2|(}{i} +\indexentry{mixed-range2|xx}{ii} +\indexentry{mixed-range2|yy}{3} +\indexentry{mixed-range2|)}{6} diff --git a/indexing/makeindex/test/vmsdiff.com b/indexing/makeindex/test/vmsdiff.com new file mode 100644 index 0000000000..dde35d7c67 --- /dev/null +++ b/indexing/makeindex/test/vmsdiff.com @@ -0,0 +1,137 @@ +$ ! Test of MakeIndex for VAX VMS +$ ! [12-Sep-1991] +$ ! +$ ! ****** Edit this line to suit local conventions ***** +$ makeindex :== $public$disk:[beebe.makeindex.src]makeindex.exe +$ +$ write sys$output "==================================================" +$ write sys$output "Expect only letter case differences in the output" +$ write sys$output "==================================================" +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = b209a" +$ makeindex b209a +$ diff b209a.ind ok-b209a.ind +$ diff b209a.ilg ok-b209a.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = b209b" +$ makeindex b209b +$ diff b209b.ind ok-b209b.ind +$ diff b209b.ilg ok-b209b.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = b209c" +$ makeindex b209c +$ diff b209c.ind ok-b209c.ind +$ diff b209c.ilg ok-b209c.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = b209d" +$ makeindex b209d +$ diff b209d.ind ok-b209d.ind +$ diff b209d.ilg ok-b209d.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = b209e" +$ makeindex b209e +$ diff b209e.ind ok-b209e.ind +$ diff b209e.ilg ok-b209e.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = b209f" +$ makeindex b209f +$ diff b209f.ind ok-b209f.ind +$ diff b209f.ilg ok-b209f.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = b211a" +$ makeindex b211a +$ diff b211a.ind ok-b211a.ind +$ diff b211a.ilg ok-b211a.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = b211d" +$ makeindex b211d +$ diff b211d.ind ok-b211d.ind +$ diff b211d.ilg ok-b211d.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = b211e" +$ makeindex b211e +$ diff b211e.ind ok-b211e.ind +$ diff b211e.ilg ok-b211e.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = b211f" +$ makeindex b211f +$ diff b211f.ind ok-b211f.ind +$ diff b211f.ilg ok-b211f.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = b211g" +$ makeindex b211g +$ diff b211g.ind ok-b211g.ind +$ diff b211g.ilg ok-b211g.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = b211h" +$ makeindex b211h +$ diff b211h.ind ok-b211h.ind +$ diff b211h.ilg ok-b211h.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = book" +$ makeindex book +$ diff book.ind ok-book.ind +$ diff book.ilg ok-book.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = test" +$ makeindex test +$ diff test.ind ok-test.ind +$ diff test.ilg ok-test.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = tort" +$ makeindex tort +$ diff tort.ind ok-tort.ind +$ diff tort.ilg ok-tort.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = b211b (German sort option)" +$ makeindex -s b211b.ist -g b211b +$ diff b211b.ind ok-b211b.ind +$ diff b211b.ilg ok-b211b.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = b210a (Private style file)" +$ makeindex -s b210a.ist b210a +$ diff b210a.ind ok-b210a.ind +$ diff b210a.ilg ok-b210a.ilg +$ ! +$ ! +$ write sys$output "==================================================" +$ write sys$output "test file = b211c (Private style file)" +$ makeindex -s b211c.ist b211c +$ diff b211c.ind ok-b211c.ind +$ diff b211c.ilg ok-b211c.ilg +$ ! +$ ! diff --git a/indexing/makeindex/troff/ixmac b/indexing/makeindex/troff/ixmac new file mode 100644 index 0000000000..7205947fad --- /dev/null +++ b/indexing/makeindex/troff/ixmac @@ -0,0 +1,6 @@ +. +.de IX +.ie '\\n(.z'' .tm IX: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 {\\n(PN} +.el \\!.IX \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 {\\n(PN} +.. + diff --git a/indexing/makeindex/troff/makeind b/indexing/makeindex/troff/makeind new file mode 100644 index 0000000000..a3621f0c6b --- /dev/null +++ b/indexing/makeindex/troff/makeind @@ -0,0 +1,23 @@ +#!/bin/sh + +extract="ptroff -ms -t" +grep=egrep +in=$1 +out=/dev/null +base=`echo $in | sed 's/\(.*\)\..*/\1/'` +idx=$base.idx +tmp=/tmp/$idx +cmd='^IX:' +sty = troff.ist + +echo -n "Extracting index terms from $in..." +$extract $in > $out 2> $tmp +echo "done" + +echo -n "Writing index terms to $idx..." +$grep $cmd $tmp > $idx +rm -f $tmp +echo "done" + +makeindex -s $sty $idx + diff --git a/indexing/makeindex/troff/sample.idx b/indexing/makeindex/troff/sample.idx new file mode 100644 index 0000000000..1ac7603a64 --- /dev/null +++ b/indexing/makeindex/troff/sample.idx @@ -0,0 +1,4 @@ +IX: {indexing!programs!C language} {1} +IX: {makeindex@\fImakeindex\fP(1L)} {1} +IX: {Knuth} {2} +IX: {typesetting!computer-aided} {2} diff --git a/indexing/makeindex/troff/sample.ilg b/indexing/makeindex/troff/sample.ilg new file mode 100644 index 0000000000..5b65bbba86 --- /dev/null +++ b/indexing/makeindex/troff/sample.ilg @@ -0,0 +1,7 @@ +This is makeindex, portable version 2.6 [7-14-88]. +Scanning style file troff.ist..........................done (26 attributes redefined, 0 ignored). +Scanning input file sample.idx....done (4 entries accepted, 0 rejected). +Sorting entries....done (9 comparisons). +Generating output file sample.ind....done (71 lines written, 0 warnings). +Output written in sample.ind. +Transcript written in sample.ilg. diff --git a/indexing/makeindex/troff/sample.ind b/indexing/makeindex/troff/sample.ind new file mode 100644 index 0000000000..48fdd068f2 --- /dev/null +++ b/indexing/makeindex/troff/sample.ind @@ -0,0 +1,72 @@ +.\" start of index output + +.SH +.ce +\s+2INDEX\s-2 + +.2C +.de IS +.sp 0.5 +\s+2\fB +.ce +.. +.de IE +.sp 0.5 +\s-2\fP +.. +.de I1 +.ti 0.25i +.. +.de 1I +.ti 0.25i +.. +.de I2 +.ti 0.5i +.. +.de 2I +.ti 0.5i +.. + + + +.IS +I +.IE + +.br +indexing +.1I +programs +.2I +C language, 1. +.sp + + +.IS +K +.IE + +.br +Knuth, 2. +.sp + + +.IS +M +.IE + +.br +\fImakeindex\fP(1L), 1. +.sp + + +.IS +T +.IE + +.br +typesetting +.1I +computer-aided, 2. + +.\" end of index output
\ No newline at end of file diff --git a/indexing/makeindex/troff/sample.txt b/indexing/makeindex/troff/sample.txt new file mode 100644 index 0000000000..a30633e6d3 --- /dev/null +++ b/indexing/makeindex/troff/sample.txt @@ -0,0 +1,14 @@ +. +.de IX +.ie '\\n(.z'' .tm IX: \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 {\\n(PN} +.el \\!.IX \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9 {\\n(PN} +.. + +This is a sample file to test the \fImakeindex\fP(1L) program, and see +.IX {indexing!programs!C language} +.IX {makeindex@\fImakeindex\fP(1L)} +.bp +.rs +.IX {Knuth} +.IX {typesetting!computer-aided} +how well if functions in the \fItroff\fP(1) environment. diff --git a/indexing/makeindex/troff/troff.ist b/indexing/makeindex/troff/troff.ist new file mode 100644 index 0000000000..9e0df84d40 --- /dev/null +++ b/indexing/makeindex/troff/troff.ist @@ -0,0 +1,54 @@ +keyword "IX:" +preamble +".\\\" start of index output + +.SH +.ce +\\s+2INDEX\\s-2 + +.2C +.de IS +.sp 0.5 +\\s+2\\fB +.ce +.. +.de IE +.sp 0.5 +\\s-2\\fP +.. +.de I1 +.ti 0.25i +.. +.de 1I +.ti 0.25i +.. +.de I2 +.ti 0.5i +.. +.de 2I +.ti 0.5i +..\n" +postamble "\n\n.\\\" end of index output\n" +setpage_prefix "\n.nr % 1\n" +setpage_suffix "" +group_skip "\n.sp" +headings_flag 1 +heading_prefix "\n\n\n.IS\n" +heading_suffix "\n.IE\n" +item_0 "\n.br\n" +item_1 "\n.I1\n" +item_2 "\n.I2\n" +item_01 "\n.I1\n" +item_x1 "\n.1I\n" +item_12 "\n.I2\n" +item_x2 "\n.2I\n" +delim_0 ", " +delim_1 ", " +delim_2 ", " +delim_r "-" +delim_t "." +encap_prefix "\\fB" +encap_infix "" +encap_suffix "\\fP" +indent_space " " +indent_length 8 |