マクロツイーター

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

Babel な話:LGR を普通のエンコーディングにする話(lgrx パッケージ) (1)

例の「付録」で述べられているように、Babel のギリシャ語処理で用いられるフォントエンコーディングは LGR という名前が付けられている。このようにエンコーディングが L から始まる名前を持つことは、それがある特定のパッケージの内部に限定して(local に)用いられることを表し、LGR の場合はそれが「Babel 用」であることを示す。*1すなわち、「LGR」という名前は本来は「内部仕様」であり、LaTeX ユーザがその名前を(fontenc 等で)直接用いることは想定されていない。*2

LGR が Babel に依存することは次のようなことから判る。

  • LGR では、曲アクセント付き文字、例えば〈ᾶ〉は ~a と入力する。ところが、LaTeX の通常の状態だと〈~〉が特殊文字であるのでこれは機能せず、Babel のギリシャ語環境を用いる必要がある。((つまり、〈~〉のカテゴリコードを 12 に変える必要があるということ。ただし、Babel の実際の処理では、その変更を行う代わりに、アクティブな〈~〉がカテゴリコード 12 の〈~〉に展開されるように再定義を行っている。))
  • LGR での一部の文字命令(\copyright 等)の定義では Babel の命令 \textlatin を含んでいる。(従って、Babel 無しの状態ではエラーを起こす。)
  • ギリシャ文字は「LICR がない」、すなわち、エンコーディングを表に出さない形で LaTeX の入力を示すことができない。例えば、〈urrà〉は「urr\`a」、〈ура〉は「\cyru\cyrr\cyra」と表せるが、〈εὐαί〉については「LGR に切り替えて e>ua'i」としか言えない。

この最後の点はそれ自体ではユーザに直接影響があるものではない。*3ただこの事実が「ギリシャ語では utf8 入力エンコーディングが使えない」という不便さの原因になっていることにも注意すべきである。*4勿論、ucs パッケージ(utf8x 入力エンコーディング)を使えばギリシャ語の UTF-8 直接入力は可能ではあるが、このパッケージは非常に複雑であるため、他のパッケージ(例えば csquote 等)と衝突する例が知られている。だから、LaTeX 標準の utf8 で済ませたいという要望は実際に存在する。

lgrx パッケージは上述の問題を解決し、ギリシャ文字の「事実上標準」のエンコーディングとなっている(だが一部の仕様が Babel に依存する)LGR フォントエンコーディングを「普通のエンコーディング」として扱うことを可能にする。このパッケージは次の構成要素からなる。

lgrx パッケージの全般的な解説はパッケージの README を参照してほしい。(「texdoc -l lgrx」を実行して、現れたパス名一覧の中で、ファイル名が README(あるいは HTML 版の README.html)であるものの番号を入力する。)

*1:別の例を挙げると、モンゴル語処理用パッケージ MonTeX で用いられるキリル文字エンコーディングの名前は LMC でこれは「MonTeX 用」である。

*2:キリル文字エンコーディング(T2A や OT2 等)を用いる時は fontenc で宣言する必要があるのに、LGR はそうでないという理由もここにある。

*3:LICR で入力しても、現在のフォントエンコーディングが「その文字」をサポートしていない(かつ既定表現が定義されていない)ならば、結局出力はできない。

*4:一般に入力エンコーディングの処理(inputenc の処理)は LICR の存在を前提とする。utf8x の処理は特殊である。