芭蕉俳句に関する文書を 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}}}}%

\uruby[間隔値]{親文字}{ルビ} の書式で使用する。「間隔値」とは,親文字の下へのルビの移動量「ルビ文字の高さ+深さ」をさらに増量させたいとき,その寸法値を指定する。通常のルビ命令は奥村先生の okumacro.sty に定義されており,これと併用すれば課題は解決できることになる。例を以下に示す。
% -*- 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}
奥村先生の \ruby 命令は,縦書きスタイルで使用するとルビが少し右に離れすぎてしまう。これは親文字とルビとの間に噛ませた箍 \kanjistrut を調整すればよい。また \uruby も縦書きのときは「間隔値」を指定して,もう少し左に(つまり,横書きスタイルでは下に)ずらずようにした方がよい。上記の原稿ではこの二点の調整を行っている。処理結果は右図のとおりである。
