読者です 読者をやめる 読者になる 読者になる

何かを書き留める何か

数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。

電通大生のためのLuaLaTeX -UEC Advent Calendar 2013-

LaTeX

UEC Advent Calendar 2013のために書かれた記事です。
<12月1日:Masayoshi Wada||12月3日:Masayoshi Wada>

イントロダクション

個別の研究室の事情は存じ上げないが、昔導入したTeX環境を未だに使用している、または導入方法をそのまま踏襲している、というケースは多いのではないかと推測している。実際、私が所属している研究室では導入方法が口承で伝えられていた。自分の流儀を押し付けるのはよくないがSyncTeXぐらい使っても罰は当たらないだろうと思い自分でWindows機にTeXLiveを導入するマニュアルを書いた。その一部はWindows環境でTeXLive 2013 と TeXworks を使う - 何かを書き留める何かにある。そこではpLaTeX+dvipdfmxやLaTeXmkを利用している。今回はpLaTeX+dvipdfmxに代わりLuaLaTeXで組版する方法を紹介する。

なぜLua(La)TeX?

LuaTeXとはpdfTeXの拡張版でスクリプト言語Luaを組み込んだものである。pdfTeXとはTeXの拡張版でdviファイルを生成せず直接pdfファイルを生成するものである。日本ではpLaTeXが主流であったが十分満足な出来であった故に世界の主流であったpdfTeXなどの流れに取り残されてしまった。しかしLuaTeXの登場でその状況が変わりつつある。LuaTeXではTeXそのものを拡張することなくLuaでエンジン拡張ができるからである…というのを私が書いてもひどい文章しか書けないのでとても参考になるリンクを記載する:

Lua(La)TeXで日本語を扱うためのパッケージなどを開発するプロジェクト。

e-TeX, XeTeX, LuaTeXなどの背景を理解するのに重宝します。

説明不要の、三重大学の奥村先生によるWiki

あまり親切ではない導入方法

以下、Windows機にTeXLiveを導入しLuaLaTeXで文章を作成する手順を述べていく。Mac, Linuxなどでも同様にできる。

  • Installing TeX Live over the Internet - TeX Users Groupからinstall-tl.zipを入手する
  • install-tl.zip を解凍しフォルダの中にある install-tl.bat を実行する。こと細かに設定したい場合は install-tl-advanced.bat を実行する。
  • 色々聞かれるが適当に答えてダウンロード開始。環境にもよるが 1 時間ほどかかるかも。
  • (標準通りインストールしたならば)C:\texlive\2013\bin\win32 にある TeXWorks を起動する。
  • 編集 → 設定 → タイプセットと辿り、 「タイプセットの方法」右下方にあるプラスマークをクリックする。
  • 「タイプセットの方法を設定する」というダイアグラムにおいて以下のように設定する。(訂正済み)

名前 LaTeXmk-LuaLaTeX
プログラム C:/texlive/2013/bin/win32/latexmk.exe

-e
$pdflatex=q/lualatex %O -synctex=1 %S/
-e
$bibtex=q/pbibtex %O -kanji=utf8 %B/
-e
$makeindex=q/mendex %O -U %B/
-lualatex
$synctexoption
$fullname
  • ダイアグラム下部の「デフォルト」を「LaTeXmk-LuaLaTeX」に設定する
  • 編集 → 設定 → エディタと辿り好みに応じて設定する
  • TeXWorks を再起動する。
  • 以下の様なファイルを作成する
\documentclass{ltjsarticle}
%\usepackage{luatexja} % ltjclasses, ltjsclasses を使うときはこの行不要
\usepackage{amsmath}
\usepackage{lmodern}
\usepackage[ipaex]{luatexja-preset}
\begin{document}
UEC Advent Calendar 2013

もうね、\LaTeX \cite{jlatexbook}が便利すぎてWordとか使いたくないよね。でも、世の中はそうもいかないらしいね。
スライドすら\TeX \cite{jtexbook}で書いてしまうのでPowerpointを使えと言われたときはどうしようかな。
とにかく、奥村先生と黒木先生の本\cite{okumura:bibunsho6}をおすすめしますよ。

Nobody expects the Spanish Inquisition!
\begin{equation*}
\left( \int_{0}^{\infty} \frac{\sin x}{\sqrt{x}} dx \right)^2 =
\sum_{k=0}^{\infty} \frac{(2k)!}{2^{2k}(k!)^2} \frac{1}{2k+1} =
\prod_{k=1}^{\infty} \frac{4k^2}{4k^2 - 1}=\frac{\pi}{2}
\end{equation*}

\bibliographystyle{jplain}
\bibliography{sample-lualatex}
\end{document}

また、次のようなbibファイルも用意する

@book{okumura:bibunsho6,
    author    = "奥村 晴彦 and 黒木 裕介",
    yomi      = "Haruhiko Okumura and Yusuke Kuroki",
    title     = "[改訂第6版]{\LaTeXe}美文書作成入門",
    publisher = "技術評論社",
    isbn      = "978-4-7741-6045-0",
    year      = 2013,
}

@book{jtexbook,
    author    = "Donald E. Knuth",
    title     = "改訂新版 {\TeX}ブック",
    publisher = "アスキー",
    isbn      = "4-7561-0120-8",
    year      = 1992,
}

@book{jlatexbook,
    author    = "Leslie Lamport",
    title     = "文書処理システム{\LaTeX}",
    publisher = "アスキー",
    isbn      = "4-7561-0784-2",
    year      = 1990,
}
  • 先ほど設定した「LaTeXmk-LuaLaTeX」を実行(左上の緑矢印ボタンをクリック)して参考文献が記載されたpdfが出力されれば成功

なおここではTeXWorksを利用しているが、勿論EmacsVimでもTeXは扱える。詳しくはTeX Wikiを参照して欲しい。

LuaLaTeXの面白い機能を使ってみる

これだけだと従来のpLaTeX+dvipdfmxを用いたものと対して変わらないのでLuaLaTeXの特性を生かした例を挙げる。以下では掛け算のコマンドを定義している。

\documentclass{ltjsarticle}
\usepackage{amsmath}
\usepackage{lmodern}
\usepackage[ipaex]{luatexja-preset}
\newcommand\luatimes[2]{%
  \directlua0{
	tex.print(#1*#2)

  }}
\begin{document}
$42 \times  13 = \luatimes{42}{13}$.
\end{document}

あまり面白い例ではないので面白い例を求めるならば思わず Lua で LaTeX してみた ~LuaTeX で日本語しない件について~を参照することを勧める。また、Luaは使えないがPythonは使えるという場合は手前味噌ではあるがPythonTeXで遊ぶ - 何かを書き留める何かを参照して欲しい。Rubyも実はPythonTeXの枠組みで使えるが詳細は割愛させてもらう。
是非とも楽しいクリスマスを迎えて欲しい。