Все вышеперечисленное шоу трудно это может быть, чтобы сделать хороший, гибкий (или запретить перегруженный) функцию в LaTeX !!! (Что TeX код выглядит как греческие для меня)
ну просто добавить мое недавнее (хотя и не столь гибки) развитие, вот что я недавно использовал в своем дипломном документе, с
\usepackage{ifthen} % provides conditonals...
Start команда, с «дополнительным» набор команд пустым по умолчанию:
\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 Робертсона, хотя, возможно, я попробую ...
Соответствующий вопрос: [Различные определения команды с и без дополнительного аргумента] (http://tex.stackexchange.com/q/308/1347) , –