TeX
テンプレート:Sakujo/本体 テンプレート:Copyrights テンプレート:Otheruses
テンプレート:WikipediaPage テンプレート:Infobox Software テンプレート:TeX(テフまたはテック[1]、読みについては#名称についてで詳述する)は、ドナルド・クヌース (Donald E. Knuth) が開発[2]し、広く有志による拡張などが続けられている組版処理システムである。
概要
TeXの特徴
TeXは以下のようなメリットがある[3]:
- オープンソースソフトウェアである
- 出力結果がOS(Windows, Macなど)に依存しない
- 自動処理が多い
- 数式の仕上がりに定評がある(#数式の表示例などを参照)
TeXの成立
スタンフォード大学のドナルド・クヌース教授(現在は退職)が、1976年に自身の著書 The Art of Computer Programming の改訂版の準備中に、鉛版により組版された (en:Hot metal typesetting) 旧版の職人仕事による美しさが、改訂版の当時の写植では再現できていないことに憤慨し、自分自身が心ゆくまで組版を制御するために開発を決意した。
クヌースはまず、伝統的な組版およびその関連技術に対する広範囲にわたる調査を行い、その調査結果を取り入れることで、商業品質の組版ができる、柔軟で強力な組版システムを開発した。それは技術と同時に芸術をも意味するギリシア語の言葉である、τέχνη(テクネ)から採られ“テンプレート:TeX”と名付けられたテンプレート:Sfn。
当初の開発は本業である研究や教育の合間での作業であったが、クヌースには1978年に1年間のサバティカルがあったことから、その期間に集中して完成させる見込みであった。しかし実際には、同年に初版をリリースした後も改訂を続けることとなった。最終的に、「完成版」とされた系列であるバージョン3の最初のリリースは、実に1989年のことである。

テンプレート:TeXを他人が改造したり拡張したりした場合について、それを直接配布することをクヌースは許しておらず、change file というメカニズムを利用して差分を添付する、という形で行わなければならない(これは当時まだ diff と patch が一般的に広く使われていなかったことから、これもクヌースが開発したものである)。この制限はいわゆる「バザールモデル」であるとは多少言い難い所があるが、「オープンソースの定義」では(そのような制限との妥協の産物である)第4項により、差分等を添付した再配布を許しているならば、派生物の配布にそのような制限があってもよい、ということになっているため「オープンソースの定義」には合致している。
前述した開発期間の長さの理由の一つに、クヌースが徹底的にバグを探して潰していたから、ということも挙げられる。どのようなバグを修正したか、ということも記録しており、ある時期までのものについて解説と一覧が『文芸的プログラミング』の第10章と第11章に収録されている。そのため、残っているバグは少ないだろうとして、ジョーク好きのクヌースが、バグ発見者に対しては前回のバグ発見者の2倍の懸賞金を掛けている。この賞金は小切手(クヌース賞金小切手)で払われるが、貰っても記念に取っておくばかりなので、結局クヌースの出費はほとんどないという(とはいえやはりジョークかもしれないが、やめておけば良かった、というように取れることも書いている)。
クヌースは テンプレート:TeX のバージョン 3 を開発した際に、これ以上の機能拡張はしないことを宣言した。その後は不具合の修正のみがなされ、バージョン番号は 3.14, 3.141, 3.1415, … というように付けられている。これは更新の度に値が円周率に近づいていくようになっていて、クヌースの死の時点をもってバージョン テンプレート:Π として、バージョンアップを打ち切るとのことである[注 1]。
クヌースは テンプレート:TeX の開発と同時に、テンプレート:TeX で利用するフォントを作成するためのシステムである METAFONT も開発した。こちらのバージョン番号は 2.71, 2.718, 2.7182, … というように、更新の度に値がネイピア数に近づいていくようになっている[注 2]。さらにクヌースは METAFONT を使って、欧文フォント Computer Modern も設計(デザイン)した。Computer Modern(cmと略されることもある)にはクヌース自身の欧文フォントに対する美的感覚が反映され、全くのプレーンな テンプレート:TeX ではデフォルトのフォントであるが、現在の多くの利用者は Times など伝統的な定番フォントを使うよう設定していることも多い。
テンプレート:TeX および METAFONT はまた、同様にクヌース自身が提唱する文芸的プログラミング (Literate Programming) の「ドキュメンテーションを主とし、コードはそれに付随する」スタイルによる大規模なプロジェクトの一例でもある。やはりクヌースによる文芸的プログラミングのためのシステム WEB の tangle により、そのようにして書かれている文芸的な「プログラム」の中から Pascal で書かれているコード部分が取り出され、コンパイルできるように編集し直されて何らかの Pascal の実装により処理される(大規模なコードのため、多くの Pascal 実装において1個以上のバグを見つけている、ともいわれる)。同様にして WEB の weave を通して得られるドキュメントを書籍にしたものが テンプレート:TeXbook と METAFONTbook である。Pascal が使われているのは開発にとりかかったのが古く、C言語が広く一般的になるより前だったこともあるが、近年ではC言語をターゲットとした WEB である WEB2C が使われることも多い。
(注)LaTeXとの違いはLaTeX参照。LaTeXにはTeXより便利な機能が多いため、TeXを使用しているといってもLaTeXを利用している、という場合がある。ちなみに、wikipedia上の数式は、Wikipediaサーバ上のLaTeXでSVG画像にしているものである。
名称について
製作者のドナルド・クヌースにより以下のように要請されている。
表記
は テンプレート:Lang-el「技術、芸術」に由来し、ギリシア文字の Τ(タウ)- Ε(イプシロン)- Χ(カイ)である。E を少し下げて、字間を詰めて書く。プレーンテキストなどそれができない場合には “TeX” と表記する(“TEX”や“Tex”と表記するのは誤り)。
読み方
前述のようにテンプレート:TeXの語はギリシャ文字に由来するため、X(χ)はギリシア語風に無声軟口蓋摩擦音 テンプレート:IPA(日本語には無いが、ハやフの子音に近い)と発音するのが本来であるテンプレート:Sfn。テンプレート:TeXbook(テンプレート:TeXブック) でクヌースは、「コンピュータに向かって、息を吐きかけるように正しく発音すれば、端末は少しばかり曇るかもしれない。」テンプレート:Sfnと、はく息の伴う発音であることを面白く書き表している。テンプレート:TeXのこの本来の読みをカタカナで表そうとすれば、テフやテッハのようになる。
英語においては、テンプレート:IPA(テクまたはテック)と読まれる。これは、(多くの方言で)音素 テンプレート:IPAも音声テンプレート:IPAも存在せず、代わりに テンプレート:IPA が使われ、テンプレート:Lang に由来するテンプレート:Lang-en が テンプレート:IPA と読むためである。 テンプレート:TeXbookの邦訳出版など日本における TeX の普及に大きく関与したアスキー編集者鈴木嘉平テンプレート:要出典によれば、クヌース自身も、英語による講演の中でテックと発音していたとされる[4]。(もちろんこのことは、本来の発音についてのクヌースによる記述と矛盾するわけではない。)
日本語では、テフまたはテックと読まれる。テフは本来のギリシア語読みから、テックは英語読みからそれぞれ来ている。テンプレート:TeXのXの読みについては、元々特殊な表記であることや、クヌースの発音がテンプレート:IPAに聞こえること、アスキー編集者鈴木嘉平テンプレート:要出典がそれを元にブログ記事「TeXはテック」[5]を書いたことなどから、混乱があった[6][7]。鈴木は当該記事において、当時「実際の発音はテックである。テフではない。Knuthは明瞭にテックと発音している。」とテフの読みを否定までもする編集部注を付けたとしながら、「これが正しかったのかどうか、今でも疑問を感じる。どうすればよかったのだろう?」と振り返っている。
機能
テンプレート:TeX はマークアップ言語のスタイルをとっている。すなわち、文章そのもの(テキスト)と文章の構造を指定する命令(コントロールシーケンス)が記述されたテキストファイルを読み込み、そこに書かれた命令により文章を組版し、組版結果を DVI 形式のファイルに書き出す。DVI 形式とは、装置に依存しない (device-independent) 中間形式のことである。処理系は多機能で、チューリング完全である。
DVIファイルには紙面のどの位置にどの文字を配置するかといった情報が書き込まれている。実際に紙に印刷したりディスプレイ上に表示したりするためには、DVI ファイルを解釈する別のソフトウェアが用いられる。DVI ファイルを扱うソフトウェアとして、各種のビューワや PostScript など他のページ記述言語へのトランスレータ、プリンタドライバなどが利用されている。
組版処理については、行分割およびページ分割位置の判別、ハイフネーション、リガチャ、およびカーニングなどを自動で処理でき、その自動処理の内容も種々のパラメータを変更することによりカスタマイズできる。数式組版についても、多くの機能が盛り込まれている。テンプレート:TeX が文字などを配置する分解能は テンプレート:Nowrap(約 5.363 nm、4,736,286.72 dpi)である。
マクロ
テンプレート:TeX の扱う命令文の中には、組版に直接係わる命令文の他に、新しい命令文を定義するための命令文もある。こうした命令文はマクロと呼ばれ、テンプレート:TeX ユーザー独自の改良により、種々のマクロパッケージが配布されている。マクロパッケージを用いない環境やクヌースが予め定義したマクロのみを用いる使い方は、飾りのない純粋な テンプレート:TeX の意で plain テンプレート:TeXと呼ばれている。
マクロパッケージや拡張版ソフト
比較的よく知られている テンプレート:TeX 上のマクロパッケージには、数学的文書用の [[AmS-TeX|テンプレート:AmS-TeX]] や楽譜用の [[MusiXTeX|MusiXテンプレート:TeX]] などがある。
- [[AmS-TeX|テンプレート:AmS-TeX]] - 数学文書に用いる。
- [[MusiXTeX|MusiXテンプレート:TeX]] - 楽譜の記述に用いる[8][9]。
このほか、テンプレート:TeX を土台として機能を拡張したソフトウェアとして [[LaTeX|テンプレート:LaTeX]] がある。一般的には、テンプレート:TeX を直接使うよりも、テンプレート:TeX や [[LaTeX|テンプレート:LaTeX]]に何らかのマクロパッケージを読み込ませたものを使うことの方が多い。マクロパッケージも [[LaTeX|テンプレート:LaTeX]] 用の物が一般的であり充実している。
テンプレート:TeX とそれに関連するプログラム、テンプレート:TeX や [[LaTeX|テンプレート:LaTeX]] のマクロパッケージなどは CTAN(Comprehensive TeX Archive Network、包括 テンプレート:TeX アーカイブネットワーク)[10]からダウンロードできる。
数式の表示例
たとえば
-b\pm \sqrt{b^2 -4ac} \over 2a
は以下のように表示される。
また、
f(a,b)=\int_a^b \frac{1+x}{a+x^2 +x^3} \, dx
は以下のように表示される。
ユニコード対応の多言語拡張版
2024年現在、国際的に統一された文字符号化方式であるUnicodeの文字列を直接読み込めるようにした拡張版が開発され、主流になってきている。
- XeTeX - ユニコードに標準対応し、フォント選択が容易な拡張版。
- LuaTeX - Luaスクリプト言語と組み合わせることで柔軟な文書作成が可能な拡張版。
- upTeX, e-upTeX - 日本語用に開発されたTeXの拡張版であるpTeXをユニコード対応にしたもの。
日本語文書に関しては、日本語用であるpTeXを元とした upTeX や e-upTeX が実用的とされている。ただし、国際的な多言語対応への需要や、技術的により新しい機能が搭載された国際的に主流の TeX 処理系へと移行しようとする欲求から、XeTeX, LuaTeX へと移行しようとする流れがあり、XeTeX, LuaTeX 共に日本語組版処理用のパッケージが開発されつつある。
ユニコード対応以前の日本語組版用 テンプレート:TeX
日本語組版処理のできる日本語版の テンプレート:TeX および テンプレート:LaTeX には、アスキーによる [[Publishing TeX|テンプレート:PTeX]] および テンプレート:PLaTeX と、NTT の斉藤康己による [[NTT JTeX|NTT テンプレート:JTeX]][注 3]および磯崎秀樹による 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系OSを使う大学や研究機関の関係者を中心に普及した。
しかし次に挙げる理由から、日本語用 テンプレート:TeX の中では テンプレート:PTeX が選ばれることが多かった。
- Unix系OS用の主な日本語対応 テンプレート:TeX 配布形態である ptexlive[11]や ptetex3[12][13]が テンプレート:PTeX のみを採用している。
- Microsoft Windows 用の主な日本語対応 テンプレート:TeX 配布形態である W32TeX[14]が テンプレート:PTeX を扱える(NTT テンプレート:JTeX も扱える)。
- テンプレート:PTeX の扱い方を解説する文献の方が、NTT テンプレート:JTeX のものに比べて、出版物と Web 上文書の両方で多い。
- テンプレート:PTeX は縦組みにも対応しているが、NTT テンプレート:JTeX は対応していない。
テンプレート:TeX による組版の作業工程
テンプレート:TeX による組版の作業工程は、通常次のようになる。
- 文章に組版用命令文を織り込んだテキストファイルである、tex ファイルを作成する(テキストエディタなどで)。
- OS のコマンドラインから “
tex FileName.tex” などと入力して テンプレート:TeX を起動し、DVI ファイルを生成させる。- ソースファイルにエラーがあれば、修正して再度 テンプレート:TeX を起動する。
- DVI 命令文を解するソフトウェア(DVI ウェア)を用いて組版結果を表示し、確認する。
この間、作業工程が変わるたびにそれぞれのプログラムを切り替えたり、扱う文書が大きいと章ごとにソースファイルを分割して管理したりと、比較的煩雑な作業を伴う。そのため、この工程に係わる各種のプログラムやソースファイルの管理を一元的に行う テンプレート:TeX 用の統合環境(TeXworks や TeXShop など)がいくつか作成されている。
GUI 環境と テンプレート:TeX
GUI は PC の普及に一役買ったが、それとともに テンプレート:TeX などのコマンドラインインタプリタに不慣れな PC 利用者が増加した。そのために、GUI に特化した テンプレート:TeX 用統合環境が LyX[17]などいくつか作成されている。
関連ソフトウェア
- DVI ウェア
- xdvi/xdvik, dviout for Windows, Dvips(k), dvipdfm / DVIPDFMx など。
- テンプレート:TeX 文書の文献管理のための [[BibTeX|テンプレート:BibTeX]] や索引作成のための MakeIndex[18]。
- 機能拡張版 テンプレート:TeX
- [[pdfTeX|pdfテンプレート:TeX]], [[ConTeXt|テンプレート:ConTeXt]], [[e-TeX|テンプレート:E-TeX]][19], [[XeTeX|テンプレート:XeTeX]] など。
- Unicode をベースとした多言語拡張版 テンプレート:TeX
- Kile, TeXShop[22][23], EasyTeX[24], WinShell などの統合環境や、TeXmacs[25][26], LyX などの GUI フロントエンド。
- [[TeX Live|テンプレート:TeX Live]][27][28]や [[teTeX|teテンプレート:TeX]][29][30]などの テンプレート:TeX 配布形態や、mimeTeX[31][32]などの テンプレート:TeX サブセット。
- Textext[33], InkLaTeX[34]などの Inkscape への テンプレート:TeX プラグイン。
- KETpic - Maxima 上、Scilab 上、Mathematica 上、および Maple 上で テンプレート:TeX 描画コードである tpic specials を生成するマクロパッケージ
- MathType version 6.5 以降では、Microsoft Word 上に書かれた テンプレート:TeX の命令文を直接数式に変換できるようになった。現時点では PowerPoint 上での テンプレート:TeX の命令文による直接的な数式編集はできない。
コミュニティ

有名な テンプレート:TeX コミュニティの一つは テンプレート:TeX Users Group (TUG) であり、テンプレート:仮リンク[35]や テンプレート:仮リンク[36](TPJ) を出版している。テンプレート:仮リンク[37]はドイツの大きなユーザーグループである。tex.stackexchange.com[38]は テンプレート:TeX ユーザーのための質問・回答サイトである。
テンプレート:TeX ユーザの集いは、日本で2009年以降毎年開かれている テンプレート:TeX の研究集会であり、テンプレート:TeX や組版・出版など関する知見の共有や、テンプレート:TeX ユーザーの相互交流を目的としている[39][40]。ただし2013年は、TUG 2013 が東京で開催され、テンプレート:TeX ユーザの集いは開催されなかった[41]。
脚注
補足
出典
参考文献
関連項目
テンプレート:Wikibooks テンプレート:MediaWiki テンプレート:MediaWiki
- [[Publishing TeX|Publishing テンプレート:TeX]] (テンプレート:PTeX)
- [[LaTeX|テンプレート:LaTeX]]
- [[pdfTeX|pdfテンプレート:TeX]]
- [[LuaTeX|テンプレート:LuaTeX]]
- [[XeTeX|テンプレート:XeTeX]]
- [[ConTeXt|テンプレート:ConTeXt]]
- MathJax
- DVI (ファイルフォーマット)
- ドナルド・クヌース
外部リンク
- Don Knuth's Home Pageテンプレート:En icon
- The TeX Users Group (TUG)テンプレート:En icon
- The Comprehensive テンプレート:TeX Archive Network (CTAN)テンプレート:En icon
- テンプレート:TeX Wiki - テンプレート:TeX に関する日本語ウィキサイト
テンプレート:TeX関連 テンプレート:Free and open source typography テンプレート:タイポグラフィ用語 テンプレート:マークアップ言語一覧 テンプレート:Normdaten
- ↑ テンプレート:Cite web
- ↑ テンプレート:Cite book
- ↑ テンプレート:Cite book
- ↑ Talpa memorandum: TeXはテック
- ↑ Talpa memorandum: TeXはテック
- ↑ 「TeX」の読み方は「テック」だった|スラドIT
- ↑ TeX - TeX Wiki
- ↑ Werner Icking Music Archive: MusiXTeX Files
- ↑ CTAN: Package MusiXTeX
- ↑ the Comprehensive TeX Archive Network
- ↑ ptexlive Wiki
- ↑ ptetex—teTeX 用日本語パッチ集
- ↑ ptetex Wiki
- ↑ W32TeXテンプレート:Ja icon
- ↑ Versions of dviout for Windows 大島利雄研究室
- ↑ CTAN: Package dviout
- ↑ LyX
- ↑ CTAN: Package makeindex
- ↑ CTAN: Package e-TeX
- ↑ CTAN: Package omega
- ↑ CTAN: Package aleph
- ↑ TeXShop — Richard Koch
- ↑ CTAN: Package texshop
- ↑ TeX 入門 #EasyTeX — 中川 仁
- ↑ Welcome to GNU TeXmacs (FSF GNU project)
- ↑ CTAN: Package TeXmacs
- ↑ テンプレート:TeX Live — テンプレート:TeX Users Group
- ↑ CTAN: Package texlive
- ↑ The teTeX Homepage
- ↑ CTAN: Package tetex
- ↑ mimeTeX quickstart
- ↑ CTAN: Package mimetex
- ↑ Textext — Pauli Virtanen
- ↑ Inkscape de LaTeX
- ↑ TUGboat - Communications of the TeX Users Group
- ↑ The PracTeX Journal home page
- ↑ Dante e.V.
- ↑ tex.stackexchange.com
- ↑ テンプレート:TeX ユーザの集い2009
- ↑ テンプレート:TeX ユーザの集い2015
- ↑ TUG 2013 - TeX Users Group
引用エラー: 「注」という名前のグループの <ref> タグがありますが、対応する <references group="注"/> タグが見つかりません