Babel russianb.ldf
フォントエンコーディング/ハイフネーション切替え対応マクロ

since Sept. 19 2006

概要

ru-babel.zip は,LaTeX Babel で提供されているロシア語言語定義 russianb.ldf に対し, OT2 と T2A のフォントエンコーディング,ハイフネーションパターンをユーザ指定に基づいて切り替えるためのマクロを追加したものである. ru-babel-x.x.zip はダウンロードサービスから取得できる.

三重大学奥村先生のサイト TeX Q & A で,稲垣氏が言語切替えに関する提案をされ,私はそれに触発された形で,本マクロを書いた.

本マクロは Babel 配布パッケージに含まれる russianb.ldf に代えて利用することを想定している.もとにした russianb.ldf は

2005/03/29 v1.1r Russian support from the babel system
	

のクレジットがあり,お使いの版と比べ古いかもしれない.より新しい版として利用したい場合は,L308-L408 を russianb.ldf の \ldf@finish{russian} 行の直前に挿入すればよいはずである.

インストール

以下の手順でインストールする.オリジナルの russianb.ldf は事前にバックアップを取得しておく.

  1. 配布 russianb.ldf の格納

    添付 russianb.ldf を Babel パッケージをインストールしたディレクトリに入れるか,適用文書の作業ディレクトリなど, TeX が参照できる場所にコピーする.

  2. ハイフネーションパターンの登録

    本切替えの仕組みは,OT2 用, T2A 用それぞれのハイフネーションパターンを同時にフォーマットファイルにロードしておき,Babel ロシア語言語環境において,指定されたフォントエンコーディングに従ってフォントとハイフネーションを有効化する.そのためロシア語用ハイフネーションパターンを OT2 用, T2A 用の二式 language.dat に指定しておかないと意味がない. language.dat は次のように記述しておく.

    %--- language.dat russian 部分
    russian  ruhyphen7.tex% OT2 用パターンファイル
    russiant ruhyphen.tex%  T2A 用パターンファイル
    %--- end of sample code
    		  

    言語名とパターンファイルの対はユーザの事情に合わせて決めてよいが,russian の言語名は変更してはならない.こちらには通常利用するパターンファイルを指定する.

    もう一方の russiant は T2A 用パターンに対する言語名であり,こちらは他と重複しない限りにおいて自由に設定してよい.デフォルト (russiant) を変更する意味はあまりないと考える.

  3. フォーマットファイルの生成

    language.dat を変更したら,platex フォーマットファイルを生成しておく. fmtutil --byfmt platex-euc などなど.

使い方

フォントエンコーディング,ハイフネーションパターンの切替を行う方法を示す.

  1. パッケージの指定

    通常の Babel のロシア語言語指定をしておく.フォントエンコーディングは OT2, T2A を必ず指定しておく.

    \documentclass[a4paper]{jarticle}
    \usepackage[OT2,T2A,T1]{fontenc}
    \usepackage[russian]{babel}
    		  
  2. 言語名の設定

    ハイフネーションパターン登録においてデフォルト (OT2: russian, T2A: russiant) とは異なる言語名を指定した場合,ロシア語テキストを記述する以前に,文書のプリアンブル等において,言語名を定義する.

    \def\ruottwolang{russianfoo}% OT2 用の言語名
    \def\ruttwoalang{russianbar}% T2A 用の言語名
    		  

    \def\newcommand でもよい.二回目以降の定義は \def\renewcommand でないとエラーとなるので注意.

    この定義は切替直前に何回定義してもよい.そのつど再設定される.つまり,ハイフネーションパターンをいくつも登録しておき,好みで切り替えることも可能である.

  3. 切替マクロの指定

    切替マクロの使用方法は \selectlanguage{russian} の直後に \selectruencoding{<encoding>} を指定する.

    引数 <encoding> には OT2 または T2A の,使用するロシア語フォントエンコーディングを指定する.

    指定したフォントエンコーディングに従って,フォントエンコーディング,ハイフネーションを,
    - OT2 指定時: OT2 用に切替える.
    - T2A 指定時: T2A 用に切替える.

  4. ハイフン最小値の調整

    Babel ロシア語言語定義オリジナルの \lefthyphenmins, \righthyphenmins 値はそれぞれ 2, 2 である.しかしながら OT2 ASCII 翻字入力の場合,2 文字で 1 キリル文字を表現する場合があり,1 文字だけが分綴される問題の要因となる.

    このため hyphenmins 値を変更するマクロ \otiihyphenmins, \tiiahyphenmins を用意した.

    \otiihyphenmins:
      \lefthyphenmins, \righthyphenmins を 2, 3 とする.
    \tiiahyphenmins:
      \lefthyphenmins, \righthyphenmins を 2, 2 とする.
       (デフォルトに戻す)

    指定した次の \selectlanguage{russian} で設定が有効になる.これに先だって発行しなければならない.

    OT2 で \lefthyphenmins 値も 3 に変更したい場合,プリアンブル等において以下を発行しておく.

    \makeatletter
    \def\otiihyphenmins{%
      \def\russianhyphenmins{\thr@@\thr@@}%
    }%
    \makeatother
    		  
  5. サンプル

    サンプルを添付している.書き方は sample.jis を参照.

    アーカイブにはサンプルを添付している. chghyphen-babel.{tex,jis} サンプルは russian T2A を PSCyr フォントで出力する例である.拙作の OldSlav を併用している..tex は UTF-8 ファイルであり,これを処理するには utf82tex が必要である..jis はこれを変換したのちの JIS コード原稿なので,通常の platex で処理できる.(処理結果)

    \documentclass[a4paper]{jarticle}
    \usepackage[OT2,T2A,T1]{fontenc}
    \usepackage[oldchurchslavonic,russian,japanese]{babel}
    \usepackage{pscyr}% PSCyr Russian fonts
    % デフォルトの言語名でないとき以下を変更
    \def\ruottwolang{russian}
    \def\ruttwoalang{russiant}
    \begin{document}
    \selectlanguage{russian}
    \selectruencoding{OT2}
    \textlatin{language: \the\language}
    \def\rtexta{% Russian text by OT2 ascii
    V naqale bylo Slovo, i Slovo bylo u Boga, i Slovo bylo Bog.
    Ono bylo v naqale u Boga. Vse qrez Nego n\'aqalo byt{p1},
    i bez Nego niqto ne n\'aqalo byt{p1}, qto n\'aqalo byt{p1}.}%
    
    \rtexta
    \showhyphens{\rtexta}
    
    \vspace{20pt}
    \selectruencoding{T2A}
    \textlatin{language: \the\language}
    % 以下 T2A シンボルで記述
    \def\rtextt{% Russian text by T2A
    %<utf82tex_r>>
    В начале было Слово, и Слово было у Бога, и Слово было Бог.
    Оно было в начале у Бога. Все чрез Него н\'ачало быть,
    и без Него ничто не н\'ачало быть, что н\'ачало быть.}
    %</utf82tex_r>
    
    \textac{\rtextt}% Akademicheskaja
    
    \showhyphens{\rtextt}
    
    \vspace{20pt}
    \selectlanguage{oldchurchslavonic}
    \textlatin{language: \the\language}
    \def\rtextocs{%
    %<utf82tex_s>
    Въ нач'алэ б`э сл'ово, \и сл'ово б`э къ б_гу, 
    \и б_гъ б`э сл'ово.
    С'ей б`э ^искон`и къ б_гу:
    вс^я т'эмъ б'ыша, \и без\ъ нег'w
    ничт'оже б'ысть, "eже б'ысть.}
    %</utf82tex_s>
    
    \rtextocs
    
    \showhyphens{\rtextocs}
    \end{document}
    		  

enumerate の変更について

本 russianb.ldf では, enumerate 環境におけるラベルの様式を変更している.通常の russianb.ldf を OT2 エンコーディングで用いると,アルファベットとローマ数字がキリル文字で出力される.これは,不具合ではないかと想定される.

第二レベル,第三レベル,第四レベルは初期値では,OT2 環境においても,通常のラテンアルファベット,ローマ数字で出力するようにした.

アルファベットをキリル文字で出力したい場合は, \cyrillicenumstyle 命令を enumerate 環境の直前で設定すれば可能とした.

もとのラテンアルファベットにするには,再度 \selectlanguage で切替るか,もしくは \normalenumstyle 命令を指定すればよい.

特記事項

いくつかお断りしておきたい事柄がある.

  1. 本ファイルは TeX Q & A 44812 に投稿した版に対し,若干変更を加えている.投稿版は言語名の再定義の際,l@russian.. のように l@ を付けなければならない仕様になっているが,これはユーザの関知すべき部分ではなく, \makeatletter を書かなければならなかったりと面倒なので,本配布版では russian... で定義できるように改変した.掲示板の説明と異なっているので注意いただきたい.

  2. 本配布物は LPPL に従って配布,改変を行ってよいが,作者はいかなる責任も負わない.またいかなる保障も行わない.ご了承いただきたい.

  3. お気づきの点,問題点があれば,電子メールでご連絡いただけると幸いである.

更新履歴

 

Sept. 20, 2006 初稿
Oct. 2, 2006 Web 版初稿
May 20, 2007 「ハイフン最小値の調整」追記