前回の続き。
『日本語組版処理の要件』の 3.3 節の残りの部分の例を再現する。
- ルビ文字を隣接する地の文の領域に進入させる場合、文字種(平仮名、片仮名、漢字、約物、等)によって進入の可否を変える必要があるが、その判断を自動で行うのは難しい(不確実性が上がる)ので、手動で行うことを前提とする。ルビ文字全角幅まで許す(
<->
)、半角幅まで許す((-)
)、許さない(|-|
)の選択を、各ルビ命令単位で行える。場合によっては左右で異なる指定が必要なことに注意:この\ruby[<j|]{業態}{ぎよう|たい}等
((この場合、熟語ルビは結局グループルビとして組まれる。親文字列とルビ文字列を中央揃えにするという性質は、進入の設定(<j|
)に影響されないことに注意(「突出禁止設定(||
)」は影響する)。結果的にルビ半角幅が左右に突出するが、左側のみが前の仮名に進入し、右側は空きを生じる。)) - 附属書 F で述べられている「熟語の構成,さらにその熟語の前後にくる文字の種類を考慮して配置する」には対応していない。無論、「結果の出力形を(手動で)求めておいて、それと一致するようにオプションを決める」ことは可能であるが、それは私の掲げる目的には沿わない。現在の熟語ルビの処理方法は、JIS X 4051 で規定されている通りで、「対応のルビ文字列の方が長くなる親文字が 1 つでもあったら全体をグループルビに切り替える」(『要件』の図 130)となっている。そしてこの場合、(JIS X 4051 に反して)途中で行分割ができなくなるという欠点をもつ。
- 上の出力例の一番最後では、「行頭・行末ではルビ文字列と親文字列の端を揃える」という様式を行っているが、これは実は、行頭・行末にあることを自動で検知しているのでなく、手動で「端を揃える」オプション(
||-|
)を入力している。先述の「前後の文字により進入の可否を決める」の話と異なり、「行頭・行末にあるか」は組版の結果を見ないと解らない(おまけに「端を揃える」オプションを入れると、それ自体のせいで位置が変わる可能性すらある)ので、この様式を行うのはあまり実用的でない。 - 実は、TeX では「行頭・行末にあるか否か(あるいは行分割されたか否か)に応じて組み方を変える」という処理が本質的に難しい。「TeX Q & A」の qa:55529 から始めるスレッドを読むと解るが、一応そういう類の処理を行う機能はある*1が、日本語のルビ処理に関しては機能不足なのである。従って、現状では、「端を揃える」を行うのは難しい。熟語ルビの途中で行分割できないのも同じ理由である。((例えば、
\ruby[j]{業態}{ぎよう|たい}
はグループルビで組まれるが、〈業〉と〈態〉の間で分割することを許すと、その場合はモノルビの組み方になり、親文字とルビ文字の位置関係が変わる。)) - しかし、同じスレッドの中で触れられているように、ある種のトリックや pdfTeX の拡張機能*2を用いて複数パス処理を行うという(難度の高い)方法を駆使すれば可能であるはずである。余裕があればこういう拡張を行っていきたい。
\documentclass{jsarticle} \usepackage{otf} \usepackage{plext} \usepackage{pxrubrica} \rubysetup{<j>} % 熟語ルビで、隣接文字に半角までかけるのを許可するのを既定とする \rubyintergap{0.04} % ルビと親文字の間の空き(既定値は 0) \begin{document} \begin{center} %======================================= 縦組 \begin{minipage}<t>{20zw} %--------------------------------------- 3.3.8節 \rubysetup{<->} % ルビ全角までかけるのを許すのを既定値とする \ruby{人}{ひと}は\ruby{死}{し}して\ruby{名}{な}を\ruby{残}{のこ}す\par 漢字の部首には\ruby{偏}{へん}・\ruby{冠}{かんむり}・\ruby{脚}{きやく}・\ruby{旁}{つくり}がある\par 漢字の部首には\ruby{偏}{へん}、\ruby{冠}{かんむり}、\ruby{脚}{きやく}、\ruby{旁}{つくり}がある\par \newcommand*{\噂}{\CID{7642}} % \CID{...} をマクロにすると { } が不要になる この\ruby{\噂}{うわさ}の好きな人は\ruby{懐}{ふところ}ぐあいもよく、\ruby{檜}{ひのき}を\par 漢字の部首には「\ruby{偏}{へん}」「\ruby{冠}{かんむり}」「\ruby{脚}{きやく}」「\ruby{旁}{つくり}」が\par この\ruby[-|]{\噂}{うわさ}好きな人は\ruby[-|]{懐}{ふところ}具合もよく、\ruby[-|]{檜}{ひのき}材を\par \rubysetup{(-)} % ルビ半角までかけるのを許すのを既定値とする この\ruby{\噂}{うわさ}の好きな人は\ruby{懐}{ふところ}ぐあいもよく、\ruby{檜}{ひのき}を\par この\ruby{\噂}{うわさ}好きな人は\ruby{懐}{ふところ}具合もよく、\ruby{檜}{ひのき}材を\par \rubysetup{<->} % ルビ全角までに戻す \ruby{径}{こみち}を34567890123456789 123456(8。)123456789\ruby{径}{こみち}123……\par {\gtfamily 注 $\downarrow$ は少しインチキしています}\par % つまり予め行頭・行末に来ることを見越して入力を変えている \ruby[||g|]{飾り}{アクセサリー}等5678901234567890 1234567890123456共\ruby[|g||]{飾り}{アクセサリー}123……\par \end{minipage} \end{center} \end{document}