¡Todo lo anterior muestra que puede ser una función agradable, flexible (o prohibir una sobrecarga) en LaTeX! (ese código TeX me parece griego)
bueno, solo para agregar mi desarrollo reciente (aunque no tan flexible), esto es lo que he usado recientemente en mi documento de tesis, con
\usepackage{ifthen} % provides conditonals...
Inicie el comando, con el comando "opcional" en blanco por defecto:
\newcommand {\figHoriz} [4] [] {
Luego hago que la macro establezca una variable temporal, \ temp {}, de manera diferente dependiendo de si el argumento opcional está en blanco o no. Esto podría extenderse a cualquier argumento aprobado.
\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)
Luego ejecuto la macro usando la variable \ temp {} para los dos casos. (Aquí solo establece el título corto para que sea igual al título largo si no fue especificado por el usuario).
\begin{figure}[!]
\begin{center}
\includegraphics[width=350 pt]{#3}
\temp %see above for caption etc.
\label{#2}
\end{center}
\end{figure}
}
En este caso, solo verifico el argumento único "opcional" que proporciona \ newcommand {}. Si tuviera que configurarlo para, digamos, 3 args "opcionales", todavía tendría que enviar los 3 args en blanco ... por ejemplo.
\MyCommand {first arg} {} {} {}
lo cual es bastante tonto, lo sé, pero eso es lo más lejos que voy a ir con LaTeX: simplemente no es tan sensato una vez que empiezo a mirar el código TeX ... Sin embargo, me gusta el método xparse del Sr. Robertson, quizás Lo intentaré ...