Babel のロシア語(russian)およびウクライナ語(ukrainian)オプションでは、\Asbuk
/\asbuk
でカウンタを「各々の言語での」キリル文字の序列で出力することができる。(これは OT2 エンコーディングでも特に問題が起こらない。)
さて、Babel でロシア語・ウクライナ語・英語を指定して、さらに基底言語を英語からロシア語に(\selectlanguage
で)切り替えた状態で、\Asbuk
を使ってみる。
\documentclass[a4paper]{article} \usepackage[OT2,T1]{fontenc} \usepackage[russian,ukrainian,english]{babel} \begin{document} \selectlanguage{russian} \renewcommand*{\theenumi}{\Asbuk{enumi}} \begin{enumerate} \item Odin. \item Dva. \item Tri. \item Chetyre. \item Pyatp1. \item Shestp1. \item Semp1. \end{enumerate} \end{document}
なんと、ロシア語なのに、ウクライナ語のキリル文字の序列になってしまっている。
ここで、言語オプションの読込の順番を変更して、
\usepackage[ukrainian,russian,english]{babel}
のようにすると、正しくロシア語の序列で出力される。*1
このことから容易に推測できるように、この原因は、ロシア語とウクライナ語のオプションの実装コードがともに \Asbuk
/\asbuk
をグローバルに定義してしまっているからである。美文書で述べられているように、「多言語が同時に」使えることが Babel の利点のはずなのだが、各言語オプションを実装しているのは別々の人であるため、残念ながら、実際には「同時に使うことの想定を明らかに忘れてしまっている」ケースがかなり散見される。
ただし、今回のケース((より一般的には、「同名の命令のグローバルな書き換え」であり「基底言語に依存して変更されるべきもの」である場合。(つまり「ロシア語の文書」であるなら、途中にウクライナ語や英語が出現しても \Asbuk
はロシア語の序列を出すべきであろう。)))では、「基底言語が固定された文書」(大抵の「多言語の文書」はこれを満たすであろう)については影響が及ばない。何故なら、ロシア語の \Asbuk
を使いたいという場合、その文書の基底言語はロシア語に違いない。だから、Babel の読込では、russian が最後のオプションになっているはずである。結果的に、文書全体で \Asbuk
はロシア語のものとなり、これは(文書を通じて)基底言語がロシア語であることと合致する。