日本語組版的なルビを出力するパッケージを作ってみた。
- github:zr-tex8r/PXrubrica 「Downloads」リンクからアーカイブを取得できる。
『日本語組版処理の要件(日本語版)』に示されているルビ出力例を再現したものを挙げる。
(縦組の例)
(横組の例)
ただ、既に公開されているのルビ出力用のパッケージ(やマクロコード)でも、上のような出力自体は可能であり、このパッケージでも技術的に新しいことは特に含まれていない。目標としているのは「TeX で実現可能なことを LaTeX のパッケージとしてまとめる」ことである。以下のようなことを念頭において設計している。
- 個々のルビ出力において必要となる調整を、できるだけルビ出力命令のパラメタで行えるようにし、前後に調整用の LaTeX 命令を入れる必要を避ける。特に、「非本質的なトリック」(文字列に余分な空白を含ませる、等)や「TeX ハック」(
\kern
や\penalty
を直接書き込む、等)への依存を無くす。 - 入力の容易さを重視する。
- もちろん、汎用性を重視し、特定のフォントやレイアウトの設定に依存しないようにする。
- 他の人が修正・改良を行いやすいように、コードをなるべく解りやすいように書く。このため、敢えて DocStrip 形式を採用した。(TeX プログラミングの世界では標準になっているので。)
上の出力のソースを挙げておく。出力の図だけでは解り難いが、「日本語組版の要件」の説明と照合すると、各オプションの意味が理解できると思う。
\documentclass{jsarticle} \usepackage{otf} \usepackage{plext} \usepackage{pxrubrica} \rubysetup{<j>} % 熟語ルビで、隣接文字に半角までかけるのを許可するのを既定とする % \rubysetup 自体の(パッケージの)既定値は |cj| である \rubyintergap{0.04} % ルビと親文字の間の空き(既定値は 0) \begin{document} \begin{center} %======================================= 縦組 \begin{minipage}<t>{20zw} %--------------------------------------- 3.3.1節 \ruby{君子}{くん|し}は\ruby{和}{わ}して\ruby{同}{どう}ぜず。\par %%%% モノルビ(オプション=m) % 親文字中の \CID{7674} (〈倦〉異体字)を一文字と扱うため { } が必要 \ruby[m]{人}{ひと}に\ruby[m]{誨}{おし}えて\ruby[m]{{\CID{7674}}}{う}まず\par \ruby[m]{鬼門}{き|もん}の\ruby[m]{方角}{ほう|がく}を\ruby[m]{凝視}{ぎよう|し}する。\par %%%% 熟語ルビ(オプション=j) \ruby[j]{鬼門}{き|もん}の\ruby[j]{方角}{ほう|がく}を\ruby[j]{凝視}{ぎよう|し}する。\par \ruby[j]{茅場町}{かや|ば|ちよう}\quad % 隣の文字に進入してはいけない側に〈|〉を書く \ruby[j|]{茅場}{かや|ば}\ruby[|j]{町}{ちよう}\par %%%% グループルビ(オプション=g) \ruby[g]{紫陽花}{あじさい}\quad \ruby[g]{坩堝}{るつぼ}\quad \ruby[g]{田舎}{いなか}\par \rubysetup{g} % 既定値をグループルビに変更 \ruby{境界面}{インターフエース}\quad \ruby{避難所}{アジール}\quad \ruby{顧客}{クライアント}\quad \ruby{模型}{モデル}\par \ruby{編集者}{{editor}}\quad \ruby{{editor}}{エディター}\par \rubysetup{j} % 既定値を熟語ルビに戻す %--------------------------------------- 3.3.3節 に\ruby{幟}{のぼり}を\quad \ruby{葦編三絶}{い|へん|さん|ぜつ}\par % 三分ルビは未対応 \begin{quote} % 大きな文字サイズでの例 \LARGE\rubysizeratio{0.375} % 縮小割合を変更する(元は0.5) \ruby{葦編三絶}{い|へん|さん|ぜつ} \end{quote} %--------------------------------------- 3.3.4節 %%%% 両側ルビ(\truby 命令) (グループルビのみ) \truby{東南}{とうなん}{たつみ} \par\medskip % ルビの高さは無視されるのでそのままだと次行と重なる \rubysetup{m} %------------------------- 3.3.5節 の\ruby{葯}{やく}に\par %%%% 中付き(オプション=c)←これは既定 版面の\ruby{地}{ち}に\quad %%%% 肩付き(オプション=h) 版面の\ruby[h]{地}{ち}に\par の\ruby{砦}{とりで}に\par % 〈||〉を書いた側の端が揃うようになる; 〈|〉との違いに注意 の\ruby[||-]{旬}{しゆん}に\quad の\ruby[-||]{旬}{しゆん}又\par 後\ruby[||-]{旬}{しゆん}に\quad 後\ruby[|-|]{旬}{しゆん}又\par \rubysetup{g} %------------------------- 3.3.6節 は\ruby{冊子体}{コーデツクス}と\par \rubysetup{j} %------------------------- 3.3.7節 \ruby{杞憂}{き|ゆう}\quad \ruby{畏怖}{い|ふ}\par \ruby[h]{杞憂}{き|ゆう}\quad \ruby[h]{畏怖}{い|ふ}\par の\ruby{流儀}{りゆう|ぎ}を\quad の\ruby{無常}{む|じよう}を\quad の\ruby{成就}{じよう|じゆ}を\par の\ruby{紋章}{もん|しよう}を\quad の\ruby{象徴}{しよう|ちよう}を\par % 「熟語の構成を考慮する方法」は非対応 % 熟語ルビを行分割させるのは「難しい」…… \end{minipage} \par %================================== 横組 %--------------------------------------- 3.3.1節 \ruby{君子}{くん|し}は\ruby{和}{わ}して\ruby{同}{どう}ぜず。\par \ruby[g]{編集者}{{editor}}\quad \ruby[g]{{editor}}{エディター}\par \rubysetup{m} %------------------------- 3.3.5節 版面の\ruby{地}{ち}に\par % 横組では [h] は使用不可 の\ruby{砦}{とりで}に\par \rubysetup{g} %------------------------- 3.3.6節 は\ruby{冊子体}{コーデツクス}と\par \ruby{模型}{モデル}\quad \ruby{利用許諾}{ライセンス}\par {\rubystretchprop{0}{1}{0}% 先頭・末尾を揃える方式 \ruby{模型}{モデル}\quad \ruby{利用許諾}{ライセンス}}\par \ruby{なげきの聖母像}{ビエタ}\par % 自動的に調整される \ruby{顧客}{クライアント}\quad \ruby{境界面}{インターフエース}\par {\rubystretchprop{0}{1}{0}% 先頭・末尾を揃える方式 \ruby{顧客}{クライアント}\quad \ruby{境界面}{インターフエース}}\par \rubysetup{j} %------------------------- 3.3.7節 \ruby{杞憂}{き|ゆう}\quad \ruby{畏怖}{い|ふ}\par \end{center} \end{document}