LaTeX的历史:图灵奖得主1977年开启的计划,引发学术圈重大变革

LaTeX的前世今生

栗子 编译整理

量子位 出品 | 公众号 QbitAI

△用LaTeX记笔记的超能操作

世界上的许多人类,都受到过LaTeX的恩泽。

经它排版的论文,就算有再复杂的公式,格式也不会乱掉。

但人们可能并不了解,LaTeX有个祖先叫TeX,出生在1977年。

并且在一个没有互联网的年代,就红遍了全球。

那么,身为世界上最早开源项目之一的TeX,究竟是如何诞生?又如以进化形态LaTeX,活跃了几十年不败?

专业排版师,找不到了

故事,开始于一本叫做《计算机编程艺术》 (The Art of Computer Programming) 的书。

作者是斯坦福计算机系教授Donald Knuth,中文名字“高德纳”。后来也是因为这本书,他获得了图灵奖

1968年,初版问世。在这之前,他给了出版商Addison-Wesley几千页手写书稿,出版商用的是传统金属排版设备,需要专业人员手动操作。

那时候,电脑上还没有图形界面。

书里面有各种编程示例,高德纳就一点一点向排版人描述,他到底想要怎样的效果。成书的时候,他很满意。

转折发生在1976年,这本书准备再版,扩充了一些内容。这一次,出版商改用了便宜的电子排版方法,小样完全达不到高德纳要求。

虽然高德纳知道,高分辨率的数字排版机可以生成精确的形状,但从前那些专业的排版人员已经找不到了

他想着,如果让计算机软件来代替专业人士呢?

于是,1977年高德纳用了一个夏天,再加一整年的学术休假,执行他的数字排版计划:和学生一起写出了排版程序,名叫TeX

转年,《计算机编程艺术》的修订版,就用TeX排版完成了。

那时的高德纳可能不知道,TeX会引发学术排版的巨大变革。

原来你是这样的TeX

有了TeX,即便论文作者没有排版的专业知识,也可以把自己想要的效果,直接告诉电脑。

只要在手稿里加入一些简单的markup代码:

叮当法术变变变:

这就是TeX输出的样子。

就像60年代的高德纳教授,可以和排版人员密切沟通那样。而且,和电脑沟通还避免了人与人之间的误解。

其实在文本中加markup,倒不算新鲜事。但TeX的新鲜之处在于,它可以捕捉到非常实用的排版知识和概念,并且把它们形成体系、表现出来:

高德纳定义了几百个排版命令。而用来理解这些命令的排版机,就是TeX引擎:它可以读取作者的手稿,生成一个文件,直接能拿去打的那种。

不过,高德纳也知道,不管它能理解多少命令,都不可能满足手稿作者的所有需求。

所以,他写了一个可扩展的TeX,让用户随意添加自己想要的功能:

只要给它一些新的 (Macro) ,就能定义新的命令。每个人都可以自己创建宏文件,这样不用修改TeX引擎,就能扩展TeX的功能。

当然,既是高德纳自己写的工具,肯定够自己用的了。1984年他还出版了The TeXbook,这本书详细讲述TeX了所有原始命令的含义,以及普通宏命令 (Plain Macro Commands) ,还有引擎内部的工作原理。

这本书的出现,就是为了鼓励开发者,去写自己的宏。

在高德纳的坚持之下,TeX引擎的源代码已经免费了40年,每个人都可以修改。

不过他也规定,一切不兼容的修改版都不能叫做TeX;还发布了一组自动测试,修改版引擎必须通过测试,才能用TeX这个名字。

在那个没有互联网的年代,生在斯坦福的TeX走向了世界。它被移植到各种计算机系统、各种语言、各种打印设备上,为越来越多的人类排版。

1982年和1989年,高德纳又修改了TeX两次

1992年,教授从项目里功成身退,接着写《计算机编程艺术》。这本促成了TeX诞生的书,内容一直在不断扩充。

虽然高德纳不再更新项目了,但还有其他人在继续他的工作。

从TeX到LaTeX,更更更简单

TeX的命令集,都是偏低层 (Low-Level) 的,适合高德纳教授这样,希望从细节上把握排版效果的人类。

但这几百个命令,对于大多数人来说,可能还是太多了。

“能让计算机来做的决定,就不要问我。”

用户常常希望自己手写的排版命令越少越好,他们需要的是高层命令,是更加方便使用的markup语言。

最好是,可以把内容 (Content) 和表现形式 (Presentation) 分开的那种工具。

Scribe:爆发之前奏

于是,1980年诞生了Scribe,是卡耐基梅隆大学 (CMU) Brian Reid的博士论文项目。

在80年代早期,Scribe受到了许多学术作者的追捧。不过它并不免费,这一点阻碍了传播。

即便如此,它也不只是个插曲:

Scribe有位忠实用户,来自斯坦福的Leslie Lamport (简称“兰波特”) ,当时已是著名的计算机科学家。

就是他,在尝到便利的滋味之后,想要把Scribe的易用性,转移到Tex身上,最终发明了LaTeX。

LaTeX:大爆发

1984年,兰波特自己创建了一个宏,叫做“lplain”,“l”是他姓氏的首字母。

这里面的一系列命令,比TeX的原始命令易用得多得多。

他把新的宏放出来给大家免费使用:只要运行一个LaTeX程序,让TeX引擎先读取这个宏。

兰波特还写了一本书,叫LaTex:a Document Preparation System,教学术作者怎样用他写的命令来给文章排版。

当然,就算有了LaTeX,用户依然可以用TeX的底层命令,来实现复杂的需求。

这下,TeX用户数量大大大大大爆发

而许多人用了很久的LaTeX命令,甚至不知道有TeX这个名字。

整个学术排版行业,也因为LaTeX的诞生,受到了深远的影响:

在这个领域,精确排版至关重要,从前只有手动排版才能满足需求;但现代世界里,论文、期刊、书籍和其他出版物大量产出,远远超过了手动排版能达到的吞吐量。

LaTex在实现自动化的同时,又不会损失排版质量。

现在,许多学术出版机构,都接受用LaTeX排版的稿件。

除此之外,连ArXiv这片机器学习论文的沃土,也是在LaTex的滋养下,才有更加蓬勃的生机。

因为,即便没有出版商排版,作者也可以把严谨整齐的研究成果,送给全球的人类观赏。

真是一个美好的世界。

One More Thing

那么问题来了,LaTeX的鼻祖高德纳,为什么会有个中文名字呢?

1977年夏天,他在中国度过了三个星期。中文名便是在那时解锁的。

巧的是,排版计划也是在那个夏天启动的。

原文传送门:

https://increment.com/open-source/the-lingua-franca-of-latex/

版权所有,未经授权不得以任何形式转载及使用,违者必究。