MakeIndex - ein Indexprozessor fuer LaTeX
MakeIndex ist ein allgemein anwendbarer Indexprozessor. Als Eingabe dienen ihm eine oder mehrere ungeordnete Indexdateien, wie sie gewöhnlich von einem Formatierer erzeugt werden. Er sortiert die enthaltenen Indexeinträge und generiert die aktuelle Indexdatei. MakeIndex ist an kein spezielles Format seiner Eingabedateien gebunden. Als Voreinstellung wird das .idx-File-Format, welches LaTeX erzeugt, angenommen. Das Format der Eingabedatei kann in einem Style-File neu definiert, d.h. an die Erfordernisse anderer Formatierer angepaßt werden. Das Style-File legt gleichzeitig das Aussehen der zu generierenden Index-Datei fest. Innerhalb eines Indexeintrages wird eine Definition von Untereinträgen bis zu drei Stufen unterstützt.
Einleitung und Literatur
MakeIndex ist ein allgemein anwendbarer Indexprozessor. Als Eingabe dienen ihm eine oder mehrere ungeordnete Indexdateien, wie sie gewöhnlich von einem Formatierer erzeugt werden. Er sortiert die enthaltenen Indexeinträge und generiert die aktuelle Indexdatei. MakeIndex ist an kein spezielles Format seiner Eingabedateien gebunden. Als Voreinstellung wird das .idx-File-Format, welches LaTeX erzeugt, angenommen. Das Format der Eingabedatei kann in einem Style-File neu definiert, d.h. an die Erfordernisse anderer Formatierer angepaßt werden. Das Style-File legt gleichzeitig das Aussehen der zu generierenden Index-Datei fest. Innerhalb eines Indexeintrages wird eine Definition von Untereinträgen bis zu drei Stufen unterstützt.
Als weiterführende Literatur wird empfohlen:
[1] | H. Kopka | LaTeX-Erweiterungsmöglichkeiten | Addison-Wesley Deutschland, 1991 (2. Auflage), ISBN 3-89319-356-1 |
[2] | L. Lamport | MakeIndex - An Index Processor for LaTeX | bei den meisten Systemen als LaTeX-Datei mkind.tex oder makeindex.tex verfügbar |
Erzeugung eines Indexregisters
Allgemeine Vorgehensweise
In den folgenden Ausführungen und Beispielen werden Dateinamen verwendet, wie sie den unter DOS und UNIX üblichen Konventionen entsprechen (d.h. Dateiname und Extension sind jeweils durch einen Punkt voneinander getrennt).
Angenommen, ein Benutzer hat ein LaTeX-Dokument myfile.tex erstellt, für das er automatisch ein Indexregister generieren möchte. Um dies zu realisieren, ist wie folgt vorzugehen:
- Zuerst muß der Benutzer aus seinem Text die Begriffe selektieren, die er in sein Indexregister aufnehmen möchte. Diese Begriffe werden dort, wo sie im LaTeX-Text auftreten, durch ein \index-Kommando markiert. Die Möglichkeiten und damit verbundenen Wirkungen dieses Befehls sind genauer erklärt in den Abschnitten Definition von Indexeinträgen im LaTeX-Dokument und Erzeugung spezieller Formen von Indexeinträgen. Außerdem sind die folgenden Änderungen in myfile.tex zu tätigen:
- Im Kommando \documentstyle wird die Dokument-Style-Option makeidx ergänzt.
- In den Vorspann des Dokuments (d.h. zwischen die Kommandos \documentstyle und \begin{document}) wird das Kommando \makeindex eingetragen.
- An der Stelle des Dokuments, an der das Indexregister erscheinen soll (gewöhnlich am Ende, d.h. vor \end{document}) muß das Kommando \printindex geschrieben werden.
- Anschließend läßt er sein Dokument von LaTeX bearbeiten. Dabei wird eine ungeordnete Index-Datei angelegt, die die Extension .idx bekommt. In diese Datei wird jedesmal, wenn LaTeX im Text einen \index-Befehl findet, ein Kommando
-
\indexentry{ stichwort }{ seitennummer }
eingetragen. Es enthält das vom Benutzer festgelegte Stichwort und die Nummer der Seite, auf der der \index-Befehl definiert war.
- Die .idx-Datei wird als "ungeordnete Indexdatei" bezeichnet und ist als Eingabe für MakeIndex bestimmt. Der Stichwortprozessor kann jetzt aufgerufen werden. Er sortiert die Indexeinträge und faßt diejenigen zu gleichen Begriffen zusammen. Als Ergebnis entsteht eine "geordnete Indexdatei" mit der Extension .ind. Sie enthält die LaTeX-Befehle
- \item{...}, \subitem{...} und \subsubitem{...}, die als Argumente die in myfile.tex markierten Begriffe in geordneter Reihenfolge enthalten.
- \indexspace, die vertikale Leerräume zwischen Einträgen mit verschiedenem Anfangsbuchstaben bewirken.
- Nun muß myfile.tex nochmals mit LaTeX bearbeitet werden. Dabei wird das fertige Indexregister erzeugt und an der Stelle in das Dokument eingefügt, wo LaTeX den Befehl \printindex findet.
Ordnungskriterien
Es gibt zwei Möglichkeiten, die Indexeinträge zu sortieren:
- eine lexikographische Sortierung, wie sie für englische Texte verwendet wird (Voreinstellung). Die Sortierung erfolgt in der Reihenfolge:
- Sonderzeichen
- Zahlen (numerisch aufsteigend geordnet)
- Buchstaben (in alphabetischer Reihenfolge, Großbuchstaben rangieren vor Kleinbuchstaben)
- eine lexikographische Sortierung, wie sie die DIN-Norm 5007 für deutsche Texte vorschreibt (bei Angabe der Option -g, siehe Abschnitt Aufrufoptionen):
- Sonderzeichen
- Buchstaben (in alphabetischer Reihenfolge, Kleinbuchstaben rangieren vor Großbuchstaben). Die durch die Befehle "a, "o, "u und "s repräsentierten deutschen Sonderzeichen werden bei der Sortierung wie ä, ö, ü und ß behandelt.
- Zahlen (numerisch aufsteigend geordnet)
Die Indexeinträge können außerdem wortweise (Voreinstellung) und buchstabenweise sortiert werden. Während bei der wortweisen Sortierung die Blanks innerhalb von Begriffen logisch vor allen anderen Buchstaben stehen, werden sie bei der buchstabenweisen Sortierung ignoriert.
Definition von Indexeinträgen im LaTeX-Dokument
Jedes \index-Kommando im Dokument veranlaßt LaTeX zu einem Indexeintrag in die ungeordnete Indexdatei. Diese Einträge enthalten folgende Informationen:
- das Stichwort, das im Indexregister erscheinen soll
- evtl. Untereinträge bis zu drei Stufen, die einzelnen Stichwörter sind durch das Zeichen ! getrennt
- die Nummer der Seite, auf der das entsprechende \index-Kommando spezifiziert wurde
Einfache Einträge ins Indexregister werden durch
Seite vi: \index{Maus|(} Maus, vi-x, 22 Seite x: \index{Maus|)} --> Seite 22: \index{Maus}
erreicht. Die runden Klammern dienen bei Festlegung einer Reihe von aufeinanderfolgenden Seiten (hier vi-x ) dazu, die jeweils erste (durch |( ) bzw. letzte Seite (durch |) ) zu definieren.
Eine hierarchische Gliederung von Indexeinträgen kann wie folgt realisiert werden:
Seite 4: \index{Tier!Maus|see{Ratte}} Tier Seite 8: \index{Tier!Maus!Beine} Maus, siehe Ratte Seite 10: \index{Tier!Maus!Schwanz} --> Beine, 8 Seite 25: \index{Tier!Ratte} Schwanz, 10 Seite 29: \index{Tier!Pferd} Pferd, 29 Ratte, 25
Durch das Kommando \index{...|see{...}} wird ein Querverweis erzeugt. Zu beachten ist, daß MakeIndex aus dem Textstück |see{...} den englischen Text see generiert. Für deutschsprachige Texte, in denen gewöhnlich das Wort siehe erscheint (wie im obigen Beispiel), ist dafür der Befehl
\renewcommand{\seeterm}{siehe}
nötig. Diese Umschaltung wird in german.sty realisiert. Da dem see-Eintrag keine Seitennummer zugeordnet wird, ist es gleichgültig, an welcher Stelle im Dokument (nach \begin{document} er erscheint.
Für das zuletzt aufgeführte Beispiel würde eine .idx-Datei mit folgenden Einträgen erzeugt:
\indexentry{Tier!Maus|see{Ratte}}{4} \indexentry{Tier!Maus!Beine}{8} \indexentry{Tier!Maus!Schwanz}{10} \indexentry{Tier!Ratte}{25} \indexentry{Tier!Pferd}{29}
MakeIndex sortiert die ungeordneten Indexeinträge und verpackt sie (bei Verwendung der Voreinstellungen) in LaTeX-Kommandos. Diese werden in der geordneten Indexdatei gespeichert, die für unser Beispiel folgende Zeilen enthielte:
\item Tier \subitem Maus, \see{Ratte} \subsubitem Beine, 8 \subsubitem Schwanz, 10 \subitem Pferd, 29 \subitem Ratte, 25
Erzeugung spezieller Formen von Indexeinträgen
Maskierung von Zeichen
Die Spezialsymbole ! @ | werden von MakeIndex als Sonderzeichen interpretiert (siehe Abschnitt Die MakeIndex-Styledatei). Sollen sie als normaler Text im Indexregister erscheinen, müssen sie durch den "quote"-Operator " maskiert werden, d.h. sie sind in einem \index-Befehl als "! "@ "| zu schreiben. So kann aus
Seite 1: \index{alpha"@beta}
nach Bearbeitung durch MakeIndex der Eintrag
\item alpha@beta, 1
entstehen. Das Maskierungszeichen hebt somit die Sonderrolle auf, die die Spezialsymbole für MakeIndex haben.
Definition von Sortier-Schlüsseln
Will man innerhalb von Indexeinträgen LaTeX-Kommandos verwenden oder auf die Positionierung eines Indexeintrages direkt Einfluß nehmen, muß man für das entsprechende Stichwort einen Sortierschlüssel festlegen:
Seite 1: \index{alpha@{\it alpha\/} Seite 4: \index{Metall!Eisen@Fe}
Die Grundidee hierbei ist, daß die Zeichenkette vor dem @ die Position des Indexeintrages innerhalb des Indexregisters bestimmt, während die Zeichenkette nach dem @ ("actual"-Operator) als aktueller Indexeintrag behandelt wird. Es ist zu beachten, daß bei Definition von \index-Kommandos mit demselben Schlüssel, jedoch einmal unter Benutzung des "actual"-Operators und einmal ohne diesen, zwei unterschiedliche Einträge im Indexregister entstehen. Für das obige Beispiel würden in der .ind-Datei folgende Indexeinträge erscheinen:
\item {\it alpha\/}, 1 \item Metall \subitem Fe, 4
Seitennummern in verschiedenen Schriftarten
Es besteht die Möglichkeit, eine Seitennummer mit einem besonderen Kommando zu umschließen. Dies realisiert der "encap"-Operator| .
Beispielsweise entsteht bei Benutzung der MakeIndex-Voreinstellung aus der auf Seite 14 befindlichen Zeile
\index{alpha|bold}
der Eintrag
\item alpha \bold{14}
Fügt der Benutzer in den Vorspann seines Dokuments ein Kommando
\newcommand{\bold}[1]{{\bf #1}}
ein, welches festlegt, daß \bold{n} zu {\bf n} expandiert, erscheint die Seitennummer in Fettdruck. Seitennummern in verschiedenen Fonts können nützlich sein, um zusätzliche Informationen darüber zu vermitteln, worauf sich ein Index bezieht. Möglicherweise könnte man bei ein und demselben Schlüssel die Seite, auf der seine Definition erscheint, in einer anderen Schriftart setzen als die Seite, auf der ein Beispiel angegeben ist, usw.
Auch bei expliziter Definition einer Folge von Seiten ist es erlaubt, verschiedene Schrifttypen für die Seitennumerierung festzulegen. So wird aus
Seite 1: \index{alpha|(bold} Seite 5: \index{alpha|)}
der Eintrag
\item alpha, \bold{1--5}
generiert. Eine weitere, mitunter sinnvolle Anwendung könnte folgende Kombination sein:
Seite 1: \index{alpha|(} Seite 3: \index{alpha|bold} Seite 5: \index{alpha|)}
führt zu Zeile
\item alpha, \bold{3}, 1--5
Allerdings schreibt MakeIndex hierbei eine Warnung in die zugehörige Transcript-Datei, daß eine inkonsistente Seitenbereichsangabe gefunden wurde.
Ein explizit definierter Seitenbereich, der mit einer römischen Seitennummer beginnt und mit einer arabischen endet, wird ebenfalls als fehlerhaft betrachtet. In einem solchen Falle wird der Seitenbereich so geteilt, daß eine römische und eine arabische Seitenfolge erscheint. Die Anweisungen
Seite i: \index{alpha|(} Seite iv: \index{alpha} Seite 3: \index{alpha} Seite 7 \index{alpha|)}
werden zu
\item alpha, i--iv, 3--7
zusammengefaßt, bei gleichzeitiger Ausgabe einer Warnung in die Transcript-Datei.
Indexeinträge mit deutschen Sonderzeichen
Bei deutschen Texten führt die Benutzung des quote-Operators" für Maskierungen zu einer Inkompatibilität mit den Definitionen in der Datei german.sty, bei denen das Zeichen" als spezielles Umschaltzeichen für die Erzeugung der Umlaute bzw. des ß-Zeichens dient.
Korrekte Indexeinträge mit deutschen Sonderzeichen erhält man folgendermaßen:
- Eine Möglichkeit ist die Verwendung der TeX-Befehle \"a \"o \"u usw.
- Eine weitere Verfahrensweise, um deutsche Sondersymbole zu erhalten, ist die Maskierung der Maskierungszeichens selbst. Das bedeutet, daß die Anführungszeichen zur Benutzung der Definitionen in german.sty innerhalb eines \index-Befehls doppelt zu schreiben sind (""a ""o ""u usw.). Die Leistungseigenschaften von german.sty werden dann richtig angesprochen. Allerdings hat die Variante einen Nachteil. Zwar werden die Umlaute bzw. das ß korrekt generiert, sie werden jedoch beim Sortiervorgang an die falsche Position gesetzt. Der Grund hierfür ist, daß " als Sonderzeichen lexikalisch vor allen Buchstaben erscheint. Um die richtige Reihenfolge bei der Sortierung sicherzustellen, muß bei diesen Wörtern stets ein Sortierschlüssel definiert werden. Aus den \index-Befehlen
-
Seite 1: \index{Safe} Seite 4: \index{Sage@S""age} Seite 9: \index{S""age}
entstehen Register-Einträge in folgender Reihenfolge:
\item S"age, 9 \item Safe, 1 \item S"age, 4
Die Befehle \index{S""age} und \index{Sage@S""age} erzeugen getrennt Einträge.
- Ab Version 2.11 bietet MakeIndex die Option -g ("german ordering"). Sie veranlaßt eine Sortierung der Indexeinträge entsprechend der Norm DIN 5007 (siehe Abschnitt Ordnungskriterien). Außerdem wird MakeIndex durch diese Option befähigt, Einträge mit deutschen TeX-Kommandos für Umlaute und ß ("a, "o, "u, "s) zu bearbeiten. Sie werden wie ä, ö, ü bzw. ß eingeordnet. Da das Zeichen " dem Indexprozessor als "quote"-Operator dient, muß dieser in einer MakeIndex-Styledatei umdefiniert werden. Das erfolgt (z.B. für die Festlegung des + als neuen "quote"-Operator) durch die Zeile
-
quote '+'
Anschließend können die deutschen Sonderzeichen wie gewohnt eingegeben werden.
Der Aufruf von MakeIndex an LRZ-Rechnern
... unter DOS / Windows
MakeIndex liegt in X:\PCTEX.21 und wird mit
MAKEINDX [-cglqr][-s sty][-o ind][-t log][-p no] idx0 [idx1...]
aufgerufen.
... unter UNIX (Sun, HP, IBM)
MakeIndex liegt in /client/bin und wird mit
makeindex [-cgilqr][-s sty][-o ind][-t log][-p no] [idx0 idx1...]
aufgerufen.
Aufrufoptionen
Durch die einzelnen Optionen wird folgendes bewirkt:
Option |
Erläuterung |
||||||
---|---|---|---|---|---|---|---|
-c | Alle Leerzeichen werden aus den Stichworten entfernt. Als Voreinstellung werden Leerzeichen bei der Sortierung berücksichtigt und auch im Indexeintrag mit geschrieben. Die Option -c unterdrückt führende und nachfolgende Leerzeichen sowie Tabulatorsprünge. Mehrere Leerzeichen zwischen einzelnen Wörtern eines Indexeintrages werden zu einem einzigen komprimiert. | ||||||
-g | "german ordering" (siehe Abschnitte Ordnungskriterien und Indexeinträge mit deutschen Sonderzeichen ) | ||||||
-i | Die Eingabe wird von "stdin" gelesen. Ist bei Verwendung dieser Option keine Ausgabedatei (mit -o) definiert, erfolgt die Ausgabe der geordneten Indexdatei nach "stdout". (Die Option ist nur unter UNIX verwendbar.) | ||||||
-l | Die Sortierung der Indexeinträge erfolgt buchstabenweise. | ||||||
-o ind | Die Option legt den Namen der MakeIndex-Ausgabedatei fest. Bei Fehlen der Option wird er aus dem Namen von idx0 durch Anhängen der Extension .ind gebildet. | ||||||
-p no |
Die Ausgabedatei beginnt bei Seitennummer no. Das ist dann
sinnvoll, wenn die Indexdatei separat formatiert wird. Für
no sind positive ganze Zahlen sowie die Eintragungen
any, odd und even erlaubt. Bei diesen
Spezialfällen wird die Nummer der ersten Seite des Indexregisters
aus der zugehörigen Transcript-Datei gewonnen. Die letzte Seite der
LaTeX-Quelldatei wird dabei wie folgt bestimmt: Die
Transcript-Datei wird rückwärts bis zum ersten Auftreten einer in
eckige Klammern eingeschlossenen ganzen Zahl durchsucht. Falls
keine solche Seitennummer oder kein Transcript-File gefunden werden
kann, erfolgt keine Festlegung einer Startseite. Den drei
speziellen Eintragungen für no kommen folgende Bedeutungen
zu:
|
||||||
-q | "quiet mode", d.h. es werden keine Meldungen auf dem Bildschirm angezeigt. Diese werden aber nach wie vor in die Transcript-Datei (Extension .ilg) eingetragen. | ||||||
-r | Diese Option unterdrückt eine Zusammenfassung der Seitenangaben zu einem Bereich, falls der entsprechende Indexeintrag auf drei oder mehr aufeinanderfolgenden Seiten auftritt (z.B. 1-5). Es werden nur dann Seitenbereiche erzeugt, wenn diese durch Bereichsoperatoren definiert wurden. Ansonsten erfolgt eine explizite Aufzählung aller Seiten, in denen ein \index-Kommando für ein bestimmtes Stichwort enthalten war. | ||||||
-s sty | Die nach dieser Option angegebene Zeichenkette wird als Name der zu verwendenden MakeIndex-Styledatei interpretiert. Fehlt die Option in der Kommandozeile, wird MakeIndex ohne Verwendung einer Style-Datei abgearbeitet. Die MakeIndex-Styledatei sollte entweder im aktuellen Katalog oder in einem Verzeichnis zu finden sein, das durch die Environment-Variable INDEXSTYLE festgelegt ist. | ||||||
-t log | Die Option legt den Namen der Transcript-Ausgabedatei fest. Bei Fehlen der Option wird er aus dem Namen von idx0 durch Anhängen der Extension .ilg gebildet. | ||||||
idxn | Es ist Liste von ungeordneten Index-Dateien anzugeben, deren Einträge von MakeIndex eingelesen, sortiert und formatiert werden sollen. Hier ist es notwendig, mindestens einen Dateinamen anzugeben. Die einzelnen Dateinamen sind durch Leerzeichen voneinander zu trennen. |
Die MakeIndex-Styledatei
Der Stichwortprozessor generiert aus der ungeordneten Indexdatei einen Text, der sich aus LaTeX-Formatierungsanweisungen zusammensetzt. MakeIndex ist jedoch keinesfalls an LaTeX gebunden. Die Style-Datei dient dem Benutzer als Werkzeug, in den Prozeß der Generierung der geordneten Indexdatei einzugreifen. Die generierte Indexdatei kann damit individuell gestaltet werden.
Ein Style-File ist recht einfach aufgebaut. Es besteht aus einer Liste von <Spezifikator,Zuweisung>-Paaren. Die Reihenfolge dieser Paare innerhalb der Style-Datei ist beliebig. Kommentarzeilen beginnen mit dem Zeichen % .
Für die Argumente der Spezifikatoren gelten spezielle syntaktische Regeln:
<string> : Es wird eine beliebige Zeichenkette erwartet, die in doppelte Hochkomma einzuschließen ist. ("...") Die maximale Länge einer solchen Zeichenkette ist 144. <char> : Hier muß ein einzelner Buchstabe erscheinen, der von einzelnen Hochkomma begrenzt wird. ('...') <number> : Es muß eine nichtnegative ganze Zahl eingetragen werden.
Für alle in der Style-Datei nicht aufgeführten Spezifikatoren bleiben die voreingestellten Werte gültig.
Es folgt eine Liste aller Spezifikatoren und ihrer Argumente und Voreinstellungen. Es wird unterschieden, ob sie aus der Eingabedatei (.idx-Datei) gelesen oder in die Ausgabedatei (.ind-Datei) geschrieben werden. Die Zeichenfolge \n erzeugt dabei einen Zeilenvorschub, die Zeichenfolge \t einen Tabulatorsprung.
Eingabe-Spezifikatoren
Spezifikator | Argumente und Voreinstellungen |
---|---|
keyword <string> | "\\indexentry" Dieses Kommando teilt MakeIndex mit, daß es sich bei seinem Argument um einen Indexeintrag handelt. |
arg_open <char> | '{' Begrenzer, der den Indexeintrag einleitet |
arg_close <char> | '}' Begrenzer, der den Indexeintrag abschließt |
range_open <char> | '(' Begrenzer, der den Beginn einer explizit angegebenen Anzahl aufeinanderfolgender Seiten anzeigt |
range_close <char> | ')' Begrenzer, der das Ende einer explizit angegebenen Anzahl aufeinanderfolgender Seiten anzeigt |
level <char> | '!' Begrenzer, der die einzelnen Stufen für Untereinträge voneinander trennt |
actual <char> | '@' Das Symbol zeigt an, daß der nächste Eintrag in der aktuellen Indexdatei erscheint. |
encap <char> | '|' Das Symbol zeigt an, daß der Rest der Argumentliste als geschlossenes Kommando für die Seitennumerierung verwendet werden soll. |
quote <char> | '"' |
escape <char> | '\\' Die Symbole für quote und escape müssen unterschieden werden. quote dient dazu, das nächste Zeichen zu überspringen, mit Ausnahme der Fälle, bei denen es von einem escape-Zeichen angeführt wird. Dann wird kein Zeichen übersprungen. |
Ausgabe-Spezifikatoren
Spezifikator | Argumente und Voreinstellungen | ||||||
---|---|---|---|---|---|---|---|
preamble <string> | "\\begin{theindex}\n" die Zeichenkette, mit der die zu generierende Indexdatei beginnen soll |
||||||
postamble <string> | "\n\n\\end{theindex}\n" die Zeichenkette, mit der die zu generierende Indexdatei abgeschlossen werden soll. |
||||||
setpage_prefix <string> | "\n \\setcounter{page}{" der Präfix des Kommandos, welches die Nummer für die erste Seite des Indexregisters einstellt |
||||||
setpage_suffix <string> | "}\n" der Suffix des Kommandos, welches die Nummer für die erste Seite des Indexregisters setzt |
||||||
group_skip <string> | "\n\n \\indexspace \n" der vertikale Leerraum, der vor Beginn einer neuen Indexgruppe (neues Anfangszeichen) eingefügt |
||||||
lethead_prefix <string> | "" der Präfix für den Kopf, der generiert werden soll, wenn ein neuer Buchstabe beginnt |
||||||
lethead_suffix <string> | "" der Suffix für den Kopf, der generiert werden soll, wenn ein neuer Buchstabe beginnt |
||||||
lethead_flag <number> |
0 der Schalter, der anzeigt, ob bei Beginn eines neuen Anfangsbuchstaben ein Kopf generiert werden soll oder nicht:
|
||||||
item_0 <string> | "\n \\item " das Kommando, das zwischen zwei Indexeinträgen nullter Stufe erscheint |
||||||
item_1 <string> | "\n \\subitem " das Kommando, das zwischen zwei Indexeinträgen erster Stufe erscheint |
||||||
item_2 <string> | "\n \\subsubitem " das Kommando, das zwischen zwei Indexeinträgen zweiter Stufe erscheint |
||||||
item_01 <string> | "\n \\subitem " das Kommando, das zwischen einem Indexeintrag der Stufe null und eins eingefügt wird |
||||||
item_12 <string> | "\n \\subsubitem " das Kommando, das zwischen einem Indexeintrag der Stufe eins und zwei eingefügt wird |
||||||
item_x2 <string> | "\n \\subsubitem " das Kommando, das zwischen einem Indexeintrag der Stufe eins und zwei eingefügt wird. Der Unterschied zum vorhergehenden Spezifikator ist, daß hier der Indexeintrag der Stufe eins keine Seitennummer besitzt (wie z.B. bei Angabe von Referenzen). |
||||||
delim_0 <string> | ", " der Begrenzer, der zwischen einem Indexeintrag der Stufe null und seiner ersten Seitenangabe einzufügen ist. Voreinstellung ist ein Komma, gefolgt von einem Leerzeichen. |
||||||
delim_1 <string> | ", " der Begrenzer, der zwischen einem Indexeintrag der Stufe eins und seiner ersten Seitenangabe einzufügen ist. Voreinstellung ist ein Komma, gefolgt von einem Leerzeichen. |
||||||
delim_2 <string> | ", " der Begrenzer, der zwischen einem Indexeintrag der Stufe zwei und seiner ersten Seitenangabe einzufügen ist. Voreinstellung ist ein Komma, gefolgt von einem Leerzeichen. |
||||||
delim_r <string> | "--" der Begrenzer, der bei Angabe einer Reihe aufeinanderfolgender Seiten zwischen der Nummer der ersten und der letzten Seite eingefügt werden soll |
||||||
encaps_prefix <string> | "\\" der Präfix für das Kommando, welches die Seitennummer einschließt |
||||||
encaps_infix <string> | "{" der Infix für das Kommando, welches die Seitennummer einschließt |
||||||
encaps_suffix <string> | "}" der Suffix für das Kommando, welches die Seitennummer einschließt |
||||||
line_max <number> | 72 die maximale Länge einer Zeile in der Ausgabedatei. Bei einer längeren Zeile erfolgt ein Zeilenumbruch. |
||||||
indent_space <string> | "\t\t" der Leerraum, der vor einer umgebrochenen Zeile eingefügt wird |
||||||
indent_length <number> | 16 die Länge von indent_space |
Beispiel
Im folgenden Beispiel wird die Definition einer Style-Datei gezeigt. Diese generiert ein Indexregister, welches auch unabhängig vom Haupttext mit LaTeX aufbereitet werden kann:
preamble "\\documentstyle[12pt]{book} \\begin{document} \\begin{theindex} {\\small\n" postamble "\n\n} \\end{theindex} \\end{document}\n"
Fehlermeldungen des Programs MakeIndex
MakeIndex gibt während seiner Arbeit auf dem Bildschirm aus:
- wieviele Zeilen aus der Eingabedatei gelesen wurden
- wieviele Zeilen daraus generiert und in die Ausgabedatei geschrieben wurden
- wieviele Fehler erkannt wurden
In der Transcript-Datei (Extension .ilg) werden Nachrichten abgelegt, die zur Identifikation der aufgetretenen Fehler dienen. Jede dieser Meldungen enthält eine kurze Erklärung zu dem aufgetretenen Fehler selbst und gibt die Zeilennummer an, in der dieser auftrat. Bei Fehlern während der Lese-Phase bezieht sich diese Nummer auf das .idx-File, bei solchen während der Schreibphase auf das .ind-File.
Fehler während des Lesevorgangs
Fehlermeldung | Erläuterung |
---|---|
Extra `!' at position ... | Das \index-Kommando beinhaltet mehr als zwei unmaskierte!-Zeichen. Evtl. sollte eines davon maskiert werden. |
Extra `@' at position ... | Das \index-Kommando beinhaltet zwei oder mehr unmaskierte @-Zeichen. |
Extra `|' at position ... | Das \index-Kommando beinhaltet zwei oder mehr unmaskierte |-Zeichen. |
Illegal null field | Das Argument des \index-Kommandos ist nicht sinnvoll, da eines der Argumente eine leere Zeichenkette darstellt. Das Kommando \index{!big} würde beispielsweise einen solchen Fehler verursachen, da es einen Untereintrag big definiert, aber keinen zugehörigen übergeordneten Eintrag. Auch das Kommando \index{@big} ist fehlerhaft, da es der Sortierung eine leere Zeichenkette übergibt. |
Argument ... too long (max 1240). | Das Dokument enthält ein \index-Kommando mit einem sehr langen Argument. Meist ist in solchen Fällen die rechte schließende Klammer vergessen worden, die den Abschluß des Arguments anzeigt. |
Weitere Fehler: | MakeIndex kann eine ganze Reihe weiterer Fehlermeldungen ausgeben, die meist auf schwerwiegendere Fehler im .idx-File hinweisen. Wenn LaTeX diese Datei ohne eine Fehlermeldung generiert, kann davon ausgegangen werden, daß die Datei in Ordnung ist. Andernfalls ist es am besten, wenn direkt in der ungeordneten Indexdatei nach dem Fehler gesucht wird. |
Fehler während des Schreibvorgangs
Fehlermeldung | Erläuterung |
---|---|
Unmatched range opening operator | Zu einem Kommando \index{...|(} existiert kein korrespondierendes Kommando \index{...|)}. Die durch ... symbolisierte Zeichenkette muß vollständig identisch sein. |
Unmatched range closing operator | Zu einem Kommando \index{...|)} existiert kein korrespondierendes Kommando \index{...|(}. |
Extra range closing operator | Im Dokument erscheinen zwei \index{...|(}-Kommandos, ohne daß dazwischen ein Kommando \index{...|)} gefunden wurde. |
Inconsistent page encapsulator ... within range | MakeIndex wurde angewiesen, eine Reihe aufeinanderfolgender Seiten in einem Indexeintrag und gleichzeitig einen Eintrag zu demselben Stichwort für eine innerhalb des Intervalls liegende Seitennummer zu generieren. Das wäre z.B. der Fall, wenn ein Kommando \index{gnu|ii} zwischen den Anweisungen \index{gnu|(} und \index{gnu|)} eingetragen würde. |
Conflict entries | MakeIndex wurde angewiesen, zweimal einen Eintrag zu demselben Stichwort und derselben Seite zu erzeugen, z.B. wenn die Kommandos \index{gnu|(see{...}} und \index{gnu} auf einer Seite im Dokument definiert wurden. |