LaTeXでRTL(右横書き)の文書をつくる

Posted: 2016-05-23 (Modified: 2019-03-25)

これはTeX & LaTeX Advent Calendar 12日目の記事です。

趣味で語学・言語学をやっていると、左横書き以外の書字方向の表記体系を使う場面が多くあります。そのような場面においてLaTeXは非常に有効です。以下で、どのように有効なのか、そして実際にどのように使っていくのかについて、右横書きを中心に見ていきたいと思います。

書字方向の種類

本題に入る前に、書字方向にはどのようなものがあるか簡単に紹介します。

  1. (下の行に移る)左横書き
    ラテン文字や日本語の横書きなど、多くの言語で採用されている書字方向です。左横書きと呼ぶと「左から進んで来る」のか「左に進んで行く」のか紛らわしいので、代わりに英語の略称でLTR (Left-to-Right)と呼んでいきます。LaTeXではBabelあるいはその後継のPolyglossiaを使えば多くのLTRの文字(正確には言語)の組版が可能です。

  2. (下の行に移る)右横書き
    アラビア文字やヘブライ文字などで使われています。LTRに合わせてRTL (Right-to-Left)と呼んでいきます。日本語の文書でも左横書きが普及する前に使われていたことがあります。LaTeXでの扱いは次節以降で説明します。

  3. 上から下、右の列から左の列へ移る縦書き
    日本語や中国語を縦書きしたときの書法です。TBRL (top-to-down, right-to-left)と呼ばれることがあります。日本語がTBRLなのでLaTeXにおけるTBRLを説明した日本語の資料はたくさん見つかります。

  4. 上から下、左の列から右の列へ移る縦書き
    モンゴル文字やソグド文字などがこれに該当します。モンゴル文字についてはMonTeXというものがあるようですが、全く知識がないので説明は割愛します。

  5. 牛耕式 (βουστροφηδόν)
    古代ギリシャ文字の碑文などに使われていた書字方向です。左から右に進み、右端にたどり着いたら、今度は下の行に移り、左右反転させた文字を右から左に書いていく書法です。その様子が牛車で畑を耕す様子に似ているため名付けられました。LaTeXにおいて牛耕式を扱う方法については、以下の記事が参考になります。

RTLのテキストを編集する方法

最近のデスクトップ環境は、Unicodeへの対応やフォントの普及が進み、アラビア文字やヘブライ文字を打ち込んでも、その文字が出力されるようになりました。例えばMS Wordでは書字方向を切り替える機能を使ってアラビア文字の混じった文書を作成できます。MS WordによるRTLで少し厄介な点は、行ごとに書字方向を切り替えなければならない、ということです。もちろん可読性の観点から同一の行内にLTR/RTLが入り乱れているのはよくないと思いますが、語学のテキストではそれをせざるを得ません。もし混ぜて書いてしまうとピリオドの位置がおかしくなります。これはピリオドはラテン文字などと共通したものを使っているからです。もうひとつの問題はカーソルの移動がわかりにくくなることです。例えばアラビア文字の上で[→]を押すと左に移動します。

MS Wordを使わずテキストエディタを用いる方法もあります。しかしその場合環境によっては合字が正しく表示されず、また文字どうしが重なり合って非常に見にくいという問題が生じる可能性が高いです。例えば広く使われているGnomeターミナルはまだアラビア文字の合字に対応していません。

またどの編集用ソフトを使ったとしても、直接アラビア文字を入力すると、キーボード入力のためにキーの配置を覚えるのが大変という問題もあります。本格的にアラビア語やヘブライ語を勉強している人は、ブラウザなどに直接入力する過程で覚えていくでしょうが、初学者やとりあえず使いたい人にとっては覚えることが多くて大変なのは事実です。

LaTeXを使ったRTL

アラビア語に精通している人の可読性や検索利便性を考えると、アラビア語を直接入力するほうが好ましいでしょう。しかし前節で述べたような問題が生じる以上、もしラテン文字転写を変換できる機構があるならばそれを使うほうが現実的です。LaTeXにはアラビア文字を扱うArabTeXというパッケージがあります。これを使うとアラビア語で使うアラビア文字に限らず、ペルシア語やウルドゥー語などアラビア語の文字を拡張した文字を使う言語を入力することができます。さらにヘブライ語モードというのもあり、ヘブライ語もラテン字で入力できます。またArabTeXのLuaTeX対応版であるArabLuaTeXというものもあります。Fontspecを使っていろなフォントを試したりする場合はこちらが便利です。ArabTeXと比較すると機能は少なめですが、アラビア語を扱う上では問題ないと思います。

ArabLuaTeXを使用した文書の例
上の文書のコード
\documentclass{beamer}
\usetheme{default}
\usepackage{fontspec}
\setsansfont{OpenSans}
\setmonofont{Source Code Pro}
\usepackage{arabluatex}
\setmainfont[Ligatures=TeX]{Free Serif}
\newfontfamily\arabicfont[%
    Script=Arabic,     % enable ligatures
    RawFeature={%
        +anum,         % use eastern arabic numerals
        +ss05}         % put kasrah below shadda
]{Amiri}
\newfontfamily\translitfont[Ligatures=TeX]{Free Serif}
\SetTranslitFont{\translitfont}
\SetTranslitStyle{\itshape}  % \upshape, \itshape
\SetTranslitConvention{arabica}  % dmg, loc, arabica
\setbeamertemplate{navigation symbols}{}
\begin{document}
\begin{frame}[fragile]
    Input:
    \vspace{-1ex}
    \begin{verbatim}kAnat rI.hu 'l-^samAli tatajAdalu
wa 'l-^samsa fI 'ayyiN minhumA kAnat
'aqw_A mina 'l-'uxr_A.\end{verbatim}

    Output (Arabic):
    \smallskip
    \begin{arab}[fullvoc]
        kAnat rI.hu 'l-^samAli tatajAdalu
        wa 'l-^samsa fI 'ayyiN minhumA kAnat 'aqw_A mina 'l-'uxr_A.
    \end{arab}

    \bigskip

    Output (Transcription):
    \smallskip
    \begin{arab}[trans]
        kAnat rI.hu 'l-^samAli tatajAdalu
        wa 'l-^samsa fI 'ayyiN minhumA kAnat 'aqw_A mina 'l-'uxr_A.
    \end{arab}
\end{frame}
\end{document}

ラテン文字との対応規則はHans Wehrなどの辞書で使われる転記法と似ているため、慣れている人はすぐに覚えられるでしょう。一方で、上記の例を見ればわかるように、ラテン文字を入力する際には母音を補って入力しなければならず、初心者にはやや厳しいです

日本語でもRTLをやってみる

ArabLuaTeX の中身を見るとわかりますが、\textdir TRTで囲まれている部分がRTLになります。これを使えばRTLで日本語が書けるので、少し遊んでみました。

日本語のRTLの例
上の文書のコード
\documentclass{beamer}
\usetheme{default}
\usepackage[no-math]{luatexja-fontspec}
\usefonttheme{serif}
\setmainjfont{RyuminPro-Regular}
\newjfontfamily\mulberry{MotoyaMaruStd-W5}
\newjfontfamily\hakusyu{HakusyuKaisyoExtraBold_kk}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{frametitle}[default][center]
\setbeamercolor{frametitle}{fg=black}
\begin{document}
\begin{frame}
    \frametitle{%
        {\textdir TLT
        第$6$章単 因子および{\textdir TRT ジョルダン}の{\textdir TRT 標準形}
        }
    }
    \begin{center}
    \Huge\bfseries\textdir TRT\pardir TRT
        {\hakusyu 武道館 }

        \bigskip

        {\color{red}\mulberry スジャータ }
    \end{center}
\end{frame}
\end{document}

タイトルの元ネタは齋藤正彦「線型代数入門」にある有名な誤植です。最近の版では直っているようです。また「ターャジス」の元ネタは「スジャータ」のトラックに書かれている文字です(参照:『スジャータのトラックから「ターャジス」が廃止とのウワサ → 2018年1月の新型車両から順次「スジャータ」に』)。

まとめ

RTLの文字の混じった文書をMS Wordなどで作るときに問題になるのは以下の点でした。

  • 行ごとに書字方向を切り替えなければならない
  • 同一行内で混ぜて書くとピリオドの位置がおかしくなる
  • カーソルの移動がわかりにくい
  • 環境によっては文字が正しく表示されない
  • キー配列を覚えるのが大変

ArabTeXやArabLuaTeXはこれらの問題を解決します。ただしラテン字を使う都合上、以下のような問題もあることに注意してください。

  • 母音を補って書かないといけない
  • 表示したいものの原文があってもコピペしただけでは表示できない