予定では昨日の続きで NumPy の配列操作について執筆するつもりでしたが、諸事情により急遽予定を変更して TeX での執筆環境構築について書きたいと思います。「 NumPy の配列操作 (2) 」については次回お送りします。
なぜ TeX で文書を書くのか
主に工学や理学など数式が多用されるような分野では 「Word で論文書いちゃダメ?」 といった議論があるほどで、一部では Word で書かれている時点でろくな論文じゃないだろうと思う文化もあるようです。一方で、 「僕が TeX を使うのを辞めた3つの理由」 などのように伝統ある TeX もいよいよ時代遅れになりつつあり Word で十分なのではないかといった声もあります。
ではなぜ 2014 年の現在において TeX で文書を書くのでしょうか。
筆者は TeX の優位性を次のように考えます。
- 可読性、修正等の容易性、再利用性、参照性、堅牢性等に優れる
- LaTeX の数式がそのまま書け、利用できる
- ソースコードが環境に依存せずデータの持続性について考慮する必要がない
- プレーンテキストなので GitHub などでバージョン管理がしやすい
- 昔と比較すると日本語 TeX 環境の構築がきわめてラクになりつつある
一方 Microsoft Word は Windows で動作するソフトウェアであるためクロスプラットフォームではありません。たとえば Windows が無い状態で Word 文書を編集するのは可能ではあっても形式が崩れてしまうといった問題にぶつかりがちです。またバージョン管理もファイル単位でしかおこなえないといったことになりがちです。
データ分析のレポートを書くにあたり TeX を採用することで次のようなメリットがあります。
- プレーンテキストなので計算結果を出力したテキストファイルからデータを引用しやすい
- 数式を掲載したい場合も TeX なのでそのままいつも通り書ける
- わざわざ Windows 環境までデータを移さなくても GNU/Linux 環境で執筆ができる
GNU/Linux 上における TeX の環境構築
ではさっそく GNU/Linux 上でのいまどきの TeX 環境を構築していきましょう。
Debian 7.0 または Ubuntu 14.04 LTS (12.10 以降)
次の記事が参考になります。
Debian 7 wheezy での日本語 TeX 環境の構築
http://blog.ymyzk.com/2013/07/debian-7-wheezy-latex/
Ubuntu 13.04 で LaTeX 環境を整える
http://kubuser.blog.fc2.com/blog-entry-33.html
モダンな Debian 互換ディストリビューションであれば基本的に次のようにパッケージをインストールすれば環境ができあがります。
sudo apt-get -y install texlive # 本体
sudo apt-get -y install texlive-lang-cjk # 日本語版 (UTF8 対応)
sudo apt-get -y install xdvik-ja # プレビューを見るのに必要
sudo apt-get -y install dvipsk-ja # DVI から PostScript への変換用
sudo apt-get -y install gv # Ghostscript 、 ps 形式の図を取り込んだ文書の作成用
sudo apt-get -y install texlive-fonts-recommended texlive-fonts-extra # TeX 用フォント
Ubuntu 12.04 LTS 以前
12.10 からのバックポートリポジトリを使うことで TeX Live を使えます。
Ubuntu 12.04 で LaTeX 環境を構築する
http://qiita.com/muniere/items/a468d4673d7bb7105dc7
TeX を一発で PDF に変換できるようにする
さて、これで platex コマンドと dvipdfmx コマンドを利用することで TeX から dvi ファイルへの変換とプレビュー、そして PDF の生成ができるようになったわけです。しかし実用に際しては TeX を頻繁に PDF へ変換、少し書く度にプレビューをいつも確認ということが少なからずあります。
そこで次のようにパスの通ったディレクトリにシェルスクリプトを用意しておきます。これで platex2pdf コマンド一発で PDF への変換が可能になります。
#!/bin/sh
test -n "$1" || echo "usage: platex2pdf [tex-file]"
test -n "$1" || exit 1 # 引数が無ければ syntax を表示して終了
TEX=$*
DVI=`/usr/bin/basename "$TEX" ".tex"`
THECODE=`nkf -g "$TEX"`
case $THECODE in # nkf が返す文字コードにあわせる
UTF-8) KANJI="-kanji=utf8";;
EUC-JP) KANJI="-kanji=euc";;
Shift-JIS) KANJI="kanji=sjis";;
ISO-2022-JP) KANJI="-kanji=jis";;
esac
PLATEX="platex"
CLASS=`sed -n '/documentclass/p' $* | sed '/%.*documentclass/d' | sed -n '1p'`
case $CLASS in
*{u*) PLATEX="uplatex";;
esac
$PLATEX $KANJI $TEX # platex コマンドの発行
dvipdfmx $DVI # dvipdfmx コマンドの発行
後述する Emacs の環境からも呼び出して利用します。
TeX を執筆・編集する環境を整える
TeX 文書を編集するための環境としてはまず Emacs が挙げられます。 Emacs で快適に TeX を扱うためには野鳥を使うのが良いでしょう。
make install については公式ドキュメントに譲るとして、手動で dot emacs の環境を整備する律儀な人向けに書きます。基本的に次のようなやり方で大丈夫です。
- サードパーティーな Lisp を専用のディレクトリにいれる
- 専用のディレクトリにロードパスを通す
- 起動時の初期ローダーから読み込む
そしてこれらを呼び出せるように以下のコードを Emacs Lisp に追加します。
;; 拡張子が .tex なら yatex-mode に
(setq auto-mode-alist
(cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist))
(autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)
;; YaTeX が利用する内部コマンドを定義する
(setq tex-command "platex2pdf") ;; 自作したコマンドを
(cond
((eq system-type 'gnu/linux) ;; GNU/Linux なら
(setq dvi2-command "evince")) ;; evince で PDF を閲覧
((eq system-type 'darwin) ;; Mac なら
(setq dvi2-command "open -a Preview"))) ;; プレビューで
(add-hook 'yatex-mode-hook '(lambda () (setq auto-fill-function nil)))
これで Emacs で TeX を編集できるようになりました。
くわしい使い方は次のページを読むのが良いでしょう。
野鳥(YaTeX)
http://hooktail.org/computer/index.php?%CC%EE%C4%BB%A1%CAYaTeX%A1%CB
TeX のテンプレート
Tex の文書を執筆するにあたりテンプレートがあると便利です。すでに参考となる論文などの資料があればその書式を真似すれば良いのですが、手元にちょうど良い雛形が無いとそれを探すだけで時間が取られてしまったりします。
ここでは次のテンプレートを紹介します。
また実際に多人数で編集され運用されている TeX 文書の例としては筆者は個人的に Debian 勉強会の資料などが参考になると思っています。
東京エリア Debian 勉強会 課題提出方法
http://tokyodebian.alioth.debian.org/prework-update.html
まとめ
データ分析の結果などをレポートにまとめたいとき TeX で執筆すると大変便利です。今回はその環境構築について一通り説明をしました。