マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

Babel な話:OT2 でロシア語すると \Alph がアレな件

「美文書」の Babel の話に色々とツッコミを入れるついでに、Babel なネタをいくつか紹介しておく。

*  *  *

既に安田さんが指摘しているように、OT2 エンコーディングを使用していると、\Alph{}\alph によるカウンタ表示のラテン文字が ASCII 翻字を施した結果のキリル文字に化けてしまう。

\documentclass[a4paper]{article}
\usepackage[OT2,T1]{fontenc}
\usepackage[russian]{babel}
\begin{document}
\renewcommand{\theenumi}{\Alph{enumi}} % ラベルを \Alph に変更
\begin{enumerate}
\item Odin.
\item Dva.
\item Tri.
\end{enumerate}
\end{document}

この問題について、奇妙な対処療法がある。それは「X2 エンコーディングを有効にしておく」ということである。ただし、以前に述べたとおり、「既定のキリル文字エンコーディング」は OT2 になって欲しいので、fontenc のオプションでX2 を OT2 の前に入れておく、すなわち、fontenc の読込の行を

\usepackage[X2,OT2,T1]{fontenc}

に変更する。*1これだけで文字化けが解消される。

何故これで上手くいくかというと、「OT2 はロシア人に無視されている*2が、同じく『\Alph が化ける』という性質を持つ X2 についてはちゃんと対処されているから」という事情があるからである。

*1:ここで T2A 等の他のキリル文字エンコーディングの併用があっても構わない。ただし「既定」が OT2 であることが前提。

*2:リンク先の安田氏による記述を参照。