Wszystko to pokazuje, że ciężko jest stworzyć ładną, elastyczną (lub zabronić przeciążonej) funkcji w LaTeX !!! (ten kod TeX wygląda dla mnie jak grecki)
cóż, żeby dodać mój niedawny (aczkolwiek nie tak elastyczny) rozwój, oto czego ostatnio użyłem w mojej pracy doktorskiej, z
\usepackage{ifthen}
Uruchom polecenie, domyślnie ustawiane jako puste polecenie „opcjonalne”:
\newcommand {\figHoriz} [4] [] {
Następnie każę makro ustawić zmienną tymczasową \ temp {}, w różny sposób w zależności od tego, czy opcjonalny argument jest pusty. Można to rozszerzyć na dowolny przekazany argument.
\ifthenelse { \equal {#1} {} }
{ \def\temp {\caption[#4]{\textsl{#4}}} }
{ \def\temp {\caption[#1]{\textsl{#4}}} }
Następnie uruchamiam makro przy użyciu zmiennej \ temp {} w dwóch przypadkach. (Tutaj po prostu ustawia krótki podpis tak, aby był równy długiemu podpisowi, jeśli nie został określony przez użytkownika).
\begin{figure}[!]
\begin{center}
\includegraphics[width=350 pt]{#3}
\temp
\label{#2}
\end{center}
\end{figure}
}
W tym przypadku sprawdzam tylko pojedynczy, „opcjonalny” argument, który dostarcza \ newcommand {}. Gdybyś miał ustawić to dla, powiedzmy, 3 "opcjonalnych" argumentów, nadal musiałbyś wysłać 3 puste argumenty ... np.
\MyCommand {first arg} {} {} {}
co jest dość głupie, wiem, ale to mniej więcej na tyle, na ile mam zamiar posunąć się do LaTeX-a - po prostu nie jest to aż tak sensowne, kiedy zacznę patrzeć na kod TeX-a ... Podoba mi się jednak metoda xparse pana Robertsona, być może ja spróbuję ...