2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Новые команды с необязательными аргументами.
Сообщение02.01.2010, 01:04 
Известно, что в LaTeXе бывают команды с необязательными аргументами.

С помощью команд \newcommand я умею делать команды вовсе без аргументов или с фиксированным числом обязательных аргументов.
Можно ли такими же простыми методами делать свои новые команды с необязательными аргументами? Как? Научите кто-нибудь пожалуйста?

 
 
 
 Re: Новые команды с необязательными аргументами.
Сообщение02.01.2010, 08:34 
Аватара пользователя
Почитайте умных книжек типа "Все про TeX" Д. Кнута - там подобные вопросы разобраны.

 
 
 
 Re: Новые команды с необязательными аргументами.
Сообщение02.01.2010, 11:18 
У Кнута всё только про ТеХ, но не про ЛаТеХ. А Львовский считает, что создание команд с необязательными параметрами средствами самого ЛаТеХа невозможно.

 
 
 
 Re: Новые команды с необязательными аргументами.
Сообщение02.01.2010, 21:38 
На http://texblog.net/help/latex/ltx-18.html нашла вроде что-то.... но как-то странно. может я чего-то не поняла, но судя по тому что поняла необязательный аргумент может быть только один, он обязательно должен быть первым и примеров там нет... а работает все это в реале как-то странно...
И ограничение в 9 аргументов... для нормальных людей наверное достаточно... но для не очень нормальных какое-то все же маловатое...

 
 
 
 Re: Новые команды с необязательными аргументами.
Сообщение05.01.2010, 15:43 
Примеры есть в других местах, если нужно.
http://wiki.linuxformat.ru/index.php/LXF94:LaTeX
Сколько я помню, более одного необязательного аргумента бывает только у \newcommand и подобных ей.

vezyolka, у вас необязательные аргументу какого типа могут быть? Если они не совсем произвольные, есть какие-то ограничения, то этим можно воспользоваться.
Например, можно создать команду, которая будет подставлять вместо пустых аргументов значения по умолчанию.

Код:
\newcommand{\test}[3]{
\def\tempempty{}
\def\tempa{#1}
\def\tempb{#2}
\def\tempc{#3}
  \ifx\tempempty\tempa \def\tempa{aaa}\fi
  \ifx\tempempty\tempb \def\tempb{bbb}\fi
  \ifx\tempempty\tempc \def\tempc{ccc}\fi
  \tempa\tempb\tempc
}


Выполнение
\test{12}{}{34}
приведёт к
12bbb34

 
 
 
 Re: Новые команды с необязательными аргументами.
Сообщение05.01.2010, 22:00 
Аватара пользователя
Здесь "теория" (сам забыл).

Вот мой пример. Для ссылок типа "Рис. 1", "Рис. 1(а)" "Рис. 1(а,б)" завёл команду

Код:
\newcommand{\RefFig}[2][]{Рис.\,\ref{#2}\textit{#1}}

\RefFig{Label}         --- Рис. 1
\RefFig[(a,б)]{Label}  --- Рис. 1(a,б)

 
 
 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group