Список с asbuk в LaTeX и enumitem — решение

Полгода назад я написал пост о существующей в пакете для LaTeX enumitem проблеме. Список в формате asbuk или Asbuk не нумеровался.

Проблема:

When using the enumitem package with [russian]{babel}, I get the ordered lists with no numbering! The following code:

% Article class
\usepackage{cmap}
\usepackage[X2,T2A]{fontenc} % X2 can be dropped
\usepackage[utf8]{inputenc}
\usepackage[british,russian]{babel}
% Bunch of math and table packages
\usepackage{enumitem}
% Some other packages, not needed for MWE
 
\renewcommand{\theenumi}{(\Asbuk{enumi})}
\renewcommand{\labelenumi}{\Asbuk{enumi})}
% You know, \asbuk and \Asbuk are defined in Babel
\begin{document}
\begin{enumerate}
\item Изгнание действующей косноязычной верхушки;
\item Единоличное собственное воцарение.
\end{enumerate}
\end{document}

instead of the desired output:

-----------------
А) Изгнание действующей косноязычной верхушки;
Б) Единоличное собственное воцарение.
-----------------

will yield:

-----------------
) Изгнание действующей косноязычной верхушки;
) Единоличное собственное воцарение.
-----------------

The very numbering has vanished and has been replaced with nothing! Enumitem doesn’t work correctly with \asbuk. When I drop the enumitem package away from the preamble, it renders perfectly. Please fix the incompatibily of the package with cyrillic-letter labeling. Thank you in advance!

I am very thankful to monsieur Bezos, who has provided me with an exact reply:

Thank you very for your report. Just add the following:

\AddEnumerateCounter{\Asbuk}{\@Asbuk}{\CYRM}
\AddEnumerateCounter{\asbuk}{\@asbuk}{\cyrm}

See the manual for further details (p. 11).

Kind Regards
Javier

I should add that if the document is properly encoded (UTF-8, as praised by Donald Knuth), you can write explicitly:

\AddEnumerateCounter{\Asbuk}{\@Asbuk}{Ы}
\AddEnumerateCounter{\asbuk}{\@asbuk}{ы}

То есть буквы можно писать открыто. Продемонстрирую данную свободу ещё на одном примере:

\makeatletter
\def\ctext#1{\expandafter\@ctext\csname c@#1\endcsname}
\def\@ctext#1{\ifcase#1\or Разз\or Дова\or Дри\or
Черте\or Тяпь\or Жесть\or Месь\or Гвоздемь\or Девианть\or Дескать\fi}
\makeatother
\AddEnumerateCounter{\ctext}{\@ctext}{Гвоздемь}
 
\renewcommand{\theenumi}{(\ctext{enumi})}
\renewcommand{\labelenumi}{\ctext{enumi})}
 
%%%% Somewhere in a {document} far-far away
\begin{enumerate}
\item Индусы;
\item Евреи;
\item Индусы;
\item Евреи;
\item Индусы;
\item Евреи;
\item Индусы;
\item Евреи;
\item Индусы;
\item Евреи.
\end{enumerate}

Результат превыше всяких похвал (копирую дословно).

-----------------
Разз) Индусы;
Дова) Евреи;
Дри) Индусы;
Черте) Евреи;
Тяпь) Индусы;
Жесть) Евреи;
Месь) Индусы;
Гвоздемь) Евреи;
Девианть) Индусы;
Дескать) Евреи.
-----------------

Об авторе Andreï Kostyrka

Науколюб, грамматический нацист, антитеист. Пишу стихотворения, сочиняю музыку, верстаю книги, занимаюсь эконометрикой и настраиваю фортепиано.
Закладка Постоянная ссылка.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *