Da bei einigen Themen Begriffe mehrmals vorkommen, wollte ich mein Index nach Section trennen. Momentan benutze ich splitidx, was wunderbar klappt.

Außerdem habe ich noch die Frage, ob es möglich ist, den kompletten Indexeintrag zu verwenden, anstatt nur die Seitenzahl? Es soll jedoch kein Glossar entstehen. Momentan nutze ich dafür hyperref.

Bis jetzt hat alles geklappt und nur das neue Problem macht Schwierigkeiten.

Hier ein Minimalbeispiel:

Öffne in Overleaf
\documentclass[a4paper,index=totoc]{scrartcl} 
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{amsmath, amsfonts, amssymb}
\usepackage[]{hyperref}

\usepackage[makeindex,split,idxcommands]{splitidx}
\newindex[Allgemeines Index]{regist}
\newindex[Personenindex]{pers}

\begin{document}
\section{Mengenlehre}
kommutativ\regist{kommutativ}\\
assoziativ\regist{assoziativ}\\
Menge\regist{Menge}\\
Person 1\pers{Person 1}

\newpage
\section{Aussagenlogik}
kommutativ\regist{kommutativ}\\
assoziativ\regist{assoziativ}\\
Normalformen\regist{Normalformen}\\
Person 2\pers{Person 2}

\printindex[regist]
\printindex[pers]
\end{document}

gefragt 07 Mai '18, 01:12

vince6e74's gravatar image

vince6e74
3148
Akzeptiert-Rate: 0%

bearbeitet 07 Mai '18, 10:14

saputello's gravatar image

saputello
11.1k154365

1

Sorry, was ist genau die Frage, wenn das wunderbar klappt?

(07 Mai '18, 02:42) Community

Könntest Du bitte ein Minimalbeispiel einfügen? Also ein möglichst kurzes, aber komplettes Dokument, von \documentclass{...} bis zu \end{document}, was das Problem zeigt. Das vereinfacht die Bearbeitung erheblich und ist meist eine Garantie für eine Lösung.

(07 Mai '18, 04:30) cis

Kann es sein, dass das gar kein Index, sondern eine Art Glossar werden soll? Anders kann ich mir die Auslassungen zur Verwendung jedenfalls ohne Minimalbeispiel nicht so recht erklären.

(07 Mai '18, 07:46) saputello

Ich verstehe noch immer nicht, was »das neue Problem« ist. Bei mir funktioniert Dein Beispiel einwandfrei. Auch die Verlinkung mit hyperref funktioniert. Hast Du makeindex für die beiden erzeugten idx-Dateien aufgerufen?

Ich verstehe außerdem nicht, was mit

ob es möglich ist, den kompletten Indexeintrag zu verwenden, anstatt nur die Seitenzahl

gemeint ist. Was genau soll wo verwendet werden? Wobei das eigentlich schon eine zweite Frage ist, die vermutlich getrennt gestellt werden sollte. Oder ist das die eigentliche Frage? Wie gesagt: Ich kann kein Problem erkennen!

(07 Mai '18, 10:10) saputello

Die beiden Indizes werden erstellt und angezeigt. Das Allgemeine Index soll aber in mehrere aufgeteilt werden in die Bereiche Mengenlehre und Aussagenlogik entsprechend Section.

Wenn man hyperref verwendet, kann man die Seitenzahl im Index anklicken und springt zu dieser Seite. Es wäre einfacher und intuitiver, wenn man nicht die Zahl, sondern das Wort anklicken könnte.

(07 Mai '18, 10:30) vince6e74

Wenn Du 25 Seiten für das Wort im Index eingetragen hast, auf welche der Seiten soll dann gesprungen werden? Ich hoffe, die Frage macht klar, dass das eigentlich wenig sinnvoll ist. Bitte stelle dazu ggf. eine neue Frage.

(07 Mai '18, 10:36) saputello

Soll der eine Index in mehrere Unterbereiche untergliedert werden, oder sollen eigene Indexe erstellt werden? Für eigene Indexe müsste man entsprechend mehrere Indexe mit \newindex anlegen. Für eine Untergliederung könnte man dagegen etwas wie \regist{Mengenlehre!kommutativ} und \regist{Aussagelogik!kommutativ} verwenden, also mit Unter-Einträgen arbeiten. Siehe dazu eine Einführung in MakeIndex bzw. schlicht die makeindex-Anleitung.

(07 Mai '18, 10:49) saputello
Ergebnis 5 von 7 show 2 more comments

Wenn ich halbwegs verstehe, was du meinst, dann suchst du vermutlich Untereinträge zu einem Indexeintrag. In der Voreinstellung von makeindex werden diese innerhalb des Index-Befehls mit einem ! vom Haupteintrag getrennt:

\documentclass[a4paper,index=totoc]{scrartcl} 
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{amsmath, amsfonts, amssymb}
\usepackage[]{hyperref}

\usepackage[makeindex,split,idxcommands]{splitidx}
\newindex[Allgemeiner Index]{regist}
\renewcommand*{\regist}[2][]{%
  \Ifstr{#1}{M}{% Falls das optionale Argument zu einem M expandiert:
    \sindex[regist]{Mengenlehre!#2}% Methode 1: Untereintrag
    \sindex[regist]{#2 (Mengenlehre)}% Methode 2: Eintrag mit Zusatz
  }{%
    \Ifstr{#1}{A}{% Falls das optionale Argument zu einem A expandiert:
      \sindex[regist]{Aussagelogik!#2}% Methode 1: Untereintrag
      \sindex[regist]{#2 (Aussagelogik)}% Methode 2: Eintrag mit Zusatz
    }{% In allen anderen Fällen:
      \sindex[regist]{#2}% Unveränderter Eintrag
    }%
  }%
}
\newindex[Personenindex]{pers}

\begin{document}
\section{Mengenlehre}
kommutativ\regist[M]{kommutativ}
assoziativ\regist[M]{assoziativ}
Menge\regist{Menge}
Person 1\pers{Person 1}

\newpage
\section{Aussagenlogik}
kommutativ\regist[A]{kommutativ}
assoziativ\regist[A]{assoziativ}
Normalformen\regist[A]{Normalformen}
Person 2\pers{Person 2}

\printindex[regist]
\printindex[pers]
\end{document}

Die Methode des Unterindex-Eintrags wird von makeindex bisher für bis zu drei Ebenen von Index-Einträgen unterstützt, also auch \index{Eintrag!Untereintrag!Unteruntereintrag}.

Ich habe als zweite Methode außerdem noch eingebaut, Index-Einträge mit einem automatischen Zusatz zu versehen. Ob beide Methoden gemischt oder nur eine der Methoden sinnvoll ist, sei dem Anwender überlassen.

Falls ich mit meinem Verdacht falsch liege und wie von saputello vermutet, wirklich für jeden Abschnitt ein eigener Index gewünscht wird, müsste man natürlich auch für den Abschnitt einen solchen mit \newindex anlegen. Dann sollte man allerdings auf Option split verzichten und wirklich splitindex aufrufen, um die idx-Datei in mehrere aufzuspalten und mit makeindex zu verarbeiten. Anderenfalls erhält man (außer bei Verwendung von LuaLaTeX) sehr schnell einen „no room for new \write”-Fehler.


Die Zusatzfrage lasse ich unbeantwortet, da ich es ebenfalls nicht für sinnvoll halte, wenn das Wort statt der Seitenzahlen anklickbar ist (einfaches Beispiel, warum das so ist:

\documentclass{article}
\usepackage{imakeidx}
\makeindex
\usepackage{hyperref}

\usepackage{blindtext}
\begin{document}
Das ist ein Blindtext\index{Blindtext}. \Blindtext[6]
Das ist ein Blindtext\index{Blindtext}. \Blindtext[6]
Das ist ein Blindtext\index{Blindtext}. \Blindtext[6]
Das ist ein Blindtext\index{Blindtext}. \Blindtext[6]
\printindex
\end{document}

Wohin sollte „Blindtext” in dem Beispiel springen? Seite 1, die im Bis-Strich versteckte Seite 2, Seite 3 oder Seite 5?) Solltest du auf die Zusatzfrage bestehen, solltest du sie mit entsprechender Erklärung und klarer Spezifikation als neue Frage stellen.

Permanenter link

beantwortet 07 Mai '18, 11:08

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 13 Jun '21, 23:36

Danke für die ausführliche Antwort. Du hast hier als erster verstanden, was ich vorhabe. Danke. Da es nicht das gibt, was ich ursprünglich wollte benutze ich jetzt einer deiner Methoden.

Gibt es eine ähnliche if-Anweisung wie in deiner Antwort, die die Überschriften (wie 'section') abfragt?

(07 Mai '18, 17:34) vince6e74

@vince6e74 Ich würde dir die Frage aus dem Kommentar gerne beantworten, wenn ich sie verstehen würde und sie als Frage gestellt wäre. Derzeit ist sie für mich absolut unverständlich.

(07 Mai '18, 18:05) gast3

@vince6e74 Als Alternative zu dem optionalen Argument bei \regist könnte ich mir übrigens auch vorstellen, zwei unterschiedliche Anweisungen zu definieren oder \regist nach \section umzudefinieren. Allerdings kann man dann über \regist keine Einträge für andere Bereiche mehr definieren, was eventuell nachteilig ist, obwohl man natürlich immer auf \sindex zurückgreifen kann. Jedenfalls habe ich die Alternative wegen der Bedenken auch nicht gezeigt. Außerdem sollte es leicht sein, das mit der gezeigten Lösung selbst umzusetzen.

(07 Mai '18, 18:08) gast3

@Ijon Tichy Kannst Du bitte angeben, wie man die Codes kompilieren muss?

(07 Mai '18, 21:11) cis

@cis Das war eigentlich nicht Teil der Frage und geht für das erste Beispiel aus der splitidx-Anleitung hervor: pdflatex, makeindex für jede erzeugte idx-Datei, pdflatex. Lässt man Option split weg, wird nur eine idx-Datei erzeugt, für die man splitindex statt makeindex aufruft. Beim zweiten Beispiel genügt der Aufruf von pdflatex. Wenn du weitere Fragen zur Verwendung von splitidx hast, dann solltest du dazu entsprechende Fragen stellen. Ich halte nichts davon, Frage in Kommentaren zu verstecken.

(08 Mai '18, 08:07) gast3
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×62
×11
×9

gestellte Frage: 07 Mai '18, 01:12

Frage wurde gesehen: 4,636 Mal

zuletzt geändert: 08 Mai '18, 08:08