TeX

TeXは数学者・計算機科学者であるドナルド・クヌース (Donald E. Knuth) により1978年にリリースされた組版処理ソフトウェアである。

名称について

製作者であるクヌースによって以下のように要請されている。

読み方

TeX はギリシャ文字の Τ-Ε-Χ(タウ・イプシロン・カイ)であるから、「テックス」ではなく、ギリシャ語読みの [tex](「テフ」)のように発音するのが正しい。しかしそのような発音は難しいので、クヌースは「テック」と読んでも構わないと言っている。日本では「テフ」または「テック」という読み方が広まっている。アメリカでは「テクス」という読み方も一部で広まっている。

機能

TeX はマークアップ言語処理系であり、チューリング完全性を備えた関数型言語でもある。文章そのものと、文章の構造を指定する命令とが混在して記述されたテキストファイルを読み込み、そこに書かれた命令に従って文章を組版して、組版結果を DVI 形式のファイルに書き出す。DVI 形式というのは、装置に依存しない (device-independent) 中間形式である。

DVI ファイルには紙面のどの位置にどの文字を配置するかといった情報が書き込まれている。実際に紙に印刷したりディスプレイ上に表示したりするためには、 DVI ファイルを解釈する別のソフトウェアが用いられる。DVI ファイルを扱うソフトウェアとして、各種のビューワや PostScript など他のページ記述言語へのトランスレータ、プリンタドライバなどが利用されている。

組版処理については、行分割およびページ分割位置の判別、ハイフネーション、リガチャ、およびカーニングなどを自動で処理でき、その自動処理の内容も種々のパラーメータを変更することによりカスタマイズできる。数式組版についても、多くの機能が盛り込まれている。TeX が文字などを配置する精度は 25.4 / (72.27 × 216) mm(約 5.363 nm、4,736,286.72 dpi)である。

TeX の扱う命令文の中には、組版に直接係わる命令文の他に、新しい命令文を定義するための命令文もある。TeX のこの機能を使って使用者が独自に作った命令文はマクロと呼ばれ、こうした独自の改良をマクロパッケージと呼ばれる形で配布できる。

比較的よく知られている TeX 上のマクロパッケージには、クヌース自身による plain TeX、一般的な文書記述に優れた LaTeX (LaTeX)、数学的文書用の AmS-TeX などがある。一般の使用者は、TeX を直接使うよりも、TeX に何らかのマクロパッケージを読み込ませたものを使うことの方が多い。そのため、これらのマクロパッケージのことも “TeX” と呼ぶ場合があるが、本来は誤用である。

TeX のマクロパッケージには、他にも次のようなものなどがある。

  • BibTeX (BibTeX) ……参考文献リストの作成に用いる。
  • SLiTeX (SLiTeX) ……プレゼンテーション用スライドの作成に用いる。
  • AmS-LaTeX ……数学的な文書の記述に強い AmS-TeX の機能と LaTeX の機能を併せ持つ。
  • XyMTeX (XϒMTeX) ……化学構造式の描画に用いる。
  • MusiXTeX (MusiXTeX) ……楽譜の記述に用いる 。

TeX とそれに関連するプログラム、および TeX のマクロパッケージなどは CTAN(Comprehensive TeX Archive Network、包括 TeX アーカイブネットワーク)からダウンロードできる。

 

インデの色々

開発について

TeX は、クヌースが自身の著書 The Art of Computer Programming を書いたときに、組版の汚さに憤慨し、自分自身で心行くまで組版を制御するために作成したとされている。開発にあたって、伝統的な組版およびその関連技術に対する広範囲にわたる調査を行った。その調査結果を取り入れることで、TeX は商業品質の組版ができる柔軟で強力な組版システムになった。

TeX はフリーソフトウェアであり、ソースコードも公開されていて、誰でも改良を加えることができる。その改良版の配布も、TeX と区別できるような別名を付けさえすれば許される。また、TeX は非常にバグが少ないソフトウェアとしても有名で、ジョーク好きのクヌースが、バグ発見者に対しては前回のバグ発見者の2倍の懸賞金をかけるほどである。この賞金は小切手で払われるのだが、貰った人は記念に取っておく人ばかりなので、結局クヌースの出費はほとんど無いという。

クヌースは TeX のバージョン 3 を開発した際に、これ以上の機能拡張はしないことを宣言した。その後は不具合の修正のみがなされ、バージョン番号は 3.14、3.141、3.1415、... というように付けられている。これは更新のたびに数字が円周率に近づいていくようになっていて、クヌースの死の時点をもってバージョン π として、バージョンアップを打ち切るとのことである。

クヌースは TeX の開発と同時に、TeX で利用するフォントを作成するためのシステムである METAFONT も開発した。こちらのバージョン番号は 2.71、2.718、2.7182、... というように、更新のたびに数字がネイピア数に近づいていくようになっている。さらにクヌースは METAFONT を使って、TeX の初期設定欧文フォントである Computer Modern のデザインも行った。

TeX および METAFONT は、これもクヌース自身によって提唱されている文芸的プログラミング (Literate Programming) を実現する WEB というシステムで Pascal へトランスレートされることを前提に記述されている。しかし実際には WEB2C で C言語に変換してコンパイルされ実行形式を得ることが多い。

TeX の日本語化

日本語組版処理のできる日本語版の TeX および LaTeX には、アスキー・メディアワークスによる pTeX (pTeX) および pLaTeX (pLaTeX) と、NTT の斉藤康己による NTT JTeX (NTT JTeX)および NTT JLaTeX (NTT JLaTeX) などがある。

TeX の日本語対応において技術的に最も大きな課題は、複数バイト文字コードへの対応である。pTeX(および前身の日本語 TeX)は、JIS X 0208 を文字集合とした文字コード(ISO-2022-JP、EUC-JP、および Shift_JIS)を直接扱う。DVI フォーマットは元々16ビット以上の文字コードを格納できる仕様が含まれていた。しかしオリジナルの英語版では使われていなかったため、既存プログラムの多くは pTeX が出力する DVI ファイルを処理できない。またフォントに関係するファイルフォーマットが拡張されている。これに対して NTT JTeX は、複数の1バイト文 字セットに分割することで対応している。たとえば、ひらがなとカタカナは内部的には別々の1バイト文字セットとして扱われる。このためにオリジナルの英語 版からの変更が小さく、移植も比較的容易である。ファイルフォーマットが同じなので英語版のプログラムで DVI ファイル等を処理することもできる。しかし後述するフォントのマッピングの問題があるため、実際には多くの使用者が NTT JTeX 用に拡張されたプログラムを使っている。

使用する日本語用フォントについては pTeX が写研フォントの使用を、NTT JTeX が大日本印刷フォントの使用を前提としており、それぞれフォントメトリック情報(フォントの文字寸法の情報)をバンドルし て配布している。しかし有償であるこれらのフォントのグリフ情報を持っていなくても、画面表示や印刷の際に使用者が利用できる他の日本語用フォントで代用 することができる。つまり写研フォントや大日本印刷フォントのフォントメトリック情報を用いて文字の位置を固定し、画面表示や印刷には他の日本語用フォン トを用いていることが可能である。このため日本語化された TeX 関係プログラムのほとんどは、画面表示や印刷で実際に使うフォントを選択できるように、フォントのマッピング(対応付け)を定義する機能を持っている。

歴史的には、アスキーが日本語 TeX の PC-9800 シリーズ対応版を販売したために個人の使用者を中心に普及した。一方、NTT JTeX は元の英語版プログラムからの変更が比較的小さいという利点を受けて、UNIX® および UNIX 互換 OS を使う大学や研究機関の関係者を中心に普及した。

しかし現在では次に挙げる理由から、日本語対応 TeX として pTeX が使われていることが多い。

  • UNIX® 用、および UNIX 互換 OS 用の主な日本語対応 TeX 配布形態である ptexliveや ptetex3が pTeX のみを採用している。
  • Microsoft Windows 用の主な日本語対応 TeX 配布形態である W32TeXが pTeX を扱える(NTT JTeX も扱える)。
  • pTeX の扱い方を解説する文献の方が、NTT JTeX のものに比べて、出版物と Web 上文書の両方で多い。
  • pTeX は縦組みにも対応しているが、NTT JTeX は対応していない。

TeX による組版の作業工程

TeX を利用して組版を行うには、通常次のような作業工程を取る。

  1. テキストエディタなどを用いて、文章に組版用命令文を織り込んだソースファイルを作成する。
  2. OS のコマンドラインから “tex FileName.tex” などと入力して TeX を起動し、DVI ファイルを生成させる。
    • ソースファイルにエラーがあれば、修正して再度TeXを起動する。
  3. DVI ウェアとよばれる DVI 命令文を解するソフトウェアを用いて組版結果を表示し、確認する。
    • DVI ウェアには xdvi/xdvik や dviout for Windowsなどの DVI ビューア、Dvips(k) や dvipdfm/DVIPDFMx などのファイル形式変換ソフトウェアなどがある。
    • DVI ファイルを DVI ビューアで画面表示または印刷する、あるいは PDF や PostScript に変換して画面表示または印刷することで、組版結果を確認する。
    • 修正の必要があれば、ソースファイルを修正して再度DVIファイルを作成、確認する。

この間、作業工程が変わるたびにそれぞれのプログラムを切り替えたり、扱う文書が大きいと章ごとにソースファイルを分割して管理したりと、比較的煩雑な作業を伴う。そのため、この工程に係わる各種のプログラムやソースファイルの管理を一元的に行う TeX 用の統合環境がいくつか作成されている。

GUI 環境と TeX

GUI は PC の普及に一役買ったが、同時に GUI しか触ったことのないPC利用者が増加した。そのような利用者が、コマンドラインでの操作を余儀なくされる TeX を非常に扱いづらく感じてしまうのは否めないことである。このため、GUI に特化した TeX 用統合環境もいくつか作成されている。

DTPのあれこれ

indeza.jp