TeX と LaTeX の違い

2016-12-19 (updated: 2020-05-24)  #TeX  #LaTeX 

本稿は TeX & LaTeX Advent Calendar 2016 の19日目の記事です.18日目は VoD さんでした.20日目も VoD さんです.

TeX と LaTeX は互いにまったく異なるものですが,どうやら(少なくても日本においては)LaTeX ユーザであっても TeX と LaTeX の区別がついていない人が多いらしく,どう見ても LaTeX について書かれた文であるにも関わらず主語が “TeX” となっているようなものがよく見られます.

そうした事例を擁護するように「TeX と LaTeX の区別がつかなくても,ほとんどの場合は問題を生じないから構わないではないか」という意見もあるようですが,それは思慮が浅いと言わざるを得ません.実際のところ TeX と LaTeX は真剣に区別されるべきものです.

本稿では,TeX と LaTeX の違いを,すべての TeX ユーザにきちんと理解してもらえるよう丁寧に,そして「どうして区別する必要があるのか」という点まで含めてホンキで解説することを試みます.

加えて,今回は TeX と LaTeX の区別のみに留まらず,ナントカTeX と名のつくものを正しく区別・分類するのに十分な基礎的知識を集約していこうと思います.

TeX と LaTeX

まずは TeX と LaTeX の違いが明らかになるように,TeX と LaTeX がそれぞれ何であるかをなるべく詳細に説明していきます.

TeX とは何か

TeX は1978年に Donald E. Knuth が発表した組版システムです.わざと「システム」という実体の掴みにくい表現をしているのは,TeX という語が,組版ソフトウェアと組版言語(文法)という少なくとも2つのものを指しているからです.

多くの初心 TeX ユーザにとっては,そもそも「組版」という単語がわかりにくいかもしれません.これは(プロでもない限り)大雑把に「文字や図を配置して,印刷用の紙面を作ること」と思っておいて問題ないと思います.TeX はこの組版という作業をコンピュータで行うためのソフトウェアです.

また,TeX を用いて組版処理を実現するにあたっては独自のコンピュータ言語を使用しますが,この言語自体も TeX と呼ばれています.ソフトウェアではなく,言語であることを強調する場合には「TeX 言語」などと書かれることもあります.TeX 言語は,文章にその構造や装飾などに関する付加情報を与えるマークアップ言語であり,同時に強力なプログラミング言語でもあります.

さきほど TeX は組版を行うためのソフトウェアだと説明しましたが,見方を変えればこのソフトウェアは TeX 言語を処理(解釈・実行)するための処理系(インタプリタ)と言うこともできます.そのため,言語ではなくソフトウェアとしての TeX を強調して示したい場合は「TeX 処理系」と表現されることがあります.

まとめると,TeX という語の指し示す対象は以下の2つです.

  • TeX 処理系:組版を行うためのソフトウェア
  • TeX 言語:組版を行うための言語(マークアップ言語かつプログラミング言語)

ところで,TeX は日本においては「テック」もしくは「テフ」と発音されます1.TeX は今まで私がそうしてきたように,T を大文字,e を小文字,X を大文字で表記するか,下に示すロゴを用いることによって表現します.それ以外の表記は基本的に許容されません2

TeX のロゴ

LaTeX とは何か

TeX 言語は組版を行うための言語ですが,その命令(これをプリミティブと言います)は「横方向に何センチメートルの空白を作る」といったような原始的なものばかりです.そのため,これらの命令を直接書き並べて文書を作成するのはあまりに煩雑で,現実的でありません.

一方で TeX 言語は既に述べたように一種のプログラミング言語でもあります.すなわち TeX 言語では,いくつかの命令を組み合わせて新しい命令を作ることができます.この機能を利用するとプリミティブより高機能な命令,例えば「ここに見出しを作る」というような命令を作ることができます3.このようにして作られた命令をマクロと言います.

TeX を用いて文書作成を行うためには,一般にこのマクロを多用する必要があります.しかし,そのためのマクロを一通り作成するのもかなり骨の折れる作業で,これを1人1人のユーザがすべて独力で行うのも,これまた現実的とは言い難いです.そこで,実際に TeX で文書作成を行う際には,必要なマクロが一通り揃えられたマクロ体系を利用するのが一般的です4

LaTeX はこうしたマクロ体系というものの1つで,1985年に Leslie Lamport が発表したものです.LaTeX は元々は技術文書や科学論文といった文書を作成するのに必要なマクロを集めたものでしたが,現在ではそうした理工系の用途に限らずさまざまな文書を作成するのに利用されています.

なお,LaTeX の読み方は日本では「ラテック」または「ラテフ」が一般的ですが,作者の Lamport が認めているので「ラテックス」でも構わないようです.海外では「レイテック」のように発音されていることが多いように思います.LaTeX も大文字・小文字の区別をこの通り書くか,下に示すロゴのように表示する必要があります(LaTex などは間違っています).

LaTeX のロゴ

TeX と LaTeX は全然違う

ここまで TeX と LaTeX がそれぞれ何であるかを詳しく見てきたので,TeX と LaTeX はまったくの別物であるということが既におわかりいただけたかと思います.念のため,下の表に両者の違いを簡潔にまとめてみました.

TeX LaTeX
開発者 Donald E. Knuth Leslie Lamport
発表年 1978年 1985年
実体 言語 or 処理系 マクロ体系
目的 コンピュータで組版 容易な文書作成
実装言語 Pascal or C言語5 TeX 言語

ところで,TeX と LaTeX はなぜ明確に区別される必要があるのでしょうか.それは TeX で文書作成を行う際に用いられるマクロ体系は LaTeX 以外にも存在するからです.たまたま現在の日本では LaTeX 以外のマクロ体系が用いられることは稀ですが,あとで紹介するように LaTeX 以外にも TeX のマクロ体系はいくつも存在しています.

つまり「LaTeX の世界」は「TeX の世界」に含まれていますが,「TeX の世界」の中にはそれ以外の世界も存在するということです.無理やり数式で表現するのであれば $\mathrm{\LaTeX}\subset\mathrm{\TeX}$ といったところです.図示するとすればこんな感じでしょうか.

TeX と LaTeX の包含関係

したがって,LaTeX にしか当てはまらないことを述べているのに主語を “TeX” としてしまうと,それは完全に誤った記述となってしまいます.これは「正方形の各辺の長さは等しい」という文の主語を “長方形” に置き換えてしまうと正しい記述でなくなるのと同じことです.

「そんな細かいこと」と思うかもしれませんが,あなたが LaTeX ユーザなのであれば「自分が使っているものは何なのか」という問題が本当に “細かいこと” かどうか,自分の手にしている武器が何かもわからずにそれを振り回すことがどれほど愚かなことなのか,一度考えてみるといいと思います.そして間違っても,LaTeX の解説を書くのに『TeX 入門』というタイトルを付けることなどあってはなりません.

さまざまな ナントカTeX

TeX と LaTeX の違いもそうですが,カジュアルな (La)TeX ユーザの中には「ナントカTeX と名のつくもの6が多すぎて,何が何だかサッパリ分からない」という印象をお持ちの方が多いのではないでしょうか.

実際のところ ナントカTeX に該当するものはあまりに多く,そのすべてを網羅することはとてもできませんが,ここからはよく登場するものについてその分類をざっくりと示していこうと思います.ナントカTeX にどのような種類のものがあるのかを知ることは,今後新しい ナントカTeX に出会ったときに,それが何と同列のものなのかを理解するのに役立つでしょう.

TeX 処理系

本稿の冒頭で,TeX 処理系が何であるかは既に解説してあります.Knuth が開発した元祖の TeX 処理系は単に TeX と呼ばれているわけですが,この TeX の機能はさまざまに拡張されて,色々な TeX 処理系が作られています.こうした「機能拡張版 TeX 処理系」はそのほとんどが ナントカTeX に該当します7.主なものを以下の表に示します.

処理系 説明
e-TeX 右横書き(RTL)を可能にするなど多くの機能拡張が施されている
pdfTeX 組版結果として PDF を直接出力できる8
XeTeX Unicode を扱うことができ,またフォントの扱いが改良されている
LuaTeX スクリプト言語 Lua の処理系が組み込まれている

現在では Knuth による元祖の TeX が用いられることはあまりなく,世界的には pdfTeX が主流のはずです.その後に開発された XeTeX や LuaTeX もシェアを伸ばしているところと考えられ,将来的には LuaTeX が主流になっていくと推測されています.

上の表に示したのは今のところ主に海外で用いられているもので,特に和文組版を考慮して作られたものではありません9.一方,日本語の組版を行うために拡張された TeX の処理系もいくつか存在し,現在の日本ではこれらの処理系が主流です.それらのうちの主なものについては下記の表にまとめました.

処理系 説明
pTeX 和文組版(縦組みを含む)が可能
upTeX pTeX の内部を Unicode 化したもの
e-pTeX pTeX に e-TeX と同様の拡張を施したもの
e-upTeX upTeX に e-TeX と同様の拡張を施したもの

マクロ体系

さきほど LaTeX の解説をした際に,TeX で組版を行うためのマクロ体系は LaTeX 以外にもあると述べました.こうしたマクロ体系も ナントカTeX と名付けられることが多く,その具体例を以下の表に示します.

マクロ体系 説明
plain TeX Knuth 自身が開発したもので,ごく基本的な文書作成機能を提供する
pLaTeX pTeX に対応した LaTeX
ConTeXt Hans Hagen による文書作成システムで,カスタマイズのしやすさが特徴

また,各マクロ体系はバージョンごとに異なる呼ばれ方をすることがあるので注意が必要です.例えば,LaTeX に関しては次の3つのバージョンを記憶しておくとよいでしょう.

  • LaTeX2e:現在の主流(2e は「トゥー・イー」と読む,ロゴを下に示す)
  • LaTeX 2.09:LaTeX2e 以前の古い LaTeX
  • LaTeX3:次世代の LaTeX,絶賛開発中

LaTeX2e のロゴ

パッケージ

特定のマクロ体系の機能を前提に,それらを拡張するために書かれた拡張プログラム(およびその添付物)を「パッケージ」と呼びます.例えば,LaTeX 用のパッケージとしては graphicx や hyperref などが有名でしょう.

これらのパッケージの中にも TeX という文字列を含むものがあります.こうした事例はあまりに数が多いため例を挙げ始めるとキリがありませんが,化学構造式描画用パッケージ XyMTeX などが該当します.

関連ソフトウェア

TeX 処理系以外の TeX 関連ソフトウェアも ナントカTeX と命名されている場合があります.これも列挙するにはあまりに量が膨大ですが,文献処理ソフトの BibTeX やリファレンス検索ツール texdoc,あるいは TeXShop・TeXworks・TeXstudio 等の TeX に特化したテキストエディタ(統合開発環境)などが挙げられます.

ディストリビューション

ここまで見てきたように,TeX の周りには関連する成果物が大量に存在しています.これらをユーザが1つ1つインストールするのは大変なので,こうしたものを一括インストールできるようにとりまとめたものがいくつかあり,ディストリビューションと呼ばれています.

このディストリビューションも ナントカTeX と名付けられているものがほとんどです.現在日本で最もよく利用されているだろう2つ,すなわち世界最大のディストリビューション TeX Live と Windows 用のディストリビューション W32TeX がその良い例です.

その他

上記以外に ナントカTeX に該当するものとして私が思いつくのは次のようなものです.

  • 書籍:Knuth による TeX 解説書 The TeXbook など
  • サイト:日本語 TeX 開発コミュニティがホストする TeX Wiki など
  • フォント:TeX Gyre というフォントがあります
  • ユーザ:TeX に関する技能(TeXnic)に長けたユーザは TeXnician や TeXpert と呼ばれます
  • ハンドルネーム:私の Twitter アカウントのフォロワーに何人かいらっしゃいます

しかし,これらは見ればすぐに判別がつくはずなので,特に補足する必要はないでしょう.

まとめ

ここまで TeX と LaTeX の区別に始まり,さまざまな ナントカTeX を紹介してきました.特に TeX に詳しくなりたいわけでもない人にとっては,これだけの区別を把握するだけでも大変かもしれません.しかし,裏を返せば TeX の周辺ツールはそれだけ充実しているということでもあります.

ぜひ,TeX に関する正しい知識を身に付けて,正しくこれを使いこなしていってください.
Happy TeXing!


  1. TeX の最後の “X” はエックスではなくカイだからです.したがって「テックス」などと読むのは間違いです. ↩︎

  2. 小文字しか利用できない場合に tex と書いたり,大文字しか利用できない状況で TEX と表現するしかないのは仕方のないことです.しかし,そういう事情もないのに Tex や LaTEX のように書くのは明らかに間違いです.それは TeX とは無関係なナニカです. ↩︎

  3. この命令は,例えば「インデントせずに新しい段落を作り,文字サイズを大きくして書体をゴシックにする」というような動作をするわけです. ↩︎

  4. マクロ体系という呼び方は必ずしも一般的ではなく,「フォーマット」や「マクロパッケージ」と呼ばれることが多いのですが,これらの呼び名は誤解を生むことも多いように思うので,ここでは敢えてマクロ体系という語を用いました. ↩︎

  5. より正確には TeX 処理系は WEB という Knuth が独自に開発した特殊な言語で記述されています.この WEB で書かれたコードは tangle または web2c というプログラムによってそれぞれ Pascal, C のコードに変換され,最終的にこれがコンパイルされることになります. ↩︎

  6. TeX を後置するものだけでなく,TeXナントカ や ナントカTeXナントカ 等も含めて TeX という文字列を含む名称全般を指すものとして ナントカTeX という表現を用いています. ↩︎

  7. Omega という TeX 処理系がありますが,これは例外です. ↩︎

  8. ご存知の方も多いと思いますが,Knuth の TeX 処理系は DVI という特殊な形式のファイルを出力します. ↩︎

  9. XeTeX と LuaTeX では工夫次第で日本語の組版を行うことも可能です.特に LuaTeX については本格的な和文組版を行うための拡張プロジェクト LuaTeX-ja が進行中で,将来的には日本でも LuaTeX が主流になっていくと考えられます. ↩︎