LaTeX で「部分的な縦書き」

  • 24
    Like
  • 2
    Comment

現在、日本語対応の TeX として最も広く用いられている pTeX(upTeX も含む;以下同様)は高品位の日本語縦組みの組版を行う能力を持っているが、残念ながら現状でその力が十分には活かされていない状態である。これにはもっともな理由があって、一般の LaTeX 利用者がそれを利用できる環境が整っていないからである。

日本語の伝統的な組版の慣習への準拠が求められる度合いは横組みに比べて縦組みの方が高い。そのような多くの要請に pTeX を対応させる試みは既に行われているものの、現状の pLaTeX の縦組み用の文書クラス(tarticle 等)にはそれが反映されていない。そのため、通常の(TeX 言語の知識を持たない)LaTeX ユーザが得られる縦組み文書は色々な問題を抱えており、Microsoft Word や一太郎などの一般的なワープロソフトにも品質で劣るという残念な結果になっているのである。

しかし、現状でも pTeX の縦組み機能を活用する場面は存在する。それは「横組み中の文書で部分的に縦書きを入れる」ことである。後で例示するように、“典型的な LaTeX の利用方法”である論文体裁の横組み文書の中でも縦書きが必要となることがある。

そういうわけで、本記事では「部分的な縦書き」の方法について説明する。

※参考として「縦組み文書の作り方」について説明した文書を紹介しておく。

とにかく「部分的な縦書き」をやってみよう

「縦組みの文書」を作る場合と異なり、「部分的な縦書き」には特別な文書クラスは必要ない。いつも使っている文書クラス(例えば jsarticle)で大丈夫である。

pLaTeX 標準の縦組み関連の機能は plext というパッケージに収められている。なので何はともあれ plext を読み込もう

\usepackage{plext}

その上で、本文(当然横書き)において、\pbox<t>{テキスト} と記述すると、引数のテキストの部分だけ縦書きになる。周りのテキストは横書きのままである。

縦書ーき\pbox<t>{縦書ーき}横書ーき

部分的縦書きの例1

上の例から判るように、横書きの行の中で「部分的な縦書き」は一つの「縦に長い文字」のように扱われる。

これさえ覚えておけば、次にあげる例のように、グラフの縦軸のラベルを書くときに文字を回転させずに「縦書き」にすることができる。

\begin{picture}(100,80)(-15,-15)
\put(-15,-15){\framebox(100,80){}}
\put(0,0){\vector(1,0){80}}
\put(0,0){\vector(0,1){60}}
\put(24,-10){\footnotesize 海賊の数}
\put(-11,8){\footnotesize\pbox<t>{地球平均気温}}
\end{picture}

部分的な縦書きの応用例

もっと詳しく

以下では、plext パッケージが提供する「部分的な縦書き」の機能について一通り解説する。(plext は他にも様々な「日本語組版向けの」拡張機能を提供している。)

「部分的な縦書き」の命令

plext パッケージを読み込むと、以下に挙げる命令・環境について「組方向オプション」が指定可能になり、これを利用して当該の命令・環境の内部の組方向を外部のものと異なるものに変更できるようになる。

  • array 環境/tabular 環境
  • minipage 環境/\parbox 命令

これに加えて、「\makebox 命令の組方向オプション対応版」である \pbox という命令が新たに用意される。

組方向オプション

組方向オプションは各命令・環境のオプション引数(つまり省略可能)であり、< > で囲った形で指定する。すなわち、各々の命令・環境の完全な書式は以下のようになる。

  • \begin{array}<組方向>[垂直位置]{列書式指定}\end{array}
  • \begin{tabular}<組方向>[垂直位置]{列書式指定}\end{tabular}
  • \begin{tabular*}<組方向>{幅}[垂直位置]{列書式指定}\end{tabular*}
  • \begin{minipage}<組方向>[垂直位置][高さ][内部位置]{幅}\end{minipage}
  • \parbox<組方向>[垂直位置][高さ][内部位置]{幅}{テキスト}
  • \pbox<組方向>[幅][水平位置]{テキスト}

組方向オプションは、次の3つの何れかを指定できる。

  • <y> : (外部が縦書きの場合に)内部を横書きに切り替える。
  • <t> : (外部が横書きの場合に)内部を縦書きに切り替える。
  • <z> : (外部が縦書きの場合に)内部を“回転した横書き”に切り替える。

組方向オプション

さて、この記事では「部分的な縦書き」を扱っている訳で、組方向オプションの3つの値のうちそれに相当するのは <t> である。従って、さしあたっては「<t> を付ければ縦書きになる」ことを覚えておこう。

組方向オプション以外の部分の書式とその意味については、plext 拡張前と全く変わらない。また、前述の通り、\makebox に組方向オプションを付けたのが \pbox 命令なので、\pbox の組方向オプション以外の引数の意味は \makebox のそれと全く同じである。

縦書き中の上下左右

pLaTeX の縦組みでは、従来の(横組みの)LaTeX の命令体系をなるべく尊重する形で拡張が行われている。その関係で、縦組みを行っている時には次のように「方向の解釈」が変わる

  • “水平(horizontal)”が「縦方向」、“垂直(vertical)”が「横方向」になる。
  • “上(top)”/“下(bottom)”/“左(left)”/“右(right)”が本来の方向より時計回り 90°だけずれた方向を指す。つまり、それぞれ右/左/上/下を指す。

例えば次のような例を考える。

\parbox<t>{10zw}{%
  アレ\hspace{3zw}コレ\par
  \vspace{2\baselineskip}%
  ソレ!
  \begin{flushright}
  敬具
  \end{flushright}
  {\TeX}はア\raisebox{.5zw}{}
}

これの組版結果は次のようになる。「上下左右」が 90°ずれていることが解るだろう。

縦書き中の上下左右

\pbox と \parbox のサンプル

組方向拡張された命令群のうち、\pbox\parbox は純粋に「部分的な縦書きをする」という機能を果たすものという点で非常に重要である。従って、最後にこの 2 つの命令について、組方向以外のオプションを変化させたサンプルを載せておく。特に、「普通に横組したもの」との位置関係に注意してほしい。

※蛇足であるが、もし本記事の内容に関心があって、しかも(縦組拡張無しの) \makebox\parbox についてよく知らないという人は、是非ともこれらの命令について手許の LaTeX の参考書で調べてみてほしい。そうすれば、組方向以外のオプションの意味についても理解できるであろう。

\pbox 編

\pbox<t>{縦書}\qquad\pbox<t>[4zw][l]{縦書}\qquad\pbox<t>[4zw][c]{縦書}\qquad\pbox<t>[4zw][r]{縦書}\par

pboxの使用例

※横書きで和欧文混植を行う場合、通常は、和文文字文字のボディをを欧文ベースラインより下に少しはみ出すように置く。それに対して、縦書きの \pbox はベースライン上に乗るように配置される。

\parbox 編

\parbox<t>[t]{4zw}{{\LaTeX}はアレ。}\qquad
{\LaTeX}\qquad
\parbox<t>[c]{4zw}{{\LaTeX}はアレ。}\qquad
アレ。\qquad
\parbox<t>[b]{4zw}{{\LaTeX}はアレ。}\par

parboxの使用例