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


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

2. Счетчики
В этом разделе мы научимся самостоятельно организовывать автоматическую нумерацию,
подобно тому, как L
A
TEX автоматически нумерует главы, страницы, формулы и т. д. Для это
го нам надо познакомиться с понятием счетчика. Счетчик
— это специальная переменная,
значение которой является целым числом. L
A
TEX предоставляет возможность присваивать
счетчику различные значения и изменять их, выводить значение счетчика на печать, а так

же организовывать с помощью счетчиков автоматическую генерацию ссылок. Рассмотрим
последовательно, как все это делается.


VII.2. СЧЕТЧИКИ
144
2.1. Создание счетчиков и простейшие операции с ними
Каждый L
A
TEXовский счетчик имеет свое имя — последовательность букв (без знака \ !).
Прописные и строчные буквы в именах счетчиков различаются; если русские буквы можно
употреблять в именах команд, то их можно употреблять и в именах счетчиков. Чтобы можно
было работать со счетчиком, надо его создать командой \newcounter, имеющей один обяза

тельный аргумент
— имя, которое Вы придумали для счетчика. Например, команда
\newcounter{abcd}
создает новый счетчик с именем abcd. Если имя, которое Вы придумали для счетчика, уже
занято (так может случиться, даже если команда \newcounter в Вашем тексте всего одна:
некоторые счетчики в L
A
TEXе уже определены в момент начала обработки Вашего текста), то
L
A
TEX создавать счетчик с таким именем откажется и выдаст сообщение об ошибке.
В отличие от многих других L
A
TEXовских команд, команда для создания нового счетчика
является
«глобальной»: даже если она давалась внутри группы, L
A
TEX не забудет о существо
вании определенного ей счетчика и после выхода из этой группы. Это отличает \newcounter
от \newcommand и \renewcommand.
Что же можно делать со счетчиком? Во-первых, можно менять его численное значение
(на программистском жаргоне:
«присваивать счетчику различные значения»). При созда
нии счетчика его значение устанавливается в 0; чтобы установить какое-то другое значение,
используется команда \setcounter, имеющая два обязательных аргумента: первый
— имя
счетчика, второй
— значение, которое счетчику присваивается. Если, например, написать
\setcounter{abcd}{1994}
то после того, как TEX прочтет эту команду, значение счетчика abcd установится равным 1994.
Значение, которое присваивается счетчику, может быть и отрицательным, но обязано быть
целым.
Другой способ изменить значение счетчика
— это прибавить к нему какое-то целое чи
сло. Для этого используется команда \addtocounter. Эта команда также имеет два обяза

тельных аргумента: первый
— имя счетчика, второй — число, которое прибавляется к счет
чику. Например, после выполнения команд
\setcounter{abcd}{100}
\addtocounter{abcd}{-27}
значением счетчика abcd будет число 73.
Команды, изменяющие значение счетчика, также являются
«глобальными»: если с их по
мощью внутри группы значение счетчика было изменено, то по выходе из группы его прежнее
значение не восстановится.
Главная задача L
A
TEXа — не просто присваивать значения каким-то переменным, а вер
стать тексты, так что перейдем к самому главному: как выдать значение счетчика на печать.
Самый распространенный случай
— печать значения счетчика обычными («арабскими»)
цифрами. Для этого используется команда \arabic:
Шел по улице отряд
— 40 маль
чиков подряд.
\setcounter{abcd}{40}
–EL PO ULICE OTRQD ---
\arabic{abcd}
MALXˆIKOW PODRQD.


VII.2. СЧЕТЧИКИ
145
Значение счетчика печатается текущим шрифтом: если значение счетчика равно, скажем, 1994,
то, встретив команду \arabic{abcd}, TEX отреагирует так же, как если бы на ее месте в ис
ходном тексте было написано 1994.
Чтобы напечатать значение счетчика римскими цифрами, надо воспользоваться коман

дой \Roman (если мы хотим, чтобы римские цифры записывались прописными латинскими
буквами) или \roman (чтобы записать римскую цифру строчными латинскими буквами):
Людовика XIV звали
«Король
солнце
».
\setcounter{abcd}{14}
l@DOWIKA~\Roman{abcd} ZWALI
\LK kOROLX-SOLNCE\PK.
Естественно, при печати значения счетчика римскими цифрами это значение должно быть
положительным числом.
Можно, наконец, напечатать букву латинского алфавита, порядковый номер которой ра

вен значению счетчика. Для этого используются команды \alph (для печати строчной буквы)
и \Alph (для печати прописной буквы):
Наконец я узнаю, какая буква
стоит в латинском алфавите на
седьмом месте! Вот она: g.
\setcounter{abcd}{7}
nAKONEC Q UZNA@, KAKAQ BUKWA
STOIT W LATINSKOM ALFAWITE
NA SEDXMOM MESTE!
wOT ONA:~\alph{abcd}.
Если значение счетчика при пользовании этими командами превышает количество букв в
латинском алфавите, то L
A
TEX выдает сообщение об ошибке.
В L
A
TEXе отсутствует команда, позволяющая напечатать русскую букву с номером, рав
ным значению счетчика. Средствами TEXа такую команду нетрудно создать, что и сделано,
например, в
«русифицирующем стиле», использованном при написании этой книги.
Наконец, можно напечатать один из девяти символов, используемых иногда в в англо

язычных странах для обозначения последовательных сносок (вместо цифр). Для этого ис

пользуется команда \fnsymbol, применять которую можно только внутри формул:
Для сносок в Англии применя

ют такие символы:
∗, †, ‡, а даль
ше попробуйте сами.
\setcounter{abcd}{0}
dLQ SNOSOK W aNGLII
PRIMENQ@T TAKIE SIMWOLY:
$\addtocounter{abcd}{1}
\fnsymbol{abcd}$,
$\addtocounter{abcd}{1}
\fnsymbol{abcd}$,
$\addtocounter{abcd}{1}
\fnsymbol{abcd}$,
A DALX[E POPROBUJTE SAMI.
Обратите внимание, как три идентичных фрагмента исходного текста дали на печати три раз

ных символа.
Для полноты картины скажем об еще одной менее употребительной команде, связанной со счет

чиками. Именно, в командах для изменения значений счетчиков можно вместо явного указания чисел
использовать значения других счетчиков, для чего употребляется команда \value. Например, в ре

зультате выполнения команд


VII.2. СЧЕТЧИКИ
146
\newcounter{efgh}
\setcounter{abcd}{10}
\setcounter{efgh}{100}
\addtocounter{efgh}{-\value{abcd}}
значение счетчика efgh станет равно 90. Можно даже писать, например,
\setcounter{efgh}{1000}
\tolerance=\value{efgh}
но большого смысла в таких трюках, как правило, нет.
Давайте теперь применим наши познания о счетчиках для дела. На стр.
141
мы обеща

ли Вам так усовершенствовать макрос \z, начинающий новый абзац и печатающий жирным
шрифтом слово
«Задача», чтоб он еще и автоматически нумеровал эти задачи, так, что мож
но было бы просто писать в исходном тексте
\z nAJTI SUMMU...
\z rE[ITX URAWNENIE...
\z pOEZD WY[EL IZ PUNKTA a...
и при этом знать, что номера L
A
TEX проставит сам. Теперь мы в состоянии решить эту про
блему. Во-первых, для этого надо создать счетчик, значение которого в каждый момент бу

дет равно номеру последней обработанной задачи; во-вторых, в определении команды \z
надо предусмотреть, чтобы всякий раз значение этого счетчика увеличивалось на единицу, а
затем печаталось в качестве номера задачи. В качестве имени счетчика выберем бесхитрост

ное ZADAˆA :
\newcounter{ZADAˆA}
(напомним, что при выполнении этой команды счетчику ZADAˆA будет присвоено значение 0).
Теперь модифицируем определение макроса \z так:
\newcommand{\z}{\par\addtocounter{ZADAˆA}{1}%
{\bf zADAˆA \arabic{ZADAˆA}.} }
Напомним, что команда \par означает
«завершить предыдущий абзац, если он еще не был
завершен
»; без нее можно обойтись, если мы будем ставить команду \z только после пустой
строки. Знак процента мы поставили, чтобы убрать лишний пробел, порождаемый концом
строки. Теперь при первом исполнении команды \z значение счетчика ZADAˆA станет равно 1
и будет напечатано
«Задача 1.», при втором исполнении этой команды значение счетчика
станет равно уже 2 и напечатается
«Задача 2.» . . . и т. д., что нам и нужно!

Download 1.51 Mb.

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




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