Seite 1 von 1

Befehle mit echten Optionen

Verfasst: Mi 3. Nov 2010, 11:41
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.

Verfasst: Mi 3. Nov 2010, 13:25
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.