热门问题
时间线
聊天
视角
TeX
来自维基百科,自由的百科全书
Remove ads
TeX(/tɛx/,常被读作 /tɛk/,音译“泰赫”、“泰克”,风格化后写作 “TeX”),是一个由美国计算机科学教授高德纳(Donald Ervin Knuth)编写的排版软件。TeX的 MIME 类型为application/x-tex,是一款自由软件。它在学术界特别是数学、物理学和计算机科学界十分流行。TeX被普遍认为是一个优秀的排版工具,尤其是对于复杂数学符号的处理。利用 LaTeX 等终端软件,TeX就能够排版出精美的文本以帮助人们辨认和查找。
Remove ads
历史
高德纳最早开始自行编写TeX的原因,是因为当时的电脑排版技术十分粗糙,已经影响到他的巨著《计算机程序设计艺术》的印刷质量。他以典型的黑客思维模式,决定自行编写一个排版软件:TeX。
他计划在 1978 年的学术休假时完成这项工作,但事实上,直到十多年之后的 1989 年,TeX排版语言才被“冻结”(可以使用)。1978 年夏天,盖伊·史提尔二世在高德纳编写其第一版的TeX程序时,正好在高德纳所工作的斯坦福大学,当他回到麻省理工学院(MIT)时他在 ITS 下重写了TeX的输出输入系统。TeX的第一版是用 SASL 语言写成的,运行于 PDP-10 型计算机,采用斯坦福大学的 WAITS 操作系统。在之后的TeX版本中,高德纳发明了所谓的 “文学编程”(literate programming),一种从同一源文件自动生成可编译的源代码和高质量的文档的编程方法。这种语言被称为 WEB,它所生成的源代码是使用 Pascal 编程语言。
一个从头开始重写的新版TeX于1982年发布,它被称为TeX82。除了其他修改之外,原本的断字算法被 Frank Liang 编写的新算法所取代。TeX82还使用了定点而不是浮点,以确保结果在不同的计算机硬件上重现。[2]并且在盖伊·史提尔二世的大力游说下,TeX82包括一种真正的、图灵完全的编程语言。[3]1989 年,高德纳发布了新版本的TeX和 Metafont。[4]尽管高德纳希望保持程序的稳定性,但他意识到,只能输入 128 个不同的字符不足以容纳外语;因此TeX3.0 版本的主要变化是能使用 8 比特输入,即在文本中允许输入 256 个不同的字符。
从TeX第三版开始,之后的升级是在小数点后加入一个新数位,使之越来越接近圆周率“π”的值。TeX目前的版本是 3.141592653。这显示了TeX已经十分稳定,任何的升级都十分细微。高德纳曾表示 “最后一次升级是(于我过世后)将版本数改为‘π’,那时任何余下的漏洞将被看作程序的功能。”[5]
由于TeX的源代码基本上处于公共领域,其他程序员可以(并明确被鼓励)改进系统,但需要使用其他名称来分发修改后的TeX。例如,Omega 项目是在 1991 年之后开发的,主要是为了提高TeX的多语种排版能力。高德纳创建了 “非官方” 修改版本,例如TeX-XeT,它允许用户在同一文档中混合写入从左到右和从右到左书写系统的文本。
Remove ads
范例

此乃于 Microsoft Windows 系统中示范的简易TeX文本范例。
首先建立一名为 myfile.tex 的纯文本文件,并载有以下内容:
Hello, World
\bye % marks the end of the file; not shown in the final output
然后在命令行解释器(Command line interpreter),如 cmd 或 PowerShell 中键入
tex myfile.tex
并回车确认,之后TeX便会建立一名为 myfile.dvi 的文件。此文件可用如YAP之类的 DVI 检视器检视。此档于阅读器可见的是 “Hello, World” 一句话。\bye 是一个TeX指令,作用等同于档案结束标记,不会显示于此。此 DVI 文件可在阅读器中直接打印或转换成更普遍的格式,例如 PostScript,或现代更常见的 .pdf 格式。
另外,使用指令 pdftex myfile.tex 亦能输出 PDF 文件。PDFTeX出现之前,把 DVI 转成PostScript 再转成 PDF 所产生的字体显示质量很差(但打印则没问题)。这是由于TeX本身支持点阵字体(Type 3),而此远不及向量字体(Type 1)的显示质量好。
Remove ads
以二次方程为例,
所有行内公式在TeX中都须以一对 $ 符号围住。如果要使公式成为行间公式,也就是另起一行居中,则应以一对 $$ 取代一对 $。例如:
LaTeX 是一套以TeX描述的宏软件。LaTeX 有很多预设的模版、样式。它比TeX更为结构化,如包含了供建立索引、表格、列表等的宏和公用软件。例如:
\documentclass[a4paper]{book}
\begin{document}
\section{ ... a title }
\subsection{ ... a subtitle}
%% Text goes here
\end{document}
执行
latex myfile.tex dvips myfile.dvi
会建立一本为 PostScript 档的书。如要建立 PDF 档则可使用
pdflatex myfile.tex
特性
TeX软件在当时拥有其他排版软件没有或不成熟的功能。其中有一些功能得益于排版算法的创新,其中很多成为了高德纳的学生的论文主题。尽管有些功能现在已经被其他排版系统所实现,但仍有部分功能是TeX所特有的,比如数学公式的自动间距调整。

由于TeX的设计目标是实现高质量的书籍排版,高德纳在数学公式的排版上下了很大功夫。[6][7]
他研究了三种按照老方法排版、排版质量高的书籍:艾迪生韦斯利出版社(即高德纳的《计算机程序设计艺术》的出版商)的出版物,尤其是汉斯·沃尔夫和 Joseph-Louis Lagrange 的书籍《Thermodynamics Innovation》(1856)、数学期刊《Acta Mathematica》、和数学期刊《Indagationes Mathematicae》。高德纳通过研究其数学公式的排版,总结出了一套数学公式内部间距的规则,并将其用于TeX。[8]TeX排版数学公式时只是提供了一个间距调整引擎,实际的间距大小由数学字体提供。比如TeX默认的 Computer Modern 字体提供了一套成熟的间距参数,可以直接使用。
TeX的数学排版功能并非十全十美,有时也招来部分批评。比如TeX诞生的时代的部分机器由于容量不够,不足以存储TeX的所有字体参数,在部分场合需要hack才能正常使用。在美学方面,TeX对根号的处理也招致部分批评。[9]
Remove ads
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads