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


Download 1.51 Mb.
Pdf ko'rish
bet123/143
Sana08.05.2023
Hajmi1.51 Mb.
#1444247
1   ...   119   120   121   122   123   124   125   126   ...   143
Bog'liq
LaTeX-Lvovsky

2. Снова о счетчиках
Для начала расскажем об еще двух манипуляциях со счетчиками, которые иногда бывают
полезны. До сих пор обходили их молчанием, поскольку команды, используемые для этих
манипуляций, содержат @ в своих именах и могут поэтому использоваться только в стилевых
файлах.
Первый из приемов, о которых пойдет речь, относится к отношению подчинения между
счетчиками. Мы знаем, что при создании счетчика с помощью команды \newcounter можно
задать и счетчик, которому он будет
«подчинен» (см. стр.
147
и ниже). Но как быть, если уже
создан никому не подчиненный счетчик, а мы хотим его кому-то подчинить? Например, за ну

мерацию сносок отвечает счетчик footnote; в стиле article этот счетчик определяется как


IX.2. СНОВА О СЧЕТЧИКАХ
180
никому не подчиненный, из-за чего нумерация сносок выходит сплошной в пределах всего
документа. Если мы хотим, чтоб нумерация сносок начиналась заново в каждой секции, то
можно в своем стилевом файле написать так:
\@addtoreset{footnote}{section}
Первый аргумент команды \@addtoreset
— имя подчиняемого счетчика, второй — имя под
чиняющего.
Разумеется, для того, чтобы осмысленно применять описанную команду, надо знать, ка

кие счетчики определены в стандартных стилях и кому они подчинены (или не подчинены).
Вся эта информация содержится в приложении
Г
.
При ознакомлении с командой \@addtoreset может возникнуть искушение написать
\@addtoreset{footnote}{page}
чтобы сноски нумеровались заново на каждой странице. К сожалению, по TEXническим при
чинам это может не дать желаемого результата: если сноски оказываются на нескольких
страницах подряд, то может случиться так, что на второй из этих страниц нумерация сносок
начнется не с 1.
Типичный случай использования команды \@addtoreset возникает, если основной стиль
— article. В этом случае часто бывает разумно написать в стилевом файле
\@addtoreset{equation}{section}
чтобы нумерация уравнений была не сплошной, как предусмотрено стандартом, а начина

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

манду \theequation.
Вторая обещанная тонкость связана с автоматическими ссылками и the-командами.
Предположим, что перед исполнением команды \label{METKA} последним увеличению с
помощью \refstepcounter подвергался счетчик abcd. В главе
VII
мы говорили, что при
этом команда \ref{METKA} представит на печати значение этого счетчика «в соответствии с
командой \theabcd
». Настало время сознаться, что это — всего лишь полуправда. На самом
деле команда \ref напечатает перед \theabcd еще и так называемый
«ссылочный префикс»
счетчика. Содержимое ссылочного префикса к счетчику abcd записано в команде \p@abcd
(буква p
— латинская). В момент создания счетчика эта команда определяется как макро
определение с
«пустым» замещающим текстом, так что у таких счетчиков, как chapter
или section в стандартных стилях, ее следов не видно. Можно, однако, переопределить эту
команду, чтобы ссылочный префикс реально печатался. Вот пример работы со ссылочным
префиксом.
В стандартном стиле book вид номера главы и номера секции определяется следующим
образом: команда \thechapter определена стандартным образом как \arabic{chapter}
(такое определение, как мы помним, автоматически производится при создании счетчика), а
внешний вид номера секции определен как
\renewcommand{\thesection}{\thechapter.\arabic{section}}
Из-за этого номер третьей секции второй главы печатается в заголовке как 2.3. Предполо

жим, мы хотим, чтобы номера секций в заголовках не содержали номера главы; тогда можно
написать
\renewcommand{\thesection}{\arabic{section}}


IX.3. РАЗДЕЛЫ ДОКУМЕНТА
181
но при этом возникнет другая неприятность. Автоматические ссылки на номер секции, гене

рируемые командой \ref, теперь дадут на печати одно и то же число 3 как для третьей сек

ции второй главы, так и для третьей секции четвертой главы: ведь из команды \thesection
информация о номере главы ушла! Чтобы справиться с этой неприятностью, поместим уте

рянную информацию в ссылочный префикс счетчика section:
\renewcommand{\p@section}{\thechapter.}
Теперь будет печататься 2.3 при ссылке на третью секцию второй главы и 4.3 при ссылке на
третью секцию четвертой главы: хотя \thesection в обоих случаях дает просто 3, но печа

тающийся перед ним \p@section обеспечивает печать номера главы и точки. Кстати говоря,
именно такой прием применен в стилевом файле, использованном при верстке книги, кото

рую Вы читаете.

Download 1.51 Mb.

Do'stlaringiz bilan baham:
1   ...   119   120   121   122   123   124   125   126   ...   143




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