Befehle mit echten Optionen

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: Befehle mit echten Optionen

von KOMA » Mi 3. Nov 2010, 13:25

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.

Befehle mit echten Optionen

von pospiech » Mi 3. Nov 2010, 11:41

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.

Nach oben