Tex: подробное описание С. М. Львовский
Отношение подчинения между счетчиками
Download 1.51 Mb. Pdf ko'rish
|
LaTeX-Lvovsky
- Bu sahifa navigatsiya:
- Задача 3.6
2.2. Отношение подчинения между счетчиками
Команда \z, как мы ее определили в предыдущем разделе, нумерует задачи автоматически, но при этом нумерация получается «сплошной». Часто, однако, требуется, чтобы в каждом разделе документа нумерация задач начиналась заново, так что шестая задача в разделе с но мером 3 была озаглавлена Задача 3.6, а первая задача в разделе с номером 4 — Задача 4.1. Сейчас мы узнаем, как этого добиться. Выше мы уже упоминали, что к моменту начала обработки L A TEXом нашего текста некото рые счетчики уже определены. В частности, это счетчики, содержащие номера текущих раз делов документа. Их имена совпадают с именами команд, генерирующих эти разделы: chapter VII.2. СЧЕТЧИКИ 147 (если стилем предусмотрено разбиение на главы), section, subsection и т. д. При каждом исполнении, например, команды \section значение счетчика section увеличивается на 1, и значение этого счетчика в каждый момент равно номеру текущей секции. Поэтому, если в определении команды \z написать \arabic{section}.\arabic{ZADAˆA}. то перед номером задачи будет печататься номер текущей секции и точка. Но как же, все-таки, сделать, чтобы в каждой секции нумерация задач начиналась зано во? Можно, конечно, после каждой команды \section присваивать счетчику ZADAˆA значе ние 0 с помощью команды \setcounter, но это некрасиво и ненадежно (а вдруг забудем?). Вместо этого следовало бы сразу определить счетчик ZADAˆA таким образом: \newcounter{ZADAˆA}[section] При таком определении счетчик ZADAˆA будет, как говорят, подчинен счетчику section: вся кий раз, когда значение счетчика section увеличивается на единицу командой \section, зна чение счетчика ZADAˆA будет устанавливаться в нуль, и тем самым счет задач будет в каждой секции начинаться заново. Стало быть, если считать, что счетчик ZADAˆA определен именно так, как сказано выше, то очередной раз исправленное определение команды \z выглядит так: \newcommand{\z}{\par\addtocounter{ZADAˆA}{1}% {\bf zADAˆA \arabic{section}.\arabic{ZADAˆA}.} } При этом нумерация задач будет начинаться заново в каждом разделе (section), и вторая задача третьего раздела будет иметь номер 3.2. Теперь сообщим точные правила создания счетчиков, подчиненных другому счетчику. Они просты: команда \newcounter может принимать один необязательный аргумент (после обязательного) — имя того счетчика, которому будет подчинен определяемый нами счет чик. Разумеется, в момент выполнения команды \newcounter с необязательным аргументом счетчик, имя которого дается в квадратных скобках, должен уже существовать. Ко всему сказанному требуется одно важное уточнение: мы еще толком не объяснили, в каких случаях значение подчиненного счетчика устанавливается в нуль. В самом деле, пусть счетчик SLUGA подчинен счетчику HOZQIN; тогда команда \addtocounter{HOZQIN}{1} никоим образом не повлияет на значение подчиненного счетчика SLUGA: изменение значений счетчика влияет на значения подчиненных ему счетчиков только в том случае, если значение подчиняющего счетчика изменялось с помощью специальных команд. Таких команд всего две, из них чаще всего используется \refstepcounter: она увеличивает на единицу значе ние счетчика, имя которого является ее аргументом, а значения всех счетчиков, подчиненных счетчику — ее аргументу, устанавливает в нуль. Если, например, в нашем тексте определены два счетчика так: \newcounter{HOZQIN} \newcounter{SLUGA}[HOZQIN] то после выполнения команд VII.2. СЧЕТЧИКИ 148 \setcounter{HOZQIN}{10} \setcounter{SLUGA}{10} значения обоих счетчиков станут равны 10, после выполнения команды \addtocounter{HOZQIN}{1} значение счетчика HOZQIN станет равно 11, а значение счетчика SLUGA не изменится, а вот после выполнения команды \refstepcounter{HOZQIN} значение счетчика HOZQIN станет равно 12, а значение счетчика SLUGA станет равно нулю. Наряду с \refstepcounter существует еще одна команда, изменяющая значение счетчика таким образом, что значения всех подчиненных ему счетчиков устанавливаются в нуль. Эта команда назы вается \stepcounter; она также увеличивает на единицу значение счетчика, имя которого является ее аргументом, и при этом обнуляет все подчиненные ему счетчики, но она непригодна для организа ции автоматических ссылок (см. следующий раздел), вследствие чего область ее применения более ограничена. Хороший пример использования подчиненных счетчиков дают стандартные стили L A TEXа. Например, если основным стилем является book, то перед началом обработки текста выпол няются следующие команды: \newcounter {part} \newcounter {chapter} \newcounter {section}[chapter] \newcounter {subsection}[section] \newcounter {subsubsection}[subsection] \newcounter {paragraph}[subsubsection] \newcounter {subparagraph}[paragraph] Стало быть, нумерация глав не зависит от нумерации частей (если третья часть книги завершается десятой главой, то четвертая часть начинается с одиннадцатой главы), а нуме рация секций уже начинается заново в каждой главе. 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