Befehle mit echten Optionen

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


pospiech
Moderator
Moderator
Beiträge: 247
Registriert: Do 3. Jul 2008, 11:40
Wohnort: Hannover
Kontaktdaten:

Befehle mit echten Optionen

Beitrag von pospiech »

Ich habe mir folgendes gebastelt um eine Fallunterscheidung machen zu können.
\createboolean{bool@templatetarget@web}{true}
\providecommand{\SetTemplateTargetWeb}{%
	\setboolean{bool@templatetarget@web}{true}%
}%
\providecommand{\SetTemplateTargetPrint}{%
	\setboolean{bool@templatetarget@web}{false}%
}%
\providecommand{\IfElseTemplateTargetWeb}[2]{%
	\ifthenelse{\boolean{bool@templatetarget@web}}{%
		#1% execute Web code
	}{%
		#2% execute Print code
	}
}
Damit bin ich aber nicht wirklich glücklich. Lieber wäre mir folgende Syntax
\SetTemplateTarget{web}
\SetTemplateTarget{print}
\IfTemplateTarget{web}{...}
\IfTemplateTarget{print}{...}
wie würde man das Sinnvoll lösen? Wenn ich sowas baue
\providecommand{\SetTemplateTarget}[2]{%
  \createboolean{bool@templatetarget@#1}{true}%
}%
dann kann man ja alles definieren, aber es dürfen nur bestimmte Optionen zugelassen sein.

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Ich bin mir nicht sicher, dass ich genau verstanden habe, was Dein Problem ist und was Du vor hast. Falls ja:

Da gibt es verschiedene Möglichkeiten. Zum einen, kannst Du zunächst prüfen, ob ein zugelassenes Argument übergeben wurde (scrlfile bietet dafür beispielsweise \ifstr, ifthen bietet ebenfalls einen Vergleich) und anderenfalls einen Fehler ausgeben. Du kannst aber auch einfach nur die erlaubten außerhalb mit \createboolean definieren und dann innerhalb der Template-Anweisung lediglich \setboolean aufrufen. Wenn da ein falsches erstes Argument angegeben wird, gibt es von selbst einen Fehler.

Ich würde mir übrigens bei einem Paket überlegen, ob die Verwendung von ifthen wirklich sein muss. Da Vergleiche damit nicht voll expandierbar sind, gibt es unter manchmal Probleme bei der Expansion, die in seltsamen Fehlermeldungen münden. Boolsche Schalter kann LaTeX beispielsweise bereits selbst ohne ifthen mit \newif\iffoo, \foofalse, \footrue, \iffoo ... \else ... \fi.

Auch die Schleifen von ifthen sind vor allem für Anwender nützlich. Paketautoren können auch hier häufig die Schleifen verwenden, die im LaTeX-Kern bereits als interne Anweisungen definiert sind.

Antworten