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