LaTeX-Kompendium: Index und Glossar: Anpassungen

Aus Wikibooks
Zur Navigation springen Zur Suche springen

LaTeX-Kompendium InDeX

Index und Glossar

Standard-IndexMehrteiliger IndexAnpassungenGlossar


Index-Style[Bearbeiten]

Beschreibung der ist-Datei

Sortierung[Bearbeiten]

Hinweise auf Umlaute und ähnliche Probleme

PDF-Links[Bearbeiten]

Themensammlung[Bearbeiten]

Die folgenden Punkte sind mir während der Erstellung eines umfangreichen Registers aufgefallen. Ich erwähne sie erst einmal kurz. Später sollen sie richtig gegliedert und ausformuliert werden. Jürgen 14:01, 24. Apr. 2012 (CEST)

Fettdruck
  • eigentlich durch \index{Begriff|textbf}
  • aber das wird nicht als \hyperpage umgesetzt und erhält deshalb in der PDF-Datei keinen Link
  • deshalb mit einem eigenen Befehl \newcommand{mainindex} und \index{Begriff|mainindex} arbeiten
Folgeseiten (1)
  • Problem: Sie werden als Seitenzahl 149 FF. (mit Großbuchstaben) angezeigt.
  • Erklärung: Das hat nichts mit dem Index zu tun, sondern damit, wie innerhalb der PDF-Datei Links angezeigt werden sollen. Auslöser ist das hyperref-Paket.
  • Lösung: Für \hypersetup ist die Option "frenchlinks=false" zu setzen. Das hat Auswirkungen auf alle anderen Links innerhalb des Werks, aber das ist wohl besser so.
Folgeseiten (2)
  • Problem: In der Standardeinstellung von makeidx wird eine Angabe wie "149 FF." nicht mit einem Link versehen, weil es keine derartige Seitenzahl gibt.
  • Lösung: Die Index-Style-Seite ist wie folgt zu ergänzen:
suffix_2p "\\nohyperpage{\\,f.}"
suffix_3p "\\nohyperpage{\\,ff.}"
Kapitel

Folgende Schreibweisen sind als falsch anzusehen, weil dann auch die Seiten des Inhaltsverzeichnisses im Index aufgeführt werden:

\chapter{ Normalisierung\sindex[idx]{Normalisierung} }
% oder unter Verwendung von \newcommand{myindex}
\chapter{ \myindex{Normalisierung} }

Das richtige Vorgehen ist, den Index-Eintrag außerhalb des Kapitel-Eintrags zu setzen:

\chapter{Normalisierung}\sindex[idx]{Normalisierung}
Zwischenüberschriften

In der ist-Datei gibt es Regelungen für die Zwischenüberschriften: Buchstaben, Symbole, Ziffern. Leerzeichen werden besonders behandelt, nämlich als Gruppe gesammelt (je nach Sortierung ganz am Anfang oder mittendrin). Aber es ist nicht als Zwischenüberschrift zu erkennen, sondern erzeugt nur einen größeren Abstand. Ursache ist der einfache Eintrag \textbf{} in der fertigen Index-Datei:

\textbf{}\nopagebreak\medskip   % oder wie auch immer es formatiert ist

Diese Zeile muss manuell gelöscht oder geändert werden, z.B. so:

\textbf{Spezialfälle}\nopagebreak\medskip

Achtung: Jeder neue makeindex-Lauf erstellt diese Datei neu; also muss die Änderung ständig erneuert werden. Dies lohnt sich also erst ganz am Schluss vor der Veröffentlichung, sollte aber auch nicht vergessen werden. :)

Siehe (auch)

Verweise auf andere Stichwörter gehen bekanntlich durch den Parameter see im Index-Eintrag:

  • \index{Sortierung|see{Reihenfolge}}

Standardmäßig wird see durch siehe ersetzt. Dies kann durch \seename angepasst werden:

  • \renewcommand{\seename}{siehe auch}

Ärgerlich wird es, wenn beide Situationen vorkommen: Bei den meisten Siehe-Begriffen wird nur verwiesen; bei manchen Begriffen wird zwar verwiesen, aber es gibt auch eigene Seitenangaben. Dann kann man auf die Änderung von \seename verzichten und stattdessen den Verweis ergänzen:

  • \index{Sortierung|see{\textit{auch} Reihenfolge}}

Wörterbuchähnlicher Index[Bearbeiten]

In längeren Schriften, z.B. Büchern, kommt es häufig vor, dass sich der Index über mehrere Seiten erstrekt. Dann hilft es sehr, wenn der erste Begriff auf einer geraden bzw. der letzte Begriff auf einer ungeraden Seite im Header steht (z.B. wie in einem Telefonbuch oder einem Wörterbuch). So lassen sich Begriffe deutlich schneller finden.

Um dies zu erreichen, wird ein Style-Datei für makeindex benötigt. Weiterhin werden die Pakete imakeidx und fancyhdr benötigt. Es empfiehlt sich weiterhin eine separate config-Datei anzulegen, in der alle LaTeX-Befehle gekapselt sind.

Zunächst wird die Style-Datei style.ist erstellt. Zu beachten ist hier, dass zwar alle LaTeX Befehle verwendet werden können, aber der Backslash, der einen LaTeX Befehl ankündigt, muss escaped werden.

% Überschrift (Anfangsbuchstabe) für den nächsten Block von Begriffen angezeigt
headings_flag 1

% Formatierung der Block-Überschrift.
% Es kann beliebiger Text ergänzt werden.
% Für dieses Beispiel optional.
heading_prefix "{\\large\\sffamily\\bfseries "
heading_suffix "}\\nopagebreak\n"

% Der Wert von delim_0 folgt auf einen Index-Eintrag.
% Hier muss eine geschweifte Klammer geschlossen werden.
% \dotfill füllt den Raum zwischen dem Begriff und den Seitenzahlen mit Punkten und ist optional.
% Ebenso alle delim_i sind optional
delim_0 "} \\dotfill "
delim_1 " \\dotfill "
delim_2 " \\dotfill "

% Für den Fall, dass ein Begriff nur mit einem Subitem erzeugt wird und keine eigene Seitenzahl hat, muss mit item_x1 ebenfalls eine geschweifte Klammer geschlossen werden.
item_x1 "} \n \\subitem "
% Damit der korrekte Begriff gespeichert werden kann, muss jedes Item dem Befehl \indexmark{...} übergeben werden.
% Dieser speichert den Begriff für den Header ab.
item_0 "\n \\item \\indexmark{ "

Weiter geht es mit der config-Datei config.tex

% Zunächt importieren wir die benötigten Pakete
\usepackage{imakeidx}% Verbesserung von makeidx - hat bessere Einstellungsmöglichkeiten
\usepackage{booktabs}% Wird für \dotfill benötigt
\usepackage{fancyhdr}% Erlaubt Zugriff auf den Seitenheader (und Footer)

% Definition des Befehls, der in der Index-Style-Datei verwendet wird.
% \markboth setzt die Werte für die Befehle \leftmark und \rightmark, die später verwendet werden
\newcommand{\indexmark}[1]{ #1\markboth{#1}{#1} }

% Variable, mit der der Indextitel definiert werden kann
\newcommand{\indextitle}{Stichwortverzeichnis}

% Index konfigurieren
\makeindex[%
	columns=3,% Definiert die Anzahl der Spalten
	intoc,% Index wird im Inhaltsverzeichnis erscheinen
	title=\indextitle,% Titel des Index'
	options= -s style.ist% Optionen für makeindex
]

% Definition des Seitenlayouts (Header und Footer) für den Index
\fancypagestyle{index}{
	\fancyhead{}% Headerinhalt auf NULL setzen

	% Der Header hat drei verschiedene Bereiche:
	% L -> Linker Rand
	% C -> Mitte
	% R -> Rechter Rand
	% Des Weiteren gibt es bei doppelseitigem Druck jeden Bereich zweimal:
	% O -> Gerade Seiten
	% E -> Ungerade Seiten
	% Daraus ergeben die optionalen Parameter von \fancyhead
	\fancyhead[RO]{ \textsl{\indextitle / \leftmark} }% "Titel / Letzter Begriff" auf geraden Seiten am rechten Rand
	\fancyhead[LE]{\textsl{\rightmark} / \indextitle}% "Erster Begriff / Titel" auf ungeraden Seiten am linken Rand
	\fancyfoot{}% Footer auf NULL setzen
	\fancyfoot[RO,LE]{\thepage}% Seitenzahl an den entsprechenden Rand setzen
}

% Definition eines Befehls zum Erzeugen des Index - analog zu \listoffigures
\newcommand{\listindex}{
	{
		\pagestyle{index}% Pagestyle für den Index setzen
		\footnotesize% Schriftgröße im Index, optional
		\printindex% Die eigentliche Ausgabe des Index
		\clearpage% Erzeugt einen Seitenumbruch am Ende des Index, nicht notwendig, aber sinnvoll
		\markboth{\indextitle}{\indextitle}% Reset des Headerinhalts
	}
	\cleardoublepage% Sorgt dafür, dass das Dokument erst auf der nächsten ungeraden Seite beginnt.
}

Um diesen erweiterten Index zu verwenden muss Beispiel 2 folgendermaßen angepasst werden:

\documentclass[a4paper,11pt,twoside]{scrbook}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\selectlanguage{naustrian}
\usepackage[T1]{fontenc}
\input{config}% Importiert die Daten config.tex

\begin{document}
Dies ist ein kurzer \index{kurz} Satz.\newpage
Die ist eine neue \index{neu} Seite.
Das ist nun ein mini \index{mini! siehe auch {kurz} } Satz.

\listindex

\end{document}