マクロツイーター

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

美文書付録Iについて思うことをグダグダ書き連ねるシリーズ (4)

2 節、第 2 小節
(362ページ)

キリル文字直接入力 文字通りキリル文字を…(略)…UTF-8 文字コードで記述すれば、……

既に、356 ページで「Unicode での使用は I.4 節(370 ページ以下)の記述に譲り」と言っているので、ここでは参照だけ出して説明を省きたい気がする。

入力/フォントエンコーディング(inputenc/fontenc)およびテキスト命令(LICR)については、できるだけ体系的に習得されることが望ましい(「おまじない」になってはいけない)と思っているが、その取り扱いが難しい。現状の扱いでも問題ないと思うが、12 章の記述との擦り合わせがもっと工夫できれば、もっと導入がスムーズになると思う。

ここで「推奨しない」と記した記法は、OT2 ハイフネーションパターンとマッチしないため適切な分綴が期待できません。

ここで「推奨しない」になっているのは、

kh → х; ts → ц; ch → ч; sh → ш; xq → щ

の 5 つであるが、実際には「複数 ASCII 文字のリガチャによって実現されている」ものは全て「OT2 ハイフネーションパターンとマッチしない」(少なくとも現存のパターンファイルを使う限りは*1)ので不適切な分綴の原因となり得る。つまり、適切な分綴を望むのであれば、上記の他にも

zh → ж; e1 → э; ya, j1 → я; p1 → ь

等も使うべきでないだろう。((恐らく、上記の 5 つが特別なのは、「2 つの文字の間で分綴されて(分綴の正しさ以前に)全く想定外の文字が出現する」という点だろう。例えば、бешенство を beshenstvo と書いてこれが sh の間で分綴されると бес-|хенство という綴りになってしまう。))無論、そうするとこれらの文字を入力する手段がないことになる。((実際には「テキスト命令」(\cyrzh → ж 等;これはフォントエンコーディングに関わらず、存在する文字ならば入力できる)が使えるが、これは実用的でないだろう。))

OT2 エンコーディングによる ASCII 翻字の下で「まともに」分綴を機能させてロシア語の文章を書くには、入力の方式(リガチャを全く利用せずかつストレスなく入力可能にする)や分綴パターンの調整(都合の悪い分綴を抑止する)が必須なのであるが、そういう必要な調整が十分に行われているかというと残念ながらそうは言い難い状況にある。(ただし考察自体は行われている。安田氏による文書「TeX ロシア語ハイフネーションと文字入力について 」および、「TeX Q & A」の 2005 年 8 月辺りの「言語班」による議論を参照。)そして、この付録自体で述べられているように、最近ではキリル文字の直接入力が pTeX 系エンジンでも使えるようになっている(Utf82TeX を使う、upTeX を使う、等)。それを考えると、この用途については「癖」のある OT2 を無理に使う必要はないのかも知れない。私はそう考え始めている。

ただし、「分綴がそもそも不要」な場合――例えば日本語や英語の文章中でちょっとロシア語の単語を書きたい――には、OT2 の ASCIi 入力は非常に魅力的な手段で、特にロシア語のキーボードがない場合には欠かせない。この考えは変わらない。

この場合、T2A か X2 フォントエンコーディングに切り替えて \cyrgup テキスト命令で出力します。

残念ながら、この説明だけで正しい命令列が構成できないユーザがいる可能性があるだろう。

%% CYRILLIC SMALL LETTER GHE WITH UPTURN (U+0491)
\newcommand*{\gh}{{\fontencoding{X2}\selectfont\cyrgup}}

\UseTextSymbol という少し便利な命令もあるが、((\newcommand*{\gh}{\UseTextSymbolX2}{\cyrgup}} のように用いる。))この場合はあまり差がない。

……二種類以上のフォントエンコーディングでキリル言語を利用するには、\usepackage[OT2,T2A,T2D,T1]{fontenc} のように複数のオプションを指定し、……

この使い方をする場合、「既定のキリル用フォントエンコーディング」(\cyrillicencoding)――すなわち \foreignlanguage 等で入力言語をキリル言語に切り替えた時に自動的に切り替わるエンコーディング――に気を付ける必要がある。原則的にそれは「fontenc で最後に指定された」キリル文字エンコーディング(OT2、T2A、T2B、T2C、X2 の何れか*2)になる。参照元の例のように \usepackage[OT2,T2A,T2D,T1]{fontenc} とした上で Babel を読み込んだ場合、\cyrillicencoding は T2A になり、従って ASCII 入力が有効にならない。この場合、Babel 読込の後に次の定義を行って \cyrillicencoding を変更すればよい。

\renewcommand*{\cyrillicencoding}{OT2}
この際、ハイフネーションパターンが OT2 用に調整されていると……

つまり、「全体が OT2 からの出力で構成された単語」のみが分綴の対象となる。例えば〈дзиґлик〉と書くために dzi{\gh}lik\gh は先に示したユーザ命令)と入力した場合、この単語は X2 の文字を途中に含んでいるので分綴されない。必要ならば dzi"-{\gh}lik のように手動で分綴可能点を指定することになる。

なお、テキスト命令(およびキリル文字直接)による入力は、原則として、現在のフォントエンコーディングで処理される。例えば OT2 指定時に \CYRU\cyrr\cyra (→〈Ура〉)と入力するのは Ura と入力するのと同じ(T2A 等に切り替わる訳ではない)である。

キリル・フォントエンコーディングのなかで T2A はロシアで……

この後、エンコーディングの比較が書かれているが、何れにしても、UTF-8 等の文字コードキリル文字を直接入力しない限りは、ASCII 入力の OT2 しか選択肢がないことにも注意してほしい。((\CYRH\cyro\cyrr\cyro\cyrsh\cyro のような入力が実用的がどうかは主観によるが、ともかくこの付録では \cyrsh(ш)等の基本キリル文字のテキスト命令は扱っていない。))

標準 LaTeX2e に用意されて…(略)… \Asbuk{...}\asbuk{...} が定義されています。

ロシア語とウクライナ語の言語オプションを同時使用すると、この \Asbuk\asbuk が衝突してしまうという問題がある。これについては後で詳しく触れたい。

*1:旧来の 8 ビット記述のパターンでも、hyph-utf8 のパターンでも。

*2:T2D は含まない。