Splitindex: Expansion von Makros im Argument von \sindex

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Splitindex: Expansion von Makros im Argument von \sindex

von peisistratos » Di 15. Feb 2011, 01:52

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

von rais » Mo 14. Feb 2011, 22:23

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

Splitindex: Expansion von Makros im Argument von \sindex

von peisistratos » Mo 14. Feb 2011, 17:47

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

Nach oben