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

       

Ссылочный префикс


Вторая тонкость, о которой пойдет речь, связана с автоматическими ссылками и the-командами. Предположим, что перед исполнением команды \label{metka} последним счетчиком, подвергшимся увеличению с помощью \refstepcounter, был abcd. В лекции 7 мы говорили, что при этом команда \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}}

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

\renewcommand{\p@section}{\thechapter.}

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



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