Template:LaTeX/Top A useful feature of many books, index is an alphabetical list of words and expressions with the pages of the book upon which they are to be found. LaTeX supports the creation of indices with its package makeidx, and its support program
makeindex, called on some systems
- 1 使用 makeidx
- 2 Abbreviation list
- 3 Multiple indexes
- 4 Adding Index to Table Of Contents
- 5 International indexes
To enable the indexing feature of LaTeX, the makeidx package must be loaded in the preamble with: Template:LaTeX/Usage
and the special indexing commands must be enabled by putting the Template:LaTeX/Usage
command into the input file preamble. This should be done within the preamble, since it tells LaTeX to create the files needed for indexing. To tell LaTeX what to index, use Template:LaTeX/Usage
where key is the index entry and does not appear in the final layout. You enter the index commands at the points in the text that you want to be referenced in the index, likely near the reason for the key. For example, the text Template:LaTeX/Usage can be re-written as Template:LaTeX/Usage to create an entry called 'Fourier Series' with a reference to the target page. Multiple uses of \index with the same key on different pages will add those target pages to the same index entry.
To show the index within the document, merely use the command Template:LaTeX/Usage It is common to place it at the end of the document. The default index format is two columns.
The showidx package that comes with LaTeX prints out all index entries in the left margin of the text. This is quite useful for proofreading a document and verifying the index.
When the input file is processed with LaTeX, each ± command writes an appropriate index entry, together with the current page number, to a special file. The file has the same name as the LaTeX input file, but a different extension (
.idx file can then be processed with the
makeindex program. Type in the command line:
Note that filename is without extension: the program will look for filename.idx and use that. You can optionally pass filename.idx directly to the program as an argument. The
makeindex program generates a sorted index with the same base file name, but this time with the extension
.ind. If now the LaTeX input file is processed again, this sorted index gets included into the document at the point where LaTeX finds ±.
The index created by latex with the default options may not look as nice or as suitable as you would like it. To improve the looks of the index
makeindex comes with a set of style files, usually located somewhere in the tex directory structure, usually below the
makeindex subdirectory. To tell makeindex to use a specific style file, run it with the command line option:
makeindex -s <style file> filename
If you use a GUI for compiling latex and index files, you may have to set this in the options. Here are some configuration tips for typical tools:
MakeIndex Settings in WinEdt[编辑]
Say you want to add an index style file named
- Texify/PDFTexify: Options→Execution Modes→Accessories→PDFTeXify, add to the Switches:
- MakeIndex alone: Options->Execution Modes→Accessories→MakeIndex, add to command line:
Below are examples of ± entries:
|±}||hello, 1||Plain entry|
|±}||Peter, 3||Subentry under 'hello'|
|±}}||Sam, 2||Formatted entry|
|±}}||Lin, 7||Same as above|
|±}||Jenny, 3||Formatted page number|
|±}||Joe, 5||Same as above|
|±}||école, 4||Handling of accents|
|±}}||Peter, see hello||Cross-references|
|±}}||Jen, see also Jenny||Same as above|
If some entry has subsections, these can be marked off with
!. For example, Template:LaTeX/Usage would an index with 'cp850' categorized under 'input' (which itself is categorized into 'encodings'). These are called subsubentries and subentries in makeidx terminology.
In order to determine how an index key is sorted, place a value to sort by before the key with the
@ as a separator. This is useful if there is any formatting or math mode, so one example may be Template:LaTeX/Usage so that the entry in the index will show as '' but be sorted as 'F'.
Changing Page Number Style[编辑]
To change the formatting of a page number, append a
| and the name of some command which does the formatting. This command should only accept one argument.
For example, if on page 3 of a book you introduce bulldogs and include the command Template:LaTeX/Usage and on page 10 of the same book you wish to show the main section on bulldogs with a bold page number, use Template:LaTeX/Usage This will appear in the index as bulldog, 3, 10
If you use
texindy in place of
makeindex, the classified entries will be sorted too, such that all the bolded entries will be placed before all others by default.
To perform multi-page indexing, add a
|) to the end of the ± command, as in Template:LaTeX/Usage The entry in the index for the subentry 'History' will be the range of pages between the two ± commands.
Using special characters[编辑]
In order to place values with
| in the ± command, one must quote these characters by using a double quotation mark (") and can only show " by quoting it (i.e., a key for " would be ±}).
This rule does not hold for \", so to put ä in the index, one may still use ±}}.
Note that the ± command can affect your layout if not used carefully. Here is an example:
To enable the Nomenclature feature of LaTeX, the nomencl package must be loaded in the preamble with: Template:LaTeX/Usage
Issue the ± command for each symbol you want to have included in the nomenclature list. The best place for this command is immediately after you introduce the symbol for the ﬁrst time. Put ± at the place you want to have your nomenclature list.
Run LaTeX 2 times then
makeindex filename.nlo -s nomencl.ist -o filename.nls
followed by running LaTeX once again.
To add the abbreviation list to the table of content, Template:LaTeX/Parameter option can be used when declare the nomencl package, i.e. Template:LaTeX/Usage instead of using the code in Adding Index to Table Of Contents section.
The title of the list can be changed using the following command: Template:LaTeX/Usage
If you need multiple indexes you can use the package multind .
This package provides the same commands as makeidx, but now you also have to pass a name as the first argument to every command. Template:LaTeX/Usage
Adding Index to Table Of Contents[编辑]
By default, Index won't show in Table Of Contents, you have to add it manually.
To add index as a chapter, use this commands: Template:LaTeX/Usage
If you use book class, you may want to start it on odd page, for this, use ±.
If you want to sort entries that have international characters (such as ő, ą, ó, ç, etc.) you may find that the sorting "is not quite right". In most cases the characters are treated as special characters and end up in the same group as @, ¶ or µ. In most languages that use Latin alphabet it's not correct.
Unfortunately, current version of
xindy and hyperref are incompatible. When you use Template:LaTeX/Parameter or Template:LaTeX/Parameter modifiers,
texindy will print error message:
unknown cross-reference-class `hyperindexformat'! (ignored) and won't add those pages to index. Work-around for this bug is described on the talk page.
To generate international index file you have to use
texindy instead of
xindy is a much more extensible and robust indexing system than the
But what is much more important, it can properly sort index files in many languages, not only english.
Unfortunately, generating indexes ready to use by LaTeX using
xindy is a bit more complicated than with
First, we need to know in what encoding the .tex project file is saved. In most cases it will be UTF-8 or ISO-8859-1, though if you live, for example in Poland it may be ISO-8859-2 or CP-1250. Check the parameter to the
Second, we need to know which language is prominently used in our document. xindy can natively sort indexes in albanian, dutch, hebrew, latin, norwegian, slovak, belarusian, english, georgian, hungarian, latvian, polish, slovenian, vietnamese, bulgarian, esperanto, german, icelandic, lithuanian, portuguese, spanish, croatian, estonian, greek, italian, romanian, sorbian, swedish, czech, finnish, gypsy, klingon, macedonian, russian, turkish, danish, french, hausa, kurdish, mongolian, serbian and ukrainian.
I don't know if other languages have similar problems, but with polish, if your
.tex is saved using UTF-8, the
.ind produced by texindy will be encoded in ISO-8859-2 if you use only
-L polish. While it's not a problem for entries containing polish letters, as LaTeX internally encodes all letters to plain ASCII, it is for accented letters at beginning of words, they create new index entry groups, if you have, for example an "średnia" entry, you'll get a "Ś" encoded in ISO-8859-2
.ind file. LaTeX doesn't like if part of the file is in UTF-8 and part is in IS-8859-2. The obvious solution (adding
-C utf8) doesn't work,
texindy stops with
ERROR: Could not find file "tex/inputenc/utf8.xdy"
error. The fix this, you have to load the definiton style for the headings using
In the end we have to run such command:
texindy -L polish -M lang/polish/utf8 filename.idx
xindy in kile[编辑]
texindy instead of
makeindex in kile, you have to either redefine the MakeIndex tool in Settings → Configure Kile... → Tools → Build, or define new tool and redefine other tools to use it.
xindy definition should look similar to this:
General: Command: texindy Options: -L polish -M lang/polish/utf8 -I latex '%S.idx' Advanced: Type: Run Outside of Kile Class: Compile Source extension: idx Target extension: ind Target file: <empty> Relative dir: <empty> State: Editor Menu: Add tool to Build menu: Compile Icon: the one you like