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
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 |
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} beantwortet 05 Sep '18, 04:25 Henri Ist dennoch ein interessantes Anwendungsbeispiel für LuaTeX. Mit fällt noch das Paket
(05 Sep '18, 10:46)
stefan ♦♦
|
Was ist mit »Liste auf das ganze Dokument anzuwenden« gemeint? Alle Wörter, die im Dokument vorkommen stehen nachher in der
.idx
-Datei.Stimmt. Das Wort "Minimalbeispiel" war hier schlecht gewählt. Siehe Edit.
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.Dafür kann man den expliziten Aufruf von
makeindex
ggf. einsparen, indem manimakeidx
verwenden. Dann bekommt man auch bereits im ersten Durchlauf den Index angezeigt.Mmhh, dann ist es vermutlich ein allgeimeres Informatikproblem, weil man Wörterbücher o.ä. heranziehen müsste.