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

芭蕉俳句に関する文書を epLaTeX で作成していて,岩波文庫『芭蕉俳句集』p. 47 に出て来る「闇夜きつね下はふ玉眞桑」(1681 年)をどう組むか悩んだ。妖気漂う闇の夜にきつねが好物の真桑瓜に忍び寄る。男の夜這物語を少しおどろに彷彿とさせる風情のある句である。漢文の要素を取り入れた破格の句をこの時代の芭蕉はいくつか詠んでいる。

この句は,『芭蕉俳句集』では,「闇夜」の右側に「ヤミノヨト」,左側に「スゴク」とルビが振られていて,「やみのよとすごくきつねしたはふたままくは」と読む。「やみのよとすごく」と二度読みするこの例のように,音(芭蕉句では訓読みではあるが)で読んだものをさらに訓で読み下す漢文訓読法を「文選読み」というそうである。

文選読みの LaTeX におけるルビの組み方を検討する。右側のルビは通常のルビ付けマクロを使えばよい。一方,左側に — 横書きスタイルなら下側に — ルビを付加する命令は,これまで聞いたことがない。それでも,そんなに難しくなさそうなので,マクロを書いてみることにした。下付ルビ命令 \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 の一般的コマンドだけでなく,有用マクロのリファレンスでもある。わが座右の書のひとつ。誤植の多いのがちょっと閉口なのだが。