Prüfen, ob \newcommand\abc{} leer ist

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: Prüfen, ob \newcommand\abc{} leer ist

von CrazyHorse » Di 26. Apr 2011, 08:59

matze hat geschrieben:Jetzt muß ich doch mal fragen: Was für einen Sinn macht es, ein newcommand zu definieren, das leer ist?

Das ist doch ein Programmierfehler, wenn man leere Befehle definiert ??
Wozu braucht man eine Routine, die dem nachspürt?
es geht hier nicht um \newcommand, sondern darum, zu überprüfen, ob ein Parameter einen Wert hat oder nicht.

Herbert

von matze » Mo 25. Apr 2011, 23:57

...

von CrazyHorse » Mo 25. Apr 2011, 15:43

sommerfee hat geschrieben:
cgnieder hat geschrieben:Das ist das, was ich - offensichtlich unglücklich formuliert - eigentlich meinte... Wenn nun bei
\ifx#1\relax bla \else blub \fi
#1 kein Token hat, dann müsste also \relax mit b verglichen werden?!
Ja.
was man durch
\def\test#1{\ifx#1\relax \relax true\else false\fi}
...
\test{}
überprüfen kann, denn die Ausage ist wahr, im Gegensatz zu
\def\test#1{\ifx#1 \relax true\else false\fi}
...
\test{}
Herbert

von sommerfee » Mo 25. Apr 2011, 13:15

cgnieder hat geschrieben:Das ist das, was ich - offensichtlich unglücklich formuliert - eigentlich meinte... Wenn nun bei
\ifx#1\relax bla \else blub \fi
#1 kein Token hat, dann müsste also \relax mit b verglichen werden?!
Ja.

von cgnieder » Mo 25. Apr 2011, 12:57

sommerfee hat geschrieben:Es werden immer die folgenden beiden Token verglichen, also in diesem Fall \relax mit dem ersten Token von #1. Wenn aber #1 gar kein Token hat, weil es leer ist, wird \relax mit (dem #1 nachstehenden) \relax verglichen.
Das ist das, was ich - offensichtlich unglücklich formuliert - eigentlich meinte... Wenn nun bei
\ifx#1\relax bla \else blub \fi
#1 kein Token hat, dann müsste also \relax mit b verglichen werden?!

von matze » So 24. Apr 2011, 21:26

...

von sommerfee » So 24. Apr 2011, 14:48

cgnieder hat geschrieben:
CrazyHorse hat geschrieben:es werden _immer_ die folgenden beiden Token verglichen, also #1 und \empty
Wieso funktioniert dann \ifx\relax#1\relax?
Es werden immer die folgenden beiden Token verglichen, also in diesem Fall \relax mit dem ersten Token von #1. Wenn aber #1 gar kein Token hat, weil es leer ist, wird \relax mit (dem #1 nachstehenden) \relax verglichen.

von cgnieder » So 24. Apr 2011, 10:44

CrazyHorse hat geschrieben:es werden _immer_ die folgenden beiden Token verglichen, also #1 und \empty
Wieso funktioniert dann \ifx\relax#1\relax?

von CrazyHorse » So 24. Apr 2011, 08:03

matze hat geschrieben:Eine Überprüfung von \def und \newcommand ist nicht notwendig, wenn den Definitionen ein individueller Prefix vorangestellt wird.
wovon redest du?

Herbert

von matze » So 24. Apr 2011, 00:52

...

Nach oben