Daiji256

LuaLaTeXのすゝめ

公開
更新

はじめに

この記事では高性能でイケイケなLuaLaTeXを紹介します。

現在日本で一般的に使用されているLaTeXはupLaTeXだと思います。upLaTeXはUnicode対応の日本語LaTeXエンジンが収録されている、pLaTeXの進化系みたいなものです。upLaTeXはpLaTeXからの移行が容易で、環境依存文字やJIS第1・第2水準の漢字を意識せずに使用できる点が初心者に好まれている理由の1つだと思います。

LaTeXは下の図の様にTeXファイルの執筆からPDFまで行います。レガシーLaTeX(upLaTeXなど)はDVIファイルを経由してPDFを作成します。それに対しモダンLaTeX(LuaLaTeXなど)は直接PDFを作成します。LuaLaTeXは海外でメジャーであるpdfLaTeXに軽量スクリプト言語であるLuaを組み込んだものです。pdfLaTeXの後継として期待されていて、LuaTeX-jaプロジェクトによりupLaTeX以上の自由度で和文組版が可能となっています。LuaLaTeXはUnicodeに対応しています。さらにフォントの設定が簡単で、OpenTypeやTrueTypeフォントを直接扱うことができます。

LaTeXがPDFを作成するまでの流れ

フォント

LuaLaTeXの最大の強みと言えるのがフォントについてです。昔ながらのLaTeXではフォントの設定が非常に難しいのに対して、LuaLaTeXではソースファイル内で簡単に設定できます。fontspecを和文フォントに対応するように拡張したluatexja-fontspecを用いてフォントの設定を行います。細かな設定方法については、LuaLaTeXでフォント細かく変更する方法を参照してください。

luatexja-fontspecを使用することで下に示すコードにより、OSにインストールされているフォントをPDFに埋め込むことができます。また、ttfファイルなどを直接参照することもできます。

\usepackage{luatexja-fontspec}
\setmainfont[Ligatures=TeX]{Times New Roman}
\setmainjfont[BoldFont=MS Gothic]{MS Mincho}

あらかじめ用意された和文フォントから選択することができるluatexja-presetというパッケージがあります。たとえばIPA明朝とIPAゴシックを使う設定にする場合次のように書けばよいです。他のフォントについてはLaTeX-jaの使い方を参照してください。

\usepackage[ipa]{luatexja-preset}

Luaを書く

はじめにでも書きましたがLuaTeXからLuaを利用できます。LuaLaTeXのソース中でLuaを書く場合には\directluaを使用します。LuaからTeXに出力するにはtex.printを使用します。実際にLuaを利用して2を表示してみます。以下に示すコードにより2が計算(?)できています。もっと詳しいことは徹底攻略!LuaLaTeXでLuaコードを「書く」ためのコツでわかりやすく説明されています。

\directlua{tex.print(math.sqrt(2))}
1.4142135623731

ドキュメントクラス

LuaLaTeXのjsclasses互換クラス次の通りです。現在はupLaTeXとLuaLaTeXの両方で使える、日本語組版処理の要件に準拠したjlreqが人気です。詳しくは今度、別の記事で解説したいと思っています。

種類ドキュメントクラス内容
articleltjsarticle論文・レポート用
bookltjsbook書籍用
reportltjsreportレポート用
jspfltjspf某学会誌用
kiyoultjskiyou某紀要用

おまけ

upLaTeXでは全角文字の幅と高さをzwとzhという単位で表していたが、LuaLaTeXでは\zwと\zhとなりました。

実際に確かめたわけではないが、Windows用のLuaLaTeXではファイル名を日本語にしてもいいらしいです。どうせ日本語のファイル名にしないけどな~

おわりに

「はじめに」が大きくて頭でっかちな記事になってしまいました。まだ説明できていない内容があります。今後暇を見付けて記事のアップデートしていきたいと思います。楽しいLuaLaTeXライフを願っています。

文献

  1. 改訂第8版LaTeX2e美文書作成入門
  2. LaTeX入門/発展変
  3. LuaTeX
  4. LuaTeX-jaパッケージ
  5. LuaLaTeX-ja用jsclasses互換クラス
  6. LaTeX-jaの使い方
  7. LuaLaTeXでフォント細かく変更する方法
  8. 徹底攻略!LuaLaTeXでLuaコードを「書く」ためのコツ
  9. LuaLaTeXのすゝめ