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.
\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}\end{document}
[![alt text][1]][1]
[1]: https://texwelt.de/wissen/upfiles/test_447.png