TeX (/ tɛx /)は、コンピュータ科学者でスタンフォード大学教授のドナルド・クヌース[2]によって設計・執筆され、 1978年に初めてリリースされた、無料のオープンソースソフトウェア組版プログラムです。現在では、この用語は、オリジナルのTeX言語を中心に構築された拡張機能のシステム(TeXエンジンと呼ばれるソフトウェアプログラム、TeXマクロのセット、追加の組版機能を提供するパッケージなど)を指します。TeXは複雑な数式を組版するための一般的な手段であり、最も洗練されたデジタル組版システムの1つとして注目されています。[ 3 ]
TeXは学術界で広く利用されており、特に数学、コンピュータ科学、経済学、政治学、工学、言語学、物理学、統計学、量的心理学などの分野で用いられています。ほとんどのUnix環境では、以前主流だったフォーマットシステムであるUnix troffに取って代わっています(ただし、troffは依然としてUNIXドキュメントのデフォルトフォーマットとして残っています)。また、 LaTeX、ConTeXt、その他のマクロパッケージの基盤として、他の多くの組版作業にも使用されています。
TeX は、誰でも最小限の労力で高品質の本を作成できるようにすることと、あらゆるコンピュータでいつでもまったく同じ結果が得られるシステムを提供すること (フォント記述用のMetafont言語とComputer Modern書体ファミリーとともに) という 2 つの主な目標を念頭に置いて設計されました。[ 4 ] TeX はフリー ソフトウェアであるため、幅広いユーザーが利用できます。
1968 年にクヌースの『コンピュータプログラミングの技法』の最初の紙版が出版されたとき、 [ 5 ]モノタイプ機でホットメタル活字を使用して組版されました。19 世紀に遡るこの方法は、クヌースが評価した「古典的なスタイル」を生み出しました。[ 6 ] 1976 年に第 2 版が出版されたとき、モノタイプ技術は写真植字にほぼ置き換えられ、元のフォントが入手できなくなったため、本全体を再度組版する必要がありました。1977 年 3 月 30 日にクヌースが新しい本のゲラ刷りを受け取ったとき、彼はそれが劣っていることに気づきました。失望したクヌースは、独自の組版システムを設計し始めました。
クヌースは初めて高品質のデジタル組版システムの出力を見て、デジタルタイポグラフィに興味を持つようになった。1977年5月13日、彼はTeXの基本機能について自分宛てのメモを書いた。[ 7 ]彼は1978年のサバティカル休暇中にこれを完成させるつもりだった(ただし、最終的に言語の構文が確定したのは1989年だった)。ガイ・スティールは、クヌースがTeXの最初のバージョンを開発していた1978年の夏にたまたまスタンフォード大学に滞在していた。スティールはその年の秋にマサチューセッツ工科大学に戻ると、TeXの入出力(I/O)を書き直し、非互換タイムシェアリングシステム(ITS)オペレーティングシステム上で動作するようにした。TeX78と呼ばれるTeXの最初のバージョンは、スタンフォード大学のWAITSオペレーティングシステム上でPDP-10で動作するようにSAILプログラミング言語で書かれた。[ 8 ]
TeXの後のバージョンでは、クヌースはリテラルプログラミングという概念を考案しました。これは、同じオリジナルファイルからコンパイル可能なソースコードと、TeXで組版された相互リンクされたドキュメントを生成する方法です。使用される言語はWEBと呼ばれ、DEC PDP-10 Pascalでプログラムを生成します。
TeX82 は、TeX をゼロから書き直した新しいバージョンで、1982 年に公開されました。その他の変更点として、オリジナルのハイフネーション アルゴリズムがFrank Liangによって書かれた新しいアルゴリズムに置き換えられました。TeX82 はまた、異なるコンピュータ ハードウェア間で結果の再現性を確保するために、浮動小数点演算ではなく固定小数点演算を使用し、 [ 9 ] Guy Steele の熱心な働きかけにより、真のチューリング完全なプログラミング 言語が含まれています。 [ 10 ] 1989 年に、Donald Knuth は TeX とMetafontの新しいバージョンをリリースしました。 [ 11 ]プログラムの安定性を維持したいという彼の願望にもかかわらず、Knuth はテキスト入力に 128 種類の文字では外国語に対応するには不十分であることに気づきました。そのため、TeX バージョン 3.0 の主な変更点は、 8 ビット入力を扱えるようになり、テキスト入力に 256 種類の文字を使用できるようになったことです。TeX3.0 は 1990 年 3 月 15 日にリリースされました。 [ 12 ]
TeX はバージョン 3 以降、独自のバージョン番号付けシステムを使用しており、更新は小数点の末尾に桁を追加することで示され、バージョン番号は漸近的にπに近づきます。これは、TeX が現在非常に安定しており、マイナー アップデートのみが予想されるという事実を反映しています。現在の TeX のバージョンは 3.141592653 で、最後に更新されたのは 2021 年です。[ 13 ]設計はバージョン 3.0 以降固定されており、新しい機能や根本的な変更は追加されないため、すべての新しいバージョンにはバグ修正のみが含まれます。[ 14 ]ドナルド クヌース自身は TeX を改善できるいくつかの領域を提案していますが、彼は、現在と将来で同じ出力を生成する変更されていないシステムを持つことが、新しい機能を導入することよりも重要であると強く信じていると述べています。このため、彼は「(私の死後に行われる)絶対的な最終変更」はバージョン番号をπに変更することであり、その時点で残りのすべての「バグ」は「機能」になると述べている。[ 15 ]同様に、Metafont のバージョン 2.0 以降は漸近的にe (現在 2.7182818) に近づき、同様の変更が Knuth の死後に適用される予定である。[ 14 ]
TeX という名前は、開発者によって/ t ɛ x /と発音されることを意図しており、最後の子音はloch です。[ 16 ]この名前の文字は、ギリシャ語の大文字のタウ、イプシロン、カイを表すことを意図しており、TeX はギリシャ語で「芸術」と「工芸」の両方を意味するτέχνη ( ΤΕΧΝΗ technē ) の略語であり、 technicalの語源でもあります。英語話者はしばしば、 technicalの最初の音節のように/ t ɛ k /と発音します。Knuth は、ベースラインの下に「E」を配置し、文字間の間隔を狭くして組版するように指示しています。Knuth がTeXbookで述べているように、これはTeX を、テキスト実行プロセッサである TEX (Honeywell Information Systems によって開発) などの他のシステム名と区別するために行われます。[ 17 ]
TeX コマンドは一般的にバックスラッシュで始まり、中括弧でグループ化されます。TeX の構文上の特性のほとんどすべてが実行時に変更できるため、TeX 入力は TeX 自体以外では解析が困難です。TeX はマクロとトークンに基づく言語です。多くのコマンド(ほとんどのユーザー定義コマンドを含む)は、展開不可能なトークンだけが残るまで実行時に展開され、その後、トークンが実行されます。展開自体は実質的に副作用がありません。マクロの末尾再帰はメモリを消費せず、if-then-else 構造が利用可能です。これにより、TeX は展開レベルでもチューリング完全な言語になります。 [ 18 ]システムは 4 つのレベルに分けることができます。最初のレベルでは、入力ファイルから文字が読み込まれ、カテゴリ コード (略して「catcode」と呼ばれることもあります) が割り当てられます。バックスラッシュ (実際にはカテゴリ 0 の任意の文字) の後に文字 (カテゴリ 11 の文字) または他の 1 つの文字が続く組み合わせは、制御シーケンス トークンに置き換えられます。この意味では、この段階は字句解析に似ていますが、数字から数値を生成するわけではありません。次の段階では、展開可能な制御シーケンス(条件文や定義済みマクロなど)が、対応するテキストに置き換えられます。第 3 段階への入力は、文字のストリーム(特別な意味を持つ文字を含む)と展開不可能な制御シーケンス(通常は代入とビジュアルコマンド)です。ここで、文字が段落に組み立てられ、TeX の段落分割アルゴリズムが段落全体にわたってブレークポイントを最適化することで機能します。第 4 段階では、行やその他の素材の縦方向のリストがページに分割されます。
TeXシステムは、すべての文字と記号のサイズを正確に把握しており、この情報を使用して、1行あたりの文字数と1ページあたりの行数の最適な配置を計算します。そして、すべての文字の最終的な位置を含むDVIファイル(「デバイス非依存」)を生成します。このDVIファイルは、適切なプリンタドライバがあれば直接印刷することも、他の形式に変換することもできます。現在では、DVI生成を完全にスキップするpdfTeXがよく使用されています。 [ 19 ]基本TeXシステムは、プリミティブと呼ばれる約300個のコマンドを理解します。[ 20 ]これらの低レベルコマンドはユーザーが直接使用することはほとんどなく、ほとんどの機能はフォーマットファイル(大規模なマクロコレクションがロードされた後のTeXのプリダンプされたメモリイメージ)によって提供されます。約600個のコマンドを追加するKnuthの元のデフォルトフォーマットは、Plain TeX。 [ 21 ]最も広く使われている形式は、もともとLeslie Lamportによって開発されたLaTeXで、書籍、手紙、スライドなどの文書スタイルを組み込んでおり、参照やセクションと方程式の自動番号付けのサポートを追加しています。もう1つの広く使われている形式であるAMS-TeXは、アメリカ数学会によって作成されており、ジャーナルが独自のスタイルに合わせて変更できる、よりユーザーフレンドリーなコマンドを多数提供しています。AMS-TeXの機能のほとんどは、「AMSパッケージ」(例:、)と「AMS文書クラス」(例:、 )を使用することでLaTeXで使用できます。これはAMS-LaTeXと呼ばれます。 [ 22 ]他の形式には、主にデスクトップパブリッシングに使用され、 PragmaのHans Hagenによって主に書かれたConTeXtがあります。amsmathamssymbamsartamsbook
TeXソフトウェアには、TeXがリリースされた当時、他の組版プログラムにはなかった、あるいは品質が劣っていた機能がいくつか組み込まれています。これらの革新的な機能の中には、興味深いアルゴリズムに基づいたものもあり、クヌースの教え子たちの論文テーマにもなりました。これらの発見の中には、現在では他の組版プログラムにも取り入れられているものもありますが、数式における行間調整のルールなど、依然として独自のものもあります。

TeX 言語の主な目的は書籍出版社向けの高品質な組版であるため、クヌースは数式の間隔ルールに多くの注意を払いました。[ 23 ] [ 24 ]彼は、数学の組版の優れた基準であると考える 3 つの作品を取り上げました。ハンス・ヴォルフの監督の下、 Addison-Wesley Publishing house ( 『The Art of Computer Programming 』の出版社) によって組版された書籍、1910 年頃の数学雑誌Acta Mathematicaの版、およびオランダの数学雑誌Indagationes Mathematicaeのコピーです。クヌースはこれらの印刷された論文を綿密に調べ、間隔のルールを整理しました。[ 25 ] [ 26 ] TeX はいくつかの基本的なルールと適切な間隔を指定するために必要なツールを提供しますが、正確なパラメータは数式の組版に使用されるフォントによって異なります。たとえば、クヌースのComputer Modernフォントの間隔は長年にわたって正確に微調整され、現在では設定されています。しかし、クヌースがAMS Eulerなどの他のフォントを初めて使用したとき、新しい間隔パラメータを定義する必要があった。[ 27 ]
TeX における数式の組版は、特にフォント メトリクスの技術的な詳細に関して批判がないわけではありません。これは、ストレージ要件にかなりの注意が払われていた時代に設計されたものです。このため、いくつかの「ハック」によって一部のフィールドが過負荷になり、それがさらに別の「ハック」を必要とする結果となりました。美的レベルでは、根号のレンダリングも批判されています。[ 28 ] OpenType数式フォント仕様は、大部分が TeX から引き継いでいますが、いくつかの新しい機能/強化があります。[ 29 ] [ 30 ] [ 31 ]
手動の組版と比較すると、行の均等割り付けの問題は、TeX のようなデジタル システムで簡単に解決できます。行の適切な区切り点が定義されていれば、単語間のスペースを自動的に広げて行を埋めることができます。したがって、問題は、最も視覚的に好ましい結果が得られる区切り点のセットを見つけることです。多くの行の区切りアルゴリズムは貪欲アルゴリズムを使用しており、各行の区切り点が 1 つずつ決定され、一度選択された区切り点は変更されません。[ 32 ]このようなシステムでは、次の行に与える影響に応じて区切り点を定義することはできません。これに対し、TeX は、Donald Knuth と Michael Plass によって開発されたグローバル最適化行の区切りアルゴリズム[ 33 ]を使用しており、段落内のすべての可能な区切り点を考慮します。
正式には、このアルゴリズムは、各改行の可能性に関連付けられた「悪さ」と呼ばれる値を定義します。行の幅を正しくするために行のスペースが過度に伸縮する必要がある場合、悪さは増加します。改行点が特に望ましくない場合、たとえば単語をハイフンでつなぐ必要がある場合、連続する2行をハイフンでつなぐ場合、または非常にゆるい行の直後に非常に狭い行が続く場合、ペナルティが追加されます。次に、アルゴリズムは、結果として得られる行の悪さ(ペナルティを含む)の二乗和を最小にする改行点を見つけます。段落に考えられる分岐点、素朴に評価しなければならない状況の数はしかし、動的計画法を用いることで、アルゴリズムの複雑さを以下のように低減できる。(ビッグオー記法を参照)。さらに簡略化すると(例えば、段落の最初の単語のハイフネーションや、行が過剰に詰まっているなど、極めて可能性の低いブレークポイントをテストしないなど)、実行時間が次のようになる効率的なアルゴリズムが得られます。、 どこは行の幅です。同様のアルゴリズムは、孤立行(段落の残りの部分が次のページまたは前のページにあるのに、ページに単独で表示される行)を避けるために、段落を 2 ページにまたがって分割する最適な方法を決定するために使用されます。ただし、一般に、Michael Plass の論文では、図の配置という複雑さが加わるため、ページ分割問題がNP 完全である可能性があることが示されています。 [ 34 ] TeX の行分割アルゴリズムは、Adobe InDesign(デスクトップ パブリッシングアプリケーション)[ 35 ]やGNU fmt Unixコマンドラインユーティリティ[ 36 ]など、他のいくつかのプログラムに採用されています。
行に適切な改行が見つからない場合、システムは単語をハイフネーションしようとします。TeX のオリジナルバージョンでは、単語の接頭辞と接尾辞の削除、および母音 - 子音 - 子音 - 母音の形式のパターンで 2 つの子音の間に改行を挿入するかどうかを決定する一連のルールに基づくハイフネーション アルゴリズムが使用されていました (ほとんどの場合可能です)。[37] TeX82 では、文字グループのブレークポイントに優先順位を割り当てるために、1983年にFrank Liangによって設計された新しいハイフネーション アルゴリズムが導入されました。まず、ハイフネーションされた単語のコーパス (50,000 語のリスト) からハイフネーション パターンのリストが自動的に生成されます。たとえば、TeX が単語encyclopediaで許容されるハイフネーション位置を見つける必要がある場合、拡張単語.encyclopedia.のすべてのサブワードを考慮します。ここで、.は単語の開始または終了を示す特別なマーカーです。サブワードのリストには、長さ 1 のサブワード ( .、e、n、c、yなど)、長さ 2 のサブワード ( .e、en、ncなど) など、長さ 14 のサブワード (マーカーを含む単語自体) までが含まれます。TeX は次にハイフネーション パターンのリストを調べ、各位置でのハイフネーションの望ましさを計算したサブワードを見つけます。この単語の場合、11 個のパターンが一致します。つまり、1 c 4 l 4、1 cy、1 d 4 i 3 a、4 edi、e 3 dia、2 i 1 a、ope 5 d、2 p 2 ed、3 pedi、pedia 4、y 1 c です。単語内の各位置について、TeX は一致するすべてのパターンの中から最大値を計算し、en 1 cy 1 c 4 l 4 o 3 p 4 e 5 d 4 i 3 a 4を生成します。最終的に、許容される位置は奇数で示される位置であり、許容されるハイフネーションen-cy-clo-pe-di-aが生成されます。このサブワードに基づくシステムにより、非常に一般的なパターン (たとえば、2 i 1 a) のような低い指示番号 (奇数または偶数) を持つパターンがあり、必要に応じて、より具体的なパターン ( 1 d 4 i 3 a など) に置き換えることができます。これらのパターンは、元の辞書のハイフンの約 90% を検出します。さらに重要なのは、不要なハイフンを挿入しないことです。また、例外 (パターンが正しいハイフネーションを予測しない単語) のリストが Plain TeX 形式に含まれており、ユーザーが追加で指定することもできます。[ 38 ] [ 39 ]
Metafontは厳密にはTeXの一部ではありませんが、デザイナーが文字をアルゴリズム的に記述できるフォント記述システムです。表示される実際の文字を生成するために、かなり標準的な方法でベジェ曲線を使用しますが、Knuthはビットマップディスプレイでのラスタライズの問題にかなりの注意を払っています。John Hobbyによる別の論文では、「ブラシ軌跡」のデジタル化の問題をさらに探求しています。この用語は、Metafontが文字を抽象的なブラシ(および消しゴム)で描画されたものとして記述するという事実に由来しています。TeXはビットマップフォントに基づいていると一般的に考えられていますが、実際には、これらのプログラムは、その寸法以外に、使用しているフォントについて何も「知りません」。PostScript Type 1やTrueTypeなどの他のタイプのフォントを適切に処理するのは、デバイスドライバの責任です。Computer Modern(一般に「TeXフォント」として知られています)は、AMS数式フォントと同様に、Type 1形式で無料で利用できます。 pdfTeX、XeTeX、LuaTeXなど、PDFに直接出力するTeXシステムのユーザーは、一般的にMetafontの出力機能を全く使用しません。
TeX文書は、独特なマクロ言語を用いて記述・プログラミングされます。このマクロ言語の実行は、展開段階と実行段階から成り立っており、両者は直接相互作用しません。展開段階には、マクロ定義の逐語的な展開と条件分岐の両方が含まれ、実行段階には、変数やレジスタの設定、ボックスにグリフを追加する実際の組版処理などが含まれます。
マクロの定義には、コマンドのリストだけでなく、呼び出しの構文も含まれます。これは、M4などの広く使われている字句解析プリプロセッサとは異なり、マクロ本体が定義時にトークン化される点が特徴です。
TeXマクロ言語は、LaTeXやConTeXtをはじめとする、より大規模な文書作成システムを作成するために使用されてきた。

プレーンなTeXで記述されたサンプル「Hello World」プログラムは以下のとおりです。
Hello, World \bye % はファイルの終わりを示します。最終出力には表示されません。これはmyfile.texというファイルにあるかもしれません。.texは、プレーン TeX ファイルの一般的なファイル拡張子です。デフォルトでは、行のパーセント記号の後に続くものはすべてコメントであり、TeX によって無視されます。このファイルに対して TeX を実行すると (たとえば、コマンドライン インタプリタで入力するか、グラフィカル ユーザー インターフェイスから呼び出す)、 myfile.dviという出力ファイルが作成され、ページのコンテンツがデバイス非依存形式 (DVI) で表されます。DVIファイルは、画面で表示することも、デバイス ドライバが存在するさまざまなプリンタに適した形式に変換することもできます ( TeXが作成された当時は、プリンタ サポートは一般的にオペレーティングシステムの機能ではありませんでした)。Knuth は、TeX には出力形式として DVI を必要とする固有のものは何もないと述べており、TeX の後のバージョン、特に pdfTeX、XeTeX、LuaTeX はすべて、PDFへの直接出力をサポートしています。tex myfile.tex
TeXは、数式専用の異なるテキスト構文を提供します。例えば、二次方程式の解である二次方程式の解の公式は、次のように表示されます。
数式は、人が手書きするか、数式をタイプセットするような形式で印刷されます。文書では、数式モードに入るには、$ 記号で始め、TeX 構文で数式を入力し、同じ記号で閉じます。クヌースは、数式の組版は伝統的に高価であると考えられていたため、プレーン TeX で数式モードの開始と終了を示すためにドル記号を選んだと冗談交じりに説明しました。[ 40 ]表示数式(新しい行の中央に表示される数式)は似ていますが、単一の $ 記号の代わりに $$ を使用します。たとえば、上記の二次方程式の表示数式は次のようになります。
コンピュータ科学、数学、工学、物理学などのいくつかの技術分野では、TeX は事実上の標準となっています。Addison -Wesley、Cambridge University Press、Elsevier、Oxford University Press、Springerから出版された書籍を含め、何千冊もの書籍が TeX を使用して出版されています。これらの分野の多数のジャーナルは TeX または LaTeX を使用して作成されており、著者は TeX で書かれた原稿を提出することができます。[ 41 ]辞書や法律出版物など、他の分野の多くの出版物も TeX を使用して作成されていますが、TeX は主に数学の組版用に設計されたため、より技術的な分野ほど成功していません。
ドナルド・クヌースは TeX を設計したとき、単一の組版システムがすべての人のニーズを満たすとは考えていませんでした。代わりに、プログラム内に多くのフックを設計して拡張機能を作成できるようにし、ソースコードを公開して、出版社がそれぞれのニーズに合わせたバージョンを設計することを期待しました。そのような拡張機能は作成されました (クヌース自身によるものも含む) が、[ 42 ]ほとんどの人はマクロのみを使用して TeX を拡張しており、TeX は技術的な組版に関連付けられたシステムのままです。[ 43 ] [ 44 ] [ 26 ]
LaTeX で化学方程式、構造、反応を組版するためのmhchem、XyMTeX、chemfig、chemmacrosなどのパッケージ。 [ 45 ]
TeX を使用すると、XML データの高度なレイアウトを自動生成できます。2 つの記述言語の構文の違いは、TeXMLの助けを借りて克服できます。XML 出版の文脈では、TeX はXSL-FOの代替として考えることができます。TeX により、数学分野の科学論文をクライアント側でレンダリングできる比較的小さなファイルに縮小することができ、大きなファイルの送信が困難だった初期のインターネットや出現したワールド ワイド ウェブ上で、完全に組版された科学論文を交換することができました。これにより、arXiv のような科学論文のリポジトリの作成への道が開かれ、中間出版社なしで論文を「公開」できるようになりました。[ 46 ]
現在のTeXソフトウェアのオリジナルソースコードはWEBで記述されています。WEBは、読みやすさと移植性を確保するために、 TeXで書かれたドキュメントとPascalのサブセットを組み合わせたものです。例えば、TeXはすべての動的メモリ割り当てを固定サイズの配列から自身で行い、内部計算には固定小数点演算のみを使用します。その結果、TeXはほぼすべてのオペレーティングシステムに移植されており、通常はPascalコードを直接コンパイルするのではなく、 web2cプログラムを使用してソースコードをCに変換しています。クヌースは1982年以来、プログラムで修正したすべてのバグと行った変更について非常に詳細なログを保持しています。2025年現在このリストには 440 件のエントリが含まれていますが、TeX の最終変更として彼の死後に行われるべきバージョン変更は含まれていません。[ 47 ] [ 48 ]クヌースは、 TeX のバグを見つけて報告した人に金銭的な報酬を提供しています。バグ 1 件あたりの報酬は US$2.56 (1 16 進ドル[ 49 ] ) から始まり、毎年倍増し、現在の $327.68 で固定されました。バグの報告が非常に少なかったため、クヌースは比較的少ない金額しか失っていません。さらに、受け取った人は、小切手を換金するのではなく、TeX のバグを発見した証拠として額装することが知られています。[ 50 ] [ 51 ]
詐欺師がインターネット上で彼の小切手のスキャンコピーを見つけ、それを使って彼の銀行口座からお金を抜き取ろうとしたため、クヌースはもはや本物の小切手を送っていませんが、バグ報告を提出した人は代わりにサン・セリフ銀行でクレジットを受け取ることができます。[ 52 ]
TeXは通常、TeX本体、 Metafont、および組版システムを使用するために必要なすべてのフォント、ドキュメント形式、ユーティリティを含む、簡単にインストールできるバンドルとして提供されます。LinuxやApple macOSなどのUNIX互換システムでは、TeXはより大規模なTeX Liveディストリビューションの一部として配布されます。(TeX Liveが登場する以前は、teTeXディストリビューションがUNIX互換システムの事実上の標準でした。)Microsoft Windowsでは、MiKTeXディストリビューション(proTeXtによって拡張)とMicrosoft Windows版のTeX Liveが提供されています。
TeXをベースとした文書処理システムは数多く存在し、中でもjadeTeXは、 James Clark氏のDSSSL Engineからの印刷のバックエンドとしてTeXを使用しているほか、Arbortext出版システムやGNU文書処理システムであるTexinfoも挙げられる。TeXは1984年以来、GNUオペレーティングシステムの公式組版パッケージとなっている。
TeXには数多くの拡張機能や関連プログラムが存在し、その中には参考文献リスト作成用のBibTeX(LaTeXに同梱)、PDF出力を直接生成できるTeX互換エンジン(従来のDVI出力も引き続きサポート)、UnicodeとOpenTypeをサポートするTeX互換エンジンXeTeX 、そして基盤となるTeXルーチンやアルゴリズムに深く関与するLuaランタイムを含むUnicode対応のTeX拡張機能LuaTeXなどがあります。ほとんどのTeX拡張機能は、包括的TeXアーカイブネットワーク(CTAN)から無料で入手できます。
ドナルド・クヌースは何度か[ 53 ] [ 54 ] [ 55 ] [ 26 ] TeX のソースコードは「パブリック ドメイン」に置かれており、このソースコードの変更や実験を強く推奨していると述べています。しかし、クヌースは TeX のすべてのバージョンの出力の再現性を非常に重視しているため、変更されたバージョンは TeX やそれに紛らわしい類似の名前で呼ばれてはなりません。この規則を強制するために、システムの実装は、TeX と呼ばれる前に TRIP テスト[ 56 ]と呼ばれるテスト スイートに合格する必要があります。ライセンスの問題は、TeX ソース コードの冒頭に含まれるステートメント[ 57 ]によってやや混乱しています。このステートメントは、「すべての権利は留保されています。このファイルのコピーは、コピーに一切変更を加えない場合にのみ許可されます」と述べています。この制限は、ファイル名が tex.web である限り、 ソース コードを変更することを禁止していると解釈する必要があります。 tex.web (および mf.web) の冒頭にある著作権表示は、2021 年にこれを明示的に示すように変更されました。この解釈は、ソースコードで TRIP テストが言及されている箇所で後ほど確認されています (「このプログラムが変更された場合、結果として得られるシステムは 'TeX 'と呼ばれるべきではありません」 )。[ 58 ]アメリカ数学会は1980 年代初頭にTeX の商標を主張しようとしましたが、当時「TEX」(すべて大文字)がHoneywellによってテキスト処理システム「Text EXecutive」用に登録されていたため、却下されました。
TeX のソースコードは基本的にパブリック ドメインにあるため、他のプログラマーはシステムを改良することが許可されており (明示的に推奨されています)、変更された TeX を配布するには別の名前を使用する必要があり、ソース コードが進化し続ける可能性があることを意味します。たとえば、Omegaプロジェクトは 1991 年以降に開発され、主に TeX の多言語組版機能を強化することを目的としていました。[ 59 ] Knuth は、「非公式」な変更バージョン、たとえば、左から右と右から左の書き方で書かれたテキストを同じドキュメント内で混在させることができる TeX -XeT を作成しました。 [ 42 ]

TeX コミュニティの注目すべき組織には、現在TUGboatを発行し、以前はThe PracTeX Journalを発行していた TeX Users Group (TUG) があり、 TeX に関連するデジタル タイポグラフィの幅広いトピックを扱っています。Deutschsprachige Anwendervereinigung TeX (DANTE) は、ドイツの大規模なユーザー グループです。TeX Users Group は、教育および科学目的で 1980 年に設立され、タイポグラフィとフォント デザインに関心があり、Knuth によって発明された TeX 組版システムのユーザーである人々のための組織を提供しています。TeX Users Group は、世界中の TeX ユーザーの利益を代表しています。TeX Users Group は、ジャーナルTUGboat を年 3 回発行しています。[ 60 ] DANTE は、Die TeXnische Komödie を年 4 回発行しています。その他のユーザーグループには、デンマークのDK-TUG 、フランスのGUTenberg、イタリアのGuIT、オランダのNTG、英国のUK-TUGなどがあり、これらのユーザーグループが共同で完全なリストを維持している。[ 61 ]
TeXを扱うために設計されたエディタは数多く存在する。
<math>タグで囲む必要があります。クヌースは、少なくともメタフォントの書き換えに関しては、間違いなくコードの大部分を自分で書いた。これについては私自身が個人的に知っている。しかし、彼の教え子たち(マイケル・プラスやジョン・ホビーなど)は、TeXとメタフォントで使用されているアルゴリズムの開発に携わった。