TeX

マークアップ言語によるコンピュータ組版処理システムのひとつ
TeX Users Groupから転送)

TeX[2] (テフもしくはテック[3]) は,アメリカのコンピュータ科学者、ドナルド・クヌース(Donald E. Knuth)が開発した組版システム[4][5]。またそのシステムで文書を作成する際に用いられる、レイアウトや書式などを指定するマークアップ言語[4]。ロゴはTeX。広く有志による拡張などが続けられている。

テフ
The TeX logo
作者 Donald E. Knuth
初版 1978年 (45年前) (1978)
最新版
3.141592653 / 2021年2月5日 (2年前) (2021-02-05)[1]
リポジトリ ウィキデータを編集
プログラミング
言語
WEB
対応OS クロスプラットフォーム
サポート状況 開発中
種別 組版処理
ライセンス パーミッシブ・ライセンス
公式サイト TeX Users Group (TUG) home page
テンプレートを表示

概要編集

1976年、ドナルド・クヌースは自身の著書 The Art of Computer Programming の第2巻の改訂版の作業を進めようとしていた時、旧版で使われていた鉛版組版en:Hot metal typesetting)の職人仕事の美しさが、当時の写植では再現できていないことに憤慨し、自分自身が心ゆくまで組版を制御するために開発を決意した。→#開発の経緯など

TeXの特徴編集

TeXは以下のようなメリットがある[6]

デメリットとしては次のことが挙げられる。

  • せっかく使い方を覚えても、基本的には学校の中でしか使われていない。企業の中では別のシステムしか使われておらず、TeXが使われていることは絶対に無いので、操作方法を記憶していても役に立たない。現在ではもっと効率が良い記述法を使う統合的な技術がある。[7]

ロゴと表記編集

  は、正確には英語のアルファベットではなく、ギリシア文字Τ(タウ)- Ε(イプシロン)- Χ(カイ)であり、ギリシア語: τέχνη(テクネー。「技術、芸術」)に由来している。

ロゴはE を少し下げて、字間を詰めて書く。

プレーンテキストなど、たいていの場合はそれができないし、誰かの文章中で扱われる場合のスタイルを指定する権限は作品の作者にも全く無い[注釈 1]ので、 TeX と表記する(なお、“TEX”や“Tex”と表記するのは誤り)。

発音のしかた編集

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

仕様編集

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の用途を拡張したマクロパッケージとして、他に次のようなものがある。

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

補足編集

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

TeXとLaTeXの相違点はLaTeXを参照のこと。LaTeXにはTeXより便利な機能が多い。[注釈 4]

数式の表示例編集

たとえば

-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[注 1]および磯崎秀樹による NTT JLaTeX などがある。

TeXの日本語対応において技術的に最も大きな課題は、マルチバイト文字への対応である。pTeX(および前身の日本語TeX)は、JIS X 0208文字集合とした文字コードISO-2022-JPEUC-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[18]や ptetex3[19][20]pTeX のみを採用している。
  • Microsoft Windows 用の主な日本語対応 TeX 配布形態である W32TeX[21]pTeX を扱える(NTT JTeX も扱える)。
  • pTeX の扱い方を解説する文献の方が、NTT JTeX のものに比べて、出版物と Web 上文書の両方で多い。
  • pTeX は縦組みにも対応しているが、NTT JTeX は対応していない。

TeXによる組版の作業工程編集

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

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

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


開発の経緯など編集

1976年、スタンフォード大学で教授をしていたドナルド・クヌースが自身の著書 The Art of Computer Programming の第2巻の改訂版の作業を進めようとしていた時、旧版で使われていた鉛版組版en:Hot metal typesetting)の職人仕事の美しさが、当時の写植では再現できていないことに憤慨し、自分自身が心ゆくまで組版を制御するために開発を決意した。

クヌースはまず、伝統的な組版およびその関連技術に対する広範囲にわたる調査を行い、その調査結果を取り入れることで、商業品質の組版ができる、柔軟で強力な組版システムを開発した。そして、技術と同時に芸術をも意味する言葉であるテクネー(τέχνη)にあやかって「TeX」(テフあるいはテック[注釈 5])と名付けられた[24]

当初の開発は本業である研究や教育の合間仕事であったが、クヌースには1978年に1年間のサバティカルがあったのでその1年間これの開発に集中して完成させるつもりであった。しかし実際には、同年に初版をリリースしたものの、その後も改訂を続けることとなった。最終的に、後述する「完成版」の系列であるバージョン3を最初にリリースできたのは、実に1989年のことであった。 TeXを他人が改造したり拡張したりした場合について、それを直接配布することをクヌースは許しておらず、change fileというメカニズム(※)を利用して差分を添付する、という形で行わなければならない。

※当時まだ diff と patch が一般的に広く使われていなかったので、クヌース自身が「change file」も開発した。

このような制限があるので、いわゆる「バザールモデル」としてはあまりよろしくないが、「オープンソースの定義」では(そのような制限との妥協の産物である)第4項により、差分等を添付した再配布を許しているならば、派生物の配布にそのような制限があってもよい、ということになっているため、一応「オープンソースの定義」には合致している。

 
クヌースの賞金小切手(一部ボカシ入)

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

バージョン番号のお遊び

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

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

GUI 環境とTeX編集

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

関連ソフトウェア編集

コミュニティ編集

 
TeX Users Group のロゴ

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

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

脚注編集

補足編集

  1. ^ NTT JTeX は千葉大学の櫻井貴文によって UNIX システムに移植され、メンテナンスされている。現在、「Software by Takafumi SAKURAI」で公開されている。
  2. ^ 各 DVI ウェアの間には DVI ファイルの解釈・表示について互換性がない場合がある。特に、ある DVI ウェアに依存したパッケージをソースファイルに用いるなどして、その DVI ウェア用の専用命令文 (special) を埋め込んで作成した DVI ファイルは、当然ながらその専用命令文を解釈可能な DVI ウェアでなければ画面表示・印刷などが正しくできない。
  3. ^ 2021年2月現在のバージョンは 3.141592653 である。
  4. ^ 2021年2月現在のバージョンは 2.71828182 である。
  1. ^ 「製作者のドナルド・クヌースにより要請されている。」「だからその要請に従って、他の言語の記述ルールを破壊してもきっといいのだろう」と考えてしまうことがとんでもない間違いである。 当たり前だが、各言語には言語の書記ルールがある。また、どんな言語の中の、どんな名称でも、書き手がスタイルを決定する。文章で書かれる対象の製品の作者が、「オレの製品名だけはボールドで書け」とか「オレの製品の表記の活字はサンセリフを使え」などと指定する権限は全く無い。とんだ勘違いである。たとえあるタイ人が「オレの製品だけはタイ文字で書いてくれ」と言おうが、たとえば中国人なら漢字で書くし、イギリス人なら英語のアルファベットで書く。たとえば誰かが「オレの製品だけはキリル文字で書いてくれ」と言おうが、タイ人はタイ文字で表記するし、イギリス人は英語のアルファベットで書く。世界では様々な言語を母語としている人がおり、文章中で書くスタイルや、どんな文字で表記するかは、書く側が決めることである。ましては、ある文字だけ何割だけ下げてくれとか、何割だけ上げてくれ、などという要請をしては絶対にいけない。そんなことをしたら世界中の言語の書記体系が破壊されてしまう。それを許したら、「2文字目だけは5行上に表示し、4文字目だけは3行下の6センチ右に表示するようにしてくれ」とか、とんでもない要請をする者が現れる。
    企業などが用いている商業用のロゴと、文章中で使われる名称は区別しなければならない。ロゴの場合はパッケージに印刷する場合など、製作者側が自分でロゴを用意して、自分で費用をかけて、自製品のパッケージに刷り込む。費用はあくまで製作者が負担する。どんな理由であれ、ユーザ側に負担を押し付けてよいものではない。
  2. ^ 当たり前だが、大切なことを書いておかない編集者が悪い。さらに最初に「テック」ではなく「テク」と表記を割り当てて、その表記をはっきりと説明しておけば、その後はその表記で使えた。コンピュータ用語は文字数が少ない表記が好まれる。いずれにせよ外国語のカタカナ表記というものは、どれも、原語の発音を完全に音を再現しているわけではないので、若干の選択の余地はあり、最初に関わった人はどの表記にするか、方向性をある程度決めることができるのに、それをしなかったのは明らかに落ち度である。
  3. ^ 大規模なコードのため、多くの Pascal 実装において1個以上のバグを見つけている、ともいわれる
  4. ^ TeXを使用しているといってもLaTeXを利用している、という場合がある。ちなみに、wikipedia上の数式は、Wikipediaサーバ上のLaTeXでSVG画像に変換しているものである。
  5. ^ 実は、ギリシア語のτέχνηをカタカナ表記する時は「テクネー」と書くので、本当は日本語では「テク」と書いてもよい。「テック」というカタカナ表記は、ついつい英語式の発音に引きずられているのに、それを自覚していない表記のしかたである。

出典編集

  1. ^ CTAN: Package TeX”. CTAN. 2021年2月21日閲覧。
  2. ^ 本来なら「テフ」と、カタカナで項目を立てても良い。[1]。ウィキペディアでは、本来ならロゴで項目を立ててはいけない。この項目を立てた人が勘違いをしている。
  3. ^ [2]
  4. ^ a b IT用語辞典 e-word【TeX】
  5. ^ bit 編集部 『bit 単語帳』共立出版、1990年8月15日、155頁。ISBN 4-320-02526-1 
  6. ^ 『LaTeX2ε美文書作成入門』技術評論社、11月27日 2020、p.1頁。 
  7. ^ 「僕が TeX を使うのを辞めた3つの理由」[3]
  8. ^ Knuth 1984, p. 1, Ch. 1: The Name of the Game.
  9. ^ Talpa memorandum: TeXはテック
  10. ^ The TeX Catalogue OnLine, Entry for slides, Ctan EditionRing Server によるミラーリング
  11. ^ AMS-LaTeX — American Mathematical Society
  12. ^ The TeX Catalogue OnLine, Entry for amslatex, Ctan EditionRing Server によるミラーリング
  13. ^ XyMTeX 化学構造式描画システム
  14. ^ The TeX Catalogue OnLine, Entry for XyMTeX, Ctan EditionRing Server によるミラーリング
  15. ^ Werner Icking Music Archive: MusiXTeX Files
  16. ^ The TeX Catalogue OnLine, Entry for MusiXTeX, Ctan EditionRing Server によるミラーリング
  17. ^ the Comprehensive TeX Archive Network
  18. ^ ptexlive Wiki
  19. ^ ptetex—teTeX 用日本語パッチ集
  20. ^ ptetex Wiki
  21. ^ W32TeX(日本語)
  22. ^ dviout/dviprt 開発室 — Oshima Laboratory
  23. ^ The TeX Catalogue OnLine, Entry for dviout, Ctan EditionRing Server によるミラーリング
  24. ^ Knuth 1984.
  25. ^ LyX
  26. ^ The TeX Catalogue OnLine, Entry for MakeIndex, Ctan EditionRing Server によるミラーリング
  27. ^ The TeX Catalogue OnLine, Entry for etex, Ctan EditionRing Server によるミラーリング
  28. ^ The TeX Catalogue OnLine, Entry for Omega, Ctan EditionRing Server によるミラーリング
  29. ^ The TeX Catalogue OnLine, Entry for aleph, Ctan EditionRing Server によるミラーリング
  30. ^ TeXShop — Richard Koch
  31. ^ The TeX Catalogue OnLine, Entry for TeXShop, Ctan EditionRing Server によるミラーリング
  32. ^ TeX 入門 #EasyTeX — 中川 仁
  33. ^ Welcome to GNU TeXmacs (FSF GNU project)
  34. ^ The TeX Catalogue OnLine, Entry for TeXmacs, Ctan EditionRing Server によるミラーリング
  35. ^ TeX Live — TeX Users Group
  36. ^ The TeX Catalogue OnLine, Entry for texlive, Ctan EditionRing Server によるミラーリング
  37. ^ The teTeX Homepage
  38. ^ The TeX Catalogue OnLine, Entry for teTeX, Ctan EditionRing Server によるミラーリング
  39. ^ mimeTeX quickstart
  40. ^ The TeX Catalogue OnLine, Entry for mimeTeX, Ctan EditionRing Server によるミラーリング
  41. ^ Textext — Pauli Virtanen
  42. ^ Inkscape de LaTeX
  43. ^ TUGboat - Communications of the TeX Users Group
  44. ^ The PracTeX Journal home page
  45. ^ Dante e.V.
  46. ^ tex.stackexchange.com
  47. ^ TeX ユーザの集い2009
  48. ^ TeX ユーザの集い2015
  49. ^ TUG 2013 - TeX Users Group

参考文献編集

関連項目編集

外部リンク編集