Ich habe mich gefragt, ob es für die Erstellung eines Index auch die Möglichkeit gibt, eine Liste auf das ganze Dokument anzuwenden, die Indexeinträge erzeugt, sofern das Wort im Dokument vorkommt, etwa

\def\IndexListe{Stichwort, Unter!Stichwort, Eintrag, Aepfel@Äpfel, KeinStichwort}

Gibt es dafür eine Möglichkeit?

Minimalbeispiel für ein herkömmliches Index-Dokument:

Öffne in Overleaf
% arara: pdflatex
% arara: makeindex
% arara: pdflatex

\documentclass[a4paper,14pt]{scrartcl}

\usepackage{makeidx}
    \makeindex

\usepackage{hyperref}
\begin{document}

Das ist ein Stichwort\index{Stichwort}.\\
Das ist ein Unter-Stichwort\index{Stichwort!Unter-}.\\
Nun ein neuer Eintrag\index{Eintrag}.

\printindex
\end{document}

gefragt 10 Mai, 00:30

cis's gravatar image

cis
8.5k16174276
Akzeptiert: 68%

bearbeitet 10 Mai, 09:42

Was ist mit »Liste auf das ganze Dokument anzuwenden« gemeint? Alle Wörter, die im Dokument vorkommen stehen nachher in der .idx-Datei.

(10 Mai, 00:39) Henri

Stimmt. Das Wort "Minimalbeispiel" war hier schlecht gewählt. Siehe Edit.

(10 Mai, 01:42) cis
1

Klingt zunächst trivial, ist es aber nicht. Es müssten nämlich auch deklinierte und konjugierte Formen und Umordnungen erkannt werden: Am Beispiel eines neuen Eintrags\index{Eintrag!neuer} ist das Problem leicht zu erkennen. Ebenso, wenn der Eintrag tatsächlich neu\index{Eintrag!neuer} ist. Wie man hier sieht, kann sich bei Untereinträgen im Extremfall sogar die Stellung der Wörter, aus denen der Eintrag besteht, verändern. Ein guter Index unterscheidet außerdem wichtige Stellen und Nebenstellen und markiert diese entweder unterschiedlich oder lässt unwichtige Stellen weg → KI-Problem.

(10 Mai, 03:18) saputello
1

Dafür kann man den expliziten Aufruf von makeindex ggf. einsparen, indem man imakeidx verwenden. Dann bekommt man auch bereits im ersten Durchlauf den Index angezeigt.

(10 Mai, 06:50) saputello

Mmhh, dann ist es vermutlich ein allgeimeres Informatikproblem, weil man Wörterbücher o.ä. heranziehen müsste.

(13 Mai, 04:06) cis

Mit LuaTeX. Ich habe mir keine besonders große Mühe gegeben, weil du das eh nicht verwenden wirst. Erstens, weil ich weiß, dass du kein LuaTeX magst und zweitens, weil das sowieso nicht funktioniert.

Öffne in Overleaf
\documentclass{article}
\usepackage{imakeidx}
\makeindex
\usepackage{hyperref}
\begin{document}
\begingroup
\catcode`\^^M=12
\catcode`\%=12
\directlua{
-- mapping has to be sorted by length of match (longest first)
local mapping = {
    { "Unter%-Stichwort", [[Unter-Stichwort\noexpand\index{Stichwort!Unter}]] },
    { "Stichwort", [[Stichwort\noexpand\index{Stichwort}]] },
    { "Eintrag", [[Eintrag\noexpand\index{Eintrag}]] },
    { "Äpfel", [[Äpfel\noexpand\index{Aepfel@Äpfel}]] },
}

local function autoindex(str)
    for _, match in ipairs(mapping) do
        local n
        str, n = string.gsub(str, match[1], match[2])
        if n > 0 then break end
    end
    return str
end

luatexbase.add_to_callback("process_input_buffer", autoindex, "autoindex")
}
\endgroup

Das ist ein Stichwort.
Das ist ein Unter-Stichwort.
Nun ein neuer Eintrag.
Äpfel sind gesund.

\directlua{
luatexbase.remove_from_callback("process_input_buffer", "autoindex")
}
\printindex
\end{document}

alt text

Permanenter link

beantwortet 04 Sep, 22:25

Henri's gravatar image

Henri
13.5k42836

bearbeitet 04 Sep, 22:26

Ist dennoch ein interessantes Anwendungsbeispiel für LuaTeX. Mit fällt noch das Paket xeindex ein für Auto-Indizieren mit XeLaTeX.

(05 Sep, 04:46) stefan ♦♦
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×11

Frage gestellt: 10 Mai, 00:30

Frage wurde angeschaut: 605 Mal

Zuletzt aktualisiert: 05 Sep, 04:46