> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/ja/xiang-xi-ji-shi/49-the-tex-family-tree-latex-pdftex-xetex-luatex-and-context.md).

# TeXの系譜：LaTeX、pdfTeX、XeTeX、LuaTeX、ConTeXt

LaTeX の物語は 1977年にまでさかのぼります。Donald Knuth が、高品質な組版プログラムの必要性を初めて認識したのがその年でした。彼が当時考案したシステムが、数十年の間に多くの便利な機能が追加されてきたにもかかわらず、今日でもこの仕事に最適なツールであり続けていることは、LaTeX の品質を示す驚くべき証しです。実際、LaTeX は Donald Knuth が開発した元のシステムに加えられたこうした追加の一つであり、そのシステムは [TeX](http://www.tug.org/).

LaTeX の世界で筋を通すには、T と X を大文字で書き、Lay-Tech のように発音しなければなりません。というのも、TeX の X は実はギリシャ語の大文字カイ（χ）だからです。通常の大文字小文字の表記と発音の Latex は、ゴムの一種です！

## 元の TeX

今では TeX から派生したツールがたくさんあり、初めて見るとナンセンスな単語の羅列のように見えるかもしれません。LaTeX、pdfTeX、XeLaTeX、LuaTeX、ConTeXt などです。これらすべての祖先は、もちろん Knuth による元の TeX プログラムです。これはプレーンテキストの文書を取り込み、美しく組版された文書へと変換します。Knuth は組版にかなりこだわっており、TeX には細部への注意がはっきり表れています。TeX 文書の例は、次のような感じになります。

```latex
\TeX{} は、`fjord' や `efficiency', のような単語の組版が得意です。
そして `fiasco' もです。また、
$a^2 + b^2 = c^2$ のような数式の組版も得意です。
\bye
```

これを TeX プログラムに通した後の出力は次のとおりです：

![Texsample.png](/files/6be162a23b0ca57d215a15037310b2c01d56f60f)

例の単語で \`'fi'\`、\`'fj'\`、\`'ff'\` の文字の組み合わせが心地よくつながっていること、そして数式記号の間隔が適切に取られていることに注目してください。より大きな尺度では、TeX は適切な位置で行を折り返して、ハイフネーションも適切に入れながら、両端揃えの整ったテキストを作るのが非常に得意です。

テキストをきれいに組版するだけでなく、次のようなコマンドもあります。 `\bye` や `\TeX` 上の例のようにです。これらは、フォントサイズを変えたり、テキストの配置方法を変えたりといった簡単なことから、ページをまたいだ相互参照のために節番号を管理したり、自動的に目次を組み立てたりといった、はるかに強力なことまでできます。TeX プログラムには約 300 個のコマンドが組み込まれていますが、ほかのコマンドをその中で定義することもできます。Donald Knuth は、TeX の中からさらに約 600 個の便利なコマンドを書き、Plain TeX というパッケージにまとめました。これにより、一般的な組版作業のいくつかが आसानになります。

## LaTeX

TeX と Plain TeX のコマンドはまだかなり基本的なもので、これらで複雑なことをするのは簡単ではありませんでした。これを補うために、Leslie Lamport は [LaTeX](http://www.latex-project.org/) 1980年代初頭に、TeX よりも高水準な作業言語を提供するために作成されました。LaTeX は、基盤となる TeX コマンドをもとに定義されたコマンド群で、多くの場合、何層もの抽象化を経ています。LaTeX 文書で使うコマンドは、もちろん TeX コマンドを直接使う場合を除けば、実際にはその下で複雑な TeX コマンドの組み合わせにすぎません。パッケージ（`\usepackage{...}`）、環境（`\begin{environment} ... \end{environment}`）、そして文書クラス（`\documentclass{...}`）はすべて、LaTeX において Leslie Lamport によって導入されました。

LaTeX のために標準化されたパッケージシステムを作ったことで、Leslie Lamport はコミュニティを大きく成長させました。今では、サブフィギュアから編み図まで、あらゆるものを組版できるようにする何千もの LaTeX パッケージが利用できます。また、書籍、実験レポート、履歴書など、さまざまな種類の文書向けの文書クラスも数多くあります。多くの出版社や学術誌は、文書を望みどおりに整形する独自の文書クラスを持っています。

## pdfTeX

TeX プログラムは、20年以上前のソフトウェアとしては驚くほど安定しています。Knuth は 1989年に機能が出そろったと宣言し、それ以来行われてきたのはバグ修正だけです。もちろん、これが TeX 自体で書かれている LaTeX の重要かつ継続的な開発を止めることはありませんでした。実際、TeX の安定性があったからこそ、その上に構築された LaTeX のようなパッケージが繁栄できたのです。

だからといって、基盤となる TeX プログラムがこの20年でまったく進歩していないわけではありません。むしろ逆で、改良は TeX と並行して行われ、元の TeX は安定したまま残されてきたのです。1990年代で最も重要な改良は、 [pdfTeX](http://www.tug.org/applications/pdftex/) Hàn Thế Thành が博士論文のために作成したものです。元の TeX プログラムは、組版した文書を DVI（DeVice Independent format）と呼ばれる独自形式で出力し、その後 PostScript ファイルに変換して印刷できます。しかし、1993年に PDF 形式が登場し、今日では PostScript よりも明らかに優れた形式として勝利したことがわかります。PDF を優れたものにしている機能はたくさんあり、たとえば章間のハイパーリンク、PDF ビューアの左側で目次を表示できるメタデータのセクション、より幅広くより現代的な画像形式のサポートなどです。pdfTeX は TeX の改変版で、PDF に直接出力できるようにし、こうした追加機能を活用できるようにします。

今日あなたがシステムに LaTeX ディストリビューションをインストールすると、実際には 2 つの異なるプログラムが付属しています： `TeX`、そして `pdftex`。さらにこれらに加えて、もう 2 つのプログラムも付属しています： `latex` や `pdflatex`。しかし、これらは実際には `TeX` や `pdftex` それぞれのラッパーにすぎません。これらは、文書を処理する前にまず LaTeX パッケージを読み込みますが、内部はやはり TeX です。もし `latex` または `TeX` を実行すると、DVI ファイルが得られ、それを postscript ファイルや PDF に変換できますが、もし `pdflatex` を実行すれば、PDF を直接得られます。

概して、 `pdftex` や `pdflatex` は `TeX` や `latex`よりも改良されていますが、1 つ欠点があります。元の TeX と DVI 形式は、Encapsulated PostScript ファイル（`.eps`）をサポートしています。というのも、これらは PostScript ファイルに簡単に含められるからです（ `.dvi` ファイルを [`Dvips`](https://www.tug.org/texinfohtml/dvips.html)で PostScript に変換して生成されるものです）。しかし、 `pdftex` では EPS ファイルを含めることができず、代わりに PDF を使うべきです（EPS ファイルはコマンド `epstopdf` で作成できます。これは通常、LaTeX ディストリビューションに付属しています）。とはいえ、この欠点と引き換えに、pdfTeX は `.png`, `.jpg` や `.pdf` 画像のサポートを追加しています。一方、元の TeX がサポートするのは .eps のみです（ [`Dvips`](https://www.tug.org/texinfohtml/dvips.html)).

## XeLaTeX と LuaTeX

これまで見てきたように、TeX はその始まりから 2 つの異なる方向に進化してきました。元のシステムの上に、より使いやすいコマンドを追加した方向（LaTeX）と、PDF 出力をサポートするよう基盤プログラムを更新した方向（pdfTeX）です。しかし、物語はそこで終わりません。TeX を近代化し続けようとする取り組みが続いてきました。2004年に Jonathon Kew が [XeTeX](http://tug.org/xetex/)、これは基盤となる TeX エンジンの別の改変で、今回は単なる英語の数字や文字を超えた、より幅広い文字をサポートし、現代的なフォント形式にも対応するためのものです。これにより、外国語での記述がずっと সহজになり、さらに、従来はワープロでしか使えなかったフォントを LaTeX 内で使うこともできます。

[LuaTeX](http://www.luatex.org/) は、元の TeX プログラムをより筋の通ったプログラミング言語で拡張しようとする試みです。原理的には TeX の中から何でもできますが、実際には、そもそもプログラミング言語と呼べるのかどうかも含めて、非常に扱いにくい言語です。LaTeX の内部の多くは、TeX だけで作業しなければならないために複雑で、外部の人には理解しにくくなっています。LuaTeX は、同名のスクリプト言語 Lua で拡張されています。Lua はシンプルで安定した言語で、複雑なマクロを書くのに理想的です。2012年時点でも活発に開発されており、API は変更される可能性がありますが、それでも十分に使いやすいです。

## ConTeXt

LaTeX を TeX で利用できるコマンド群の拡張として述べてきましたが、TeX を大きく拡張したのはそれだけではありません。 [ConTeXt](http://wiki.contextgarden.net/What_is_ConTeXt) は、1990年に Hans Hagen によって作られた別のシステムです。LaTeX は、ユーザーがタイポグラフィやレイアウトについて決定を下す手間を省くことを目指しています（あなたは `\section` や `\emph` と入力しますが、その働きについて気にする必要はありません。それは文書クラスやレイアウトに任されています）。一方、ConTeXt は高度なタイポグラフィ機能への簡単なインターフェースを提供することを目指しています。残念ながら私は ConTeXt について望むほど詳しくないので、これ以上はあまり説明できませんが、もしもっと試す機会があれば、必ずその結果を書きます。

最後に歴史的な注記として、触れておきたいのは [AMSTeX](http://en.wikipedia.org/wiki/AMS-LaTeX) これは Plain TeX のマクロを拡張したもので、1982年から1985年までアメリカ数学会（AMS）で使われていました。その遺産は AMS-LaTeX パッケージに受け継がれており、多くの LaTeX 文書の定番となっています： `\usepackage{amsmath}`.

## 未来

TeX と LaTeX の未来はどうなるのでしょうか？ まだわかりませんが、Alan Kay がかつて言ったように：

> 未来を予測する最善の方法は、それを発明することだ。

ShareLaTeX では、LaTeX のワークフローに大きな改善をもたらすことで、TeX と LaTeX を第三の方向に進化させたいと考えています。20年以上経った今でも、LaTeX は大部分がコマンドラインプログラムのままで、書く、コンパイルする、出力を確認するという面倒なサイクルで使わなければなりません。共同作業の方法も、Google ドキュメントのようなワープロで利用できる洗練されたプロセスではなく、ぎこちないメールメッセージに頼りがちです。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/ja/xiang-xi-ji-shi/49-the-tex-family-tree-latex-pdftex-xetex-luatex-and-context.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
