ルビ
さあやってまいりました日本語の華、振り仮名。個人的にルビが好きで好きで好きすぎてTeXに足を突っ込んだのでこのパートはめっちゃ興奮します。ただし十蘭並みの量になると同時にめっちゃ疲れます。
ともあれルビの付け方を学んでいきましょう。ここでもZRさん作の、素晴らしいPXrubricaパッケージを使います。TeX Live 2012以降なら標準で含まれているので、いちからダウンロードする必要はありませんが、最新の1.3版はTeX Live 2017にしか含まれていないので、2017年6月以前にTeX Liveをインストールした方はこちらを参考にアップデートをしておいてください。
まずは普通にusepackageで読み込みます。
\usepackage{pxrubrica}
使い方は「LaTeX 文書で“美しい日本の”ルビを使う ~pxrubrica パッケージ~ - Qiita」に分かりやすくまとめられています。まずはこの記事を熟読してください。以下では膨大にあるノンシャラン道中記のルビを振ってみます。
基本的な記法は、\ruby{字}{じ}
のように、第一引数にルビを振りたい親文字を、第二引数にルビを入れて使います。親文字が漢字複数の時は、\ruby{親文字}{おや|も|じ}
のように、対応する区切り部分に半角縦棒を入れてやります(親漢字の数と棒の数が合っていないとエラーになる)。
熟語ルビ・モノルビに関しては、ここでは熟語ルビに統一することとします。モノルビにしたい方はそのつど読み替えてください。
雲雀《ひばり》のような熟字訓や、英国《イギリス》のように区切りもへったくれもないケースに関しては、グループルビ機能が用意されています。オプションgを指定してこう書きます:\ruby[g]{振り仮名}{ルビ}
よってノンシャラン道中記の一節はこんなふうになります。
そもそも、災難の\ruby{濫觴}{らん|しょう}とも、起源ともいうべきその宿とは、先年、鰯をとるといって沖へ出たまま、一向\ruby{報}{たよ}りをよこさぬという七歳を\ruby{頭}{かしら}に八人の子供を持つ、\ruby{呑気}{のん|き}な漁師の妻君の\ruby{家}{うち}の二階の一室で、\ruby[g]{寄席}{キャヴァレ}の\ruby[g]{口上役}{コムメエル}のような、うっとりするほど派手な着物を着たこの家の若後家が、敷布と水瓶を持って、二人の前に\ruby{罷}{まか}り出た時の仁義によれば、
この時点でだいぶ目がチカチカしてきますが、それは選んだ作品のせいなので自業自得です。
ここで少し簡略化ができます。1.3版の新機能、自動切替熟語ルビモードを使って、いちいちグループルビのオプション指定を入れなくてもいいようにできるんです。
このモードは「普段は熟語ルビとして扱うが、ルビ文字列のグループが一つの場合はグループルビとして扱う」というもので、要するに縦棒のあるなしでパッケージ側が自動で普通の熟語ルビかグループルビかを判断してくれるというものです。全てのルビにオプションJを指定してやることでこれが実現できます。
一括設定をするには、既定値を変更する\rubysetup
命令をプリアンブルに書き込みます。
\usepackage{pxrubrica}
\rubysetup{J}
これで、本文中では全て[J]
がつくのと同じことになるので、[g]
を省いてもよくなりました。
pxrubricaには他にもたくさんの機能があるので、以降もこのプリセットにオプションを付け加えていくことになります。
それから欧文にルビを振る場合は\ruby
ではなく\aruby
命令を使います。書き方は和文と同じです。
一括置換
フォーマットが定まったところで、小説投稿サイトなどのルビ記法を使っている場合は一括置換がかけられます。青空文庫・カクヨム・小説家になろうの形式からは、以下を上から順に置換してください。
可能な限り揺れを考慮したつもりですが、それでも「すべて置換」してしまうと思わぬ変換結果になる箇所が出る危険があります。面倒でもできるだけ一つ一つ検索&「次を置換」していってください。
また拾いきれないパターンもあります。Meryならひと通り置換が終わった後でAozora編集モードに切り替えると、《二重山括弧》式のルビがハイライトされるのでこぼれた箇所が分かりやすいです。
おかしな結果が出た際は是非フィードバックをお願いします。特に特殊アルファベットあたりが鬼門。詳しくはブログで解説しています。
①範囲指定された欧文につけるルビ
検索する文字列: [|\|]([\u0020-\u024F\s\d\p{P}]+)[《(\(](.+?)[\))》]
→ 置換後の文字列: \\aruby{\1}{\2}
※ギリシャ、キリル文字を使っている人はこれの後に[|\|]([\u0370-\u03FF\u1F00-\u1FFF\u0400-\u052F\s\d\p{P}]+)[《(\(](.+?)[\))》]
で検索
②範囲指定のない空白区切りの欧文につけるルビ(青空文庫のみ)
検索する文字列: ([\u0021-\u024F\d\p{P}]+)《(.+?)》
→ 置換後の文字列: \\aruby{\1}{\2}
※同上、([\u0370-\u03FF\u1F00-\u1FFF\u0400-\u052F\d\p{P}]+)《(.+?)》
で
③範囲指定された和文につけるルビ
検索する文字列: [|\|](.+?)[《(\(](.+?)[\))》]
→ 置換後の文字列: \\ruby{\1}{\2}
④範囲指定のない漢字のみにつけるルビ
検索する文字列: ([\p{Han}〆ヶ]+)《(.+?)》
→ 置換後の文字列: \\ruby{\1}{\2}
⑤丸括弧で指定するひらがなとカタカナのみのルビ(小説家になろうのみ)
検索する文字列: ([\p{Han}〆ヶ]+)[(\(]([\p{Hiragana}\p{Katakana}\p{P}ー]+)[)\)]
→ 置換後の文字列: \\ruby{\1}{\2}
⑥そのまま表示したい括弧類の補正用(小説家になろうのみ)
検索する文字列: [|\|]([《(\(])(.+?)([\))》])
→ 置換後の文字列: \1\2\3
(目が滑る……)
pixiv形式は以下。
①欧文につけるルビ
検索する文字列: \[\[rb:([\u0020-\u024F\s\d\p{P}]+) > (.+?)\]\]
→ 置換後の文字列: \\aruby{\1}{\2}
※同上、\[\[rb:([\u0370-\u03FF\u1F00-\u1FFF\u0400-\u052F\s\d\p{P}]+) > (.+?)\]\]
②和文につけるルビ
検索する文字列: \[\[rb:(.+?) > (.+?)\]\]
→ 置換後の文字列: \\ruby{\1}{\2}
なお、一括置換では熟語ルビの区切りを示す半角縦棒が一切入りません。機械にはどれが熟字訓ではない熟語ルビで、どこに縦棒を入れたらいいか判別がつかないためです。全部グループルビ扱いでいい人は何もしなくていいですが、より本格的にルビを振りたい人は\ruby{濫觴}{らん|しょう}
のように、置換後に目視で棒を書きこんでいってください。
スタイルの調整
さて、ルビの表示は意図通りになったでしょうか?なんとなく違和感を感じる箇所もあるかもしれません。ルビの位置などのデザイン要素は人によって好みが分かれると思うので、以下よく読むレーベルのスタイルを参考にするなどして、適切なオプションを選んでください。
肩付き・中付き
まずは真っ先に気になったここから。pxrubricaの規定では、ルビ文字は親文字の中央に揃うようになっています(中付き)。しかし商業出版されている本を見ると、親文字の上端に揃えている(肩付き)出版社が意外と多いです。ちなみに手持ちの文庫をざっと見てみたところ、文春と光文社が中付き、新潮・角川・講談社・ハヤカワ等が肩付きでした。
後者をマネしたくなったので、肩付き指定にしてみます。プリアンブルでのセットアップの引数に、肩付きオプションhを追加します:\rubysetup{hJ}
突出指定
炉《ろ》のところは肩付きになりましたが、法《フラン》のところはそのままです。現段階だとルビが親文字より長い場合にはルビがことごとく上下に突き出していて、真の肩付きになっていません。
これを回避するにはルビ文字を親文字の外にはみ出させないようにする=突出の抑制を指定してやります。この場合は上端の突出禁止なので、モードオプションの左側に指定します:\rubysetup{||hJ}
進入指定
肩付きにはなったものの、後のテキストとの間が思いっきり空いてしまいました。これはデフォルトでルビが親文字より長い場合は前後のボディテキストへの進入を行わず、はみ出るルビの分きっちり隙間を空けるようになっているからです。中付きの場合も、例えば漢字1文字に対してルビ4文字だとよく分かります。
この進入指定はルビ半角分まで前後のテキストにかける進入小[(-)]
と、全角分までかける進入大[<->]
に変更できます。変更してみた例がこちら。
筆者は進入大にすることにしました。なのでプリアンブルでのセットアップは\rubysetup{||hJ>}
になります。中付きの場合は\rubysetup{(J)}
や\rubysetup{<J>}
になるでしょう。左右違う指定もできます。
あとは個別に
肩付きだと、某《それがし》は進入を大にしても足りませんね。実は一般の肩付きの本でも、漢字1文字に対してルビ4文字のケースは中付きにしているところがほとんどです。
その他、普段は全角分の進入にしていても、前や後にくるボディテキストが漢字の場合は進入を行わない、中付きの組み方であっても行頭では肩付きにする、など、商業品質の出版物においては非常に細かいルールが存在します。
どこまで追求するかはもはや個人の趣味です。これまで設定してきたのは既定値なので、そこから外れるルビを振りたい場合は、エピナック\ruby[(cJ)]{某}{それがし}が
のように、文中のルビ命令に対して直接オプションを指定して上書きしてください。
役に立ちそうな検索パターンを載せておきます。
・1文字に4文字以上のルビ
\\ruby\{.\}\{.{4,7}\}
・カタカナルビ
\{[\p{Katakana}\p{P}ー]+?\}
・行頭のルビ(ただし組版結果としての行頭にくる箇所は拾えません)
全角スペースで1字下げしている場合:^ \\ruby
していない場合:^\\ruby
原稿と首っ引きで、是非とも理想のルビを目指しましょう。