PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Makros mit Optionen



Korrix
11-06-2007, 11:50
Hallo LaTeXer,

mit \newcommand{...}[x]{...} kann ich ja bekanntlich ein Makro schreiben. Ich möchte aber ein Makro mit Optionen, dessen Aufruf dann zB so aussieht:
\sonderformat{Formatierungsoption}{Text, der formatiert werden soll}. Je nach angegebener eigener(!) Formatierungsoption soll dann der in {Klammern} gesetzte Text entsprechend formatiert werden. Mit eigener Formatierungsoption meine ich selbsterfundene Bezeichnungen wie: "FettGrau", "KursivRot", also vorgegebene Kombinationen von Formatierungen, die je nach gewählter Option angewendet werden.

Dabei möchte ich nicht nur zwei verschiedene Optionen vordefinieren. Gibt es, ähnlich dem \ifthenelse, auch eine Art "Switch/Case" wie in anderen Programmiersprachen?

Weiß jemand, wie das geht?

sommerfee
11-06-2007, 13:44
Ich würde dies mit Hilfe des keyval-Paketes bzw. des kvoptions-Paketes lösen, dann ist man am flexibelsten und kann sogar Optionen mit Wertzuweisungen definieren. Also z.B.:

\usepackage{keyval}
\makeatletter
\define@key{mykey}{FettGrau}[]{....}
\define@key{mykey}{KursivRot}[]{....}
\define@key{mykey}{color}{...\setcolor{#1}...}
\makeatother
\newcommand\sonderformat[2]{%
\setkeys{mykey}{#1}%
... #2 ...
}

Liebe Grüße,
Axel

Nachtrag: Ja, es gibt auch sowas wie switch/case, schaue mal hier hinein und lasse dich von TeX-Internata erschlagen ;) : http://www.eijkhout.net/tbt/