名前: 安田 日時: 2006-09-11 16:03:29 IPアドレス: 210.159.171.*
>>44572 栗山さん、稲垣さん、こんにちは。 >>44572 >>44523 においてロシア語切替えマクロをご紹介しました。 一方で、私にとってはもともと、Babel の russianb.ldf に フォントエンコーディングとハイフネーションの切替え命令を 入れることが課題でした。 そこで、russianb.ldf に追加するマクロをお休み中に作ってみました。 ギリシャ語などへの適用などのご参考になれば幸いです。 ここにアーカイブ ru-babel.zip をおいておきます。 これは改変した russianb.ldf とサンプル文書を含んでいます。 お時間がとれれば、アーカイブの russianb.ldf をカレントに置いて お試しください。 問題があればご指摘いただけると幸いです。 私の russianb.ldf のオリジナルの版は `2005/03/29 v1.1r' となって います。 この版で問題がおありの場合は、お使いの版をカレントに コピーしてきて、このコピーに対し、 以下のマクロ群を russianb.ldf の 「\ldf@finish{russian}」の行の 前あたりに挿入して使えます。 %% %% Select fontencoding and language, by isao yasuda, 2006.09.11. %% %% Description: %% %% 1. You need to register hyphenation patterns for both T2A and OT2. %% 2. If language names in language.dat differ from %% OT2: russian %% T2A: russiant %% redefine as follows in document preamble.: %% \makeatletter %% \def\ruottwolang{l@russianxxx}% for OT2 %% \def\ruottwolang{l@russianyyy}% for T2A %% \makeatother %% Arguments need `l@'. \newcommand also available. %% 3. In order to select Russian language environment specify %% `\selectruencoding{ruencoding}' after \selectlanguage{russian}. %% ruencoding: `OT2' or `T2A' %% %%% language const. %%% Users can change them by definition of \ruottwolang or \ruttwoalang. \def\ottwo@lang{l@russian}% \def\ttwoa@lang{l@russiant}% %%% fontencoding const. \def\ottwo@{OT2}% \def\ttwoa@{T2A}% %%% change language environment according to fontencoding, \def\change@lang@ru#1{% argument: fontencoding: T2A, or OT2 \take@userdef \def\u@enc{#1} \fontencoding{\u@enc}\selectfont% \ifx\u@enc\ottwo@% \set@lang@ru{\ottwo@lang}% \else% \ifx\u@enc\ttwoa@% \set@lang@ru{\ttwoa@lang}% \else% \message{russian.ldf: unavailable language relation for \u@enc.^^J}% \fi% \fi}% %%% take user's definitions \def\take@userdef{% \@ifundefined{ruottwolang}{\relax}{\let\ottwo@lang\ruottwolang} \@ifundefined{ruttwoalang}{\relax}{\let\ttwoa@lang\ruttwoalang} \message{russian.ldf: % related languages with OT2: \ottwo@lang; T2A: \ttwoa@lang;^^J}} %%% set to \language if hyphenation patterns are loaded. \def\set@lang@ru#1{% argument: l@language: \@ifundefined{#1}{% \message{russian.ldf: unavailable specified language: #1}}{% \language=\csname #1\endcsname% \message{russian.ldf: set language to #1 \the\language.^^J}}}% %%% register to Russian language environment. \addto\extrasrussian{\let\selectruencoding\change@lang@ru} %% end of added macros この定義は、先にご紹介した changeru.sty とは互換性がないので 注意ください。 言語切替え用命令 \selectruencoding を定義しており、この際、 babel が russian に切替えたとき、これが有効になるように \extrasrussian 命令を利用しています。 使い方は次のとおりです。 1. language.dat に OT2 用と T2A 用のハイフネーションパターンを登録します。 % language.dat russian ruhyphen7.tex% OT2 用 russiant ruhyphen.tex% T2A 用 % end of sample code 2. フォーマットファイルを fmtutil によって再度生成します。 3. 原稿の書き方 - もし language.dat のロシア語ハイフネーションパターンと対になる 言語名が上記と異なる場合、プリアンブルに定義を記述します。 \usepackage[T2A,OT2,T1]{fontenc} \usepackage[russian,japanese]{fontenc} \makeatletter \def\ruottwolang{l@russianot}% OT2 用を russianot で言語登録した場合 \def\ruottwolang{l@russian}% T2A 用を russian で言語登録した場合 % \def は \newcommand{\ruottwolang}{l@russian} でもかまいません。 \makeatother - \selectlanguage{russian} でロシア語に切替えた直後に、 \selectruencoding{キリルフォントエンコーディング} とすると、 OT2 ないし T2A のフォントエンコーディングと、対応する ハイフネーションパターンに切替わります。 例文は以下のとおりです。 # キリル文字のコントールシンボルが長大になってしまいますので、 # この例ではキリル文字を直接タイプしています。(Utf82TeX 用) # アーカイブにある chghyphen-babel.jis は、これの JIS 変換後 TeX 原稿 # ですので、そのままコンパイルできるはずです。 %%%% 以下サンプル文書(UTF-8) %%%% アーカイブの chghyphen-babel.jis をコンパイルしてください。 \documentclass[a4paper]{jarticle} \usepackage[OT2,T2A,T1]{fontenc} \usepackage[oldchurchslavonic,russian,japanese]{babel} \usepackage{pscyr}% PSCyr Russian fonts % デフォルトの言語名でないとき以下を変更 % デフォルトの場合以下の \def は不要 \makeatletter \def\ruottwolang{l@russian} \def\ruttwoalang{l@russiant} \makeatother \begin{document} \selectlanguage{russian} \selectruencoding{OT2}% 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}% T2A フォント、ハイフネーションに切替 \textlatin{language: \the\language} % 以下 T2A シンボルで記述 %<utf82tex_r> \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} %%%% サンプルここまで 長々と書きました。 それではご自愛ください。
この書き込みへの返事: