Seite 1 von 1
3-Spaltiger Indes mit multicol und makeidx
Verfasst: Di 20. Apr 2010, 16:57
von iTob
Hallo,
durch googlen habe ich bereits herausgefunden, dass …
Peter Mösgen hat geschrieben:… der Index beispielsweise mit Hilfe des Pakets multicol dreispaltig formatiert werden … (könnte.)
Quelle: http://www1.ku-eichstaett.de/urz/schriften/makeidx.pdf
Aber ich weiß nicht wie, der folgende Code führt dazu, dass texmaker (unter OSX 10.6.) sich aufhängt, ich bekomme keine Fehlermeldung o.ä., er macht einfach nix mehr, nachdem der latex aufruf gestartet wurde:
\begin{multicols}{3}
\printindex
\end{multicols}
ohne die Umgebung geht alle klaglos...
Wie kann ich ein mehrspaltigen (>2) Index erstellen?
Danke und
viele Grüße
iTob
Neues Paket
Verfasst: Di 20. Apr 2010, 18:38
von localghost
Versuche mal das relative neue
idxlayout. Und vielleicht ersetzt Du
makeidx durch
index.
MfG
Thorsten
Verfasst: Di 20. Apr 2010, 19:08
von iTob
Danke, werde morgen mal schauen, was ich damit anfangen kann.
Warum soll ich denn die Pakete ersetzen?
Robuster
Verfasst: Di 20. Apr 2010, 19:32
von localghost
iTob hat geschrieben:[...] Warum soll ich denn die Pakete ersetzen?
Weil letzteres besser (robuster) und flexibler ist. Und Du musst im Dokument noch nicht mal was ändern.
Verfasst: Mi 21. Apr 2010, 08:11
von KOMA
Vorsicht! Das Paket index verändert die Expansion beim Schreiben des Index gegenüber dem Paket makeidx erheblich. Außerdem testet es noch immer auf die Standardklasse article und hat definiert theindex komplett um, so dass im Zusammenspiel mit KOMA-Script (und diversen anderen Artikel-Klassen) Probleme geben kann und einige Dinge von KOMA-Script nicht mehr funktionieren. Da der Autor seinerzeit auf entsprechende Kritik nicht reagiert hat, habe ich schon vor Jahren das Paket splitidx geschrieben. Bei dem Paket wird theindex nicht umdefiniert, sondern nur erweitert und es funktioniert sowohl mit den Standardklassen als auch mit KOMA-Script (und diversen anderen Klassen), ohne Mechanismen dieser Klassen zu stören. Außerdem hat man die Wahl, ob expandierend oder nicht expandierend in den Index geschrieben werden soll.
Mit splitidx geht ein dreispaltiger Index recht einfach:
\documentclass[a4paper]{article}
\usepackage[makeindex]{splitidx}
\usepackage{multicol}
\extendtheindex% some changes of theindex environment (see splitidx)
{%
\renewcommand{\twocolumn}[1][]{##1\begin{multicols}{3}}% drei Spalten mit multicols
\renewcommand{\onecolumn}[1][]{##1\end{multicols}}% zurück auf einspaltig
\let\clearpage\relax % deactivate \clearpage
}% changes before beginning
{}% no change after beginning
{}% no change before ending
{}% no change after ending
\begin{document}
Test\index{Test}, Und\index{Und}, Noch\index{Noch}, Ein\index{Ein},
Test\index{Test}.
Test\index{TestA}, Und\index{UndA}, Noch\index{NochA}, Ein\index{EinA},
Test\index{TestA}.
\printindex
\end{document}
Alles zur Funktionsweise von spitidx und was man sonst noch so mit dem Paket machen kann, ist der Anleitung zu entnehmen. Für obiges Beispiel kann man übrigens dann ganz normal das Programm makeindex verwenden. Das Programm splitindex braucht man erst, wenn man mit mehreren Verzeichnissen arbeiten will.
Verfasst: Mi 21. Apr 2010, 13:39
von iTob
Danke für die Antwort!
Was bedeutet den expandieren?
Verfasst: Mi 21. Apr 2010, 15:26
von KOMA
TeX ist eine Makrosprache. Makros werden expandiert. Wann ein Makro expandiert wird, ist wesentlich für das, was man im Ergebnis erhält. Wird beispielsweise \thepage unmittelbar bei der "Verarbeitung" eines Makros expandiert, so gibt es die Seite an, die bei der Verarbeitung des Makros aktuell ist. Das kann die aktuelle Seite sein oder eine frühere Seite. Wird es erst bei der Ausgabe der Seite expandiert, so gibt es die Nummer der Seite an, die ausgegeben wird. Wird es beispielsweise beim Schreiben in eine Hilfsdatei nicht expandiert, so bleibt dort \thepage stehen und dieses \thepage wird erst irgendwann beim oder nach dem Lesen dieser Hilfsdatei expandiert.
Beim Schreiben des Index spielt die Expansion ggf. eine entscheidende Rolle. Hast Du beispielsweise ein Makro
\newcommand{\Suppenkasper}{Suppenkasper}
definiert und schreibst das in den Index, so kann dort im Index entweder das Makro \Suppenkasper oder der Text "Suppenkasper" stehen. Das Makro "\Suppenkasper" würde zwar im Index selbst dann ebenfalls den Text "Suppenkasper" erzeugen, aber ggf. als Symbol einsortiert (wegen des "\" am Anfang des Makronamens).