TeX入門

2010/02/28 筑波大学農林工学系 奈佐原(西田)顕郎

TeXとは?

TeX (テフまたはテックと読む)は、「きれいな文書」を作るためのソフトウェアの一つである。以下のような特長がある:

そう、何もかも素晴らしいのである。しかし、難点もある。TeXには「慣れ」が必要なのだ。というのも、TeXは、一般のワープロソフトのように「見た目」で編集することはできず、そのかわりに、何もかもコマンドで表現するのだ。

例えば、以下のような数式(皆さんご存知、x=0のまわりでのテーラー展開の公式):

は、ワープロの数式エディタ等を使えば直感的に入力・編集できるが、TeXでは、以下のようなテキストデータを打ち込むことになる:
\[f(x)=\sum_{n=0}^{\infty}\frac{f^{(n)}(0)}{n!}x^n\]
ここに出てくる様々なカッコや記号やinftyだのsumだのを、適当に組み合わせて使うには、それらの意味や使い方を理解し、習得せねばならない。これが面倒なのである。

しかし、いったんTeXに慣れてしまうと、なんでもかんでもTeXで書きたくなるという、恐ろしい状態になる人も多い。「TeX中毒」である。そのような人は、普通はPowerPointのようなプレゼンソフトを使って作るようなスライドですら、TeXで作る。TeXの何が彼らを魅了するのだろう?その答えは、諸君の目にも、いずれ明らかになるだろう。

それはさておき、TeXは、科学論文、特に数理系の論文では、標準フォーマットとして採用されることが多い。必要に応じて、TeXを使いこなすことができると、諸君の今後の研究や仕事に役立つに違いない。


どうやってTeXを習得するか?

TeXに限らず、IT技術は何でもそうだが、「習うより慣れよ」「小さいものからはじめよ」「実際のニーズで使ってみよ」である。最初はあまり意味とかを考えずに、いくつかの小さな例をこなしてみる。そして、実際に諸君の日常のニーズ(レポートとか)で使ってみる。そうすると、いろいろ困ったことが出てくるだろうが、その都度、いろんなウェブサイトを検索したり、本をみたりして調べ、すこしづつ表現の幅を広げていけばよい。実際、"TeX入門"というワードでネット検索かければ、膨大なウェブサイトが見つかるだろう。

その中でも定評のあるのは以下のサイトである: TeX Wiki
このサイトの持ち主である、三重大の奥村先生は、TeXの入門書も出しており、こちらも定評がある: LaTeX2e 美文書作成入門
やや高価だが、TeXを使うような研究室には必ずどこかに転がっているはずだ。TeXに慣れてきたら、これらのサイトや本のお世話になるだろう。


TeXにまつわる伝説

TeXは、米国のスタンフォード大学の情報科学者である、Donald E. Knuthが開発した。TeXおよびこのKnuth博士には、様々な伝説がある:


TeXのインストール

ここではUbuntu Linux 10.04の日本語ローカライズド版を想定する。

まず、TeXのためのソフトウェアをインストールしよう。デスクトップのメニュー(Gnomeパネル)の「システム」→「システム管理」→「日本語セットアップ・ヘルパ」を立ち上げ、適当に進むと、以下のような画面に行き当たる(Ubuntuのバージョンによって違うだろう):



この図のように、LaTeX日本語環境とかに関するものにチェックを入れて、OKを押すと、必要なソフトがインターネット経由でダウンロードされて、インストールされる。これは一回やればその後は不要である(あるいは、既にできているかもしれない)。


TeXを使ってみよう

では実際にTeXを使ってみよう。以下のような内容のテキストファイルを作って、test.texというファイル名で保存しよう:

\documentclass{jarticle}
\begin{document}
これはテストです。筑波大学生物資源学類
\[f'(x)=\frac{df}{dx}\]
\end{document}
そして、このtest.texファイルのあるディレクトリで、コマンドラインのプロンプトに以下のコマンドを打ち込んで実行する:
$ platex test.tex
すると、以下のようなメッセージが出て、コマンドラインのプロンプトに戻るだろう。:
$ platex test.tex
This is pTeXk, Version 3.141592-p3.1.10 (euc) (Web2C 7.5.4)
%&-line parsing enabled.
(./test.tex
pLaTeX2e <2006/11/10>+0 (based on LaTeX2e <2005/12/01> patch level 0)
(/usr/share/texmf/ptex/platex/base/jarticle.cls
Document Class: jarticle 2006/06/27 v1.6 Standard pLaTeX class
(/usr/share/texmf/ptex/platex/base/jsize10.clo))
No file test.aux.
[1] (./test.aux) )
Output written on test.dvi (1 page, 640 bytes).
Transcript written on test.log.
$
ここで何かを間違えると、エラーが出てプロンプトに戻らない場合がある。例えば、
$ platex testt.tex
This is pTeXk, Version 3.141592-p3.1.10 (euc) (Web2C 7.5.4)
%&-line parsing enabled.
! I can't find file `testt.tex'.
<*> testt.tex

Please type another input file name:
これはファイル名を正しく与えなかったことによるエラーである。エラーの状態から脱出するには、xキーを何回か押せばよい。

ここで使った"platex"とは、テキストファイル(test.tex)で記述された文書のもとデータ(ソース)をもとに、編集して出力するコマンドである。ちょうど、C言語のソースコードをgccコマンドでコンパイルして実行可能ファイル(バイナリコード)にするのと似ている。

さて、これがうまくいけば、test.aux, test.dvi, test.logというようないくつかのファイルが新しくできているはずだ。ls -lコマンドで確認してみよう:

$ ls -l
-rw-r--r-- 1 xxxxx xxxxx 8 2009-01-07 16:14 test.aux
-rw-r--r-- 1 xxxxx xxxxx 640 2009-01-07 16:14 test.dvi
-rw-r--r-- 1 xxxxx xxxxx 2367 2009-01-07 16:14 test.log
-rw-r--r-- 1 xxxxx xxxxx 243 2009-01-07 16:10 test.tex
このうち、test.texは、いま君が作ったソースである。それに対して、test.dviが、成果物である。拡張子dviはdevice-independent file format (DVI)という、TeX特有の出力形式をあらわす。このようなファイルをdviファイルと呼ぶ。dviファイルを表示するには以下のコマンドを使う:
$ xdvi test.dvi
以下のような表示が得られただろうか?

これを見ると、数式はうまくできている。しかし、「これはテストです。筑波大学生物資源学類」という文章が文字化けしてしまっている。これは、日本語の文字コードの問題である。Ubuntuでviなどで日本語のテキストファイルを作ると、デフォルトでは、UTFという文字コードで保存される。しかし、TeXで日本語を扱う場合は、EUCという文字コードでやらないと、今のところ、何かと具合の悪いことが多いのである。上の文字化けは、以下のように文字コードをEUCにすれば解決する。

$ nkf -e test.tex > test_e.tex
$ platex test_e.tex
$ xdvi test_e.dvi
こんどは以下のように、文字化けしない、きれいな出力が得られるだろう:

ここで使った"nkf"というコマンドは、文字コードを変換するコマンドである。非常に重宝する。しかし、そもそも文字コードに煩わされたくないので最初からEUCコードでソースを書きたい、と思うものである。そのような場合、viでなく、geditというテキストエディタを使えばよい。geditは、コマンドラインのプロンプトから

$ gedit test.tex
のようにすれば起動できるし、もしくは、デスクトップのメニュー(Gnomeパネル)の「アプリケーション」→「アクセサリ」→「テキストエディタ」を選択しても起動できる。geditで保存するときに、「エンコーディング」という選択肢で文字コードを選ぶことができる。ここで一回でも日本語(EUC-JP)を選んで保存すれば、あとは上書き保存のときもEUCで保存される:


DVIからPDFへの変換

さて、DVIはTeX特有のファイル形式なので、xdviのようなアプリケーションソフトを使わないと見ることができない。それでもかまわないならいいのだが(そういう人たちも、数学者や物理学者には多い)、世間一般で広く使われている文書形式、例えばPDF (Portable Document Format)のほうが便利であることが多い。そこで、以下のコマンドでPDF形式に変換してみよう:

$ dvipdfmx test.dvi
注: Ubuntu Linuxでエラーが出た場合は, こちらを参照。

だらだらとメッセージが出て、コマンドプロンプトに戻ったら、test.pdfというファイルができているはずだ。これは、acroreadやxpdf, kpdfなどのコマンドで見たり印刷することができる。


実習

では、奥村先生のTeX Wikiの中のTeX入門をやってみよう(「レポート」くらいまで)。ある程度わかったら、以下の課題に挑戦せよ:

課題: この文書をTeXで作成せよ。