LaTeX

LaTeX は Leslie Lamport によって開発された文書処理システムです. TeX のマクロパッケージ*1として構築されています.



TeX と LaTeX の違い

単に「TeX」と言った場合,それが LaTeX のことを指している場合も多いのですが,TeX と LaTeX は本来区別されるべきものです.

TeX は Donald E. Knuth によって開発された組版エンジン,言語処理系です. 言語処理系だけでは実際の組版を行うのは大変で,プログラミング言語でいうライブラリにあたるものが必要になります. そこで,まず Knuth が自身の著書を書くための plain TeX というマクロパッケージが作成されました*2. しかし,plain TeX では組版に最低限必要となる程度の機能しか提供されていなかったため,思い通りの出力を得るにはある程度の熟練が必要であり,もっと簡単に論文やレポート作成に活用できるようにしたいという要望がありました.

この要望に応えたのが Leslie Lamport による LaTeX です. LaTeX では,クラスファイルによってどのように文書が組版されるべきかを指定し,あとは \section などのコマンドや環境と呼ばれるものを用いることで文書の構造を記述(マークアップ)すれば,組版の細部については気にしなくても適切な出力が得られるようにマクロが整備されました. また,パッケージ(スタイルファイル)を読み込むことで,容易に機能拡張ができるようになっています. パッケージは各ユーザが作成することもでき,こうしたパッケージを集めたサイトが CTAN です. そして,CTAN に投稿されたパッケージを各種 TeX エンジンのバイナリなどと一緒に配布するものが TeX ディストリビューションであり,国内では TeX LiveW32TeX がよく利用されています.

現在では TeX で組版を行う場合には LaTeX を使うことが圧倒的に多いため*3,冒頭に述べたような「TeX」で LaTeX を指すような混同が生じています.

公式サイト

現在の開発,保守は LaTeX3 project によって行われています.

チュートリアル

LaTeX のチュートリアルが LaTeX入門にあります.こちらをお読み下さい.

エラーや警告が出た場合は,以下でメッセージへの対処法が説明されていますので,参考にして下さい.

LaTeX2e

LaTeX の現在の最新版であり,単に「LaTeX」と言った場合は通常これを指します.

LaTeX のバージョン2が出た後に,次期バージョンである LaTeX3 の開発が進められました.しかし,これが難航したために,LaTeX3 リリースまでの「つなぎ」として The New Standard LaTeX (LaTeX2e) というバージョンが1994年にリリースされました. その後も LaTeX3 の開発は続けられていますが,現在でも LaTeX2e が最新版という状態が続いています.

TeX Live 2015 以降での変更点

これまで,LaTeX2e では互換性を壊すような修正や改善は本体(カーネル)には直接取り込まず,fixltx2e というパッケージを読み込むことで反映されるようにするという方針がとられてきました. しかし,TeX Live 2015 からはこの方針が転換され,こうした変更点もカーネルに取り込み,もしそれで過去の文書の組版に問題が出るようならば latexrelease パッケージを読み込めば過去のバージョンの動作をするようになりました.

TeX Live 2016 以降での変更点

さらに,2016 年末頃にリリースされる新しい LaTeX2e は,e-TeX 拡張をもつ TeX エンジンを必須とする方向に開発が進められています.

このため,e-TeX 拡張をもたないエンジン

で LaTeX のフォーマットを作成できなくなることが予想されます.

※なお、TeX Live(2012 以降)に含まれる各種 LaTeX(“何々latex” というコマンド)は全て e-TeX 拡張をもつエンジンの上で動作しています。例えば、platex は e-pTeX(e-TeX 拡張の pTeX エンジン)で動作します。

% 要追記.

pLaTeX2e

pTeX エンジン向けに,日本語組版に必要な機能を LaTeX2e に追加,もしくは改変したものです. 注意が必要な改変点として,フォント関係のコマンド (NFSS2),脚注とボトムフロートの出力順序の入れ替えなどがあります.

もともと pTeX と同様にアスキー・メディアワークスによって開発されてきましたが,2016 年から日本語 TeX 開発コミュニティによって fork されて開発が続けられています.

LaTeX3

LaTeX の次期バージョンです. 「まずは LaTeX を記述するためのプログラミング言語を作ろう」として動き出したものの,この段階での試行錯誤が長年に渡って続いている状態にあります.

最近では,LaTeX2e の上でも expl3 パッケージを読み込めば開発中のこのプログラミング言語を試すことができるようになっています. いくつかの新しい LaTeX2e 用のパッケージはこの言語を用いて書かれています. LaTeX3 は初期から e-TeX 拡張を必須とし,次第に pdfTeX などの拡張も利用するようになりました. いま(2015 年現在)では素の e-TeX ですら動かせない状態にあります.

注意点

新しい LaTeX2e 用のパッケージのうち,LaTeX3 の構文で記述されているものとして以下があげられます.

これらは expl3 を内部で読み込むようになっています. ただし,2015 年 7 月頃までの expl3 は pTeX や upTeX というエンジンを知らないため,これらを pdfTeX であると誤判定します.

対処法として,ZR さんによる bxexpl3ptex.sty を用いる方法がありましたが,2015 年 8 月頃から expl3 側が e-(u)pTeX を公式にサポートするようになったため、不要となりました.

ちなみに,pTeX で expl3 がサポートされたのは qa:55490(→ qa:55523 でバグ修正)以降ですので,こうしたパッケージはそれ以前では利用できないことにご注意ください.

LaTeX2.09

LaTeX2e の一つ前の版であり,一昔前には広く使われていました. 冒頭が \documentclass ではなく \documentstyle になっているものはこのバージョン向けに書かれた文書です.

関連リンク


*1 紛らわしいことに LaTeX にもパッケージという用語がありますが,マクロパッケージといった場合には単に「TeX のマクロ集(フォーマット)」という意味になります.TeX の項目を参照
*2 現在でも,tex, ptex, pdftex などのコマンドで plain TeX を使うことができます.
*3 他に,TeX の上に構築された文書処理システムとして ConTeXt があります.

Last-modified: 2016-10-25 (火) 15:17:38 (574d)