TeX

（，音译“泰赫”，文本模式下写作TeX），是一个由美国计算机教授高德纳（）编写的功能强大的排版软件。它在学术界十分流行，特别是数学、物理学和计算机科学界。被普遍认为是一个优秀的排版工具，特别是在处理复杂的数学公式时。利用诸如是等终端软件，就能够排版出精美的文本以帮助人们辨认和寻找。

的MIME类型为codice_1。是自由软件。

高德纳最早开始自行编写的原因，是因为当时的排版技术十分粗糙，已经影响到他的巨著《计算机程序设计艺术》的印刷品质。他以典型的黑客思维模式，决定自行编写一个排版软件：。

他计划在1978年的学术休假时完成这项工作，但事实上，直到十多年之后的1989年，TeX语言才被「冻结」（可以使用）。1978年夏天，盖伊·史提尔二世在高德纳编写其第一版的程式时，正好在高德纳所工作的斯坦福大学，当他回到麻省理工学院（MIT）时他在下重写了的输出输入系统。的第一版是用写成的，运行于，采用斯坦福大学的操作系统。在之后的版本中，高德纳（Knuth）发明了所谓的“文学编程”（literate programming），一种从同一源文件自动生成可编译的源代码和高质量的文档的编程方法。这种语言被称为WEB，它所生成的源代码是使用Pascal编程语言。

一个从头开始重写的新版TeX于1982年发布，它被称为TeX82。除了其他修改之外，原本的断字算法被Frank Liang编写的新算法所取代。TeX82还使用了定点而不是浮点，以确保结果在不同的计算机硬件上重现。并且在盖伊·史提尔的大力游说下，TeX82包括一种真正的、图灵完全的编程语言。1989年，高德纳发布了新版本的TeX和Metafont。尽管高德纳希望保持程序的稳定性，但他意识到，只能输入128个不同的字符不足以容纳外语；因此TeX 3.0版本的主要变化是能使用8位元输入，即在文本中允许输入256个不同的字符。

从第三版开始，之后的升级是在小数点后加入一个新数位，使之越来越接近圆周率「」的值。目前的版本是3.14159265。这显示了已经十分稳定，任何的升级都十分细微。高德纳曾表示“最后一次升级是（于我过世后）将版本数改为『』，那时任何余下的漏洞将被看作程序的功能。”

由于TeX的源代码基本上处于公共领域，其他程序员可以（并明确被鼓励）改进系统，但需要使用其他名称来分发修改后的TeX。例如，Omega项目是在1991年之后开发的，主要是为了提高TeX的多语种排版能力。高德纳创建了“非官方”修改版本，例如TeX-XeT，它允许用户在同一文档中混合写入从左到右和从右到左书写系统的文本。

此乃一简易的文本范例。
首先建立一名为codice_2的纯文本，并载有以下内容：

然后在命令行解释器（Command line interpreter）中输入codice_3，之后便会建立一名为codice_4的文件。此文件可用如Yap之类的检视器检视。此档于阅读器可见的是“hello”一词。“\bye”是一个TeX指令，相等于档案结束标记，是不会显示出来的。此DVI文件可在阅读器中直接打印或转换成更普遍的格式，例如PostScript。

另外，使用指令codice_5亦能输出PDF文件。当初创造pdf是因为把DVI转成PostScript再转成PDF所产生的字体显示质量很差（但打印则没问题）。这是由于本身支持点阵字体（Type 3），而此远不及向量字体（Type 1）的显示质量好。

以二次方程为例，

所有方程式在中都是以一对$符号括住。如果要使公式放在新行置中，那么就以$$取代$。例如：

是一套以描述的巨集软件。有很多预设的模版、样式。它比更为结构化，如包含了供建立索引、表格、列表等的巨集和公用软件。例如：

执行

会建立一本为PostScript档的书。如要建立PDF档则可使用

软件在当时拥有其他排版软件没有或不成熟的功能。其中有一些功能得益于排版算法的创新，其中很多成为了高德纳的学生的论文主题。尽管有些功能现在已经被其他排版系统所实现，但仍有部分功能是所特有的，比如数学公式的自动间距调整。

由于的设计目标是实现高质量的书籍排版，高德纳在数学公式的排版上下了很大功夫。
他研究了三种按照老方法排版、排版质量高的书籍：艾迪生韦斯利出版社（即高德纳的《计算机程序设计艺术》的出版商）的出版物，尤其是汉斯·沃尔夫和约瑟夫·拉格朗日的书籍（thermodynamics innovation, +1856）、数学期刊《Acta Mathematica》、和数学期刊《Indagationes Mathematicae》。高德纳通过研究其数学公式的排版，总结出了一套数学公式内部间距的规则，并将其用于。排版数学公式时只是提供了一个间距调整引擎，实际的间距大小由数学字体提供。比如默认的Computer Modern字体提供了一套成熟的间距参数，可以直接使用。

的数学排版功能并非十全十美，有时也招来部分批评。比如诞生的时代的部分机器由于容量不够，不足以存储的所有字体参数，在部分场合需要hack才能正常使用。在美学方面，对根号的处理也招致批评。

OpenType字体技术的数学字体参数基于。

与手动排版相比，计算机排版系统可以自动处理断行问题。大部分排版系统都采用首次拟合法处理断行，即一行一行处理，一行处理完就不管了。的方法是一次处理一个自然段，尝试每一种断行方法，然后选出最优解。两种方法的差异如下：
左边的例子是首次拟合法的结果。第4行单词间的空集中在一处不美观，的方法由于考虑了所有的情况，所以一般情况下能找出较好的方法（即把空分散在1~4段）。

的断行算法里有一个叫做badness（“不美观度”）的参数，空格伸缩量越大badness越大。每一种断行的方式都有一个总体的衡量标准，包括badness、断行、以及行与行之间的疏密差异等。其实并不考虑所有的2种情况，而是采用一种算法复杂度仅为"O"("n")的最短路径算法，加上不考虑空格伸缩量太大的情况，断行所用的时间几乎和段落大小成正比。在分页问题上，并不采用一种考虑所有情况，得出最优解的算法，而是用一页一页处理的方法，因为一是分页的灵活性没有断行那样高，二是当时的计算机没有足够的速度。但是，仍然有避免寡行和孤行的功能。Michael Plass的一篇论文指出，考虑到图表的放置位置的完美分页算法可能为NP完全。的断行算法后来被Adobe InDesign等桌面出版软件所采用。

在断行时，如果一遍不成功，会尝试断字，即把一个诸如“computer”的多音节单词断成“com-”和“puter”或“compu-”和“ter”分在两行。82采用了一套Frank Liang于1983年发明的断字算法。这套算法采用“匹配项”的方法。“匹配项”的作用是找到单词中可能出现的一些字母组合，然后在适当的位置插入数字来表示可能/不可能的断字点。这些“匹配项”对单词的字母与字母之间会给予是否为断字点提示。提示有相对的强弱。如果提示互相冲突，则强的会覆盖弱的。最后留下来的提示决定一处是否为断行点。自带4447条“匹配项”，从.ach4开始到z4zy结束。所有“匹配项”使用1到5这5个数字，其中奇数表示可能为可断字点，偶数表示不为可断字点，大的数字的话语权强于小的数字。例如，h5elo的含义是，单词中如果出现“helo”，那么在“h”和“e”之间有很大把握为可断行点（例如“bach-e-lor”和“ech-e-lon”）；hach4的含义是，单词中如果有“hach”，则“h”后面很可能不是断字点（如“tooth-aches”），虽然把握没有数字5的那么大。例如，对于单词“encyclopedia”，对得上的匹配项有codice_6。插入完所有数字后，留下来的数字中的最大值为codice_7，最后奇数处为可断行点：“en-cy-clo-pe-di-a”。

这种方法可以找到约90%的正确断字点，几乎从不出错。而且，有一个“断字特例表”的功能，对于自带断字算法出错的单词可以手动处理。TUG（用户组）有一份英语单词的特例表。另外，默认不会把单词在前两个字母或后三个字母之间断开，所以encyclopedia一词不会断成“encyclopedi-”和“a”（这样不好看）。

是非常稳定的程序，高德纳悬赏奖励任何能够在中发现程序漏洞（bug）的人。每一个漏洞的奖励金额从2.56美元（16进制的一美元）开始，以后每发现一个bug，都会翻倍，直到目前的327.68美元封顶。然而高德纳从未因此而损失大笔金钱，因为中的漏洞极少，而真正发现漏洞的人在获得支票后往往不愿将其兑现。

到目前为止，关于的最后一个bug是被Oleg Bulatov发现的。

有许多衍生出来的文档处理程序就是基于的，主要的有：

TeXmacs是一个所见即所得的科学文档编辑器，利用字体作为显示字体，具有类似Emacs的编辑方式。它可以导出为文本，PS，PDF文档，以及HTML，XML页面。LyX也是一个类似的工具。

这个词的标准发音为，其中相当于普通话“赫”字的声母，或者苏格兰语“loch”一词中“ch”的发音（X其实是希腊字母 ）。音译“泰赫”。在英语和法语中实际通常读作，音译“泰克”。这个词来自希腊文中的 （TEXNH），希腊文意为“艺术”和“制造”，也是英语中 "technical"（技术）的词源。书写时，三个字母都是大写，字母E应当低于其他两个字母。而不支援下标的系统则只能这样书写：“<nowiki>TeX</nowiki>”。

的用户喜欢创造一些和有关的词汇，例如<nowiki>TeXnician</nowiki>（与英语单词technician，技工的发音相近，意为用户），<nowiki>TeXhacker</nowiki>（TeX程序员，TeX黑客）和<nowiki>TeXnique</nowiki>（与英语单词technique，技巧的发音相近，意为的使用技巧）等。另有人发明一词为<nowiki>TeXpert</nowiki>（TeX高手），但是高德纳本人反对这一名称，因为这里一词的读法是错误的。