Tutto quanto sopra mostra che può essere difficile realizzare una funzione piacevole, flessibile (o proibire un sovraccarico) in LaTeX !!! (quel codice TeX mi sembra greco)
bene, solo per aggiungere il mio recente sviluppo (anche se non altrettanto flessibile), ecco quello che ho usato di recente nel mio documento di tesi, con
\usepackage{ifthen} % provides conditonals...
Avviare il comando, con il comando "opzionale" impostato in bianco per impostazione predefinita:
\newcommand {\figHoriz} [4] [] {
Ho quindi impostato la macro una variabile temporanea, \ temp {}, in modo diverso a seconda che l'argomento facoltativo sia vuoto o meno. Questo potrebbe essere esteso a qualsiasi argomento passato.
\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)
Quindi eseguo la macro usando la variabile \ temp {} per i due casi. (Qui imposta semplicemente la didascalia in modo che sia uguale alla didascalia lunga se non è stata specificata dall'utente).
\begin{figure}[!]
\begin{center}
\includegraphics[width=350 pt]{#3}
\temp %see above for caption etc.
\label{#2}
\end{center}
\end{figure}
}
In questo caso, controllo solo il singolo argomento "facoltativo" fornito da \ newcommand {}. Se dovessi configurarlo per, diciamo, 3 arg "opzionali", dovresti comunque inviare i 3 arg vuoti ... ad es.
\MyCommand {first arg} {} {} {}
il che è abbastanza sciocco, lo so, ma questo è quanto mi spingerò verso LaTeX - non è poi così sensato una volta che inizio a guardare il codice TeX ... Mi piace il metodo xparse del signor Robertson però, forse io lo proverò ...