Re: Babelを使った最新版LaTeX2e、pLaTeX2eでの多言語環境構築(第3版-3)

名前: 安田
日時: 2005-09-01 20:56:17
IPアドレス: 210.159.229.*

>>37720 栗山さん、こんばんは。 >>37708 >prezh-de というパターンそのものは、ruhyphal.tex >にもともと登録されていたもので、そういう意味では >perl 変換したものにも存在するはずです。 >(オリジナル ruhyphal.tex 4637行目) >なぜ perl 変換したものでは分綴されてしまうのかは >まだ不明です。 >>37720 >perl変換の ruhyphal.tex では > >> ^^d0^^d2^^c5^^d6-^^c4^^c5 > >のように8ビットコードの記述のようですが、これがうまく機能して >いないということでしょうか。 YES です。その後調べて原因がわかりました。 【原因】 koi2ot2.tex の中で OT2 において zh で入力する文字 ж(ジェー)は \lccode `\ж=25 % \cyrzh (perl 変換版は \lccode `\^^d6=25) と定義されています。 つまり、ハイフネーションパターン中においては、жの 小文字(ロワーケース)は文字コード25とする、という ことを意味しています。 文字コード25(0x19)とは通常のASCIIでは制御コードEM (媒体終端)であり、この定義によって、文字コード25で 来たら ^^d6 としてパターン照合を行うと考えてよい わけです。 よって、ж(^^d6)を期待して zh で入力しても (あくまで "z" と "h" ですから)文字コード25[0x19] ではないので、登録パターンとマッチしないことに なります。 prezhde ではだめで、pre[0x19]de と入力しないと このパターンは有効になりません。 「^^d0^^d2^^c5^^d6-^^c4^^c5」というパターン定義が 機能していない原因はここにあります。 【対策案】 (案1) ruhyphal.tex perl 変換版のパターン 中の 「^^d6」 を zh に対応した「^^da^^c8」に書き 換えればよいということになります。 「^^d0^^d2^^c5^^d6-^^c4^^c5」の例でいくと 「^^d0^^d2^^c5^^da^^c8-^^c4^^c5」とするわけです。 重複パターンの排除調整が必要な場合があるかも しれません。 (未確認です...) (案2) koi2ot2.tex 45行目に \catcode `\^^d6=13 \def ^^d6{zh} % \cyrzh という記述がありますが、\iftrue の \else の中に あるため無効になっています。 \iftrue, \else, \fi をコメントにしてこれを有効に することによって、zh の記述を ^^d6 に対応付ける ことができるようになります。 (なぜコメントになっているか、その理由や影響を もう少し検討する必要がありそうですけど) ruhyphen7.tex では、アスキー変換を行うときに ж (^^d6)を z8h または zh に置換することで、 ハイフネーションパターンそのものに手を入れて 案1と同様の対策をすでに行っていました。 ruhyphen7.tex は何年も前に調整したもので、 しばらく TeX から離れておりましたのにつけ、 このことをすっかり忘れておりました。 上記問題を気にされる場合は ruhyphen7.tex をご利用 ください。 (ruhyphen7.tex もまだまだ改善の余地がありますが) 【類似問題】 アスキートランスクリプションによるロシア語入力では、 アルファベット文字数の制限から、zh のように どうしても2文字で表現せざるを得ないものがあります。 上記はこのような場合に問題をはらむ理屈になります。 つまり類似問題は я(ya) ю(yu) などにも存在し、 これらの文字を含む語については、perl 変換版では 期待したハイフネーション結果はおそらく得られません。 (でもほとんど問題にはならないと思います。) LH フォントの製作者がワシントン大学の手になるOT2に ついて「ロシア語というものを知らないアプローチ」と 酷評しているのも、ハイフネーションに適さないこんな 背景があるからなのかもしれません。 (フォントデザインについても AMS に添付された アメリカ製 lwncyr より LH ははるかに美しいです) また OT2 アスキートランスクリプションにおいて、 kh(х), ch(ч), ts(ц), sh(ш), shch(щ) を、 それぞれ h, q, c, x, w と一文字で記述したほうが よい所以でもあります。 でもя(ya)にせよ、ю(yu)にせよこれだけで音節を 形成しますので ж(zh)より問題は少ないと思います。 栗山さんご指摘のように、perl 変換8月30日版は 大概の場合差し支えのない、十分な精度をもって いるといえます。 【余談】 OT2キリルフォントエンコーディングではжはコード25 なのでマッピング原理としては理解できるのですが、 そもそも TeX 原稿において文字コード25なんかで 入力するとは思えないのに、koi2ot2.tex において どうしてこんな定義になっているのか、釈然としません。 おそらくOT2用のきちんとしたパターンファイルの 需要がないので手がまわっていないとしか思えません。 pTeX 3.1.4 が8ビットパターンファイルとの相性が よくなった件、以前この Q&A でも話題となり、 そのとき T2A 用のロシア語パターンファイルを OT2 に おいてそのまま使用するのは不十分なのではないか、 となんとなくモヤモヤがあったのですが、上記の ように考えると自分なりに整理がつきました。 (>>31722) 【ハイフネーションの優先順位について】 ># ハイフネーションには優先順位があったりしますね。たとえば ># ドイツ語などで ein-deu-tig は eindeu-tig よりも ein-deutig と ># 分綴する方が望ましいと言われますが、ロシア語にも同じような ># 事情は存在するのでしょうか。 あります。 たとえば、「ロシア・ソビエトハンドブック」には 「2.子音とその後にある母音とを切り離してはならない。 誤:люб-овь .. 正:лю-бовь .. (注1)子音に終る1音節の接頭辞が、母音(ыをのぞく)に 始まる単語に結びついている場合には、接頭辞そのものを 2つの部分に切り離さないほうがよい。ただし、... 切り離すことも可能である。 1)без-умный, 2)бе-зумный 」 とあり 2) よりも 1) のほうが優先すべきことが述べ られています。 露和辞典に望ましいハイフネーション位置が記述され ないのは原則が明確だからでしょうか? ロシアで発行されている辞書にもありません。 解せません。だったら辞書に解説が欲しいところです。 長文になりましてすみません。 ご自愛ください。

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)