Tex: подробное описание С. М. Львовский


Download 1.51 Mb.
Pdf ko'rish
bet100/143
Sana08.05.2023
Hajmi1.51 Mb.
#1444247
1   ...   96   97   98   99   100   101   102   103   ...   143
Bog'liq
LaTeX-Lvovsky

1.2. Команды с аргументами
В предыдущем разделе мы научились создавать новые команды, не требующие аргументов.
Но мы хорошо знаем, что многие L
A
TEXовские команды принимают аргументы, и часто воз
никает потребность создать новую команду с такими возможностями. Пусть, например, в
Вашем тексте часто встречается
«символ Лежандра» (если Вы не знаете, что это такое —
не страшно), выглядящий так:
a
p
!
. Для получения этого символа в исходном тексте надо
написать (внутри формулы, естественно) так:
\left(\frac{a}{p}\right)
Хорошо бы создать команду \SIMWOL с двумя аргументами, чтобы можно было написать в
формуле \SIMWOL{a}{p} и получить на печати
a
p
!
. Что ж, L
A
TEX предоставляет нам воз
можность сделать и это. Для создания команды с аргументами используется все та же ко

манда \newcommand, но с необязательным аргументом. Посмотрите, как можно определить
команду \SIMWOL:
\newcommand{\SIMWOL}[2]{\left(\frac{#1}{#2}\right)}
Разберем, что означает эта запись. В квадратных скобках стоит количество аргументов в на

шем макросе (в нашем случае 2). Далее, в самом
«замещающем тексте» появились значки #1
и #2 . При развертывании макроса на их место будут подставляться соответственно первый
и второй аргументы нашей новой команды \SIMWOL. Например, если в формуле написать
\SIMWOL{a+b}{c}
то будет напечатано
a + b
c
!
.
Теперь рассмотрим точные правила. Необязательный аргумент команды \newcommand,
который должен быть расположен между двумя обязательными, указывает, сколько аргу

ментов будет требовать создаваемая Вами команда (макрос). Это количество аргументов в
макросе с аргументами не может быть более 9. В
«замещающем тексте» места, на которые
при развертывании макроса будут подставляться аргументы, обозначаются символами #1
для первого аргумента, #2 для второго аргумента и т. д. Эти символы могут идти в любом
порядке и присутствовать любое количество раз (в том числе и ни разу). Когда мы будем ис

пользовать нашу новую команду в тексте, после ее имени в фигурных скобках должны будут
следовать аргументы, ровно в том количестве, которое мы указывали в необязательном аргу

менте команды \newcommand, и каждый
— в своей паре фигурных скобок (как обязательные
аргументы любой другой L
A
TEXовской команды). При развертывании макроса на место его
и его аргументов будет подставлен
«замещающий текст», в котором вместо #1 всюду стоит
первый аргумент, вместо #2
— второй аргумент, и т. д.
Проиллюстрируем все сказанное примером. Пусть мы определили команду \PUTANICA
следующим образом:
\newcommand{\PUTANICA}[4]{k#4K#2#1L}
Тогда будет получаться, например, такое:
Крокодил Гена и его друзья.
\PUTANICA{DI}{O}{GO}{RO}
gENA I EGO DRUZXQ.


VII.2. СЧЕТЧИКИ
143
В самом деле, первым аргументом команды \PUTANICA будет DI, вторым O, третьим GO, чет
вертым RO; при развертывании появится сначала буква k, затем четвертый аргумент, затем
буква K, затем второй, первый и наконец буква L — как если бы kROKODIL присутствовал в
исходном тексте собственной персоной.
Ни аргументы L
A
TEXовских команд (в том числе и определенных Вами), ни «замещающий
текст
» в \newcommand не должны содержать «несбалансированных» (не имеющих пары) фи
гурных скобок.
В L
A
TEXе многие команды могут принимать, наряду с обязательными, еще и необязатель
ные аргументы. Не выходя за рамки L
A
TEXа, создать новую команду с такими свойствами
невозможно.
Если Вы хотите создать макрос с аргументами, имя которого совпадает с именем уже
существующей команды, то надо воспользоваться командой \renewcommand с необязатель

ным аргументом. Место постановки и значение этого необязательного аргумента, а также
правила употребления символов #1, #2 и т. д . при этом будут такие же, как для коман

ды \newcommand.
Приведем еще один пример практически полезного макроса с аргументами. При написа

нии этой книги автор широко пользовался ссылками на страницу, автоматически генерируе

мыми с помощью команды \pageref. Например, если какое-то место в тексте было помечено
с помощью команды \label{units} , то ссылка на соответствующую страницу выглядела бы
так:
kAK MY UVE OTMEˆALI
NA STR.~\pageref{units}, ...
После первого десятка таких ссылок возникает желание сократить число нажатий на клави

ши. В результате в преамбуле появилась строка
\newcommand{\STR}[1]{STR.~\pageref{#1}}
и ссылки на страницы стало возможно оформлять так:
kAK MY UVE OTMEˆALI
NA \STR{units}, ...
Не говоря уж об экономии времени на набор команды \pageref, исходный текст, в котором
сократилось количество латинских букв, стал более обозримым.

Download 1.51 Mb.

Do'stlaringiz bilan baham:
1   ...   96   97   98   99   100   101   102   103   ...   143




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling