TeXとSGML

目次

Knuth 教授の悩み

TeX システム

TeX の機能

もっと美しく

TeX の開発終了と、新しい論理記述言語

文芸的プログラミング


もっと美しく

しかし、美しい印刷の出来る TeX ですが、その舞台裏は実は目を覆いたくなるような汚さでした。

いちいち、「各ページの始まりは、上から何ポイント、左から何ポイントの所から書き始める」「ページ左右の余白は何ポイント」「文章の見出しは何ポイントの〜フォントで、本文は何ポイントの〜フォント」・・・などという情報を書いてやらないといけないのですから。

Knuth 教授は美しい印刷をするためにいろいろな調査を行い、印刷の知識を持っていましたからこれで良いでしょう。しかし、これでは誰でもが使えるシステムではありません。


そこで、DEC 社(1998年、Compaq Computerに買収され合併。その Compaq も 2002年、Hewlett Packard に買収され合併)の科学者、Leslie Lamport が TeX の改良を試みます。改良とはいっても、TeX システムには一切手を加えません。もともと TeX にはプログラム機能がありましたので、それを利用するだけで大幅な機能拡張を行ったのです。


そこまで作れる機能を持たしていた Knuth 教授にも驚きますが、それをやってしまった Lamport さんにも驚きます (^^;

こうして生まれ変わった LaTeX (以下 LaTeXと表記します)は、「印刷の知識が無くても、非常に美しい論文が印刷できる」システムでした。論文用という制限を加えることで、TeX を使いやすくしたのです。


しかし、この制限が、結果的には大ヒットでした。論文という、元々「論理構造のしっかりした」文章を扱うことで、便利な副作用が多数生じたのです。


LaTeX では、文章を「タイトル」「著者」「作成日」「章の見出し」「節の見出し」「引用開始」「引用終わり」「脚注」・・・などなど、論理的な「意味」構造として捕らえます。

そして、章の見出しは目立つ大きな文字、節の見出しはそれよりも小さい文字、脚注は、それが出てきたページの一番下に小さい文字で書く・・・等の処理をします。

これにより、いちいちフォントの大きさや種類をしらなくても、綺麗な印刷が出来るようになったのです。


そして、ここからが便利な副作用です。論理構造を明確に記述することで、どの章が何ページから始まっている、等という情報をコンピューターが管理できるようになり、自動的に目次を作ることが可能になったのです。

さらに、必用であれば単語を元に索引を作ることも出来ます。このような作業は、手作業で行うと間違いも多いうえに、文章の変更などでページ数が変わると、調べ直すのが大変でした。LaTeX は、そういうことも自動で行ってくれるのです。


LaTeX の登場により TeX は爆発的に普及し、同じ方法で高度な数学論文用に拡張された AMS-TeX や絵を扱えるようにした PIC-TeX 、参考文献などをデータベース化して扱える BIB-TeX などのシステムも登場します。

こうして、TeX は印刷だけでなく、その元原稿まで美しく作れるようになっていったのです。


TeX の開発終了と、新しい論理記述言語

Knuth 教授は、このような TeX プログラムの発展のためには、TeX 自身の不用意な変更を避けなくてはいけない、と考えました。

TeX の上で動くプログラムは、TeX 自身のバージョンアップによって動かなくなる可能性があるからです。すでにTeX 自身よりも、その上で動くプログラムの方が重要になっているのですから、バージョンアップは本末転倒になりかねません。


そこで、1990 年、TeX バージョン 3.1 の発表とともに、「今後、バグフィックス以外のバージョンアップはしない」という、終結宣言を出します。

同時に、TeX を作った際のノウハウを、すべて文章化して公開します。今後、TeX に更なる機能を求める人は、TeX には手を加えずに、ノウハウを元に1から自分で作るべきだ、ということです。

このときに、教授は面白いことを決めました。次にバグフィックスを行ったら、バージョンを 3.14 にするというのです。その次は 3.141 です。次々と、円周率の桁を増やすのです。

もし自分が死んだら、バージョンは「π」として、それ以降はバグを見つけても誰も手を加えてはならない、とも決めています。確か、現在のバージョンは 3.1415926 です。(2011.03.07現在)


一方、LaTeX によって有用性が認められた「論理記述」ですが、TeX に頼らず、どんなソフトでも使える一般的な文法が望まれ始めました。

実は、論理記述という考え方は 1960年代にはすでにでき上がっており、IBM が Generalized Markup Language (汎用マーク付け言語:略称 GML)と言うものを作っていました。

LaTeX の登場で、時代がやっと GML に追いついてきたのです。


1986 年に ISO (国際標準化機構)で GML が認められ、国際規格となります。同時に、名前にも「標準」をしめす Standard がつけられ、SGML となります。

もっとも、当初は、SGML は文法だけあって処理するソフトが無い、と言う状態でした。せいぜい、SGML で書かれたものを LaTeX に変換し、LaTeX で印刷する程度です。これではなんのための SGML かわかりません。

しかし、1993 年、とあるブームがきっかけで SGML が注目を集めることになります。

これは、また別の話ですので、近いうちに紹介しましょう。


文芸的プログラミング

本稿の趣旨とは外れますが、最後にちょっと面白い話も紹介しておきましょう。

Knuth 教授は、TeX の開発に「文芸的プログラミング」という手法を使っています。これは(そのうち詳しくやりますが)構造化プログラミングとも、オブジェクト指向プログラミングとも別の手法です。

そして、この手法を行うために、TeX を使用しています。

C が C によってプログラムされ、Squeak が Squeak によってプログラムされているように、TeX は TeX によってプログラムされているのです。

え? でも、TeX って、いわゆる「プログラム言語」じゃないじゃん。

そう思ったあなたは正しい。実は、「文芸的プログラミング」とは、プログラムそのものに対する技法ではなく、「プログラムの仕様書を、プログラムと一緒に保存することで保守性を高め、生産性を上げる」ための技法なのです。

そして、その仕様書部分は、TeX によって書かれている、と言うだけです。

それじゃぁ、注釈と一緒じゃないの?

という人もいるかもしれません。しかし、文芸的プログラムは、やっぱりプログラムスタイルそのものに影響を与える「思想」なのです(詳しくは、長くなるので書きませんが)。その意味では、やはりこれは TeX によってプログラムされている、と言っても過言ではありません。

ちなみに、アセンブラでも構造化プログラミングは出来、Cでもオブジェクト指向プログラミングが出来るように、TeX を使わないでも文芸的プログラミングを行うことは出来ます。


OpenSource がもっと一般的になり、多くの人がプログラムソースへのアクセスを行うようになったときには、ソースと仕様書を合理的に管理できる「文芸的プログラミング」への注目度が上がるのではないかと、筆者は思っています。

そして、文芸的プログラミングをされたプログラムから、仕様書をとりだして TeX コンパイルまで済ませるためのツールを「WEB」と呼びます。これは、美しいレース編みのような編み物を意味する言葉です。

プログラムを編み物に例える・・・同じようなことを、世界最初のプログラマーと呼ばれるラブレイス伯爵夫人エイダも言っています。

解析エンジンは、ジャカールの織機が花や葉を織るように、代数のパターンを織るのです

と。

Knuth 教授もまた、プログラムを編み物のような仕事だと考えたのでしょう。ソフトの名前一つをとっても、そんな思想が見えてきます。

そういえば、当の解析エンジンを作ったチャールズ・バベジも完璧主義者でしたし、「エンジン」と言う名前を、当時の発明品と、そのラテン語の意味(エンジン=創造力、創造力によって作られた機械、の意味)から取ったと言います。

そして、エンジンの最大の目的は、「数表を間違いなく印刷すること」でした。

完璧主義者、編み物のようなプログラム、印刷目的の発明、ラテン語から取った発明品の名前・・・

天才というのは、どこか似たところを持っているのかもしれませんね。



参考文献
LaTeX 美文書作成入門奥村晴彦1991技術評論社
マッキントッシュとウィンドウズユーザのための ホームページのつくり方電視郎1996エーアイ出版
バベッジのコンピューター新戸雅章1996筑摩書房


前ページ 1 2

(ページ作成 1999-12-13)
(最終更新 2011-03-07)

戻る
トップページへ

-- share --

4000

-- follow --




- Reverse Link -