LaTeX的歷史:圖靈獎得主1977年開啟的計劃,引發(fā)學(xué)術(shù)圈重大變革
LaTeX的前世今生
栗子 編譯整理
量子位 出品 | 公眾號 QbitAI
△用LaTeX記筆記的超能操作
世界上的許多人類,都受到過LaTeX的恩澤。
經(jīng)它排版的論文,就算有再復(fù)雜的公式,格式也不會亂掉。
但人們可能并不了解,LaTeX有個祖先叫TeX,出生在1977年。
并且在一個沒有互聯(lián)網(wǎng)的年代,就紅遍了全球。
那么,身為世界上最早開源項(xiàng)目之一的TeX,究竟是如何誕生?又如以進(jìn)化形態(tài)LaTeX,活躍了幾十年不?。?/p>
專業(yè)排版師,找不到了
故事,開始于一本叫做《計算機(jī)編程藝術(shù)》 (The Art of Computer Programming) 的書。
作者是斯坦福計算機(jī)系教授Donald Knuth,中文名字“高德納”。后來也是因?yàn)檫@本書,他獲得了圖靈獎。
1968年,初版問世。在這之前,他給了出版商Addison-Wesley幾千頁手寫書稿,出版商用的是傳統(tǒng)金屬排版設(shè)備,需要專業(yè)人員手動操作。
那時候,電腦上還沒有圖形界面。
書里面有各種編程示例,高德納就一點(diǎn)一點(diǎn)向排版人描述,他到底想要怎樣的效果。成書的時候,他很滿意。
轉(zhuǎn)折發(fā)生在1976年,這本書準(zhǔn)備再版,擴(kuò)充了一些內(nèi)容。這一次,出版商改用了便宜的電子排版方法,小樣完全達(dá)不到高德納要求。
雖然高德納知道,高分辨率的數(shù)字排版機(jī)可以生成精確的形狀,但從前那些專業(yè)的排版人員已經(jīng)找不到了。
他想著,如果讓計算機(jī)軟件來代替專業(yè)人士呢?
于是,1977年高德納用了一個夏天,再加一整年的學(xué)術(shù)休假,執(zhí)行他的數(shù)字排版計劃:和學(xué)生一起寫出了排版程序,名叫TeX。
轉(zhuǎn)年,《計算機(jī)編程藝術(shù)》的修訂版,就用TeX排版完成了。
那時的高德納可能不知道,TeX會引發(fā)學(xué)術(shù)排版的巨大變革。
原來你是這樣的TeX
有了TeX,即便論文作者沒有排版的專業(yè)知識,也可以把自己想要的效果,直接告訴電腦。
只要在手稿里加入一些簡單的markup代碼:
叮當(dāng)法術(shù)變變變:
這就是TeX輸出的樣子。
就像60年代的高德納教授,可以和排版人員密切溝通那樣。而且,和電腦溝通還避免了人與人之間的誤解。
其實(shí)在文本中加markup,倒不算新鮮事。但TeX的新鮮之處在于,它可以捕捉到非常實(shí)用的排版知識和概念,并且把它們形成體系、表現(xiàn)出來:
高德納定義了幾百個排版命令。而用來理解這些命令的排版機(jī),就是TeX引擎:它可以讀取作者的手稿,生成一個文件,直接能拿去打的那種。
不過,高德納也知道,不管它能理解多少命令,都不可能滿足手稿作者的所有需求。
所以,他寫了一個可擴(kuò)展的TeX,讓用戶隨意添加自己想要的功能:
只要給它一些新的宏?(Macro) ,就能定義新的命令。每個人都可以自己創(chuàng)建宏文件,這樣不用修改TeX引擎,就能擴(kuò)展TeX的功能。
當(dāng)然,既是高德納自己寫的工具,肯定夠自己用的了。1984年他還出版了The TeXbook,這本書詳細(xì)講述TeX了所有原始命令的含義,以及普通宏命令 (Plain Macro Commands) ,還有引擎內(nèi)部的工作原理。
這本書的出現(xiàn),就是為了鼓勵開發(fā)者,去寫自己的宏。
在高德納的堅持之下,TeX引擎的源代碼已經(jīng)免費(fèi)了40年,每個人都可以修改。
不過他也規(guī)定,一切不兼容的修改版都不能叫做TeX;還發(fā)布了一組自動測試,修改版引擎必須通過測試,才能用TeX這個名字。
在那個沒有互聯(lián)網(wǎng)的年代,生在斯坦福的TeX走向了世界。它被移植到各種計算機(jī)系統(tǒng)、各種語言、各種打印設(shè)備上,為越來越多的人類排版。
1982年和1989年,高德納又修改了TeX兩次。
1992年,教授從項(xiàng)目里功成身退,接著寫《計算機(jī)編程藝術(shù)》。這本促成了TeX誕生的書,內(nèi)容一直在不斷擴(kuò)充。
雖然高德納不再更新項(xiàng)目了,但還有其他人在繼續(xù)他的工作。
從TeX到LaTeX,更更更簡單
TeX的命令集,都是偏低層?(Low-Level) 的,適合高德納教授這樣,希望從細(xì)節(jié)上把握排版效果的人類。
但這幾百個命令,對于大多數(shù)人來說,可能還是太多了。
“能讓計算機(jī)來做的決定,就不要問我。”
用戶常常希望自己手寫的排版命令越少越好,他們需要的是高層命令,是更加方便使用的markup語言。
最好是,可以把內(nèi)容 (Content) 和表現(xiàn)形式 (Presentation) 分開的那種工具。
Scribe:爆發(fā)之前奏
于是,1980年誕生了Scribe,是卡耐基梅隆大學(xué) (CMU) Brian Reid的博士論文項(xiàng)目。
在80年代早期,Scribe受到了許多學(xué)術(shù)作者的追捧。不過它并不免費(fèi),這一點(diǎn)阻礙了傳播。
即便如此,它也不只是個插曲:
Scribe有位忠實(shí)用戶,來自斯坦福的Leslie Lamport?(簡稱“蘭波特”) ,當(dāng)時已是著名的計算機(jī)科學(xué)家。
就是他,在嘗到便利的滋味之后,想要把Scribe的易用性,轉(zhuǎn)移到Tex身上,最終發(fā)明了LaTeX。
LaTeX:大爆發(fā)
1984年,蘭波特自己創(chuàng)建了一個宏,叫做“lplain”,“l(fā)”是他姓氏的首字母。
這里面的一系列命令,比TeX的原始命令易用得多得多。
他把新的宏放出來給大家免費(fèi)使用:只要運(yùn)行一個LaTeX程序,讓TeX引擎先讀取這個宏。
蘭波特還寫了一本書,叫LaTex:a Document Preparation System,教學(xué)術(shù)作者怎樣用他寫的命令來給文章排版。
當(dāng)然,就算有了LaTeX,用戶依然可以用TeX的底層命令,來實(shí)現(xiàn)復(fù)雜的需求。
這下,TeX用戶數(shù)量大大大大大爆發(fā)。
而許多人用了很久的LaTeX命令,甚至不知道有TeX這個名字。
整個學(xué)術(shù)排版行業(yè),也因?yàn)長aTeX的誕生,受到了深遠(yuǎn)的影響:
在這個領(lǐng)域,精確排版至關(guān)重要,從前只有手動排版才能滿足需求;但現(xiàn)代世界里,論文、期刊、書籍和其他出版物大量產(chǎn)出,遠(yuǎn)遠(yuǎn)超過了手動排版能達(dá)到的吞吐量。
LaTex在實(shí)現(xiàn)自動化的同時,又不會損失排版質(zhì)量。
現(xiàn)在,許多學(xué)術(shù)出版機(jī)構(gòu),都接受用LaTeX排版的稿件。
除此之外,連ArXiv這片機(jī)器學(xué)習(xí)論文的沃土,也是在LaTex的滋養(yǎng)下,才有更加蓬勃的生機(jī)。
因?yàn)?,即便沒有出版商排版,作者也可以把嚴(yán)謹(jǐn)整齊的研究成果,送給全球的人類觀賞。
真是一個美好的世界。
One More Thing
那么問題來了,LaTeX的鼻祖高德納,為什么會有個中文名字呢?
1977年夏天,他在中國度過了三個星期。中文名便是在那時解鎖的。
巧的是,排版計劃也是在那個夏天啟動的。
原文傳送門:
https://increment.com/open-source/the-lingua-franca-of-latex/
- 馬云正式卸任后,阿里巴巴開盤跌0.87%2019-09-10
- AI獨(dú)角獸云知聲,已完成一期科創(chuàng)板IPO輔導(dǎo)2019-10-17
- 亞馬遜在華拓展云計算團(tuán)隊,挑戰(zhàn)阿里巴巴和騰訊2019-10-16
- IDC:今年上半年中國公有云服務(wù)市場規(guī)模達(dá)54.2億美元2019-11-07