otfパッケージのぶら下げ組をちょっと改良する

緒言

本稿は、otfパッケージによるぶら下げ組を改良するための方法を記すものである。

本論

otfパッケージにはburasageオプションがあり、これを利用するとぶら下げ組ができる。

\usepackage[burasage]{otf}

しかし、このぶら下げ組にはひとつ問題がある。句読点が行末に来たとき、必ずぶら下げ処理がおこなわれてしまうのである1

むろん、これはこれでひとつの立派な組版方針である。だが、行長が短いときに強制的にぶら下げ処理がおこなわれてしまうと、字間が開いてしまい、間延びした印象の組みかたになってしまう。よって、われわれとしては、ぶら下げ処理を少し抑制するように修正してみたい。これは、商業出版の本によく見られる組みかたでもある。

そこで、プリアンブルなどに以下のように記述し、\。\、というマクロを作る。

\if@burasage
    \def\、{%
        \@ifnextchar\par{}{\hbox{}}%
    }%
    \def\。{%
        \@ifnextchar\par{}{\hbox{}}%
    }%
\else
    \def\、{\nobreak\makebox[1zw][l]{}}%
    \def\。{\nobreak\makebox[1zw][l]{}}%
\fi

あとは、文章中の句読点すべてを\。および\、で置き換えればよい。すると、burasageオプション時には適度にぶら下げが抑制された組みかたとなる。また、burasageオプションを外したときには、追い出し組となる。

細かい調整

ただし、このままでは句読点と括弧類とが並んだとき、空きが広くなりすぎてしまう。たとえば、\。「のように、句読点の直後に始め括弧が来た場合、\。\<「とする(つまり\<を追加する)ことが必要となる。

句点と鉤括弧の場合だけ考えると、結局、以下のような置換が必要である。

  • \。「\。\<「
  • \。」。」
  • 」\。」\<\。

このような置換を、すべての括弧類と句読点との組み合わせを考えて、おこなえばよい。置換作業は手作業だと面倒きわまりないので、PythonなりRubyなりで置換スクリプトを組んで置換するのがよいであろう。

結言

LaTeXのデフォルトは追い込み組であるが、これは商業出版にはあまり見られない。そこで上のような設定をし、ぶら下げ組にするか、追い出し組にするとよいのである。そうすれば、いっそう商業出版に近い組みかたが実現でき、嬉しい気分に浸れることであろう。


  1. ただし段落末尾はそのかぎりではない。 ↩︎

schedule 2018年1月12日
update 2021年12月10日
local_offer #LaTeX