TeX・LaTeX とは

TeX(テフ)は、数式や論文・書籍を美しく組版するための組版システムです。LaTeX(ラテフ)は、その TeX を実用的にした文書作成の言語。このページでは両者の正体と、ワープロとは根本的に違う「構造を書く」という考え方を見ていきます。

TeX とは

組版(typesetting) とは、もともと活字を一つずつ並べて版(印刷用の板)を作る印刷用語です。TeX はこれをコンピュータで行うソフトウェアで、テキストと図版を精密に配置し、版にあたるもの(今は PDF ファイル)を出力します。作者は計算機科学者の ドナルド・クヌース。自著『The Art of Computer Programming』の数式が当時の組版では美しく出せなかったことに業を煮やし、1978 年に自分で作り始めました。

実用上うれしい性質がいくつもあります。無料の オープンソース で、中身を調べても改良しても、商用に使っても自由。Windows でも Mac・Linux でも、入力が同じなら出力も同じになります。そして入力は プレーンテキスト なので、好きなエディタで書け、検索・再利用・プログラムからの自動生成も簡単です。

何より組版が緻密です。単語の途中で行を折る ハイフネーションAVTo のように字を食い込ませる ペアカーニングfifl を 1 文字に合成する リガチャ(合字)、段落の最初や最後の 1 行だけが別ページに取り残されるのを防ぐ ウィドウ/オーファン処理 などを自動でこなします。とりわけ 数式の組版 は定評があり、数式をテキストで表す事実上の標準になっています。(名前の末尾 X はギリシャ文字 χ に由来し、英語では「テック」、日本では古くから「テフ」とも読まれます。)

LaTeX とは

TeX 本体は低水準で、生の TeX を直接書くことはまずありません。そこを誰でも書けるように整えたのが LaTeX です。計算機科学者 レスリー・ランポート が 1980 年代に、TeX のマクロ(プログラミング)機能を使って作りました。

その核心は、文書の論理構造と見た目(レイアウト)を分けて書ける ことです。たとえば「はじめに」という節を作るとき、本文には \section{はじめに}意味だけ を書きます。それを「14 ポイントのゴシック体で左寄せ、前後の空きは…」という 見た目へ変換する規則は、クラスファイル/スタイルファイルという別ファイル に書かれています。

だからクラスファイルを差し替えるだけで、同じ原稿を別の体裁で出力でき、学会ごとの投稿規定にも合わせられます。逆に本文へ直接「ここは 14 ポイント中央寄せ」と書き込むと、後で体裁を変えるたびに原稿全体へ手を入れる羽目になり、節ごとに見出しがばらつき、再利用も難しくなります。これは Web の HTML と CSS の関係とまったく同じ考え方です。

さらに LaTeX は、章・節・図・表・数式の 番号付け、参照箇所への 番号やページの自動挿入目次・索引・参考文献 の生成までこなします。こうした快適さから利用者が激増し、「TeX を使う」と言っても実際は LaTeX であることがほとんどです。

日本語では、日本語組版に長けた pTeX エンジンと、その上の pLaTeX が長く使われてきました(現在は LuaLaTeX も有力)。LaTeX は理系で標準的で、プレプリントサーバ arXiv は LaTeX 投稿を推奨し、『岩波数学辞典』も LaTeX で組まれ、Wikipedia の数式も LaTeX 記法で書かれて画像に変換されています。

書いて、コンパイルする

あなたは命令を埋め込んだ .tex というテキストファイルを書き、それを TeX エンジンで コンパイル して PDF を作ります(相互参照や目次を確定させるため、ふつう 2 回処理します)。キーを打つたびに見た目を更新するワープロ(WYSIWYG)とは違い、原稿全体を一括処理する のが TeX 流です。出力までの詳しい流れは「ソースから PDF へ」のページで扱います。

最小の例

次が、コンパイルできる最小の LaTeX 文書です。\documentclass で文書の種類を選び、\begin{document} から \end{document} までが本文。覚えておきたいのは、ソース中の改行は出力に影響せず、空行が段落の区切りになる こと。行内のどこで改行しても、最終的な改行位置は LaTeX が決めます。

document.tex
\documentclass{article}
\begin{document}
Hello, \LaTeX! Here is an equation:
\[ E = mc^2 \]
\end{document}

これをコンパイルすると、「Hello, LaTeX!」という一文に続けて、別行で中央に整った数式 E = mc² が組まれた PDF ができます。

TeX / LaTeX / pLaTeX / upLaTeX / LuaLaTeX の違い

名前が多くて戸惑いますが、鍵は 「エンジン」と「フォーマット」を分ける ことです。エンジンは実際に処理するプログラム(TeX, pdfTeX, XeTeX, LuaTeX)、フォーマットは命令の体系(LaTeX)。両者の組み合わせが pdfLaTeX・XeLaTeX・LuaLaTeX で、日本語のためのエンジン pTeX/upTeX に LaTeX を乗せたものが pLaTeX・upLaTeX です。

名前正体こんなときに
pdfLaTeXpdfTeX エンジン + LaTeX。最も標準的英語・欧文中心で手早く
upLaTeXUnicode 対応の日本語 LaTeX(upTeX 系)日本語論文の定番
LuaLaTeXLuaTeX エンジン。OS フォント・Unicode・Lua現代的に。日本語は luatexja
XeLaTeXXeTeX エンジン。OS フォント・UnicodeOpenType フォントを手軽に

迷ったら、日本語なら upLaTeX か LuaLaTeX、英語中心なら pdfLaTeX、OS のフォントをそのまま使いたいなら LuaLaTeX / XeLaTeX。新規に日本語で始めるなら LuaLaTeX が無難です。

なぜ LaTeX を使うのか

  • 数式が美しい。 数式組版の品質は他のツールの追随を許しません。
  • 構造に集中できる。 見た目はクラスファイル任せ。本文では意味だけを書きます。
  • 自動でそろう。 番号・相互参照・目次・索引・参考文献を自動生成。
  • 大規模に強い。 論文・学位論文・書籍でも体裁が破綻しません。
  • プレーンテキスト。 Git で差分管理でき、再現性・長期保存に強い。
  • 自由で豊富。 無料・オープンで、CTAN に膨大なパッケージがあります。

一方で、短いメモやチラシ、リアルタイムの共同編集、ピクセル単位のグラフィックデザインには、WYSIWYG ツールの方が速いこともあります。適材適所で選びましょう。