Модификация стандартных классов
Русский аналог \alph
В лекции 7 мы отмечали, что было бы желательно иметь команду, аналогичную \alph или \Alph, печатающую русскую букву с номером, равным значению счетчика. Сейчас мы расскажем, как вы ее можете определить в своем стилевом пакете. К сожалению, в этом определении используются не рассматривавшиеся нами средства TeX'а, так что рецепт вам придется воспринять сугубо догматически.
Итак, пусть вам нужна команда \ralph, принимающая в качестве аргумента имя счетчика и дающая на печати русскую букву, чей номер в алфавите совпадает со значением счетчика; если этот номер неположителен или превышает число букв в алфавите, команда будет (как и команда \alph в аналогичном случае) выдавать сообщение об ошибке. Определить эту команду (в вашем стилевом пакете) можно так:
\newcommand*{\ralph}[1]{\@ralph{\@nameuse{c@#1}}} \newcommand*{\@ralph}[1]% {\ifcase #1\or а\or б\or в\or г\or д\or е\or ж\or з\or и\or к\or л\or м\or н\or о\or п\or р\or с\or т\or у\or ф\or х\or ц\or ч\or ш\or щ\or э\or ю\or я\else\@ctrerr \fi}
(как иногда делают, мы пропускаем буквы ё, й, ъ, ы, ь). Аналогичным образом можно определить команду \Ralph, печатающую прописную букву (в этом случае "вспомогательную команду" с символом @ в имени надо тоже назвать как-нибудь по-другому, скажем, \@Ralph ). Если вы будете модифицировать это определение, не сделайте в нем пробела между буквой и \or или \else (конец строки — это тоже пробел), иначе ваша команда будет печатать лишний пробел.
Кто кому подчинен в стандарте
Нам осталось выполнить свое обещание и рассказать, какие счетчики определены в LaTeX'овском стандарте и каковы отношения подчинения между ними.
В классах article и proc счетчик section определен как
\newcounter{section}
в то время как в классах report и book, в которых существуют еще и главы, определяется никому не подчиненный счетчик chapter для глав, а счетчик section определяется как подчиненный счетчику chapter:
\newcounter{chapter} \newcounter{section}[chapter]
Остальные счетчики номеров разделов определяются во всех четырех стандартных классах одинаково:
\newcounter{part} \newcounter{subsection}[section] \newcounter{subsubsection}[subsection] \newcounter{paragraph}[subsubsection] \newcounter{subparagraph}[paragraph]
Соответствующие этим счетчикам the-команды определены в классах article и proc так:
\renewcommand{\thepart}{\Roman{part}} \renewcommand{\thesection}{\arabic{section}} \renewcommand{\thesubsection}{\thesection.\arabic{subsection}} \renewcommand{\thesubsubsection}% {\thesubsection.\arabic{subsubsection}} \renewcommand{\theparagraph}% {\thesubsubsection.\arabic{paragraph}} \renewcommand{\thesubparagraph}% {\theparagraph.\arabic{subparagraph}}
(мы пишем \renewcommand, поскольку все эти the-команды уже получили какое-то определение при создании счетчиков).
В классах report и book, кроме того, определена the-команда для счетчика chapter и по-другому определена \thesection:
\renewcommand{\thechapter}{\arabic{chapter}} \renewcommand{\thesection}% {\thechapter.\arabic{section}}
За нумерацию сносок отвечает счетчик footnote. В классах article } и proc этот счетчик определяется как никому не подчиненный:
\newcounter{footnote}
В классах же report и book этот счетчик подчинен счетчику chapter, так как в них присутствует еще и команда
\@addtoreset{footnote}{chapter}
В таком же положении, как счетчик footnote, находится и отвечающий за нумерацию формул счетчик equation: в классах article и proc он определен как никому не подчиненный, а в классах report и book он подчинен счетчику chapter. Однако же в классах report и book переопределяется \theequation:
\renewcommand{\theequation}{\thechapter.\arabic{equation}}
Наконец, счетчики figure и table, отвечающие за нумерацию плавающих иллюстраций и таблиц соответственно, устроены точно так же, как счетчик equation: в классах article и proc они никому не подчинены, а в двух других стандартных классах они подчинены счетчику chapter и соответствующие the-команды определены как
\renewcommand{\thefigure}% {\thechapter.\arabic{figure}}
(аналогично для table).
Остались еще счетчики, связанные с нумерованными перечнями. Как объяснялось в "лекции 7" , эти счетчики, в зависимости от уровня вложенности enumerate, называются enumi, enumii, enumiii и enumiv. Все эти счетчики, естественно, последовательно подчинены друг другу, а их ссылочные префиксы определены так (это — единственный случай, когда в стандарте используются нетривиальные ссылочные префиксы):
\renewcommand{\p@enumii}{\theenumi} \renewcommand{\p@enumiii}{\theenumi(\theenumii)} \renewcommand{\p@enumiv}{\p@enumiii\theenumiii}