Prüfen, ob \newcommand\abc{} leer ist Thema ist als GELÖST markiert

Klassen und Pakete zur einfachen Umsetzung individueller Vorstellungen


matze

Beitrag von matze »

...
Zuletzt geändert von matze am Mo 19. Sep 2011, 01:01, insgesamt 1-mal geändert.

CrazyHorse
Forum-Guru
Forum-Guru
Beiträge: 252
Registriert: Di 16. Mär 2010, 09:39

Beitrag von CrazyHorse »

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

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

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

sommerfee
Forum-Century
Forum-Century
Beiträge: 219
Registriert: Sa 12. Jul 2008, 08:02

Beitrag von sommerfee »

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.

matze

Beitrag von matze »

...
Zuletzt geändert von matze am Mo 19. Sep 2011, 01:01, insgesamt 1-mal geändert.

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

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?!
Clemens
Paketauthor

sommerfee
Forum-Century
Forum-Century
Beiträge: 219
Registriert: Sa 12. Jul 2008, 08:02

Beitrag von sommerfee »

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.

CrazyHorse
Forum-Guru
Forum-Guru
Beiträge: 252
Registriert: Di 16. Mär 2010, 09:39

Beitrag von CrazyHorse »

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

matze

Beitrag von matze »

...
Zuletzt geändert von matze am Mo 19. Sep 2011, 01:00, insgesamt 1-mal geändert.

CrazyHorse
Forum-Guru
Forum-Guru
Beiträge: 252
Registriert: Di 16. Mär 2010, 09:39

Beitrag von CrazyHorse »

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

Antworten