Prüfen, ob \newcommand\abc{} leer ist Thema ist als GELÖST markiert
-
- Forum-Guru
- Beiträge: 252
- Registriert: Di 16. Mär 2010, 09:39
- cgnieder
- Forum-Meister
- Beiträge: 730
- Registriert: Fr 22. Okt 2010, 18:37
- Wohnort: Herrenberg
- Kontaktdaten:
Wieso funktioniert dann \ifx\relax#1\relax?CrazyHorse hat geschrieben:es werden _immer_ die folgenden beiden Token verglichen, also #1 und \empty
Clemens
Paketauthor
Paketauthor
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.cgnieder hat geschrieben:Wieso funktioniert dann \ifx\relax#1\relax?CrazyHorse hat geschrieben:es werden _immer_ die folgenden beiden Token verglichen, also #1 und \empty
- cgnieder
- Forum-Meister
- Beiträge: 730
- Registriert: Fr 22. Okt 2010, 18:37
- Wohnort: Herrenberg
- Kontaktdaten:
Das ist das, was ich - offensichtlich unglücklich formuliert - eigentlich meinte... Wenn nun beisommerfee 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.
\ifx#1\relax bla \else blub \fi
Clemens
Paketauthor
Paketauthor
-
- Forum-Guru
- Beiträge: 252
- Registriert: Di 16. Mär 2010, 09:39
was man durchsommerfee hat geschrieben:Ja.cgnieder hat geschrieben:Das ist das, was ich - offensichtlich unglücklich formuliert - eigentlich meinte... Wenn nun bei#1 kein Token hat, dann müsste also \relax mit b verglichen werden?!\ifx#1\relax bla \else blub \fi
\def\test#1{\ifx#1\relax \relax true\else false\fi} ... \test{}
\def\test#1{\ifx#1 \relax true\else false\fi} ... \test{}
-
- Forum-Guru
- Beiträge: 252
- Registriert: Di 16. Mär 2010, 09:39
es geht hier nicht um \newcommand, sondern darum, zu überprüfen, ob ein Parameter einen Wert hat oder nicht.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?
Herbert