
Ich habe russische alphanumerische Nummerierungen in einem ständig aktualisierten Dokument. Vor kurzem ist die Nummerierung furchtbar schiefgegangen. MWE:
\documentclass{article}
\usepackage{ifxetex}
\ifxetex
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{russian}
\setmainfont{CMU Serif}
\setsansfont{CMU Sans Serif}
\setmonofont{CMU Typewriter Text}
\else
\usepackage[T1,T2A]{fontenc}
\usepackage{lmodern}
\usepackage[english,russian]{babel}
\fi
\usepackage{enumitem}
\makeatletter
\AddEnumerateCounter{\asbuk}{\russian@alph}{щ}
\makeatother
%\setlist[enumerate]{itemsep=0mm, label={\asbuk*)},ref=\asbuk*}
\begin{document}
\begin{enumerate}[label={\asbuk*}, ref=\asbuk*]
\item 1
\item 2
\item 3
\item 4
\item 5
\item 6
\item 7
\item 8
\item 9
\end{enumerate}
\end{document}
Bei Verwendung von pdflatex (links) erhalte ich die richtige Ausgabe, bei Verwendung von xelatex (rechts) läuft jedoch etwas schief:
Die arabische Nummerierung funktioniert wie erwartet.
Angeblich wurde der Fehler frühestens mit dem letzten Update im Oktober eingeführt.
Wo soll ich den Fehler melden? Kann mir jemand einen Workaround nennen?
Antwort1
Offenbar haben sich die polyglossia
Entwickler entschieden,https://en.wikipedia.org/wiki/Kyrillische_Zahlenund die einfache alphabetische Nummerierung entfernt.
Sie hätten eine Schnittstelle für die Verwendung des russischen Standardalphabets belassen sollen und die Benutzer nicht zwingen sollen, die alphabetische Nummerierung im alten Stil zu verwenden.
Glücklicherweise wurde der Code noch nicht entfernt und wir können ihn kopieren.
\documentclass{article}
\usepackage{ifxetex}
\ifxetex
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{russian}
\setmainfont{CMU Serif}
\setsansfont{CMU Sans Serif}
\setmonofont{CMU Typewriter Text}
\else
\usepackage[T1,T2A]{fontenc}
\usepackage{lmodern}
\usepackage[english,russian]{babel}
\fi
\usepackage{enumitem}
\makeatletter
\newcommand{\realasbuk}[1]{\expandafter\russian@realalph\csname c@#1\endcsname}
\def\russian@realAlph#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\xpg@ill@value{#1}{russian@Alph}\fi}
\def\russian@realalph#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\xpg@ill@value{#1}{russian@alph}\fi}
\AddEnumerateCounter{\realasbuk}{\russian@realalph}{щ}
\makeatother
%\setlist[enumerate]{itemsep=0mm, label={\realasbuk*)},ref=\realasbuk*}
\begin{document}
\begin{enumerate}[label={\realasbuk*}, ref=\realasbuk*]
\item 1
\item 2
\item 3
\item 4
\item 5
\item 6
\item 7
\item 8
\item 9
\end{enumerate}
\end{document}