Все вищесказане доволі важко: можна зробити приємну, гнучку (або заборонити перевантажену) функцію в LaTeX !!! (цей код TeX мені схожий на грецьку)
ну просто додати мою недавню (хоча і не настільки гнучку) розробку, ось що я нещодавно використав у своїй докторській дисертації, з
\usepackage{ifthen} % provides conditonals...
Запустіть команду, за замовчуванням порожній набір команд "необов'язково":
\newcommand {\figHoriz} [4] [] {
Тоді я макрос встановити тимчасову змінну \ temp {}, інакше залежно від того, чи необов'язковий аргумент порожній чи ні. Це може бути поширене на будь-який переданий аргумент.
\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)
Потім я запускаю макрос, використовуючи змінну \ temp {} для двох випадків. (Тут він просто встановлює короткий підпис, що дорівнює довгому підпису, якщо він не був визначений користувачем).
\begin{figure}[!]
\begin{center}
\includegraphics[width=350 pt]{#3}
\temp %see above for caption etc.
\label{#2}
\end{center}
\end{figure}
}
У цьому випадку я перевіряю лише один, "необов'язковий" аргумент, який надає \ newcommand {}. Якби ви налаштували його, скажімо, на 3 "необов'язкові" аргументи, вам все одно доведеться надсилати 3 порожні аргументи ... наприклад.
\MyCommand {first arg} {} {} {}
що досить глупо, я знаю, але це стосується того, наскільки я збираюся піти з LaTeX - це просто не так чуйно, коли я починаю дивитися на код TeX ... Мені подобається метод xparse містера Робертсона, хоча, можливо, я Спробую ...