_Hinweis_: diese Antwort stammt eigentlich aus der Originalfrage. Originalfrage http://texwelt.de/wissen/fragen/8404/ist-es-moglich-eigene-befehle-mit-mehr-als-einem-optionalen-argument-zu-definieren. Ich poste sie hier in einer modifizierten Kopie, damit wir die Knowledge-Base leichter lesbar haben.
------
Ich schlage folgende Variante mit `pgfkeys` vor.
\documentclass{article}
\usepackage{pgfkeys}
\pgfkeys{
% dies DEKLARIERT keys mit dem angegebenen initial wert.
% der suffix '/.initial' heisst "legen neuen Key mit dem
% angegeben Wert an".
/feynman/anrede/.initial=,
/feynman/name/.initial=,
/feynman/vorname/.initial=,
}
\newcommand{\name}[1]{%
\begingroup
% Dies nimmt die key-value-liste #1 und setzt alle keys.
% Wenn jemand "anrede" schreibt, wird automatisch "/feynman/"
% davor gehaengt:
\pgfqkeys{/feynman}{#1}%
%
% hier hoelen wir Werte ab und speichern sie in Makros:
\pgfkeysgetvalue{/feynman/anrede}\feynmanAnrede
\pgfkeysgetvalue{/feynman/name}\feynmanName
\pgfkeysgetvalue{/feynman/vorname}\feynmanVorname
%
% Nun kann man was damit machen - z.B. mithilfe von TeX
% Programmierung:
\ifx\feynmanAnrede\empty
\else
\textbf{\feynmanAnrede}~%
\fi
%
\ifx\feynmanVorname\empty
\PackageError{feynman}{Vorname fehlt}{}%
\else
\textsc{\feynmanVorname}~%
\fi
%
\textit{\feynmanName}%
\endgroup
}
\begin{document}
\name{anrede=Frau, vorname=Maria, name=Musterfrau}%
\name{vorname=Max, name=Mustermann}
\end{document}
![alt text][1]
Diese Variante unterscheidet sich von der anderen hier vorgestellten dadurch, dass sie die Werte "direkt" in den Key speichert anstelle noch ein extra-makro zu verwenden. Vorteil (neben vernachlaessigbaren Speichereinsparungen): man kann dann auch sowas wie `\pgfkeys{/feynman/name/.add={<prefix>}{<suffix>}` machen, um einen existierenden Wert zu veraendern. Ausserdem erleichtert das das Auslesen der Werte fuer Leute, nicht auf Anhieb wissen wie das keyvalue system implementiert ist.
Mit einem Wort: fuer keys, die nur Werte enthalten, empfehle ich die Deklaration mit `/.initial` wie oben beschrieben - das skaliert und ist leichter zu dokumentieren.
Details zu dem Stichwort "TeX Programmierung" habe ich mal zusammengeschrieben, man findet das - zusammen mit weiterfuehrenden Hinweisen zu `pgfkeys` bspw. unter http://tex.stackexchange.com/questions/12668/where-do-i-start-latex-programming/27589#27589
[1]: http://texwelt.de/wissen/upfiles/P_9.png