PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mehr als einen optionalen Parameter



xbrain
18-12-2004, 17:03
Hi,

wie kann man ein Makro mit mehr als einen optionalen Parameter definieren???



Es soll dann auf diese Weise aufgerufen werden.

\mycommand[textcolor={red}, textform={bold}]


Danke

badera
19-12-2004, 20:17
ich weiss nicht einmal, wie man macht, dass man einen optionalen Parameter angeben kann :o

- Adrian

edico
19-12-2004, 20:21
... versuch es mal so:
...
\newcommand{\myfont}[1]{ \textcolor{red}{{\bf #1}} }
...
\myfont{Diese Zeichen werden fett und mit roter Tinte gesetzt}.
...
edico

badera
19-12-2004, 21:02
:confused: :confused:
Wo ist denn da der optionale Parameter??

- Adrian

edico
19-12-2004, 23:34
@badera: schau dir die mapage an ... und warum kompliziert, wenns einfach geht. Aber vielleicht hab ich auch alles und den Sinn der Ausgangafrage falsch verstanden ...

Ansonsten kann man sich bei Dante informieren:
5.1.8 Wie kann ich in LaTeX eine Anweisung mit mehr als einem optionalen Parameter definieren?
Mit \newcommand kann man nur ein Makro mit einem einzigen optionalen Parameter definieren. Will man ein Makro mit mehr als einem optionalen Parameter definieren, so muß man hierzu mehrere Makros mit jeweils einem optionalen Parameter definieren, die den Wert des Parameters zwischenspeichern und ...
edico

badera
20-12-2004, 08:06
Naja, vielleicht hab auch ich alles falsch verstanden.
Unter einem optionalen Parameter verstehe ich einen Parameter, den man angeben kann oder nicht, und wenn man ihn nicht angibt, passiert irgendwas, das per default gesetzt ist. So wie das bei Latex üblicherweise in Eckigen Klammern vor den eigentlichen Parametern gemacht wird. Beispiel


\minipage[t]{10cm}

Der optionale Parameter ist hier t, und wenn er weggelassen wird, ist eben eigentlich c gesetzt...

Soviel zu dem, um was es meiner Ansicht nach geht. Gefragt wäre nun, wie dass man mehr als einen solchen optionalen Parameter machen kann, siehe Post zuoberst. Aber möglicherweise habe ich alles falsch verstanden...

- Adrian

edico
20-12-2004, 14:26
Nee, das mit den optionalen Parametern ist schon ok. Aber warum? Egal , sonst das mal probieren:
... optparams.sty - macros with multiple optinal parameters
http://www.tug.org/tex-archive/help/Catalogue/entries/optparams.html
edico

xbrain
20-12-2004, 23:20
Hi,

also ich hab einen Beispiel auf der manpage gefunden, dass gewissermaßen das Problem löst.

____________________________________________
Beispiel :

\cubic[a][b][c]{d} mit drei optionalen Argumenten:

\newcommand{\erstesargument}{}
\newcommand{\zweitesargument}{}

\newcommand{\cubic}[1][a]{
\begingroup
\renewcommand{\erstesargument}{#1}
\cubicZwei}
\newcommand{\cubicZwei}[1][b ]{
\renewcommand{\zweitesargument}{#1}
\cubicDrei}
\newcommand{\cubicDrei}[2][c ]{ \({\erstesargument}x^3+{\zweitesargument}x^2+#1x+# 2\)
\endgroup}
____________________________________________

Jedoch ist die Paramaterreihenfolge in diesem Beispiel festvorgegeben , d.h. wenn ich diesen Makro mit einem optionalen Parameter aufrufe, z.B.

\cubic[k]{n}

wird dieser übergebene Paramater k immer an erster Stelle, anstelle von a eingesetzt. Wie kann ich nun TeX oder LaTeX mitteilen, dass der optionale Parameter k nicht a sondern c ersetzen soll. Dabei hatte ich mir vorgestellt, dass man vielleicht dieses Problem in dieser Schreibform
\cubic[param3=k]{n} elegant lösen könnte.

blubb
21-12-2004, 09:21
Da gibt es Pakete zur Unterstützung:
http://texcatalogue.sarovar.org/entries/keyval.html
http://texcatalogue.sarovar.org/entries/processkv.html
http://texcatalogue.sarovar.org/entries/xkeyval.html

(Anwendungsbsp. ist z.B. das graphicx-Paket.

xbrain
21-12-2004, 14:25
Hi blubb,

danke für die Links. ;) Ich hab im xkeyval-Package die entsprechende Lösung gesehen.