TeX

'//

1. 概要
-----

1.1. TeXの特徴
-----------

TeXは以下のようなメリットがある。

オープンソースソフトである。
出力結果がWindows, Macといった機器によらない。
自動処理が多い。
数式の仕上がりに定評がある。

1.2. TeXの成立
-----------

スタンフォード大学のドナルド・クヌース教授が、1976年に自身の著書 //The Art of Computer Programming// の改訂版の準備中に、鉛版により組版された  旧版の職人仕事による美しさが、改訂版の当時の写植では再現できていないことに憤慨し、自分自身が心ゆくまで組版を制御するために開発を決意した。

クヌースはまず、伝統的な組版およびその関連技術に対する広範囲にわたる調査を行い、その調査結果を取り入れることで、商業品質の組版ができる、柔軟で強力な組版システムを開発した。それは技術と同時に芸術をも意味するギリシア語の言葉である、τέχνηから採られ“”と名付けられたKnuth。

当初の開発は本業である研究や教育の合間仕事であったが、クヌースには1978年に1年間のサバティカルがあったことから、その1年間の全てをこれに集中して完成させるという見込みであった。しかし実際には、同年に初版をリリースしたものの、その後も改訂を続けることとなった。最終的に、後述する「完成版」の系列であるバージョン3の最初のリリースは、実に1989年のことであった。を他人が改造したり拡張したりした場合について、それを直接配布することをクヌースは許しておらず、change file というメカニズムを利用して差分を添付する、という形で行わなければならない。この制限はいわゆる「バザールモデル」であるとは多少言い難い所があるが、「オープンソースの定義」では第4項により、差分等を添付した再配布を許しているならば、派生物の配布にそのような制限があってもよい、ということになっているため「オープンソースの定義」には合致している。

前述のような開発期間の長さの理由の一つに、クヌースが徹底的にバグを探して潰していたから、ということも挙げられる。どのようなバグを修正したか、ということも記録しており、ある時期までのものについて解説と一覧が『文芸的プログラミング』の第10章と第11章に収録されている。そのため、残っているバグは少ないだろうとして、ジョーク好きのクヌースが、バグ発見者に対しては前回のバグ発見者の2倍の懸賞金を掛けている。この賞金は小切手で払われるが、貰っても記念に取っておくばかりなので、結局クヌースの出費はほとんどないという。

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

クヌースは の開発と同時に、 で利用するフォントを作成するためのシステムである METAFONT も開発した。こちらのバージョン番号は 2.71, 2.718, 2.7182, … というように、更新の度に値がネイピア数に近づいていくようになっている。さらにクヌースは METAFONT を使って、欧文フォント Computer Modern も設計した。Computer Modernにはクヌース自身の欧文フォントに対する美的感覚が反映され、全くのプレーンな ではデフォルトのフォントであるが、現在の多くの利用者は Times など伝統的な定番フォントを使うよう設定していることも多い。

および METAFONT はまた、同様にクヌース自身が提唱する文芸的プログラミング  の「ドキュメンテーションを主とし、コードはそれに付随する」スタイルによる大規模なプロジェクトの一例でもある。やはりクヌースによる文芸的プログラミングのためのシステム WEB の tangle により、そのようにして書かれている文芸的な「プログラム」の中から Pascal で書かれているコード部分が取り出され、コンパイルできるように編集し直されて何らかの Pascal の実装により処理される。同様にして WEB の weave を通して得られるドキュメントを書籍にしたものが book と METAFONTbook である。Pascal が使われているのは開発にとりかかったのが古く、C言語が広く一般的になるより前だったこともあるが、近年ではC言語をターゲットとした WEB である WEB2C が使われることも多い。

'//

2. 名称について
---------

製作者のドナルド・クヌースにより以下のように要請されている。

2.1. 表記
-------

middle|x16px|\TeX は τέχνη}}「技術、芸術」に由来し、ギリシア文字の &Tau;- &Epsilon;- &Chi;である。E を少し下げて、字間を詰めて書く。プレーンテキストなどそれができない場合には “TeX” と表記する。

2.2. 読み方
--------

英語のアルファベット X}}として読むのではなく、ギリシア語風に無声軟口蓋摩擦音 /x/}}で /tex/ と発音するのが本来であるKnuth。//book// では、そのように正しく発音するとコンピュータの端末が、呼気でちょっと曇る、と冗談が書かれている。英語においては、多くの方言で音素 /x/}} が存在せず代わりに /k/}} が使われること、grc に由来するtechnical}} が /ˈtɛk.nɪk.əl/}} と読むことから /ˈtɛk/}} と読まれる。ドイツ語では /ɛ/}} が前舌母音であることから ich-laut の発音になり、/ˈtɛç/}} である。日本ではどれもカタカナで表現するのが難しいため「テック」ないし「テフ」と書かれる。ドイツ語の ch}} をハ行で表現することもあるので間違いとは言い切れないものの、あえてローマ字で書くなら hu}} であり、日本語の「ファ行のフ」である無声両唇摩擦音 /ɸ/}}ではない。//book//の邦訳出版など、日本での普及に大きく関与したアスキーで、編集者だった鈴木嘉平によれば、アスキー社内では「テック」と読んでいたが、先輩編集者によれば「テフ」ではないとはっきり書いておかなかったのが原因で、日本には「テフ」が広まってしまった、という。

3. 機能
-----

はマークアップ言語のスタイルをとっている。すなわち、文章そのものと文章の構造を指定する命令が記述されたテキストファイルを読み込み、そこに書かれた命令により文章を組版し、組版結果を DVI 形式のファイルに書き出す。DVI 形式とは、装置に依存しない  中間形式のことである。処理系は多機能で、チューリング完全である。

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

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

の扱う命令文の中には、組版に直接係わる命令文の他に、新しい命令文を定義するための命令文もある。こうした命令文はマクロと呼ばれ、 ユーザー独自の改良により、種々のマクロパッケージが配布されている。

比較的よく知られている 上のマクロパッケージには、クヌース自身による plain 、一般的な文書記述に優れた 、数学的文書用の などがある。一般の使用者は、 を直接使うよりも、 に何らかのマクロパッケージを読み込ませたものを使うことの方が多い。

の用途を拡張したマクロパッケージとして、他に次のようなものがある。

- 参考文献リストの作成に用いる。
- プレゼンテーション用スライドの作成に用いる。
- 数学的な文書の記述に強い の機能と の機能を併せ持つ。
- 化学構造式の描画に用いる。
MusiX - 楽譜の記述に用いる。 とそれに関連するプログラム、および のマクロパッケージなどは CTANからダウンロードできる。

4. 数式の表示例
---------

たとえば-b\pm \sqrt{b^2 -4ac} \over 2a は以下のように表示される。

また、f=\int_a^b \frac{1+x}{a+x^2 +x^3} \, dx は以下のように表示される。

5. の日本語化
--------

date=2023年6月}}

日本語組版処理のできる日本語版の および には、アスキーによる および と、NTT の斉藤康己による NTT および磯崎秀樹による NTT などがある。

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

使用する日本語用フォントについては が写研フォントの使用を、NTT が大日本印刷フォントの使用を前提としており、それぞれフォントメトリック情報をバンドルして配布している。しかし有償であるこれらのフォントのグリフ情報を持っていなくても、画面表示や印刷の際に使用者が利用できる他の日本語用フォントで代用することができる。つまり写研フォントや大日本印刷フォントのフォントメトリック情報を用いて文字の位置を固定し、画面表示や個人ユースの安価なプリンタによるプレビュー印刷には他の日本語用フォントを用い、業者などによる最終的な出力では商用フォントを使用して目的の仕上がりを得る、といったことも可能である。このため日本語化された TeX 関係プログラムのほとんどは、画面表示や印刷で実際に使うフォントを選択できるように、フォントのマッピングを定義する機能を持っている。

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

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

Unix系OS用の主な日本語対応 配布形態である ptexliveや ptetex3が のみを採用している。
Microsoft Windows 用の主な日本語対応 配布形態である W32TeXが を扱える。
の扱い方を解説する文献の方が、NTT のものに比べて、出版物と Web 上文書の両方で多い。
は縦組みにも対応しているが、NTT は対応していない。

6. による組版の作業工程
-------------

による組版の作業工程は、通常次のようになる。

文章に組版用命令文を織り込んだテキストファイルである、tex ファイルを作成する。
OS のコマンドラインから “tex FileName.tex” などと入力して を起動し、DVI ファイルを生成させる。
ソースファイルにエラーがあれば、修正して再度 を起動する。
DVI 命令文を解するソフトウェアを用いて組版結果を表示し、確認する。
DVI ウェアには xdvi / xdvik や dvioutなどの DVI ヴューア、Dvips や dvipdfm / DVIPDFM//x// などのファイル形式変換ソフトウェアなどがある。
DVI ファイルを DVI ビューアで画面表示または印刷する、あるいは PDF や PostScript に変換して画面表示または印刷することで、組版結果を確認する。
修正の必要があれば、ソースファイルを修正して再度DVIファイルを作成、確認する。この間、作業工程が変わるたびにそれぞれのプログラムを切り替えたり、扱う文書が大きいと章ごとにソースファイルを分割して管理したりと、比較的煩雑な作業を伴う。そのため、この工程に係わる各種のプログラムやソースファイルの管理を一元的に行う 用の統合環境がいくつか作成されている。

6.1. GUI 環境と
------------

GUI は PC の普及に一役買ったが、それとともに などのコマンドラインインタプリタに不慣れな PC 利用者が増加した。そのために、GUI に特化した 用統合環境が LyX などいくつか作成されている。

7. 関連ソフトウェア
-----------

DVI ウェア
xdvi/xdvik, dviout for Windows, Dvips, dvipdfm / DVIPDFM//x// など。
文書の文献管理のための や索引作成のための //MakeIndex//。
機能拡張版
pdf, , , など。
Unicode をベースとした多言語拡張版
Omega, Aleph  など。
Kile, TeXShop, EasyTeX, WinShell などの統合環境や、TeXmacs, LyX などの GUI フロントエンド。
Liveや teなどの 配布形態や、mimeTeXなどの サブセット。
Textext、InkLaTeXなどの Inkscape への プラグイン。
KETpic - Maxima 上、Scilab 上、Mathematica 上、および Maple 上で 描画コードである tpic specials を生成するマクロパッケージ
MathType version 6.5 以降では、Microsoft Word 上に書かれた の命令文を直接数式に変換できるようになった。現時点では PowerPoint 上での の命令文による直接的な数式編集はできない。

8. コミュニティ
---------

有名な コミュニティの一つは Users Group  であり、//TUGboat// や //The PracTeX Journal//  を出版している。Deutschsprachige Anwendervereinigung TeX はドイツの大きなユーザーグループである。tex.stackexchange.com は ユーザーのための質問・回答サイトである。

ユーザの集いは、日本で2009年以降毎年開かれている の研究集会であり、 や組版・出版など関する知見の共有や、 ユーザーの相互交流を目的としている。ただし2013年は、TUG 2013 が東京で開催され、 ユーザの集いは開催されなかった。

9. 脚注
-----

9.1. 補足
-------

9.2. 出典
-------

10. 参考文献
--------

11. 関連項目
--------

Publishing 
pdf
MathJax
DVI 
ドナルド・クヌース

12. 外部リンク
---------

[1]
[2]
[3]
[4] - に関する日本語ウィキサイト