专栏首页量子位LaTeX的历史:图灵奖得主1977年开启的计划,引发学术圈重大变革

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

栗子 编译整理 量子位 出品 | 公众号 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/

本文分享自微信公众号 - 量子位(QbitAI),作者:关注前沿科技

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深度学习已成强弩之末?Bengio等大牛NeurlPS2019上支招

    NeurlPS 2019上,多位专家讨论到AI的未来,认为深度学习算法的瓶颈已经出现。

    量子位
  • 不写代码,用图形界面搞机器学习:MIT发布“全球最快AutoML”,刷新DARPA比赛成绩

    回到现实,虽说是没有全息图,但不写代码、拖拖拽拽就能搞机器学习,这等美事已经达成了:

    量子位
  • 硅谷开办全球首家幼儿AI学校,但……事情并没有这么简单

    AI浪潮滚滚而来,小朋友不会搞深度学习可还行?你怎么甘心让宝贝落后同龄人一大截?深度学习,现在可是要从娃娃抓起啊!

    量子位
  • 快速学习SpringBoot-Java配置

    在入门案例中,我们没有任何的配置,就可以实现一个SpringMVC的项目了,快速、高效!

    cwl_java
  • MySQL常用函数介绍

    MySQL数据库中提供了很丰富的函数,比如我们常用的聚合函数,日期及字符串处理函数等。SELECT语句及其条件表达式都可以使用这些函数,函数可以帮助用户更加方便...

    MySQL技术
  • Python3 基础语法

    Python中的字符串str用单引号(' ')或双引号(" ")括起来,同时使用反斜杠()转义特殊字符。

    Eric杂货铺
  • Android 10.0相关权限的变更(使用WiFi Direct必须打开定位)

    Android 10.0中对隐私权(权限)做了变更。这里总结一些与 WLAN 相关的。 1、对直接访问已配置的 WLAN 网络实施了限制 如果应用以 And...

    用户7557625
  • 【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态

      Lua是一门非常强大、非常灵活的脚本语言,自它从发明以来,无数的游戏使用了Lua作为开发语言。但是作为一款脚本语言,Lua也有着自己的不足,那就是它本身并没...

    马三小伙儿
  • 如何在 Debian 中锁定软件包版本

    在 Debian 或基于 Debian/Ubuntu 的 Linux 发行版系统中,有多种方法可以将软件包锁定在一个特定的版本。也就是说,可以将某个软件固定维护...

    Debian中国
  • AutoIt实现软件自动化安装

    1、下载:https://www.autoitscript.com/site/autoit/downloads/

    未来sky

扫码关注云+社区

领取腾讯云代金券