Работа в системе LaTeX
de301fb4

Отношение подчинения между счетчиками


Команда \z, как мы ее определили ранее, нумерует задачи автоматически, но при этом нумерация получается " сплошной". Часто, однако, требуется, чтобы в каждом разделе документа нумерация задач начиналась заново, так что шестая задача в разделе с номером 3 была озаглавлена Задача 3.6, а первая задача в разделе с номером 4 — Задача 4.1. Сейчас мы узнаем, как этого добиться.

Выше мы упоминали, что к моменту начала обработки LaTeX'ом нашего текста некоторые счетчики уже определены. В частности, это счетчики, содержащие номера текущих разделов документа. Их имена совпадают с именами команд, генерирующих эти разделы: chapter (если классом предусмотрено разбиение на главы), section, subsection и т.д. При каждом исполнении, например, команды \section значение счетчика section увеличивается на 1, и значение этого счетчика в каждый момент равно номеру текущего раздела. Поэтому, если в определении команды \z написать

\arabic{section}.\arabic{zadacha}.

то перед номером задачи будет печататься номер текущего раздела и точка.

Но как же все-таки сделать, чтобы в каждом разделе нумерация задач начиналась заново? Можно, конечно, в начале каждого раздела присваивать счетчику zadacha значение

с помощью \setcounter, но это некрасиво и ненадежно (а вдруг забудем?). Лучше сразу определить счетчик zadacha так:

\newcounter{zadacha}[section]

При этом счетчик zadacha будет подчинен счетчику section: всякий раз, когда значение счетчика section увеличивается на единицу командой \section, значение счетчика zadacha будет устанавливаться в нуль, и тем самым счет задач будет в каждом разделе начинаться заново. Одновременно надо в очередной раз исправить определение команды \z и написать

\newcommand{\z}{\par\addtocounter{zadacha}{1}% \textbf{Задача \arabic{section}.\arabic{zadacha}.} }

При этом нумерация задач будет начинаться заново в каждом разделе, и вторая задача третьего раздела будет иметь номер 3.2.

Теперь сообщим точные правила создания счетчика, подчиненного другому счетчику. Они просты: команда \newcounter может принимать один необязательный аргумент (после обязательного) — имя того счетчика, которому будет подчинен определяемый нами счетчик.

Содержание раздела