TeX Live 2024 には amstex というコマンドが今も入っています。走らせるとバナーは This is pdfTeX ... (preloaded format=amstex) に続けて AmS-TeX- Version 2.2 と出て、.dvi が 1 つできます。中身のファイル amstex.tex の日付は 2001 年 10 月 4 日——四半世紀ちかく更新されていません。AMS-TeX は数学者 マイケル・スピヴァック がアメリカ数学会のために plain TeX の上に書いたマクロパッケージで、LaTeX とは別系統の「TeX の使い方」でした。いま誰も直接は使いませんが、あなたが \usepackage{amsmath} と書くたびに、その子孫が動いています。このページは、凍った側と生きている側の両方を、実際のファイルを開いて確かめます。
AMS-TeX とは——plain TeX の上に積まれたマクロパッケージ
AMS-TeX は クヌースの plain TeX の上に積まれたマクロパッケージ で、レスリー・ランポートの LaTeX とは兄弟でも祖先でもなく、同じ土台の上に立った別の流儀 です。1980 年代、TeX が数式を組めることは分かっていても、複数行の整列や可換図式を著者に書かせるのは無理がありました。スピヴァックはそこを引き受け、AMS の組版規約——書体、間隔、記号の扱い——を macro に落とし込みます。使い方をまとめた解説書が 『The Joy of TeX』 で、TeX Live に同梱される amsldoc.tex の参考文献欄にも Michael Spivak, The joy of TeX, 2nd revised ed., Amer. Math. Soc., Providence, RI, 1990. と挙がっています。
独自フォーマットなので、書き方も LaTeX とはまるで違います。本文は \documentclass … \begin{document} ではなく \document … \enddocument で囲み、見出しは \head、定理の類は \proclaim、体裁一式は \documentstyle{amsppt} で読み込みます。数学用の書体も独自の名前を持っていて、フラクトゥールが \frak、黒板太字(中空の太字)が \Bbb。これらは AMS が整備したフォント集 AMSFonts に支えられていて、eufm(フラクトゥール)、msam と msbm(追加記号)といったフォント名が今も LaTeX 側で使われています。
amstex はエンジンではなくフォーマット——中身は pdfTeX
amstex という実行ファイルは存在しません。 TeX Live 2024 の amstex は pdftex への symlink で、fmtutil.cnf の 48 行目にある amstex pdftex - -translate-file=cp227.tcx *amstex.ini という 1 行が、pdfTeX の上に AMS-TeX フォーマットを焼く指示です。同じ手口は latex・pdflatex・csplain・etex にも使われていて、これらもすべて pdftex への symlink——エンジンは 1 つ、フォーマットが複数 という TeX の基本構造がここに見えます。面白いのは出力で、pdfTeX の上で動いているのに amstex は DVI を出します。amstex.ini が PDF 出力を有効にしないからで、その意味でも 1990 年代の姿がそのまま保存されています。
$ ls -l /usr/local/texlive/2024/bin/universal-darwin/amstex
amstex -> pdftex
$ grep "^amstex" /usr/local/texlive/2024/texmf-dist/web2c/fmtutil.cnf
amstex pdftex - -translate-file=cp227.tcx *amstex.ini
$ amstex paper.tex
This is pdfTeX, Version 3.141592653-2.6-1.40.26 (TeX Live 2024) (preloaded format=amstex)
AmS-TeX- Version 2.2
(.../amstex/base/amsppt.sty version 2.2 (2001/08/07): ... )
Output written on paper.dvi (1 page, 1168 bytes).この分離は実際にエラーとして体感できます。LaTeX の原稿を amstex に食わせると 1 行目で ! Undefined control sequence. になり、続く行に l.1 \documentclass と表示されます——AMS-TeX には \documentclass が存在しないからです。逆に AMS-TeX の原稿を pdflatex に渡すと、\documentstyle・\topmatter・\endtitle などが軒並み ! Undefined control sequence. になり、最後に ! LaTeX Error: Missing \begin{document}. で終わります。この 2 つのエラーの組み合わせを見たら、原稿とコマンドが食い違っている と判断できます。
amsmath の歴史——\frac の三世代
AMS-TeX が発明し、amsmath が受け継いだ構文は、いまも LaTeX の数式の中核です。 それを一番はっきり見せるのが \frac の三世代です。TeX Live 2024 の中で三つの定義が同時に生きています——amstex.tex の 325 行目に \def\frac#1#2{{#1\over#2}}、latex.ltx の 12700 行目に \DeclareRobustCommand\frac[2]{{\begingroup#1\endgroup\over#2}}、そして amsmath.sty の 234 行目に \DeclareRobustCommand{\frac}[2]{{\begingroup#1\endgroup\@@over#2}}。AMS-TeX の素朴な形が LaTeX で引数を囲む形に整えられ、amsmath がさらに \over を退避した \@@over に差し替える。\usepackage{amsmath} と書いた瞬間、あなたの \frac は三代目に切り替わります。
% amstex.tex:325 (AMS-TeX 2.2, 2001)
\def\frac#1#2{{#1\over#2}}
% latex.ltx:12700 (the LaTeX kernel)
\DeclareRobustCommand\frac[2]{{\begingroup#1\endgroup\over#2}}
% amsmath.sty:234 (v2.17o, 2023/05/13 in TeX Live 2024)
\DeclareRobustCommand{\frac}[2]{{\begingroup#1\endgroup\@@over#2}}\frac は氷山の一角です。amstex.tex を開いて命令名を数えると、いま LaTeX で当たり前に使っているものが次々と出てきます——\dfrac、\tfrac、\binom、\text、\align、\gather、\multline、\cases、\matrix、\pmatrix、\smallmatrix、\boxed、\operatorname、\intertext、\hdotsfor、\sideset。これらは plain.tex にも latex.ltx にも存在しません。つまり「数式の言い回し」の多くは、クヌースでもランポートでもなく AMS-TeX が発明したものです。LaTeX で align 環境が使えるのは、スピヴァックが \def\align を書いたからです。
% AMS-TeX (legacy: processed with the amstex format)
\align
(a+b)^2 &= a^2 + 2ab + b^2 \\
(a-b)^2 &= a^2 - 2ab + b^2
\endalign
% the same thing in modern LaTeX
\usepackage{amsmath}
\begin{align}
(a+b)^2 &= a^2 + 2ab + b^2 \\
(a-b)^2 &= a^2 - 2ab + b^2
\end{align}1988〜1994 の移植——パッケージ名は 6 年間 amstex だった
移植の顛末は、TeX Live に同梱される amsmath.dtx の Credits 節 に本人たちの言葉で残っています。曰く、amsmath のコードの多くは マイケル・スピヴァックの amstex.tex に由来し、それを LaTeX 用の amstex.sty へ移す最初の作業は 1988〜1989 年にフランク・ミッテルバッハとライナー・シェップ が行った。1994 年にデイヴィッド・M・ジョーンズ が fleqn オプションへの対応と align 系環境・式番号処理の大幅な改良を加え、AMS の マイケル・ダウンズ が三者の作業をまとめる調整役を務めた。そして最後の一文が効いています——バージョン 1.0 と 1.1 のパッケージ名は amsmath ではなく amstex だった。1994 年に「歴史ではなく利用者に向いた名前にするため」改名した、と書かれています。
こうして生まれたパッケージ群の総称が AMS-LaTeX です。中身は amsmath・amssymb・amsthm・amscd といったパッケージと、AMS の文書クラス amsart(論文)・amsbook(書籍)・amsproc(会議録)。記号側も同じ移植を受けていて、amssymb を読み込むと内部で amsfonts が呼ばれ、AMS-TeX の \Bbb は \mathbb(msbm フォント由来)に、\frak は \mathfrak(eufm フォント由来)になりました。名前が変わっただけで、字は同じもの です。
| 構成要素 | 正体・役割 | TeX Live 2024 での版 |
|---|---|---|
amstex.tex | AMS-TeX 本体。plain TeX の上のマクロ集 | Version 2.2、日付は 2001/10/04 |
amsppt.sty | AMS-TeX の体裁一式。\head \proclaim \topmatter はここ | version 2.2 (2001/08/07) |
amsmath | 数式環境の中核。align gather cases など | v2.17o (2023/05/13)。LaTeX Project と AMS が共同保守 |
amssymb | 追加記号と数学書体。内部で amsfonts を読み込む | \mathbb は msbm、\mathfrak は eufm に由来 |
amsthm | 定理・証明環境。proof と \newtheorem の拡張 | AMS-TeX の \proclaim に代わるもの |
amscd | 可換図式のための環境(矢印が水平・垂直のみ) | 斜めの矢印が要るなら tikz-cd へ |
amsart / amsbook / amsproc | AMS の文書クラス(論文・書籍・会議録) | amsart は v2.20.6 (2020/05/29) |
2001 年、AMS-TeX が「自由ソフトウェアでない」と言われた話
AMS-TeX が 2.2 になった直接の理由は、機能ではなくライセンスでした。 amstex.tex と一緒に配布される変更履歴 amstex.bug の「Changes released July 2001」の項に、こう書いてあります——実行のたびに端末とログに印字される著作権表示と使用制限を外してほしい、という要請があった。理由は「この制限のせいで AMS-TeX が TeX Live にとって not free software になっていた」から。そして Changed: Version 2.2 (August 2001)。つまり いま amstex を走らせたときにバナーが素っ気ないのは、2001 年にその十数行が削られたから です。ソフトウェアの歴史では珍しくない出来事ですが、削られた側のファイルが 20 年以上そのまま配られ続けている例は、そう多くありません。
新しい数式文書をどう書くか
amstex コマンドを起動する理由は、もうありません。 新しいレポート・講義ノート・論文は LaTeX 文書として始め、必要な AMS-LaTeX パッケージを読み込みます。数式の整列は amsmath、黒板太字などの追加記号は amssymb、定理・補題・証明は amsthm。AMS の学会誌や書籍に出すなら、さらに amsart や amsbook をクラスとして指定します。AMS-TeX から学ぶべきは古い命令の暗記ではなく、数式の構造を意味で分けて書く態度 です。align と gather と multline を使い分けるのは見た目のためではなく、「等号でそろえたい」「並べたいだけ」「1 本の式が長すぎる」という 意味の違い を書き分けるためです。
\documentclass{article}
\usepackage{amsmath,amssymb,amsthm}
\newtheorem{theorem}{Theorem}
\begin{document}
\begin{theorem}
For all real $a$ and $b$ and every $z \in \mathbb{C}$,
\begin{align}
(a+b)^2 &= a^2 + 2ab + b^2, \\
\operatorname{Re}(z) &= \tfrac{1}{2}\left(z + \bar{z}\right).
\end{align}
\end{theorem}
\begin{proof}
Expand and collect terms.
\end{proof}
\end{document}- 本文の入口は
\documentではなく\begin{document}。クラスは\documentstyle{amsppt}ではなく\documentclass{...}で宣言します。 - 見出しは
\head … \endheadではなく\section系。番号付けと目次が自動で付いてきます。 - 定理は
\proclaimで手作りせず、amsthmの\newtheoremで番号体系ごと作ります。proof環境が証明終わりの記号まで面倒を見ます。 - 黒板太字は
\Bbbではなく\mathbb、フラクトゥールは\frakではなく\mathfrak。どちらもamssymbを読み込めば使えます。 - 可換図式は
amscdで足りることも多いですが、斜めの矢印や曲がった矢印が要るならtikz-cdに移ります。
古い AMS-TeX 原稿を受け取ったら
最初にやるべきは書き直しではなく、いまの PDF を再現できる状態を確保することです。 研究室の古い講義ノートや出版社のアーカイブから \document・\enddocument・\documentstyle{amsppt} を含む原稿が出てきたら、まず amstex oldfile.tex がそのまま通るか試します。TeX Live 2024 に amstex が残っている理由の大半はこれで、20 年前の原稿がいまも同じ組版で出る ことに価値があります。基準の PDF が取れてから、章や節の単位で LaTeX + amsmath へ移し、そのつど元の PDF と見比べる。式番号・行分割・定理番号は移行でいちばんずれやすい場所なので、そこを重点的に見ます。
結局のところ、AMS-TeX は 凍っているが死んでいない という珍しい位置にいます。ファイルは 2001 年で止まり、フォーマットはいまも焼かれ、原稿は今日も通る。一方で仕事の続きは amsmath に移り、そちらは LaTeX Project と AMS の共同保守で更新が続いています(TeX Live 2024 同梱版は v2.17o、2023/05/13)。amsmath.sty の冒頭には Copyright (C) 1995, 1999, 2000, 2013 American Mathematical Society. と Copyright (C) 2016-2023 LaTeX Project and American Mathematical Society. の 2 行が並んでいて、引き継ぎの日付がそのまま著作権表示になっています。あなたが \usepackage{amsmath} と書くとき、動いているのはスピヴァックの構文であり、更新しているのは別の人たちです。