TeX
作者 | Donald E. Knuth |
---|---|
初版 | 1978年 |
最新版 |
3.141592653 / 2021年2月5日[1] |
リポジトリ | |
プログラミング 言語 | WEB |
対応OS | クロスプラットフォーム |
サポート状況 | 開発中 |
種別 | 組版処理 |
ライセンス | パーミッシブ・ライセンス |
公式サイト | The TeX Users Group (TUG) |
TeX (TeX) は、ドナルド・クヌース (Donald E. Knuth) が開発[2]し、広く有志による拡張などが続けられている組版処理システムである。
クヌースの賞金小切手︵一部ボカシ入︶
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画像にしているものである。
概要[編集]
TeXの特徴[編集]
TeXは以下のようなメリットがある[3]。 ●オープンソースソフトである。 ●出力結果がOS︵Windows, Macなど︶に依存しない。 ●自動処理が多い。 ●数式の仕上がりに定評がある︵#数式の表示例などを参照︶。TeXの成立[編集]
スタンフォード大学のドナルド・クヌース教授︵現在は退職︶が、1976年に自身の著書 The Art of Computer Programming の改訂版の準備中に、鉛版により組版された (en:Hot metal typesetting) 旧版の職人仕事による美しさが、改訂版の当時の写植では再現できていないことに憤慨し、自分自身が心ゆくまで組版を制御するために開発を決意した。 クヌースはまず、伝統的な組版およびその関連技術に対する広範囲にわたる調査を行い、その調査結果を取り入れることで、商業品質の組版ができる、柔軟で強力な組版システムを開発した。それは技術と同時に芸術をも意味するギリシア語の言葉である、τέχνη︵テクネ︶から採られ“TeX”と名付けられた[4]。 当初の開発は本業である研究や教育の合間での作業であったが、クヌースには1978年に1年間のサバティカルがあったことから、その1年間の全てをこれに集中して完成させる見込みであった。しかし実際には、同年に初版をリリースしたものの、その後も改訂を続けることとなった。最終的に、後述する﹁完成版﹂の系列であるバージョン3の最初のリリースは、実に1989年のことである。名称について[編集]
製作者のドナルド・クヌースにより以下のように要請されている。表記[編集]
は ギリシア語: τέχνη﹁技術、芸術﹂に由来し、ギリシア文字の Τ︵タウ︶- Ε︵イプシロン︶- Χ︵カイ︶である。Eを少し下げて、字間を詰めて書く。プレーンテキストなどそれができない場合には “TeX” と表記する︵“TEX”や“Tex”と表記するのは誤り︶。読み方[編集]
英語のアルファベット ⟨X⟩︵エックス、/ˈɛks/︶として読むのではなく、ギリシア語風に無声軟口蓋摩擦音 /x/︵ドイツ語の ach-laut の ⟨ch⟩︶で /tex/ と発音するのが本来である[5]。TeXbook では、そのように正しく発音するとコンピュータの端末︵のCRTディスプレイ︶が、呼気でちょっと曇る、と冗談が書かれている︵CRTディスプレイが曇るという冗談はともかく、その発音が呼気を伴うものであるのは確か︶。英語においては、多くの方言で音素 /x/ が存在せず代わりに /k/ が使われること、τέχνη に由来する英語: technical が /ˈtɛk.nɪk.əl/ と読むことから /ˈtɛk/ と読まれる。ドイツ語では /ɛ/ が前舌母音であることから ich-laut の発音になり、/ˈtɛç/ である。日本ではどれもカタカナで表現するのが難しいため﹁テック﹂ないし﹁テフ﹂と書かれる。ドイツ語の ⟨ch⟩ をハ行で表現することもあるので間違いとは言い切れないものの、あえてローマ字で書くなら ⟨hu⟩ であり、日本語の﹁ファ行のフ﹂である無声両唇摩擦音 /ɸ/︵ローマ字で ⟨fu⟩︶ではない。TeXbookの邦訳出版など、日本での普及に大きく関与したアスキーで、編集者だった鈴木嘉平によれば、アスキー社内では﹁テック﹂と読んでいたが、先輩編集者によれば︵fuで発音する︶﹁テフ﹂ではないとはっきり書いておかなかったのが原因で、日本には﹁テフ﹂が広まってしまった、という[6]。機能[編集]
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、数学的文書用の AmS-TeX などがある。一般の使用者は、TeXを直接使うよりも、TeXに何らかのマクロパッケージを読み込ませたものを使うことの方が多い。 TeXの用途を拡張したマクロパッケージとして、他に次のようなものがある。 ●BibTeX - 参考文献リストの作成に用いる。 ●SLiTeX - プレゼンテーション用スライドの作成に用いる[7]。 ●AmS-LaTeX - 数学的な文書の記述に強い AmS-TeX の機能とLaTeXの機能を併せ持つ[8][9]。 ●XϒMTeX - 化学構造式の描画に用いる[10][11]。 ●MusiXTeX - 楽譜の記述に用いる[12][13]。 TeXとそれに関連するプログラム、およびTeXのマクロパッケージなどは CTAN︵Comprehensive TeXArchive Network、包括TeXアーカイブネットワーク︶[14]からダウンロードできる。数式の表示例[編集]
たとえば-b\pm \sqrt{b^2 -4ac} \over 2a
は以下のように表示される。
また、
f(a,b)=\int_a^b \frac{1+x}{a+x^2 +x^3} \, dx
は以下のように表示される。
TeX の日本語化[編集]
日本語組版処理のできる日本語版のTeXおよびLaTeXには、アスキーによる pTeXおよびpLaTeXと、NTT の斉藤康己による 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[15]や ptetex3[16][17]が pTeXのみを採用している。
●Microsoft Windows 用の主な日本語対応TeX配布形態である W32TeX[18]が pTeXを扱える︵NTT JTeXも扱える︶。
●pTeXの扱い方を解説する文献の方が、NTT JTeXのものに比べて、出版物と Web 上文書の両方で多い。
●pTeXは縦組みにも対応しているが、NTT JTeXは対応していない。
TeXによる組版の作業工程[編集]
TeXによる組版の作業工程は、通常次のようになる。 (一)文章に組版用命令文を織り込んだテキストファイルである、tex ファイルを作成する︵テキストエディタなどで︶。 (二)OS のコマンドラインから “tex FileName.tex
” などと入力してTeXを起動し、DVI ファイルを生成させる。
●ソースファイルにエラーがあれば、修正して再度TeXを起動する。
(三)DVI 命令文を解するソフトウェア︵DVI ウェア︶を用いて組版結果を表示し、確認する。
●DVI ウェアには xdvi / xdvik や dviout[19][20]などの DVI ヴューア、Dvips(k) や dvipdfm / DVIPDFMx などのファイル形式変換ソフトウェアなどがある[注 4]。
●DVI ファイルを DVI ビューアで画面表示または印刷する、あるいは PDF や PostScript に変換して画面表示または印刷することで、組版結果を確認する。
●修正の必要があれば、ソースファイルを修正して再度DVIファイルを作成、確認する。
この間、作業工程が変わるたびにそれぞれのプログラムを切り替えたり、扱う文書が大きいと章ごとにソースファイルを分割して管理したりと、比較的煩雑な作業を伴う。そのため、この工程に係わる各種のプログラムやソースファイルの管理を一元的に行うTeX用の統合環境︵TeXworks や TeXShop など︶がいくつか作成されている。
GUI 環境とTeX[編集]
GUI は PCの普及に一役買ったが、それとともにTeXなどのコマンドラインインタプリタに不慣れなPC利用者が増加した。そのために、GUI に特化したTeX用統合環境が LyX[21]などいくつか作成されている。関連ソフトウェア[編集]
●DVI ウェア ●xdvi/xdvik, dviout for Windows, Dvips(k), dvipdfm / DVIPDFMx など。 ●TeX文書の文献管理のための BibTeXや索引作成のための MakeIndex[22]。 ●機能拡張版TeX ●pdfTeX, ConTeXt, ε-TeX[23], XǝTeX など。 ●Unicode をベースとした多言語拡張版TeX ●Omega[24](lambda), Aleph[25](lamed) など。 ●Kile, TeXShop[26][27], EasyTeX[28], WinShell などの統合環境や、TeXmacs[29][30], LyX などの GUI フロントエンド。 ●TeX Live[31][32]や teTeX[33][34]などのTeX配布形態や、mimeTeX[35][36]などのTeXサブセット。 ●Textext[37]、InkLaTeX[38]などの Inkscape へのTeXプラグイン。 ●KETpic - Maxima 上、Scilab 上、Mathematica 上、および Maple 上でTeX描画コードである tpic specials を生成するマクロパッケージ ●MathType version 6.5 以降では、Microsoft Word 上に書かれたTeXの命令文を直接数式に変換できるようになった。現時点では PowerPoint 上でのTeXの命令文による直接的な数式編集はできない。コミュニティ[編集]
この節の加筆が望まれています。 |
有名なTeXコミュニティの一つはTeX Users Group (TUG) であり、TUGboat[39]や The PracTeX Journal[40](TPJ) を出版している。Deutschsprachige Anwendervereinigung TeX[41]はドイツの大きなユーザーグループである。tex.stackexchange.com[42]はTeXユーザーのための質問・回答サイトである。
TeXユーザの集いは、日本で2009年以降毎年開かれているTeXの研究集会であり、TeXや組版・出版など関する知見の共有や、TeXユーザーの相互交流を目的としている[43][44]。ただし2013年は、TUG 2013 が東京で開催され、TeXユーザの集いは開催されなかった[45]。
脚注[編集]
補足[編集]
(一)^ 2021年2月現在のバージョンは 3.141592653 である。
(二)^ 2021年2月現在のバージョンは 2.71828182 である。
(三)^ NTT JTeXは千葉大学の櫻井貴文によって UNIX システムに移植され、メンテナンスされている。現在、﹁Software by Takafumi SAKURAI﹂で公開されている。
(四)^ 各 DVI ウェアの間には DVI ファイルの解釈・表示について互換性がない場合がある。特に、ある DVI ウェアに依存したパッケージをソースファイルに用いるなどして、その DVI ウェア用の専用命令文 (special) を埋め込んで作成した DVI ファイルは、当然ながらその専用命令文を解釈可能な DVI ウェアでなければ画面表示・印刷などが正しくできない。
出典[編集]
(一)^ “CTAN: Package TeX”. CTAN. 2021年2月21日閲覧。
(二)^ bit 編集部﹃bit 単語帳﹄共立出版、1990年8月15日、155頁。ISBN 4-320-02526-1。
(三)^ ﹃LaTeX2ε美文書作成入門﹄技術評論社、2020年11月27日、1頁。
(四)^ Knuth 1984.
(五)^ Knuth 1984, p. 1, Ch. 1: The Name of the Game.
(六)^ Talpa memorandum: TeXはテック
(七)^ CTAN: Package slides
(八)^ AMS-LaTeX — American Mathematical Society
(九)^ CTAN: Package amslatex
(十)^ XyMTeX 化学構造式描画システム
(11)^ CTAN: Package xymtex
(12)^ Werner Icking Music Archive: MusiXTeX Files
(13)^ CTAN: Package MusiXTeX
(14)^ the Comprehensive TeX Archive Network
(15)^ ptexlive Wiki
(16)^ ptetex—teTeX 用日本語パッチ集
(17)^ ptetex Wiki
(18)^ W32TeX︵日本語︶
(19)^ Versions of dviout for Windows 大島利雄研究室
(20)^ CTAN: Package dviout
(21)^ LyX
(22)^ CTAN: Package makeindex
(23)^ CTAN: Package e-TeX
(24)^ CTAN: Package omega
(25)^ CTAN: Package aleph
(26)^ TeXShop — Richard Koch
(27)^ CTAN: Package texshop
(28)^ TeX 入門 #EasyTeX — 中川 仁
(29)^ Welcome to GNU TeXmacs (FSF GNU project)
(30)^ CTAN: Package TeXmacs
(31)^ TeX Live — TeX Users Group
(32)^ CTAN: Package texlive
(33)^ The teTeX Homepage
(34)^ CTAN: Package tetex
(35)^ mimeTeX quickstart
(36)^ CTAN: Package mimetex
(37)^ Textext — Pauli Virtanen
(38)^ Inkscape de LaTeX
(39)^ TUGboat - Communications of the TeX Users Group
(40)^ The PracTeX Journal home page
(41)^ Dante e.V.
(42)^ tex.stackexchange.com
(43)^ TeXユーザの集い2009
(44)^ TeXユーザの集い2015
(45)^ TUG 2013 - TeX Users Group
参考文献[編集]
●奥村晴彦﹃LaTeX2ε 美文書作成入門﹄︵改訂第7版︶技術評論社、2017年。ISBN 978-4774187051。 ●大野義夫 編﹃TeX入門﹄共立出版、1989年。ISBN 978-4320024885。 ●Knuth, Donald Ervin (1984), The TeXbook, Computers and Typesetting, A, Reading, MA: Addison-Wesley, ISBN 0-201-13448-9関連項目[編集]
外部リンク[編集]
- Don Knuth's Home Page(英語)
- The TeX Users Group (TUG)(英語)
- The Comprehensive TeX Archive Network (CTAN)(英語)
- TeX Wiki - TeX に関する日本語ウィキサイト