LaTeX的歷史:圖靈獎得主1977年開啓的計劃,引發學術圈重大變革

栗子 編譯整理 
量子位 出品 | 公衆號 QbitAI

640?wx_fmt=gif

用LaTeX記筆記的超能操作

世界上的許多人類,都受到過LaTeX的恩澤。

經它排版的論文,就算有再複雜的公式,格式也不會亂掉。

但人們可能並不瞭解,LaTeX有個祖先叫TeX,出生在1977年。

並且在一個沒有互聯網的年代,就紅遍了全球。

那麼,身爲世界上最早開源項目之一的TeX,究竟是如何誕生?又如以進化形態LaTeX,活躍了幾十年不敗?

專業排版師,找不到了

故事,開始於一本叫做《計算機編程藝術》 (The Art of Computer Programming) 的書。

640?wx_fmt=jpeg

作者是斯坦福計算機系教授Donald Knuth,中文名字“高德納”。後來也是因爲這本書,他獲得了圖靈獎

1968年,初版問世。在這之前,他給了出版商Addison-Wesley幾千頁手寫書稿,出版商用的是傳統金屬排版設備,需要專業人員手動操作。

640?wx_fmt=jpeg

那時候,電腦上還沒有圖形界面。

書裏面有各種編程示例,高德納就一點一點向排版人描述,他到底想要怎樣的效果。成書的時候,他很滿意。

轉折發生在1976年,這本書準備再版,擴充了一些內容。這一次,出版商改用了便宜的電子排版方法,小樣完全達不到高德納要求。

雖然高德納知道,高分辨率的數字排版機可以生成精確的形狀,但從前那些專業的排版人員已經找不到了

640?wx_fmt=png

他想着,如果讓計算機軟件來代替專業人士呢?

於是,1977年高德納用了一個夏天,再加一整年的學術休假,執行他的數字排版計劃:和學生一起寫出了排版程序,名叫TeX

轉年,《計算機編程藝術》的修訂版,就用TeX排版完成了。

那時的高德納可能不知道,TeX會引發學術排版的巨大變革。

原來你是這樣的TeX

有了TeX,即便論文作者沒有排版的專業知識,也可以把自己想要的效果,直接告訴電腦。

只要在手稿里加入一些簡單的markup代碼:

640?wx_fmt=png

叮噹法術變變變:

640?wx_fmt=jpeg

這就是TeX輸出的樣子。

就像60年代的高德納教授,可以和排版人員密切溝通那樣。而且,和電腦溝通還避免了人與人之間的誤解。

其實在文本中加markup,倒不算新鮮事。但TeX的新鮮之處在於,它可以捕捉到非常實用的排版知識和概念,並且把它們形成體系、表現出來:

高德納定義了幾百個排版命令。而用來理解這些命令的排版機,就是TeX引擎:它可以讀取作者的手稿,生成一個文件,直接能拿去打的那種。

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

640?wx_fmt=png

所以,他寫了一個可擴展的TeX,讓用戶隨意添加自己想要的功能:

只要給它一些新的 (Macro) ,就能定義新的命令。每個人都可以自己創建宏文件,這樣不用修改TeX引擎,就能擴展TeX的功能。

當然,既是高德納自己寫的工具,肯定夠自己用的了。1984年他還出版了The TeXbook,這本書詳細講述TeX了所有原始命令的含義,以及普通宏命令 (Plain Macro Commands) ,還有引擎內部的工作原理。

640?wx_fmt=jpeg

這本書的出現,就是爲了鼓勵開發者,去寫自己的宏。

在高德納的堅持之下,TeX引擎的源代碼已經免費了40年,每個人都可以修改。

不過他也規定,一切不兼容的修改版都不能叫做TeX;還發布了一組自動測試,修改版引擎必須通過測試,才能用TeX這個名字。

在那個沒有互聯網的年代,生在斯坦福的TeX走向了世界。它被移植到各種計算機系統、各種語言、各種打印設備上,爲越來越多的人類排版。

1982年和1989年,高德納又修改了TeX兩次

1992年,教授從項目裏功成身退,接着寫《計算機編程藝術》。這本促成了TeX誕生的書,內容一直在不斷擴充。

雖然高德納不再更新項目了,但還有其他人在繼續他的工作。

640?wx_fmt=gif

從TeX到LaTeX,更更更簡單

TeX的命令集,都是偏低層 (Low-Level) 的,適合高德納教授這樣,希望從細節上把握排版效果的人類。

但這幾百個命令,對於大多數人來說,可能還是太多了。

“能讓計算機來做的決定,就不要問我。”

640?wx_fmt=jpeg

用戶常常希望自己手寫的排版命令越少越好,他們需要的是高層命令,是更加方便使用的markup語言。

最好是,可以把內容 (Content) 和表現形式 (Presentation) 分開的那種工具。

Scribe:爆發之前奏

於是,1980年誕生了Scribe,是卡耐基梅隆大學 (CMU) Brian Reid的博士論文項目。

640?wx_fmt=jpeg

在80年代早期,Scribe受到了許多學術作者的追捧。不過它並不免費,這一點阻礙了傳播。

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

Scribe有位忠實用戶,來自斯坦福的Leslie Lamport (簡稱“蘭波特”) ,當時已是著名的計算機科學家。

就是他,在嚐到便利的滋味之後,想要把Scribe的易用性,轉移到Tex身上,最終發明了LaTeX。

LaTeX:大爆發

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

640?wx_fmt=jpeg

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

他把新的宏放出來給大家免費使用:只要運行一個LaTeX程序,讓TeX引擎先讀取這個宏。

蘭波特還寫了一本書,叫LaTex:a Document Preparation System,教學術作者怎樣用他寫的命令來給文章排版。

640?wx_fmt=jpeg

當然,就算有了LaTeX,用戶依然可以用TeX的底層命令,來實現複雜的需求。

這下,TeX用戶數量大大大大大爆發

而許多人用了很久的LaTeX命令,甚至不知道有TeX這個名字。

整個學術排版行業,也因爲LaTeX的誕生,受到了深遠的影響:

在這個領域,精確排版至關重要,從前只有手動排版才能滿足需求;但現代世界裏,論文、期刊、書籍和其他出版物大量產出,遠遠超過了手動排版能達到的吞吐量。

640?wx_fmt=gif

LaTex在實現自動化的同時,又不會損失排版質量。

現在,許多學術出版機構,都接受用LaTeX排版的稿件。

除此之外,連ArXiv這片機器學習論文的沃土,也是在LaTex的滋養下,纔有更加蓬勃的生機。

因爲,即便沒有出版商排版,作者也可以把嚴謹整齊的研究成果,送給全球的人類觀賞。

真是一個美好的世界。

One More Thing

那麼問題來了,LaTeX的鼻祖高德納,爲什麼會有個中文名字呢?

640?wx_fmt=jpeg

1977年夏天,他在中國度過了三個星期。中文名便是在那時解鎖的。

巧的是,排版計劃也是在那個夏天啓動的。

原文傳送門:
https://increment.com/open-source/the-lingua-franca-of-latex/


小程序|全類別AI學習教程

640?wx_fmt=jpeg

AI社羣|與優秀的人交流

640?wx_fmt=jpeg

640?wx_fmt=jpeg

量子位 QbitAI · 頭條號簽約作者

վ'ᴗ' ի 追蹤AI技術和產品新動態

喜歡就點「在看」吧 !

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章