PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Stringsplit



ThomasKonrad
30-08-2006, 08:33
Hallo,

habe folgendes Problem:
ich möchte aus einem Namen -Karl Otto Schulze- den String -Schulze!Karl Otto- für einen Indexeintrag umwandeln. Das klappt mit einer umgebauten Funktion für die Datumsausgabe auch ganz gut:

\DeclareRobustCommand*{\WandleNamenc}[1]{%
\begingroup
\def\doit##1 ##2 ##3\relax{%
##3!##1 ##2%
\endgroup}%
\doit#1\relax}

Das Makro WandleNamenc gibt richtig -Schulze!Karl Otto- zurück. Wenn ich allerdings das Makro im Indexbefehl einsetze, -\index{WandleNamenc{#1}}- nimmt es #1 nicht an und sendet die Fehlermeldung:

! Undefined control sequence.

Hat jemand einen Tipp, wie ich an diesen Problem weiterkomme

Thomas

cookie170
30-08-2006, 13:47
Entschuldige, ich verstehe wenig von Befehlsdefinitionen, aber Du wolltest nicht schreiben:



\index{\WandleNamenc{#1}}


?

Gruß,
Alexander

ThomasKonrad
30-08-2006, 17:33
Hallo Alexander,

es ist ein Schreibfehler.

Bei erneuten Prüfen des Makros, das sich durch drei Ebenen käpfen muss, habe ich den erstaunlichen Effekt bekommen, dass es funktioniert.

Allerdings wird in der *.ind-Datei "\item \WandleNamenc {Karl Otto Schulze}\dotfill" eingetragen. Und ich wollte doch "\item Schulze
\subitem Karl Otto\dotfill
" haben.

Wo liegt der Fehler

Gruss Thomas

rais
31-08-2006, 08:31
Moin moin,
hast Du mal versucht, den \index innerhalb Deiner eigenen Funktion aufzurufen? So à la


\DeclareRobustCommand*{\mypersidx}[1]{%
\begingroup
\def\doit##1 ##2 ##3\relax{%
\index{##3!##1 ##2}%
\endgroup}%
\doit#1\relax}
?
(Ungetestet)
MfG,