2014 dxdy logo

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

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




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


01/01/10
5
Известно, что в LaTeXе бывают команды с необязательными аргументами.

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

 Профиль  
                  
 
 Re: Новые команды с необязательными аргументами.
Сообщение02.01.2010, 08:34 
Модератор
Аватара пользователя


11/01/06
5710
Почитайте умных книжек типа "Все про TeX" Д. Кнута - там подобные вопросы разобраны.

 Профиль  
                  
 
 Re: Новые команды с необязательными аргументами.
Сообщение02.01.2010, 11:18 
Заслуженный участник


11/05/08
32166
У Кнута всё только про ТеХ, но не про ЛаТеХ. А Львовский считает, что создание команд с необязательными параметрами средствами самого ЛаТеХа невозможно.

 Профиль  
                  
 
 Re: Новые команды с необязательными аргументами.
Сообщение02.01.2010, 21:38 


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

 Профиль  
                  
 
 Re: Новые команды с необязательными аргументами.
Сообщение05.01.2010, 15:43 


28/10/09
35
Примеры есть в других местах, если нужно.
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 
Заблокирован по собственному желанию
Аватара пользователя


18/05/09
3612
Здесь "теория" (сам забыл).

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

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

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group