TeX(/tɛx/,常被读作/tɛk/,音译“泰赫”,“泰克”,写作“TeX”),是一个由美国计算机教授高德纳(Donald Ervin Knuth)编写的排版软件。TeX的MIME类型为application/x-tex
,是一款自由软件。它在学术界特别是数学、物理学和计算机科学界十分流行。TeX被普遍认为是一个优秀的排版工具,尤其是对于复杂数学公式的处理。利用LaTeX等终端软件,TeX就能够排版出精美的文本以帮助人们辨认和查找。
高德纳最早开始自行编写TeX的原因,是因为当时的电脑排版技术十分粗糙,已经影响到他的巨著《计算机程序设计艺术》的印刷质量。他以典型的黑客思维模式,决定自行编写一个排版软件:TeX。
他计划在1978年的学术休假时完成这项工作,但事实上,直到十多年之后的1989年,TeX语言才被“冻结”(可以使用)。1978年夏天,盖伊·史提尔二世在高德纳编写其第一版的TeX程序时,正好在高德纳所工作的斯坦福大学,当他回到麻省理工学院(MIT)时他在ITS(英语:Incompatible Timesharing System)下重写了TeX的输出输入系统。TeX的第一版是用SAIL编程语言(英语:SAIL programming language)写成的,运行于PDP-10型计算机(英语:PDP-10),采用斯坦福大学的WAITS(英语:WAITS)操作系统。在之后的TeX版本中,高德纳(Knuth)发明了所谓的“文学编程”(literate programming),一种从同一源文件自动生成可编译的源代码和高质量的文档的编程方法。这种语言被称为WEB,它所生成的源代码是使用Pascal编程语言。
一个从头开始重写的新版TeX于1982年发布,它被称为TeX82。除了其他修改之外,原本的断字算法被Frank Liang(英语:Frank Liang)编写的新算法所取代。TeX82还使用了定点而不是浮点,以确保结果在不同的计算机硬件上重现。并且在盖伊·史提尔的大力游说下,TeX82包括一种真正的、图灵完全的编程语言。1989年,高德纳发布了新版本的TeX和Metafont。尽管高德纳希望保持程序的稳定性,但他意识到,只能输入128个不同的字符不足以容纳外语;因此TeX 3.0版本的主要变化是能使用8位输入,即在文本中允许输入256个不同的字符。
从TeX第三版开始,之后的升级是在小数点后加入一个新数位,使之越来越接近圆周率“π”的值。TeX目前的版本是3.14159265。这显示了TeX已经十分稳定,任何的升级都十分细微。高德纳曾表示“最后一次升级是(于我过世后)将版本数改为‘π’,那时任何余下的漏洞将被看作程序的功能。”
由于TeX的源代码基本上处于公共领域,其他程序员可以(并明确被鼓励)改进系统,但需要使用其他名称来分发修改后的TeX。例如,Omega项目是在1991年之后开发的,主要是为了提高TeX的多语种排版能力。高德纳创建了“非官方”修改版本,例如TeX-XeT,它允许用户在同一文档中混合写入从左到右和从右到左书写系统的文本。
此乃一简易的TeX文本范例。首先创建一名为myfile.tex
的纯文本,并载有以下内容:
Hello, World\bye % marks the end of the file; not shown in the final output The quadratic formula is − b ± b 2 − 4 a c 2 a {\displaystyle {\hbox{The quadratic formula is }}\textstyle {-b\pm {\sqrt {b^{2}-4ac}} \over 2a}} 种情况,而是采用一种算法复杂度仅为(2)的最短路径算法,加上不考虑空格伸缩量太大的情况,断行所用的时间几乎和段落大小成正比。在分页问题上,TeX并不采用一种考虑所有情况,得出最优解的算法,而是用一页一页处理的方法,因为一是分页的灵活性没有断行那样高,二是当时的计算机没有足够的速度。但是,TeX仍然有避免寡行和孤行的功能。Michael Plass(英语:Michael Plass)的一篇论文指出,考虑到图表的放置位置的完美分页算法可能为NP完全。TeX的断行算法后来被Adobe InDesign等桌面出版软件所采用。
在断行时,如果一遍不成功,TeX会尝试断字,即把一个诸如“computer”的多音节单词断成“com-”和“puter”或“compu-”和“ter”分在两行。TeX82采用了一套Frank Liang于1983年发明的断字算法。这套算法采用“匹配项”的方法。“匹配项”的作用是找到单词中可能出现的一些字母组合,然后在适当的位置插入数字来表示可能/不可能的断字点。这些“匹配项”对单词的字母与字母之间会给予是否为断字点提示。提示有相对的强弱。如果提示互相冲突,则强的会覆盖弱的。最后留下来的提示决定一处是否为断行点。TeX自带4447条“匹配项”,从.ach4开始到z4zy结束。所有“匹配项”使用1到5这5个数字,其中奇数表示可能为可断字点,偶数表示不为可断字点,大的数字的话语权强于小的数字。例如,h5elo的含义是,单词中如果出现“helo”,那么在“h”和“e”之间有很大把握为可断行点(例如“bach-e-lor”和“ech-e-lon”);hach4的含义是,单词中如果有“hach”,则“h”后面很可能不是断字点(如“tooth-aches”),虽然把握没有数字5的那么大。例如,对于单词“encyclopedia”,对得上的匹配项有1c4l4, 1cy, 1d4i3a, 4edi, e3dia, 2i1a, ope5d, 2p2ed, 3pedi, pedia4, y1c
。插入完所有数字后,留下来的数字中的最大值为en1cy1c4l4o3p4e5d4i3a4
,最后奇数处为可断行点:“en-cy-clo-pe-di-a”。
这种方法可以找到约90%的正确断字点,几乎从不出错。而且,TeX有一个“断字特例表”的功能,对于自带断字算法出错的单词可以手动处理。TUG(TeX用户组)有一份英语单词的特例表。另外,TeX默认不会把单词在前两个字母或后三个字母之间断开,所以encyclopedia一词不会断成“encyclopedi-”和“a”(这样不好看)。
TeX是非常稳定的程序,高德纳悬赏奖励任何能够在TeX中发现程序漏洞(bug)的人。每一个漏洞的奖励金额从2.56美元(16进制的一美元)开始,以后每发现一个bug,都会翻倍,直到目前的327.68美元封顶。然而高德纳从未因此而损失大笔金钱,因为TeX中的漏洞极少,而真正发现漏洞的人在获得支票后往往不愿将其兑现。到目前为止,关于TeX的最后一个bug是被Oleg Bulatov发现的。
有许多派生出来的文档处理程序就是基于TeX的,主要的有:
TeXmacs是一个所见即所得的科学文档编辑器,利用TeX字体作为显示字体,具有类似Emacs的编辑方式。它可以导出为TeX文本,PS,PDF文档,以及HTML,XML页面。LyX也是一个类似的工具。
TeX这个词的标准发音为/tɛx/,其中 /x/相当于中文里“赫”字的声母,或者苏格兰语“loch”一词中“ch”的发音(X其实是希腊字母 χ)。发音接近“泰赫”。在英语和法语中实际通常读作 /tɛk/,发音接近“泰克”。TeX这个词来自希腊文中的 τέχνη (TEXNH),希腊文意为“艺术”和“制造”,也是英语中 (技术)的词源。书写时,三个字母都是大写,字母E应当低于其他两个字母。而不支持下标的系统则只能这样书写:“TeX”。
TeX的用户喜欢创造一些和TeX有关的词汇,例如“TeXnician”(与英语单词“technician”,技工的发音相近,意为“TeX用户”),“TeXhacker”(“TeX程序员”,“TeX黑客”)和“TeXnique”(与英语单词“technique”,技巧的发音相近,意为“TeX水平”)等。另有人发明一词为“TeXpert”(“TeX高手”),但是高德纳本人反对这一名称,因为这里TeX一词的读法是错误的。
相关 利奥波第那科学院 利奥波第那科学院(德语:Deutsche Akademie der Naturforscher Leopoldina),是德国的国家科学院。利奥波第那科学院总部现位于哈雷。德国一直未有全国性的科学院,直至2007年11月,利棒针编织 棒针为编织毛线所用,一般是由二根棒子所组成,多以金属所造,再涂上银灰色。现在的棒针的一头多加上一小粒塑胶再注明棒针的粗细,根据不同的粗细还可分为不同型号的棒针。白骨观 白骨观,又称骸骨想,或简称骨想,白骨观最早源自不净观中的墓园九相中的后半阶段,观想尸体腐化或火化之后所剩下的白骨。白骨观是佛教修行方法之一,为佛教五门禅法之一种,源自不净观如果墙壁会说话 《如果墙壁会说话》是一部1996年在HBO所放映的电视电影,描述三位不同时期的女子所遇到与堕胎相关的困境,三个故事借由发生在同一栋房子中串连起来,发生时间分别为1952年、 1974西伯利亚高压 西伯利亚高压(英语:Siberian High),又称蒙古高压、西伯利亚反气旋(英语:Siberian Anticyclone)、亚洲反气旋(俄语:Азиатский антициклон,转写:Aziatskiy antitsiklo欧洲联盟条约 欧洲联盟条约(Treaty on European Union,简称TEU)是欧洲联盟的宪制性文本、欧盟法的重要组成部分。该条约有多次著名的重大版本更迭,您可能指的是:关于现时版本的欧洲联盟条约,请尼古拉一世·伯努利 尼古拉一世·伯努利(德语:Nikolaus I. Bernoulli,1687年10月21日-1759年11月29日),生于瑞士巴塞尔,瑞士数学家,为伯努利家族的成员。他的父亲名为尼古拉·伯努利(Nicolaus Bernoulli)达达薄伽梵 达达薄伽梵(Dada Bhagwan,1908年11月8日-1988年1月2日),全名是艾姆巴拉尔·穆尔基巴伊·巴戴尔,是印度的一位精神领袖,在印度古吉拉特邦科达县(ખેડા જીલ્લો)帕德伦镇出生克雷斯特韦 (肯塔基州) 克雷斯特韦(英语:Crestview),是美国肯塔基州的一座城市。面积约为0.5平方公里(0.2平方英里)。根据2010年美国人口普查,该市的人口为475人。塔特洛山上电光闪闪 《塔特洛山上电光闪闪》(斯洛伐克语:Nad Tatrou sa blýska)为斯洛伐克共和国国歌,歌词由斯洛伐克诗人扬克·马图施卡(Janko Matúška)所作,歌曲则采用斯洛伐克民谣Kopala studien