マニュアル

texdoc コマンドで開くはず。

  • luatexref-t.pdf: LuaTeX Reference Manual
  • lualatex-doc.pdf : A guide to LuaLaTeX
    (W32TeX では lualatex-doc パッケージのインストールが必要)
  • pdftex-a.pdf : The pdfTeX user manual
  • etex_man.pdf : The e-TeX manual
  • doc-1.8.tex : Draft documentation for the Omega system
    • TeX Live 2010 では,texmf-dist/doc/omega/base/ にある.TeX Live 2013 ではなくなった模様.
    • teTeX3 では, doc-1.12.ps が存在する.
  • luaotfload.pdf : The luaotfload package
  • fontspec.pdf : The fontspec package

とにかく組版してみる

まずは、Unicode フォントを使わず、 従来の (pdf)TeX と同じ方式で文書を組版する。

ソースの書き方

入力文字コードは UTF-8 にする。

LaTeX の inputenc は使えない(fontenc は可)。 Unicode フォントを使わないので、 実質的に、コメント以外では ASCII 文字しかソースに書けない。 当然だが、p(La)TeX 専用のものは使えない。

LaTeX 文書の例:

\documentclass{article}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\begin{document}
,,Gr\"u{\ss} Gott!\hbox{}`` Ich liebe $e^{\pi i} = -1$.
\end{document}

起動コマンド

フォーマット PDF 出力 DVI 出力
plain TeX luatex dviluatex
LaTeX lualatex dvilualatex

なお、LuaTeX バイナリを texlua のコマンド名で起動すると、 Lua インタプリタとして動作する。

(参考)8 ビット TeX(実態は pdfTeX)の場合:

フォーマット PDF 出力 DVI 出力
plain TeX pdftex etex
LaTeX pdflatex latex

tex は元来の「TeX」を plain で起動する。

Unicode フォントを使う

すなわち、Unicode のエンコーディングをもつ OpenType/TrueType フォントを直接(TFM なしで) 読み込んで用いる方法を述べる。 この場合は、事実上 DVI 出力は役に立たず、 専ら PDF 出力を行うことになる。

plain TeX の場合

luaotfload.sty ファイルを(\input で)読み込むと、 \font プリミティブが拡張されて、 フォント名(ファミリ名)やフォントファイル名で フォントを定義できるようになる。 定義された制御綴(fontdef トークン) の使用法は従来の TeX と基本的に変わらない。

なお、フォント名で指定した場合は、 初回にフォントデータベースを構築する作業が入り、 これには数分程度の時間を要する。 次回からは構築作業は行われないが、 それでもフォント名での指定は多少の時間がかかる。

\input luaotfload.sty
\font\tgtermes{file:texgyretermes-bold.otf:+smcp} at 12pt % ファイル名で指定
%\font\tgtermes{name:TeX Gyre Termes/B:+smcp} at 12pt % フォント名で指定
\tgtermes {\TeX} Gyre Termes
\bye

フォント指定の書式

フォント定義の書式で変わるのは、 従来 cmr10 等の TFM 名を指定していた部分で、 ここが次のように変わる。 (なお、外側の { } は文字列が空白を含まない場合は省略できる。)

フォント名での指定:

{name:<フォント名><オプション>:<特性>}

ファイル名での指定:

{file:<フォントファイル名>:<特性>}

<オプション> は次の通り(複数指定可)。

/B 太字
/I イタリック
/BI 太字イタリック
/S=<数> オプティカルサイズの指定

<特性> は次の通り(セミコロン区切りで複数指定可)。 ここで xxxx は有効な OpenType 特性を表す。

+xxxx 特性 xxxx を有効にする
-xxxx 特性 xxxx を無効にする
+anum (拡張特性) 数字をアラビア語/ペルシャ語のもので置換する
+tlig (拡張特性) リガチャによる特殊文字入力( `` → “ 等)を有効にする
+trep (拡張特性) 置換による特殊文字入力( ` → ‘ 等)を有効にする
script=<名前> スクリプト(用字系)の指定
language=<名前> 言語の指定
color=<値> 色指定;〈値〉は RRGGBB[AA] の形で指定
mode=base 部分的だが高速な処理方式を選択
mode=node 完全だが低速な処理方式を選択(数式モードは不可)
featurefile=<名前> 特性記述ファイルの指定(詳細省略)
protrusion=<名前> (microtypography の)突出の指定(詳細省略)
expansion=<名前> (microtypography の)伸長の指定(詳細省略)

補足:XeTeX の書式との類似点・相違点

前述のフォント定義の書式の <オプション><特性> の部分は XeTeX と同じ書式をもつ。 この書式のパーズは luaotfload パッケージの Lua コード中で行われているが、 これが XeTeX の高い相互運用性を保つように設計されているためである。 実は、次のような XeTeX 互換の書式もサポートされていて、 さらに、空白を含めるのに { } の代わりに " " で囲むこともできる。

{<フォント名><オプション>:<特性>}    (フォント名での指定)
{[<フォントファイル名>]:<特性>}    (ファイル名での指定)

(注意) luaotfload のマニュアルには、 name:file: も付けないものはファイル名指定であると 述べられているが、実際の動作としては、 フォント名とファイル名の両方に対応するようになっている (従って、フォントデータベースを読みにいく)。 ファイル名指定のみを行いたい場合は file: を付けるべきである。 さらに、マニュアルでは <オプション> に関する解説が欠落している。 もしかすると、「ファミリ名+スタイル」による指定自体が XeTeX 互換機能だからなのかも知れない。 しかし、fontspec はこの機能に依存しているので、 ここでは解説しておいた。

ちなみに、<特性> で、XeTeX では対応していないものは、拡張特性と、 mode、featurefile、protrusion、expansion 指定。 「+trep;+tlig」は XeTeX では「mapping=tex-text」 に相当する。

LaTeX の場合

fontspec パッケージの機能を使うことになる。

\documentclass[a4paper]{article}
\usepackage{fontspec}
\setmainfont[Scale=MatchLowercase]{Linux Libertine O} % \rmfamily のフォント
\setsansfont[Scale=MatchLowercase]{Linux Biolinum O}  % \sffamily のフォント
\setmonofont[Scale=MatchLowercase]{Inconsolata}       % \ttfamily のフォント
\begin{document}

This document contains English, \textit{Français}, Српски,
and Rom\^an\u{a}.

{\sffamily
If you want the logo {Lua\TeX} then simply type \verb|Lua\TeX|.}

\end{document}

常用される使用法については、以下の文書(XeLaTeX での fontspec の解説) を参照されたい。

上記で述べられている「属性リスト」のうち、 Vertical=RotatedGlyphsMapping=tex-text は LuaLaTeX では使えず、後者については代わりに Ligatures=TeX を用いることになる。

Unicode 符号値での文字指定

TeX の \char プリミティブ(または LaTeX の \symbol 命令) を用いて、符号値での文字の出力が可能。 例えば、\char"414\symbol{"414} は〈Д〉を出力する。

TeX エスケープ記法(^^ab)が 4~6 桁 (^^^^abcd^^^^^1abcd^^^^^^10abcd) に拡張されていて、「文字そのもの」の代わりに使用できる。 例えば \def\^^^^0414{...} 等。 なお、^ 3 つの ^^^^^A 等と同類で、 符号値 "1E の文字を表す。

使用可能な拡張プリミティブ・拡張機能

  • e-TeX 拡張: TeX--XeT を除く全て。 (書字方向は Omega 拡張を用いる。)
  • Omega 拡張: 大半が削除されたか、 「残っていても使われない」。 重要なのはレジスタが 65536 個である(32768 個でなくて) ことと、あと多書字方向くらいだと思う。
  • pdfTeX 拡張: 一部の「ユーティリティ系機能」 (例えば \pdfstrcmp 等)で「Lua で実装可能」 なものが削除されている。
  • もちろん、LuaTeX の拡張命令も存在する。