Loading AI tools
マークアップ言語によるコンピュータ組版処理システムのひとつ ウィキペディアから
TeX(テフまたはテック[2]、読みについては#名称についてで詳述する)は、ドナルド・クヌース (Donald E. Knuth) が開発[3]し、広く有志による拡張などが続けられている組版処理システムである。
この項目は著作権侵害が指摘され、現在審議中です。 審議の結果、該当する投稿以降の全ての版またはこのページ全体(すべての版)が削除される可能性があります。問題箇所の適切な差し戻しが行われていれば、削除の範囲は問題版から差し戻し直前の版までとなる可能性もあります。適切な差し戻しが行われていないと考えられる場合は、この版の編集や引用はしないで下さい。著作権上問題のない自分の投稿内容が削除される可能性のある方は、早めに控えを取っておいて下さい(詳しくはこちらの解説をお読み下さい)。 該当する投稿をされた方へ: ウィキペディアでは、著作権上問題のない投稿のみを受け付けることになっています。他人の著作物を使うときをお読み頂いた上で、審議にご協力をお願いします。自分の著作物を投稿されていた場合は削除依頼を出されたらをご覧下さい。 審議が終わるまで、このお知らせを除去しないでください。 (以下、著作権侵害の可能性がある箇所を取り除いた内容を暫定的に表示します。) |
作者 | Donald E. Knuth |
---|---|
初版 | 1978年 |
最新版 |
3.141592653
/ 2021年2月5日[1] |
リポジトリ | |
プログラミング 言語 | WEB |
対応OS | クロスプラットフォーム |
サポート状況 | 開発中 |
種別 | 組版処理 |
ライセンス | パーミッシブ・ライセンス |
公式サイト | The TeX Users Group (TUG) |
TeXは以下のようなメリットがある[4]:
スタンフォード大学のドナルド・クヌース教授(現在は退職)が、1976年に自身の著書 The Art of Computer Programming の改訂版の準備中に、鉛版により組版された (en:Hot metal typesetting) 旧版の職人仕事による美しさが、改訂版の当時の写植では再現できていないことに憤慨し、自分自身が心ゆくまで組版を制御するために開発を決意した。
クヌースはまず、伝統的な組版およびその関連技術に対する広範囲にわたる調査を行い、その調査結果を取り入れることで、商業品質の組版ができる、柔軟で強力な組版システムを開発した。それは技術と同時に芸術をも意味するギリシア語の言葉である、τέχνη(テクネ)から採られ“TeX”と名付けられた[5]。
当初の開発は本業である研究や教育の合間での作業であったが、クヌースには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画像にしているものである。
製作者のドナルド・クヌースにより以下のように要請されている。
は ギリシア語: τέχνη「技術、芸術」に由来し、ギリシア文字の Τ(タウ)- Ε(イプシロン)- Χ(カイ)である。E を少し下げて、字間を詰めて書く。プレーンテキストなどそれができない場合には “TeX” と表記する(“TEX”や“Tex”と表記するのは誤り)。
前述のようにTeXの語はギリシャ文字に由来するため、X(χ)はギリシア語風に無声軟口蓋摩擦音 [x](日本語には無いが、ハやフの子音に近い)と発音するのが本来である[6]。TeXbook(TeXブック) でクヌースは、「コンピュータに向かって、息を吐きかけるように正しく発音すれば、端末は少しばかり曇るかもしれない。」[7]と、はく息の伴う発音であることを面白く書き表している。TeXのこの本来の読みをカタカナで表そうとすれば、テフやテッハのようになる。
英語においては、[ˈtɛk](テクまたはテック)と読まれる。これは、(多くの方言で)音素 /x/も音声[x]も存在せず、代わりに [k] が使われ、τέχνη に由来する英語: technical が [ˈtɛk.nɪk.əl] と読むためである。 TeXbookの邦訳出版など日本における TeX の普及に大きく関与したアスキー編集者鈴木嘉平[要出典]によれば、クヌース自身も、英語による講演の中でテックと発音していたとされる[8]。(もちろんこのことは、本来の発音についてのクヌースによる記述と矛盾するわけではない。)
日本語では、テフまたはテックと読まれる。テフは本来のギリシア語読みから、テックは英語読みからそれぞれ来ている。TeXのXの読みについては、元々特殊な表記であることや、クヌースの発音が[k]に聞こえること、アスキー編集者鈴木嘉平[要出典]がそれを元にブログ記事「TeXはテック」[9]を書いたことなどから、混乱があった[10][11]。鈴木は当該記事において、当時「実際の発音はテックである。テフではない。Knuthは明瞭にテックと発音している。」とテフの読みを否定までもする編集部注を付けたとしながら、「これが正しかったのかどうか、今でも疑問を感じる。どうすればよかったのだろう?」と振り返っている。
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と呼ばれている。
比較的よく知られている TeX 上のマクロパッケージには、数学的文書用の AmS-TeX や楽譜用の MusiXTeX などがある。
このほか、TeX を土台として機能を拡張したソフトウェアとして LaTeX がある。一般的には、TeX を直接使うよりも、TeX や LaTeXに何らかのマクロパッケージを読み込ませたものを使うことの方が多い。マクロパッケージも LaTeX 用の物が一般的であり充実している。
TeX とそれに関連するプログラム、TeX や LaTeX のマクロパッケージなどは CTAN(Comprehensive TeX Archive 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
は以下のように表示される。
2024年現在、国際的に統一された文字符号化方式であるUnicodeの文字列を直接読み込めるようにした拡張版が開発され、主流になってきている。
日本語文書に関しては、日本語用であるpTeXを元とした upTeX や e-upTeX が実用的とされている。ただし、国際的な多言語対応への需要や、技術的により新しい機能が搭載された国際的に主流の TeX 処理系へと移行しようとする欲求から、XeTeX, LuaTeX へと移行しようとする流れがあり、XeTeX, LuaTeX 共に日本語組版処理用のパッケージが開発されつつある。
日本語組版処理のできる日本語版の 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 が選ばれることが多かった。
TeX による組版の作業工程は、通常次のようになる。
tex FileName.tex
” などと入力して TeX を起動し、DVI ファイルを生成させる。
この間、作業工程が変わるたびにそれぞれのプログラムを切り替えたり、扱う文書が大きいと章ごとにソースファイルを分割して管理したりと、比較的煩雑な作業を伴う。そのため、この工程に係わる各種のプログラムやソースファイルの管理を一元的に行う TeX 用の統合環境(TeXworks や TeXShop など)がいくつか作成されている。
GUI は PC の普及に一役買ったが、それとともに TeX などのコマンドラインインタプリタに不慣れな PC 利用者が増加した。そのために、GUI に特化した TeX 用統合環境が LyX[21]などいくつか作成されている。
この節の加筆が望まれています。 |
有名な 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]。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.