Splitindex: Expansion von Makros im Argument von \sindex

Erstellen von Index, Glossar, Symbolverzeichnis, einer Nomenklatur etc. mit MakeIndex oder Xindy


peisistratos
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Mo 14. Feb 2011, 14:51

Splitindex: Expansion von Makros im Argument von \sindex

Beitrag von peisistratos »

Liebes Forum,

ich habe beobachtet, dass bei der Verwendung von splitindex (ebenso wie bei makeindex) ein Makro als Argument von \sindex nur dann expandiert wird, wenn es sich in einer Fußnote befindet. Dies wirkt sich aber negativ auf die Sortierung im Index aus.

Folgendes Minimalbeispiel
\documentclass[fontsize=12pt]{scrartcl}
\usepackage[ngerman]{babel}

\usepackage[makeindex]{splitidx}
\makeindex

\newcommand{\test}{Test}

\begin{document}

Ein Indexeintrag im Flie\ss text.\sindex{\test} Und nun eine Referenz
in einer Fu\ss note.\footnote{Bla blubb \dots\sindex{\test}}

\printindex

\end{document}
ergibt diese Indexdatei:
\begin{theindex}

  \item \test, 1

  \indexspace

  \item Test, 1

\end{theindex}
Warum ist das so und wie bekomme ich es hin, dass die Makros innerhalb des \sindex-Befehls immer expandiert werden? Oder habe ich etwas übersehen (laut splitindex-Doku gibt es ja nur die Option, dass die Expansion von Makros ausdrücklich verhindert werden soll)?

Mit ganz herzlichem Dank und Grüßen,

Ludwig

rais
Forum-Guru
Forum-Guru
Beiträge: 411
Registriert: Di 21. Sep 2010, 00:37

Beitrag von rais »

Moin moin,
warum das so ist, kann ich derzeit nicht beantworten, aber evtl. hilft Dir ja sowas:
\documentclass[fontsize=12pt]{scrartcl}
\usepackage[ngerman]{babel}

\usepackage[makeindex]{splitidx}
\makeindex
\newcommand*\esindex[1]{%
  \expandafter\sindex\expandafter{#1}%
}
\newcommand{\test}{Test}

\begin{document}

Ein Indexeintrag im Flie\ss text.\esindex{\test} Und nun eine Referenz
in einer Fu\ss note.\footnote{Bla blubb \dots\sindex{\test}}

\printindex

\end{document}
MfG
Rainer
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

peisistratos
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Mo 14. Feb 2011, 14:51

Beitrag von peisistratos »

Lieber Rainer,

vielen Dank für Deinen Hinweis. Da ich aber schon ein größeres Dokument (480 Seiten) vorliegen habe und ich keinen neuen Befehl einführen möchte, habe ich nun mit Deiner Hilfe folgende Lösung gefunden:
\documentclass[fontsize=12pt]{scrartcl}
\usepackage[ngerman]{babel}

\usepackage[makeindex]{splitidx}

\newcommand*{\sindexAlt}{}
\let\sindexAlt\sindex
\renewcommand*\sindex[1]{%
  \expandafter\sindexAlt\expandafter{#1}%
}

\newcommand{\test}{Test}

\begin{document}

Ein Indexeintrag im Flie\ss text.\sindex{\test} Und nun
eine Referenz in einer Fu\ss note.\footnote{Bla blubb
  \dots\sindex{\test}}

\printindex

\end{document}
Der Vollständigkeit halber zusätzlich eine Lösung für mehrere Indices:
\documentclass[fontsize=12pt]{scrartcl}
\usepackage[ngerman]{babel}

\usepackage[makeindex]{splitidx}
\newindex[Index 1]{indexeins}
\newindex[Index 2]{indexzwei}

\newcommand*{\sindexAlt}{}
\let\sindexAlt\sindex
\renewcommand*\sindex[2][]{%
  \expandafter\sindexAlt[#1]{\expandafter #2}%
}
\newcommand{\test}{Test}

\begin{document}

Ein Indexeintrag im Flie\ss text.\sindex[indexeins]{\test} Und nun
eine Referenz in einer Fu\ss note.\footnote{Bla blubb
  \dots\sindex[indexeins]{\test}} Ein Indexeintrag im Flie\ss
text.\sindex[indexzwei]{\test} Und nun eine Referenz in einer Fu\ss
note.\footnote{Bla blubb \dots\sindex[indexzwei]{\test}}

\printindex*

\end{document}
Ganz herzlichen Dank nochmals!

Ludwig

Antworten