Abfrage von Argumenten und IfThen...

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: Abfrage von Argumenten und IfThen...

von faultier » Mi 30. Sep 2015, 19:01

Ok, mir ist tatsächlich die zweite veränderte Zeile im Code untergegangen, die muss ich nachher nochmal prüfen.

von Besserwisser » Mi 30. Sep 2015, 18:50

Hier wurde dir doch bereits erklärt, dass du für \IfArgIsEmpty KOMA-Script 3.19 brauchst. Außerdem wurde Dir erklärt, dass das mit \DeclareRobustCommand nicht funktioniert. Dagegen funktioniert das Beispiel von dort mit KOMA-Script 3.19 in der Tat einwandfrei. Was stellst du jetzt also hier diese Frage? Man hat dir dort sogar einen Link gegeben, mit dem du KOMA-Script 3.19 bei Bedarf installieren kannst.

Man hat dir dort auch die Syntax von \IfArgIsEmpty erklärt. Warum suchst du also auf Google nach einer LaTeX-Anweisung, die es in KOMA-Script erst seit kurzem gibt? Das ist doch Quatsch!

Man hat dir dort auch erklärt, dass du ggf. das Paket xstring verwenden kannst, um \IfArgIsEmpty (beispielsweise durch \IfStrEq) zu ersten. Auch auf die KOMA-Script-Anleisung \ifstr, die im [d]scrguide[/d] schon seit Jahren lange erklärt ist, wurde hingewiesen.

Also, warum trägst du das Problem jetzt (ohne Verlinkung!) hier her, statt den Hinweisen zu folgen und ggf. dort noch einmal nachzufragen??? Und warum gibst du hier den fehlerhaften Code an, obwohl du bereits einen funktionierenden Code erhalten hast?

Abfrage von Argumenten und IfThen...

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:
\Name{Vorname}{Nachname}
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
\Name{}{Mustermann}
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

Nach oben