TeX ロシア語ハイフネーションと文字入力について
since Feb. 20 2004
Ot Ioanna svjatoe blagoverstovovanie
初に言葉ありき。言葉は神の方にありき。言葉は神なりき。
— 聖書, ヨハネ福音書, 1.1
   

はじめに

 

本稿は,ロシア語ハイフネーションを考慮したロシア語の TeX 入力方法,ロシア語フォントエンコーディング,7ビットハイフネーションパターンの簡単な比較,ロシア語ハイフネーション規則 (ロシア語分綴法) について述べる. UNIX 環境を前提として整理しているが,考え方は Windows でも適用できる.

ハイフネーションパターン

 

CTAN で配布されているロシア語のハイフネーションパターンを pTeX に読み込ませようとすると,「! Bad \patterns.」などのエラーが発生して,フォーマット・ファイル作成に失敗する.これはパターンが8ビット・コードで記述されているため, pTeX の内部で日本語コードとバッティングしてしまうことに起因すると思われる.そこで7ビット・コードで書かれたパターン・コードを準備する必要がある.

本稿では,1文字1バイトにおいて MSB (最上位ビット) に1が立つ領域 (十六進 0x80-​0xFF の領域) に配置された文字を有する文字コードを,8ビット・コードと呼んでいる.この領域にはアクセント付き文字や,キリル文字コードではキリル文字が配置される.これに対し, 0x00-​0x7F の範囲内,すなわち1バイトの下位7ビットで表現可能な文字領域のみを用いるものを7ビット・コードとする.文字コード下位7ビットのエリアは, ISO-8859 国際文字セットにみえるように,数字,英語のアルファベットなど汎用的な文字を有する ASCII と等価である.このため ASCII 文字コードを7ビット・アスキーと称する場合がある.

かつて7ビット・コードによるロシア語用ハイフネーションパターン suhyph.​tex が CTAN で配布されていたが,現在は削除されてしまった.8ビット・キリル文字コードで TeX 原稿を作成できる現在,7ビット OT2 エンコーディングがロシア本国で廃れてしまった事情によるものであろう.一方,8ビット・マルチバイト・コードで和文を入力する日本のユーザにあっては,ロシア語テキストは7ビット・コードで準備せざるをえない状況にある.すなわち,アスキー文字で原稿を入力し, OT2 エンコーディングのフォントでキリル文字を出力するのがもっとも簡便なロシア語文書作成方法となっている. OT2 エンコーディングはキリル文字を7ビット・エリアに配置した TeX フォントの文字コードである.ハイフネーションパターンも7ビット・アスキー入力に対応したものが必要になる.

ということもあり, Александр Лебедев アレクサンドル・レーベジェフ氏が作成した最新のハイフネーションパターン ruhyphal.​tex (オリジナルは KOI8-R 8ビット・エンコード) を,私自身の間に合わせでアスキー・コードで調整した.これは, KOI8-R 文字コードを OT2 エンコーディングに機械的に置換し,さらに合字が不当に分綴されないようにパターンの追加・修正を施したものである.

2003.7 に「スラヴ研究者向け LaTeX 多言語環境の構築と利用 ― pTeX p3.1.2」にこのハイフネーションパターン(パッチ)を掲載し,その後 2004.2 に少し修正した. "chto" と記述した場合に, "ч-то" と誤ってハイフネーションされるなどの問題を訂正した. TeX のハイフネーションのロジックは『TeX ブック』を何度読んでも十分には理解できない.ましてやキリル文字のパターン・ファイルをアスキー・トランスクリプションで書き直すと,思わぬ不具合に遭遇してしまう.アーカイブをダウンロードして前掲のページと同様の手順でインストールできる.

Windows ユーザにとってパッチは一般的ではないので,解凍すればすぐ使えるアーカイブも用意した. Windows, UNIX 問わず利用できる.本ハイフネーションパターンは ruhyphen7.​tex から定義テーブル本体 ruhyphot2.​tex を呼び出す仕掛けになっている.導入は,これを TeX ツリーに展開し,language.​dat に ruhyphen7.​tex を指定し,fmtutil ユーティリティによって platex フォーマットを再生成すればよい.

% language.dat
...
russian  ruhyphen7.tex % for OT2
%russian  ruhyphen.tex % for T2A original
...
	

フォーマット・ファイルの生成は, fmtutil ユーティリティで実施する.フォーマット名称は利用環境に合わせる必要がある.

# fmtutil --byfmt platex-euc
	

土村氏は,Babel 環境を含めて調整の行き届いた UNIX 向けディストリビューション ptetex3 を公開している.8ビットのハイフネーションパターンを "^^十六進数" 形式に変換することによって pTeX に読み込ませる工夫をしている (形式変換のための Perl スクリプトはトノ氏が作成したものである). ruhyphen7.tex をインストールしなくても,十分な分綴品質が期待できる.

キリル文字の
入力方法 (OT2)

 

pTeX Babel 多言語環境で日本語と同時に記述する場合,ロシア語は原則,7ビットアスキーに基づくローマン・トランスクリプションで入力する.例えば,キリル文字の б (ベー) を出力するために b を入力するわけである.これは OT2 エンコーディング・スキームと呼ばれる. b の入力に対し,OT2 エンコーディングに対応したキリル・フォントにおいて b (アスキー・コード十六進数 0x62, 十進数 98) と同じ位置にある文字 б が出力される仕組みである.OT2 フォント・マップを調べると, OT2 エンコーディングでは,キリル文字を,可能な限り,その音価や形状で類似したラテン・アルファベット文字の位置に対応付ける工夫がされていることが分かる.

日本語との混在を前提とした上で直接キリル文字を TeX 原稿に記述することも,CJK パッケージ 及び Unicode パッケージを利用することにより,LaTeX の枠組において可能である.しかしこの方法は,日本語 pLaTeX システムでは利用できないため,和文フォントの選択,既存和文用マクロの使用,及び縦組において無視できない制限を強いる. Unicode で記述できる広範な多言語組版にこだわらないのであれば, pLaTeX + Babel + OT2 が和・露文混在の組版環境として最善であると考える. CJK,Unicode の各パッケージの活用については「CJK,Unicode パッケージ,ロシア語多書体の利用」を参照.

Babel において OT2 エンコーディングでロシア語を記述する場合,以下のとおり,プリアンブルに fontenc パッケージを OT2 オプション付きで指定しておく.さらに Babel パッケージをロシア語 russian オプション付きで読み込んでおく.ハイフネーションパターンが正しく設定されていれば,russian の言語選択 (\selectlanguage) によって LH キリル・フォント,ロシア語ハイフネーション規則が自動的に適用される.

\documentclass[a4paper]{jarticle}
\usepackage[OT2,T1]{fontenc}
\usepackage[russian]{babel}
\begin{document}
\selectlanguage{russian}
 abvg ...(キリル文字)
\end{document}
	

キリル文字出力の仕組みからいえば, Babel を指定しなくても,以下のようにフォントエンコーディング選択命令で切り替えることによりキリル文字を出力できる.しかしハイフネーションなどは機能しない. Babel の利用を標準と考えたほうがよい.

\documentclass[a4paper]{jarticle}
\usepackage[OT2,T1]{fontenc}
\begin{document}
\fontencoding{OT2}\selectfont
 abvg ...(キリル文字)
\end{document}
	

もうひとつ,昔から AMSTeX パッケージの機能によってキリル文字を出力する方法がある.以下のように cyracc.​def を読み込んでおき,LH 10pt キリル・ローマンフォント選択を \cyr 命令に割り当て,キリル文字の出力を \cyr 命令で指示する方法である. \cprime で ь を出力できるなど独自の命令を備えている.しかしハイフネーションは機能しない.

\documentclass[a4paper]{jarticle}
\input cyracc.def
\font\tencyr=wnr10
\def\cyr{\tencyr\cyracc}
\begin{document}
 {\cyr abvg ...(キリル文字)}
\end{document}
	

pTeX Babel ロシア語トランスクリプション入力の仕方は OT2 エンコーディングとフォントのリガチャ(合字)定義とに依存している.従ってこの条件に沿った入力を行うと,より適切な自動ハイフネーションが期待できる.

ロシア文字に対するトランスクリプション入力方法を下表にまとめる. ( ) または [ ] 内の入力は, Babel 標準の LH キリル・フォントにおいて,リガチャとして定義されているものである.しかしながら, [ ] 内に示したものは, OT2 用ハイフネーションパターンに適合しないため推奨しない.

文字 入力 文字 入力 文字 入力 文字 入力
А а A a И и I i С с S s Ъ ъ P2 p2
Б б B b Й й I0 i0 Т т T t Ы ы Y y
В в V v К к K k У у U u Ь ь P1 p1
Г г G g Л л L l Ф ф F f Э э E1 e1
Д д D d М м M m Х х H h
[KH kh]
Ю ю YU yu
(J2 j2)
Е е E e Н н N n Ц ц C c
[TS ts]
Я я YA ya
(J1 j1)
Ё ё E0 e0 О о O o Ч ч Q q
[CH ch]
Ж ж ZH zh
(Z1 z1)
П п P p Ш ш X x
[SH sh]
З з Z z Р р R r Щ щ W w
[SHCH shch]

このほか, OT2 エンコーディングにはシンボル命令(コントロールシーケンス)で文字を入力する方法がある.命令の定義は ot2enc.​def ファイルにある.例えば ж は \cyrzh と定義されている. TeX の処理方式では命令を展開したのちにハイフン処理が行われるため,この入力方法もハイフネーションパターンとの照合に関しては有効である.また,ロシア語旧正書法で用いられた文字 і (イ・ス・トーチコイ), ѣ (ヤッチ), ѳ (フィータ), ѵ (イジツァ) も,それぞれ \cyrii, \cyryat, \cyrfita, \cyrizh で出力できる.

OT2 フォントマップにおいて,文字 ж は十六進数 0x19(十進数 25,八進数 0o031)の位置にある. TeX では "^^X" という記法によって, X の ASCII コード位置から八進数 0o100 を減じた位置の文字を表現することが可能である.この特殊な方法によると, ж (0o031) は ^^Y (Y は 0o131) と表記できる (^^Y の分類コードが 11 もしくは 12 に設定されている必要がある).しかしながら,これで文書を記述するのは煩瑣かつ理解不能と思われるので,上表の表記 zh を基本と考えたほうがよい.ruhyphot2.​tex は zh と入力したときに適切な分綴がされるように調整している.しかしながらハイフネーションパターンの調整が不十分だと zh は z (з) と h (х) との間で分綴されてしまうことがあり,その際は zh ではなく z1 としておくと分離されることはない.とはいえこの場合も ж の前後でのハイフネーションは諦めなくてはならない.

ロシア語を知っていると音価の類似から, "х", "ц", "ч", "ш", "щ" をそれぞれ "kh", "ts", "ch", "sh", "shch" と入力したくなる.しかしこれは便宜上用意されているものと考え,適切なハイフネーションを望む場合 "h", "c", "q", "x", "w" とタイプすべきである.

ローマン・トランスクリプション入力の本質的問題は,キリル文字と1対1対応でないがゆえの曖昧さである.例えば, "ts" と入力すると,キリル文字として "ц" と "тс" に転写しうるので,出し分ける工夫が必要である. "ts" は Babel + LH フォントで組版すると通常はリガチャの定義に従って "ц" で出力される. "тс" と出力したい場合は, "t\-s" (ハイフネーション許可) もしくは "t​\textcompwordmark{}s" (リガチャ抑止,ハイフネーション禁止) と入力する.ロシア語の正書法でありうるものはほかに "sh" ("ш","сх") が考えられるが,同様の対処が必要である.

私は長文のロシア語を含む TeX 文書を書く場合は, UTF-8 でキリル文字を直接タイプして,ツールで上記推奨アスキー・トランスクリプションに機械的に変換する方法を採っている.「UTF-8 による TeX 文書の作成 — Utf82TeX」を参照いただきたい. Utf82TeX を利用すると становится のように с (または С) の直前に т (または Т) が現れるような場合に stanovit​\-​sya と "\-" (ハイフネーション許可) を自動的に挿入し,タイプセット結果が становиця になってしまうことを抑止できる.また, "сх" についても "s​\textcompwordmark{}h" に変換するため, схватить が шватить とタイプセットされることもない.

hyphenmin の
調整

 

OT2 用のハイフネーションパターンを利用する際,分綴前後の部分の最小文字数を変更したい場合がある. Babel ロシア語言語定義 russianb.ldf では,最小文字数の定義 \lefthyphenmin, \righthyphenmin はそれぞれ 2 文字となっている.このため,例えば YAponiya (Япония) は, YA-poni-ya (Я-пони-я) と分綴されることがある. я だけが行送りされるのはちょっと不本意のように思われる. ю なども 2 文字のアルファベット (yu) で表記するのでこの部類に入る. T2A の場合は入力と出力の文字数が一致するので,定義に従って Япо-ния 以外で分綴されることはないはずである.

よって OT2 利用では, \lefthyphenmin, \righthyphenmin 値を少し増やしておく調整を考えてもよい. \russianhyphenmins コントロールシーケンスを再定義すればこれが可能になる.プリアンブルにおいて次のように指定しておくと, \lefthyphenmin 2, \righthyphenmin 3 に設定される.引数の \tw@ は 2, \thr@@ は 3 であり,それぞれ \lefthyphenmin, \righthyphenmin にセットされ,語頭,語末の分綴最小文字数制御に用いられる.ただし,この設定は Babel ロシア語利用が前提である.

\makeatletter
\def\russianhyphenmins{\tw@\thr@@}
\makeatother
	

利用者の考え方しだいではあるが, \lefthyphenmin 値は russianb.ldf の初期値 2 を変えないほうがよいと思う.それは,ロシア語では я, ю ではじまる語よりも 2 文字の接頭辞 (за-, на-, от-, по-, etc.) ではじまる語が圧倒的に多いためであり, \lefthyphenmin 値を 3 以上に設定すると,接頭辞の切目で分綴が不可となってその後方で分綴部を求めることになり,逆にいびつな結果となりかねないからである.一方 \righthyphenmin 値は 3 にしておくことで,語末に位置する場合が極めて多い я の孤立が救われる.

T2A フォントエンコーディング

 

これまで日本の pTeX での利用を想定して,おもに OT2 フォントエンコーディングについて述べてきた.一方ロシア・東欧のユーザは,直接 LaTeX 原稿に Windows-​CP1251 や KOI8-R, UTF-8 のキリル文字をタイプして, T2A フォントエンコーディングによってキリル文字を出力するのが普通である.ロシア語 Type1 フォントは T2A でエンコードされているのがもっぱらであって, OT2 は今や過去の継承として細々と生き延びているというのが実情のようである.

キリル文字を直接原稿に記述できない pTeX では, \CYRxxx のシンボル命令を利用して,T2A フォントエンコーディングを使用することができる.当然ながらキリル・テキストが長大になり見づらくなってしまい,キリル文字を直接記述する本来の T2A の機動性は発揮できない.しかしこの方法により, LH 以外の キリル Type1 フォントを pTeX でも出力できるので,ロシア語多書体の文書が作成できる.またキリル言語用ハイフネーションパターンがオリジナルの精度で利用できるメリットもある.

T2A で文書を記述する場合,Babel キリル言語のハイフネーションパターンも T2A 用に設定しておかなければ,適切な分綴がなされない.また, OT2 と併用する場合,フォントエンコーディングを明示的に切り替える必要がある.

T2A 用のハイフネーションパターン (ロシア語,ウクライナ語) は,前述のとおり,オリジナルのファイルを使うと pTeX (iniptex) ではエラーとなる.トノ氏作成のツール 8bt2ptex.pl によって変換したものを使う必要がある. 8bt2ptex.pl は稲垣氏のサイトから入手できる.土村氏の ptetex3 でインストールした場合はすでに変換済みになっている.

次の例では,ロシア語は OT2, ウクライナ語は T2A で処理している.ウクライナ語は, PSCyr パッケージを用い,学術書などで用いられる Academy 書体を指定している.

\documentclass[a4paper]{jarticle}
\usepackage[OT2,T2A,T1]{fontenc}
\usepackage[ukrainian,russian]{babel}
\usepackage{pscyr} % PSCyr Type1
\begin{document}
\selectlanguage{russian}     % OT2
\fontencoding{OT2}\selectfont
 abvg ...(トランスクリプション入力)

\selectlanguage{ukrainian}   % T2A
\fontencoding{T2A}\selectfont
\textac{% AcademyPSCyr 
 \cyra\cyrb\cyrv\cyrg ...(シンボル命令入力)
}
\end{document}
	

UTF-8 キリル文字で原稿を書いて,Utf82TeX T2A オプション/タグコントロールによって T2A シンボル命令に変換して pTeX 処理を行うことができる. T2A の上記問題点を幾分なりとも解決できるはずである.以下のように UTF-8 で原稿 utf8cyr.​tex を準備し, ulatex utf8cyr とすると utf8cyr.​dvi が得られる. ulatex は Utf82TeX 添付のラッパーツールであり, utf82tex, iconv, platex を順次実行して,変換操作をユーザから隠蔽して簡易に Utf82TeX を利用できるようにしたものである.

% utf8cyr.tex 原稿を UTF-8 で準備
\documentclass[a4paper]{jarticle}
\usepackage[T2A,T1]{fontenc}
\usepackage[ukrainian,russian]{babel}
\usepackage{pscyr} % PSCyr Type1
\begin{document}
\selectlanguage{russian}   % T2A
%<utf82tex_r>
 русский язык ...(キリル文字)
%</utf82tex_r>

\selectlanguage{ukrainian} % T2A
\textac{% AcademyPSCyr 
%<utf82tex_r>
 україньска ...(キリル文字)
}%</utf82tex_r>
\end{document}
	

OT2, T2A の混在
(スタイル)

 

ロシア語の記述において OT2 と T2A のフォントエンコーディングを混在させると,通常ハイフネーション処理において問題がある.つまり, platex フォーマットを作成する際, language.dat において russian に対し OT2, T2A どちらかのハイフネーションパターンファイルを指定すると,混在したタイプセットではいずれか一方について自動分綴処理を諦めなくてはならない.

この問題を解決する方策のひとつに,次のような一連の操作を行うものがある.

  1. OT2 用と T2A 用のハイフネーションパターンをフォーマット・ファイルに読み込ませておく. language.dat に,通常使用するパターン・ファイルを russian に指定し,もう一方を別言語名 (他と重複しない限り任意), russiant (例) に対して設定する.つまり,例えば次のように language.dat に指定してフォーマットを生成する.

    russian ruhyphen7.tex % OT2 用パターン
    russiant ruhyphen.tex % T2A 用パターン
  2. ロシア語の記述に際して,フォントエンコーディングを指定した直後に,これに応じた言語に切り替える.すなわち,上記例に即していえば, OT2 なら l@russian に, T2A なら l@russiant に設定し直す. LaTeX では現在の言語は \language の言語番号として設定されており,言語番号はコントロールシーケンス l@言語名 でその参照を可能とする仕組みとなっている.この仕様に基づき,フォントエンコーディングによって \language​=​\l@russian もしくは \language​=​\l@russiant を実行すればよい.

ロシア語環境切り替え命令 \changelangru をサポートするスタイル・ファイルの例を示す.この命令はフォントエンコーディング名を引数にとる.

%% ロシア語フォントエンコーディング/ハイフネーション切り替え
%% \changelangru{エンコーディング名}
%%   OT2 のとき: \ottwo@lang (デフォルト l@russian)  にセット.
%%   T2A のとき: \ttwoa@lang (デフォルト l@russinat) にセット.
%%   それ以外:   なにもしない.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{changeru}%
  [2006/08/30 Change russian fontencoding and hyphenation.]%
\def\ottwo@{OT2}%
\def\ttwoa@{T2A}%
%% 言語名を変更したい場合以下のマクロを修正
\def\ottwo@lang{l@russian}%
\def\ttwoa@lang{l@russiant}%
\message{Changeru related languages OT2: \ottwo@lang;
 T2A: \ttwoa@lang;^^J}%
\def\changelangru#1{% 引数: ロシア語フォントエンコーディング
  \fontencoding{#1}\selectfont%
  \edef\now@enc{\csname f@encoding\endcsname}%
  \ifx\ottwo@\now@enc%
    \set@rulang{\ottwo@lang}%
    \def\encodingdefault{OT2}%
  \else%
    \ifx\ttwoa@\now@enc%
      \set@rulang{\ttwoa@lang}%
      \def\encodingdefault{T2A}%
    \else%
      \message{Changru: unavailable language relation for 
      \now@enc.^^J}%
     \fi%
  \fi}%
\def\set@rulang#1{% 言語存在チェックしてOKなら \language にセット
  \@ifundefined{#1}{%
    \message{Unavailable language: #1}}{%
    \language=\csname #1\endcsname%
    \message{Changru: set language to \the\language.^^J}}}%
\endinput
	

このスタイル・ファイルを changeru.​sty として TeX ツリーに格納し, \changelangru​{​フォントエンコーディング​} 命令を用いると,指定したフォントエンコーディングと,これに従ったハイフネーションパターンとに切り替えることができる.

\documentclass[a4paper]{jarticle}
\usepackage[OT2,T2A,T1]{fontenc}
\usepackage[russian,japanese]{babel}
\usepackage{changeru}% 切り替え用スタイル
\begin{document}
\selectlanguage{russian}
\changelangru{OT2}%OT2切替
\textlatin{language: \the\language}\par
% 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}.}%

\vspace{20pt}
\changelangru{T2A}%T2A切替
\textlatin{language: \the\language}\par
% 以下 T2A シンボルで記述
% Russian text by T2A
%<utf82tex_r>
В начале было Слово, и Слово было у Бога, 
и Слово было Бог.
Оно было в начале у Бога. 
Все чрез Него н\'ачало быть,
и без Него ничто не н\'ачало быть, 
что н\'ачало быть.
%</utf82tex_r>
\end{document}
	

例文は T2A のテキストはわかりやすくするためにキリル文字で表記している.原稿をこのとおりに UTF-8 で記述し, Utf82TeX ulatex コマンドでコンパイルできる. Utf82TeX を利用しない場合,キリル文字は T2A シンボル (例えば ж は \cyrzh とする) で記述しなければならない.

changeru.sty, 利用例文をまとめた chgrus.zip を置いておくので,ダウンロードして活用いただいてもよい.

changeru.sty を少し書き換えれば,ウクライナ語用も追加できる.

OT2, T2A の混在
(Babel 環境)

 

changeru.sty を Babel ロシア語言語定義に適用した拙作 russianb.ldf を利用できる.ダウンロード・サービスから入手できる.考え方,ハイフネーションの環境設定は, changeru.sty と同じである.ただし,こちらは Babel 提供のロシア語言語定義を差し換えて利用する.

\selectruencoding​{​フォントエンコーディング​} 命令により,指定したフォントエンコーディングと,これに従ったハイフネーションパターンとに切り替えることができる.

language.dat 登録言語名がデフォルト (OT2: russian; T2A: russiant) と異なる場合は, \def で定義すればよい.

例を示す.

\documentclass[a4paper]{jarticle}
\usepackage[OT2,T2A,T1]{fontenc}
\usepackage[russian,japanese]{babel}
% russianb.ldf は入れ替えておく.
\def\ruottwolang{russianfoo}% OT2 用の言語名
\def\ruttwoalang{russianbar}% T2A 用の言語名
\begin{document}
\selectlanguage{russian}
\selectruencoding{OT2}%OT2切替
ロシア語 (OT2)

\selectruencoding{T2A}%T2A切替
ロシア語 (T2A)
\end{document}
	

changeru.sty, 改変 russianb.ldf は無保証なので,ご利用に際してはあらかじめご了承いただきたい.

OT2 ハイフネーション結果比較

 

7ビット・ハイフネーションパターンの処理結果を比較してみた.比較の対象は ruhyphot2.​tex 及び suhyph.​tex である.次の原文 (М. А. Булгаков, «Мастер и Маргарита» М. А. ブルガーコフ『巨匠とマルガリータ』) を入力としてテストした.

Прежде всего откроем тайну которую Мастер не пожелал открыть Иванушке. Возлюбленную его звали Маргаритою Николаевной. Все, что Мастер говорил о ней, было сущей правдой. Он описал свою возлюбленную верно. Она была красива и умна. К этому надо добавить еще одно --- с уверенностью можно сказать, что многие женщины все, что угодно, отдали бы за то, чтобы променять свою жизнь за жизнь Маргариты Николаевны. Бездетная тридцатилетняя Маргарита была женою очень крупного специалиста, к тому же сделавшего важнейшее открытие государственного значения. Муж ее был молод, красив, добр, честен и обожал свою жену. Маргарита Николаевна со своим мужем вдвоем занимали весь верх прекрасного особняка в саду в одном из переулков близ арбата. Очаровательное место! Всякий может в этом убедиться, если пожелает направиться в этот сад. Пусть обратится ко мне, я скажу ему адрес, укажу дорогу --- особняк еще цел до сих пор.

比較結果を下表に示す. ruhyphot2.​tex と suhyph.​tex とは,それぞれ上記推奨トランスクリプション入力で pLaTeX 処理を行った. ruhyphot2.​tex の8ビット・オリジナル・パターン ruhyphal.​tex による LaTeX 処理結果を,リファレンスとして上げている. \showhyphens のログ出力に対し,語をアルファベット順にソートし,語重複を排除し,1文字のみの語を削除した.

ruhyphal.tex         ruhyphot2.tex        suhyph.tex
----------------------------------------------------------------
Без-дет-ная          Bez-det-naya       * Bez-det-na-ya
Воз-люб-лен-ную      Voz-lyub-len-nuyu  x Voz-ly-ublen-nu-yu
                                         (Воз-лы-ублен-ну-ю)
Все                  Vse                  Vse
Вся-кий              Vsya-kii0          x Vsy-a-kii0
                                         (Всы-а-кий)
Ива-нуш-ке           Iva-nux-ke           Iva-nux-ke
Ма-стер              Ma-ster              Ma-ster
Мар-га-ри-та         Mar-ga-ri-ta         Mar-ga-ri-ta
Мар-га-ри-тою        Mar-ga-ri-toyu     * Mar-ga-ri-to-yu
Мар-га-ри-ты         Mar-ga-ri-ty         Mar-ga-ri-ty
Муж                  Muzh                 Muzh
Ни-ко-ла-ев-на       Ni-ko-la-ev-na       Ni-ko-la-ev-na
Ни-ко-ла-ев-ной      Ni-ko-la-ev-noi0     Ni-ko-la-ev-noi0
Ни-ко-ла-ев-ны       Ni-ko-la-ev-ny       Ni-ko-la-ev-ny 
Он                   On                   On 
Она                  Ona                  Ona
Оча-ро-ва-тель-    * Oqa-ro-va-telp1noe * Oqa-ro-va-telp1noe
  ное
Преж-де              Prezh-de             Prezh-de 
Пусть                Pustp1               Pustp1
ад-рес               ad-res             * adres
ар-ба-та             ar-ba-ta             ar-ba-ta
близ                 bliz                 bliz
бы                   by                   by
бы-ла                by-la                by-la
бы-ло                by-lo                by-lo
был                  byl                  byl
важ-ней-шее        * vazh-nei0xee       * vazh-nei0xee
вдво-ем              vdvo-em              vdvo-em
вер-но               ver-no               ver-no
верх                 verh                 verh
весь                 vesp1                vesp1
воз-люб-лен-ную      voz-lyub-len-nuyu  x voz-ly-ublen-nu-yu
                                         (воз-лы-ублен-ну-ю)
все                  vse                  vse
все-го               vse-go               vse-go
го-во-рил            go-vo-ril            go-vo-ril
го-су-дар-ствен-     go-su-dar-stven-     go-su-dar-stven-
  но-го                no-go                no-go
до                   do                   do
до-ба-вить           do-ba-vitp1          do-ba-vitp1
до-ро-гу             do-ro-gu             do-ro-gu
добр                 dobr                 dobr
его                  ego                  ego
ее                   ee                   ee
ему                  emu                  emu
ес-ли                es-li                esli
еще                  ewe                  ewe
же                   zhe                  zhe
же-ною               zhe-noyu           * zhe-no-yu
же-ну                zhe-nu               zhe-nu
жен-щи-ны            zhen-wi-ny           zhen-wi-ny
жизнь                zhiznp1              zhiznp1
за                   za                   za
за-ни-ма-ли          za-ni-ma-li          za-ni-ma-li
зва-ли               zva-li               zva-li
зна-че-ния           zna-qe-niya          zna-qe-ni-ya
из                   iz                   iz
ко                   ko                   ko
ко-то-рую            ko-to-ruyu         * ko-to-ru-yu
кра-си-ва            kra-si-va            kra-si-va
кра-сив              kra-siv              kra-siv
круп-но-го           krup-no-go           krup-no-go
ме-сто               me-sto               me-sto
мне                  mne                  mne
мно-гие              mno-gie              mno-gie
мо-жет               mo-zhet            * mozhet
мо-лод               mo-lod               mo-lod
мож-но               mozh-no              mozh-no
му-жем               mu-zhem            * muzhem
на-до                na-do                na-do
на-пра-вить-ся     * na-pra-vitp1sya    * na-pra-vitp1sya
не                   ne                   ne
ней                  nei0                 nei0
об-ра-тит-ся       * obratit-sya        * obratit-sya
обо-жал              obo-zhal             obo-zhal
од-но                od-no                od-no
од-ном               od-nom               od-nom
опи-сал              opi-sal              opi-sal
особ-ня-ка           osob-nya-ka        x osob-ny-a-ka
                                         (особ-ны-а-ка)
особ-няк             osob-nyak          x osob-ny-ak
                                         (особ-ны-ак)
от-да-ли             ot-da-li             ot-da-li
от-кро-ем            ot-kro-em            ot-kro-em
от-кры-тие           ot-kry-tie           ot-kry-tie
от-крыть             ot-krytp1            ot-krytp1
очень                oqenp1               oqenp1
пе-ре-ул-ков         pe-re-ul-kov         pe-re-ul-kov
по-же-ла-ет          po-zhe-la-et         po-zhe-la-et
по-же-лал            po-zhe-lal           po-zhe-lal
пор                  por                  por
прав-дой             prav-doi0            prav-doi0
пре-крас-но-го       pre-kras-no-go       pre-kras-no-go
про-ме-нять          pro-me-nyatp1      x pro-me-ny-atp1
                                         (про-ме-ны-ать)
са-ду                sa-du                sa-du
сад                  sad                  sad
сво-им               svo-im               svo-im
свою                 svoyu                svo-yu
сде-лав-ше-го        sde-lav-xe-go        sde-lav-xe-go
сих                  sih                  sih
ска-жу               ska-zhu            x skaz-hu
                                         (сказ-ху)
ска-зать             ska-zatp1            ska-zatp1
со                   so                   so
спе-ци-а-ли-ста      spe-ci-a-li-sta      spe-ci-a-li-sta
су-щей               su-wei0              su-wei0
тай-ну             * tai0nu             * tai0nu
то                   to                   to
то-му                to-mu                to-mu
трид-ца-ти-лет-      trid-ca-ti-let-    x trid-ca-ti-let-ny-a-ya
  няя                  nyaya             (трид-ца-ти-лет-ны-а-я)
убе-дить-ся        * ube-ditp1sya       * ube-ditp1sya
уве-рен-но-стью    * uve-ren-nostp1yu   * uve-ren-nostp1yu
угод-но              ugod-no              ugod-no
ука-жу               uka-zhu            x ukaz-hu (указ-ху)
ум-на                um-na                um-na
цел                  cel                  cel
че-стен              qe-sten              qe-sten
что                  qto                  qto
что-бы               qto-by               qto-by
это-му             * e1tomu             * e1tomu
этом                 e1tom                e1tom
этот                 e1tot                e1tot
я                    ya                   ya
	

ruhyphal.tex を正とすると,若干の相違 (* 印) はあるが,7ビット・パターン・ファイルの処理結果はともに概ね安全サイドに,つまりハイフネーションしない方向に倒れていると思う.

しかし suhyph.​tex では綴りが変わってしまうハイフンミスがある. x 印を付した語がこれに該当する. ( ) 内は組版結果で出力される可能性のある不正な綴りを示している.推奨の入力方法を採らないと, щ (shch) が ш (sh) と ч (ch) に分離されるなど,さらに分綴誤りが顕著になる. ruhyphot2.​tex では ch, kh, sh, shch が分離されないパターンを追加しているため,これらを用いても間で切れて綴りが変わることはないはずである.Babel で suhyph.​tex を利用する場合は,上記文字入力で1文字で表せるもの以外は, j2 (ю), j1 (я) など「英字+数字」のトランスクリプションを使用したほうが,その前後で分綴されずより安全かもしれない.

ロシア語分綴法

 

『ロシア・ソビエト ハンドブック』(東郷正延ほか編,三省堂刊,昭和53年)は分綴法(ロシア語ハイフネーション規則)を解説した数少ない日本語文献であるが,残念ながらいまは絶版になってしまったようである. vsu.ru (ヴォロネジ大学) の ftp サーバで配布されている ruhyphen パッケージには,ロシア語の分綴法について述べた文書 hyphen.​rules (原文露文) が添付されている (teTeX を標準インストールすると $TEXMF​/​doc​/generic​/ruhyphen ディレクトリ下に格納されるはずである). これはいくつかのロシア語学関連文献からの引用もしくは要約である.

hyphen.rules 全訳を以下に掲載する.ロシア語 TeX のみならず広くロシア語一般に関心をもつ方々にとって有益であることを望む.私の試訳であるので,誤り等お気付きの点があればご連絡いただきたい.

hyphen.rules によると,分綴規則は文献によって必ずしも一律ではないことが伺える.ましてや計算機による自動ハイフネーションは完全ではないわけで,やはり自分の目で処理結果を吟味すべきだろう.ここに訳出した規則をその際の参考としていただければと思う.

hyphen.rules
日本語訳

 

ロシア語分綴法
К. И. Былинский, Н. Н. Никольский, "Справочник по орфографии и пунктуации для работников печати", М., Искусство, 1952.  К. И. ブィリンスキー,Н. Н. ニコリスキー編『印刷技術者のための正書法と句読法ガイドブック』(モスクワ,イスクーストヴォ出版,1952年)より

  1. 単語は音節ごとに分綴する: сто-лик, Ва-си-ли-са.
  2. 単語の一文字のみを先行する行末に残したり,次行の先頭に継続してはならない.
  3. 文字 ъ, ь, й は先行する文字と分離してはならない.次のように分綴することは可能である.: подъ-езд, поль-за, вой-на, рай-он
  4. 二つ以上の子音が結合している部位で単語を分綴する場合,これらの子音を前の音節にも,続く音節にも付加して分綴することができる.: се-стра, сес-тра, сест-ра
  5. 接尾辞と接合する語根の子音文字を,複数の音節に分離したり分綴する場合,接尾辞のほうに付けてはならない.
    - 誤: ло-вчий, моско-вский, ро-дной
    - 正: лов-чий, москов-ский, род-ной

    さまざまな接尾辞に係わる子音の集まりについては,接尾辞単位で分割するほうがよい.
    - 例: мещан-ство(меща-нство ではない)
    строитель-ство(строите-льство,строительс-тво ではない)

  6. 接頭辞の子音を,これに続く音節に付けて分綴してはならない.あるいは語根の(母音の付かない)子音文字を,接頭辞に付けて分綴してはならない.
    - 誤: по-дбежать, бе-спрестанно, выс-тирать, прек-расный, прес-ледовать
    - 正: под-бежать, бес-престанно, вы-стирать, пре-красный, пре-следовать

    接頭辞がすでにその独自の意味を失い語根と融合している単語は例外である.:
    ра-зум, по-душка

  7. 語根が母音で始まっているような場合は,接頭辞を語根の最初の母音とともに前の行に分離し,残りの部分を次行に送ってはならない.接頭辞と語根を分離するか,もしくは語根の二音節を接頭辞とともに残すべきである.
    - 誤: беза-варийный, обо-стрение, приу-рочить, подо-синовик
    - 正: без-аварийный, об-острение, при-урочить(または приуро-чить), под-осиновик(または подоси-новик)

    当然ながら,語根のはじめの母音なのか接頭辞の変形なのかは区別しなければならない.例えば,正しい分綴は次のようになる: надо-рваться, обо-гнать, предо-ставить

  8. 複合略語を分綴する場合は,その構成部分に応じて分割しなければならない.:
    - 誤: пар-торг, спецс-тавка
    - 正: парт-орг, спец-ставка

    複合語を分綴によって無意味にしてはならない. дур-алюминий(ジュラルミン)という分綴は可能であるが,дура-люминий は不可である.

  9. 二つの同一子音が母音に接合している場合,二つの子音の間で分綴する.: промышлен-ность, клас-сы
    参考: класс-ный, программ-ный

    接頭辞の子音 в と с がそれぞれ子音 в と с で始まる語根に接合する場合,同様に語根の始めに同一の子音が重なる場合,その子音の間で分割しない: ново-введение, по-ссорить, подо-жженный

  10. 接頭辞の後に ы を有する語では,文字 ы は接頭辞側に付けて分綴する.

同一著者による文献 "Русский язык: Справочник по орфографии и пунктуации", 5-е издание, М., Изд. МГУ, 1998.  『ロシア語 — 正書法と句読法ハンドブック』(第5版,モスクワ,モスクワ大学出版,1998年)にも,同様の(少し補足がある)規則が掲載されている.

***

比較的近年の文献(А. В. Дудников, А. И. Арбузова, И. И. Ворожбицкая, "Русский язык", М., Высшая школа, 1977. А. В. ドゥードニコフ,А. И. アルブーゾヴァ,И. И. ヴォロジビーツカヤ『ロシア語』モスクワ,最高学府出版,1977)では次のように説明している.

通常,語は音節で分綴される.
(до-ро-га, пред-рас-свет-ный, про-дол-жи-тель-ность).

この規則には以下に示す制限がある.

  1. 独立音節を示す,始めと終りの母音文字は,前行末と次行頭で分離されない.
    (аме-ри-кан-ский, япон-ский, по-э-зия, тру-до-лю-бие)
  2. 接頭辞の終りの子音を分離してはならない.
    (под-бро-сить, воз-ра-зить, над-бров-ный)
  3. 文字 ы で始まる部分を次の行に分離して送ってはならない.(по-ды-то-жить)

    [注: 例の第1の分綴(по-ды)は規則 2. を破っていることが容易に分かる.
    この分綴は例外とすべきであると思われる.]

  4. 語根の最初の子音文字を接頭辞の母音文字にまとめてはならない.
    (по-дру-ги, за-свет-ло, во-рвать-ся)
  5. 分綴に際し接尾辞 -ск〜を分割してはならない.
    (со-вет-ский, фран-цуз-ский, рус-ский)
    これから派生した接尾辞 -еск〜, -ческ〜 などについては分綴時に分離されうる.
    (вра-жес-кий, упа-доч-ни-чес-кий)
  6. 二つの同じ子音文字はその間で分綴する.
    (кол-лек-ция, ком-му-низм, осен-ний)

***

Ф. バウエルの著書 Ф. Бауэр, "Азбука наборщика", Изд. ЦК СРПП СССР, Л., 1925.  『植字工のいろは』(ソヴィエト工業規格中央委員会出版部,レニングラード,1925年)には次のようにある.
[特殊な句読法はそのままにしている]

  1. 一音節の語は決して分割してはならず,同一行内に組上げるかもしくは語をまるまる次行に送るようにしなければならない.例えば кот, дождь, степь である.このほか,例えば вспомни のような語の,子音文字のみからなる部分を分離してはならない.вспо-мни と分割することはできるが,вс-помни は不可である.
  2. 二つの母音文字間に在る子音文字は分綴に際して次の音節に付する. 例えば по-ле, зна-мя, сво-бо-да である.
  3. 軟音符 ь が二つの子音文字の間に位置する場合,これを分離してはならず,常に前の行に残すようにしなければならない.例: малень-кий, маль-чик
    しかし ь が子音文字と母音文字 е, и, ю, я とを分離する符号として用いられている場合には,前の行に ь を残して分綴してはならず,これを次の行に送らなければならない.例: Воро-бьев, Соло-вьев
  4. бл, вл, мл, пл, фл, жд は分割してはならない.このため次のように分綴すべきである.: наде-жда, ло-влю, лю-блю
  5. 接尾辞 ский 及び ство は決して分割されない.このため次のように分綴すべきである.: химиче-ский, оптиче-ский, торже-ство, праздне-ство
  6. 複合語の分綴に際しては次のことに留意すべきである.語根からひとつもしくは複数の文字を切り離してこれを接頭辞に付してはならず,語根と接頭辞を正確に分けなければならない.従って перво-званный, нис-ходить のように分綴すべきである.
  7. 複合語はその構成部分に準じて分割すべきである.: рес-публика, типо-графия, книго-печатание, пере-плетчик, паро-ход

謝辞

 

本稿の「OT2, T2A の混在」は, TeX Q & A: 44377 における稲垣氏の試み「ハイフネーションと Babel」に触発されてまとめたものである.同氏のアイデアに敬意を表したい. TeX Q & A: 44572, 同: 44523 で changeru.​sty のプロトタイプを示している.

本サイトにおけるロシア語分綴法の日本語訳文掲載に関しては, hyphen.​rules 著者 Александр Лебедев アレクサンドル・レーベジェフ氏 (ロシア語ハイフネーションパターン ruhyphal.​tex, Ispell ロシア語辞書の作者である) 並びに Владимир Волович ヴラジーミル・ヴォローヴィチ氏 (ruhyphen パッケージの編者であり, Babel ロシア語言語定義ファイル, Cyrillic Bundle のメンテナーでもある) から快諾,励ましをいただいた.

更新履歴

 

Feb. 20, 2004 新規作成
Aug. 25, 2005 CJK, Unicode 記述修正
Oct. 1, 2005 ロシア語分綴法翻訳追加
Oct. 10, 2005 OT2 記述追加・表現修正
June 17, 2006 T2A 記述追加
Aug. 31, 2006 OT2, T2A 混在追記,その他修正
Sept. 11, 2006 OT2, T2A 混在 (Babel 環境) 追記
Mar. 13, 2007 OT2 hyphenmin 調整追記
Apr. 30, 2007 changeru.sty訂正