名前: ZR 日時: 2007-07-09 16:38:38 IPアドレス: 59.140.98.*
>>48632 >> 4. readme.pdf : babel の japanese オプション >> ご存じだと思いますが、「現行の babel」では、 >> \usepackage[...,japanese]{babel} >> で japanese.ldf が読み込むことができます。 >これは前に議論になったことがあったと思いますが,Babelで >本来は日本語の指定は存在しないので,\selectlanguage の >指定がない場合,デフォルトが日本語になってしまうのは >あまり都合がよくない(むしろBabelで用意されている言語が >指定されていた方が便利)というような理由で採用しなかった >ように記憶します。 その説明は少し腑に落ちないのですが…。以下は私の理解です。 もし japanese.ldf を .sty 経由で \usepackage[english,russian]{babel} \usepackage{japanese} と呼び出すと、基底言語は japanese になります。(最後に読んだので。) 寧ろ、基底言語を japanese に *したくない* 場合に \usepackage[japanese,english,russian]{babel} と babel のオプションで指定する必要があると考えています。(この場合 基底言語は russian になる。) >> 5. langxmpl.dat の記述 >langxmpl.dat は確か日本語用のハイフネーションファイルが >ないため(もちろん必要ない),TeX処理時に >...(略) >という警告が出るため,これを出さないように > japanese ukhyphen.tex >の一行を追加するという趣旨だったように記憶します。 ># 私見ではこのような措置は不要ではないかと思っています japanese の明示指定がない場合、language 0 (= english) の「方言」として 扱われますが、その場合に、文書中で japanese が選択されていても \iflanguage{english} が真になります(逆も同じ)。readme の説明によると、これを避けるために、 japanese の明示指定を行っているようです。 私の考えでは、この性質があるために、\iflanguage は殆どの場合に役に立たない と考えています。代わりに \languagename を用いてテストする方法があります。 \def\iflanguageselected#1{% {<lang>}{<yes>}{<no>} \edef\xx@tmp{#1}\edef\xx@tmp{\expandafter\string\xx@tmp}% \ifx\languagename\xx@tmp \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi} # わざわざ言語名の先頭文字に \string を作用させる理由は babel.dtx 参照。 もっとも、これは french と francais を *区別する* という欠点がありますが。
この書き込みへの返事: