von faultier » Mi 30. Sep 2015, 18:40
Guten Morgen,
ich hänge an einem Problem fest, wo ich nicht recht voran komme. Für die Weiterarbeiten eines Namens habe ich folgendes Kommando definiert:
\newcommand*{\Name}[2]{\textsc{#1 #2\index[Person]{\textsc{#2}, #1}}}
Aufgerufen wird es mit:
Wenn ich den Text setze, wird der Name in Kapitälchen gesetzt, außerdem in der Reihenfolge "Name, Vorname" im "Personenregister" gespeichert, wobei der Nachname dort ebenfalls in Kapitälchen ausgegeben wird.
Soweit funktioniert es. Gerne hätte ich eine Abfrage, ob eines der beiden Felder leer ist, um in diesem Fall kein Komma auszugeben. Momentan führt die Angabe von
im Personenregister zu "Mustermann, , Seitenangabe" und im Text selbst zu einem weiteren Leerzeichen.
In einem anderen Forum riet man mir zu folgendem Code:
\newcommand*{\Name}[2]{\textsc{#1\IfArgIsEmpty{#2}{}{ #2}}\index[Person]{#2, #1@\IName{#1}{#2}}}%
\DeclareRobustCommand*{\IName}[2]{\textsc{\IfArgIsEmpty{#2}{}{#2, }#1}}%
Dieser bringt aber leider eine Fehlermeldung und wenn ich nach "\IfArgIsEmpty" bei Google suche, kommt nicht ein einziger Eintrag.
Erprobt habe ich es dann mit folgenden Minimalbeispiel:
%Definition des Dokumentes "Buch"
\documentclass[11pt,a4paper,twoside,bibliography=totoc]{scrbook}
%Verzeichnisse
\usepackage{imakeidx}
\makeindex[name=Person, title=Personenverzeichnis]
%neu definierte Befehle
\newcommand*{\Name}[2]{\textsc{#1\IfArgIsEmpty{#2}{}{ #2}}\index[Person]{#2, #1@\IName{#1}{#2}}}%
\DeclareRobustCommand*{\IName}[2]{\textsc{\IfArgIsEmpty{#2}{}{#2, }#1}}%
%Beginn des Dokuments
\begin{document}
Ein Satz.
\Name{Max}{Mustermann}
\printindex[Person]
\end{document}
Vielen Dank.
faultier
Guten Morgen,
ich hänge an einem Problem fest, wo ich nicht recht voran komme. Für die Weiterarbeiten eines Namens habe ich folgendes Kommando definiert:
[code]
\newcommand*{\Name}[2]{\textsc{#1 #2\index[Person]{\textsc{#2}, #1}}}
[/code]
Aufgerufen wird es mit:
[code]
\Name{Vorname}{Nachname}
[/code]
Wenn ich den Text setze, wird der Name in Kapitälchen gesetzt, außerdem in der Reihenfolge "Name, Vorname" im "Personenregister" gespeichert, wobei der Nachname dort ebenfalls in Kapitälchen ausgegeben wird.
Soweit funktioniert es. Gerne hätte ich eine Abfrage, ob eines der beiden Felder leer ist, um in diesem Fall kein Komma auszugeben. Momentan führt die Angabe von
[code]
\Name{}{Mustermann}
[/code]
im Personenregister zu "Mustermann, , Seitenangabe" und im Text selbst zu einem weiteren Leerzeichen.
In einem anderen Forum riet man mir zu folgendem Code:
[code]
\newcommand*{\Name}[2]{\textsc{#1\IfArgIsEmpty{#2}{}{ #2}}\index[Person]{#2, #1@\IName{#1}{#2}}}%
\DeclareRobustCommand*{\IName}[2]{\textsc{\IfArgIsEmpty{#2}{}{#2, }#1}}%
[/code]
Dieser bringt aber leider eine Fehlermeldung und wenn ich nach "\IfArgIsEmpty" bei Google suche, kommt nicht ein einziger Eintrag.
Erprobt habe ich es dann mit folgenden Minimalbeispiel:
[code]
%Definition des Dokumentes "Buch"
\documentclass[11pt,a4paper,twoside,bibliography=totoc]{scrbook}
%Verzeichnisse
\usepackage{imakeidx}
\makeindex[name=Person, title=Personenverzeichnis]
%neu definierte Befehle
\newcommand*{\Name}[2]{\textsc{#1\IfArgIsEmpty{#2}{}{ #2}}\index[Person]{#2, #1@\IName{#1}{#2}}}%
\DeclareRobustCommand*{\IName}[2]{\textsc{\IfArgIsEmpty{#2}{}{#2, }#1}}%
%Beginn des Dokuments
\begin{document}
Ein Satz.
\Name{Max}{Mustermann}
\printindex[Person]
\end{document}
[/code]
Vielen Dank.
faultier