Alle oben genannten Show schwer es sein kann, ein schöner zu machen, flexibel (oder eine überlastete bewahre) Funktion in LaTeX !!! (Der TeX-Code wie griechisch ich aussieht)
gut, nur meine letzte hinzuzufügen (wenn auch nicht so flexibel) Entwicklung, ist hier, was ich vor kurzem in meiner Arbeit doc verwendet habe, mit
\usepackage{ifthen} % provides conditonals...
starten der Befehl, mit dem „optional“ Befehl standardmäßig leer:
\newcommand {\figHoriz} [4] [] {
ich dann das Makro gesetzt habe eine temporäre Variable, \ temp {}, unterschiedlich, je nachdem, ob das optionale Argument ist leer. Dies könnte auf jedes bestandene Argument erweitert werden.
\ifthenelse { \equal {#1} {} } %if short caption not specified, use long caption (no slant)
{ \def\temp {\caption[#4]{\textsl{#4}}} } % if #1 == blank
{ \def\temp {\caption[#1]{\textsl{#4}}} } % else (not blank)
Dann führe ich das Makro mit der Variable \ temp {} für die beiden Fälle. (Hier wird nur die kurze Überschrift festgelegt, die der langen Beschriftung entspricht, wenn sie nicht vom Benutzer angegeben wurde).
\begin{figure}[!]
\begin{center}
\includegraphics[width=350 pt]{#3}
\temp %see above for caption etc.
\label{#2}
\end{center}
\end{figure}
}
In diesem Fall überprüfe ich nur für das einzelne, "optionale" Argument, das \ newcommand {} zur Verfügung stellt. Wenn Sie es zum Beispiel für 3 "optionale" Argumente einrichten würden, müssten Sie immer noch die 3 leeren Argumente senden ... z.
\MyCommand {first arg} {} {} {}
das ist ziemlich dumm, ich weiß, aber das ist so weit ich mit LaTeX gehen werde - es ist einfach nicht so unsinnig, wenn ich bei TeX-Code starten auf der Suche ... Ich mag Mr. Robertsons xparse Methode aber vielleicht werde ich versuchen, es ...
Relevante Frage: [Verschiedene Befehlsdefinitionen mit und ohne optionales Argument] (http://tex.stackexchange.com/q/308/1347) . –