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 '18, 06:30

cis's gravatar image

cis
9.5k75452491
Akzeptiert-Rate: 29%

bearbeitet 10 Mai '18, 15: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 '18, 06:39) Henri

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

(10 Mai '18, 07: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 '18, 09: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 '18, 12:50) saputello

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

(13 Mai '18, 10: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 05 Sep '18, 04:25

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 05 Sep '18, 04: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 '18, 10:46) stefan ♦♦
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:

×16

gestellte Frage: 10 Mai '18, 06:30

Frage wurde gesehen: 3,707 Mal

zuletzt geändert: 05 Sep '18, 10:46