Tex: подробное описание С. М. Львовский
Download 1.51 Mb. Pdf ko'rish
|
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling