下付ルビ — 文選読みルビの組版

芭蕉俳句に関する文書を epLaTeX で作成していて,岩波文庫『芭蕉俳句集』p. 47 に出て来る「闇夜きつね下はふ玉眞桑」(妖気漂う闇の夜きつねが好物の真桑瓜に忍び寄る。男の少しおどろな夜這物語の風情がある句)をどう組むか悩んだ。この句は,「闇夜」の右側に「ヤミノヨト」,左側に「スゴク」とルビが振られていて,「やみのよとすごくきつねしたはふたままくは」と読む。「やみのよとすごく」と二度読みするこの例のように,音で読んだものをさらに訓で読み下す漢文訓読法を「文選読み」というそうである。

文選読みのルビの組み方を検討するに,右側のルビは通常のルビ付けマクロを使えばよいが,左側に — 横書きスタイルなら下側に — ルビを付加する命令は,聞いたことがない。それでも,そんなに難しくなさそうなので,マクロを書いてみることにした。下付ルビ命令 \uruby の定義は以下のとおり。

\newcommand\uruby[3][0zw]{\leavevmode
  % 親文字とルビの寸法を取得
  \setbox0=\hbox{#2}\setbox1=\hbox{\tiny #3}%
  % 幅の大きいほうの寸法を \dimen0 に格納
  \ifdim\wd0>\wd1 \dimen0=\wd0\else\dimen0=\wd1\fi
  % \dimen1 に「ルビ高さ+深さ+間隔値」(下にずらす量)を設定
  \dimen1=\ht1 \advance\dimen1 \dp1 \advance\dimen1 #1\relax
  % \dimen0 の幅で親文字を出力し,ルビを \dimen1 寸法だけ下に下げる
  \hbox to\dimen0{\hfil#2\hfil}%
  \kern-\dimen0\raise-\dimen1\hbox{\vbox{\hbox to\dimen0{\tiny #3}}}}%
20110702-uruby.png

\uruby[間隔値]{親文字}{ルビ} の書式で使用する。「間隔値」とは,親文字の下へのルビの移動量「ルビ文字の高さ+深さ」をさらに増量させたいとき,その寸法値を指定する。通常のルビ命令は奥村先生の okumacro.sty に定義されており,これと併用すれば課題は解決できることになる。

奥村先生の \ruby 命令は,縦書きスタイルで使用するとルビが少し右に離れすぎてしまう。これは親文字とルビとの間に噛ませた箍 \kanjistrut を調整すればよい。また \uruby も縦書きのときは間隔値を指定して,もう少し左に(つまり,横書きスタイルでは下に)ずらすようにした方がよい。私の組んだ LaTeX 原稿ではこの二点の調整を行っている。処理結果は右図のとおりである。

これを組版するための LaTeX 原稿を以下に示す。

% -*- coding: utf-8; -*-
\documentclass[12pt]{tarticle}% 縦書き
\usepackage{okumacro}% 奥村先生のマクロ集
% 下ルビ命令: \uruby[間隔値]{親文字}{ルビ}
\newcommand\uruby[3][0zw]{\leavevmode
  \setbox0=\hbox{#2}\setbox1=\hbox{\tiny #3}%
  \ifdim\wd0>\wd1 \dimen0=\wd0\else\dimen0=\wd1\fi
  \dimen1=\ht1 \advance\dimen1 \dp1 \advance\dimen1 #1\relax
  \hbox to\dimen0{\hfil#2\hfil}%
  \kern-\dimen0\raise-\dimen1\hbox{\vbox{\hbox to\dimen0{\tiny #3}}}}%
\makeatletter
\def\kanjistrut{\vrule \@height0.66zw \@depth0.12zw \@width\z@}
\makeatother
\begin{document}
% 『芭蕉俳句集』岩波文庫,p. 47.
\uruby[4pt]{\ruby{闇 }{ヤミノ}\ruby{夜}{ヨト}}{スゴク}きつね下はふ玉眞桑
\end{document}

参考文献として藤田先生の著書『LaTeX2ε コマンドブック』を挙げておく。LaTeX の一般的コマンドだけでなく,有用マクロのリファレンスでもある。わが座右の書のひとつ。誤植の多いのがちょっと閉口なのだが。