热门问题
时间线
聊天
视角

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英語Incompatible Timesharing System 下重寫了TeX的輸出輸入系統。TeX的第一版是用 SASL 語言寫成的,執行於 PDP-10 型計算機,採用史丹佛大學的 WAITS英語WAITS 作業系統。在之後的TeX版本中,高德納發明了所謂的 「文學編程」(literate programming),一種從同一原始檔自動生成可編譯的原始碼和高品質的文件的編程方法。這種語言被稱為 WEB,它所生成的原始碼是使用 Pascal 程式語言

一個從頭開始重寫的新版TeX於1982年發布,它被稱為TeX82。除了其他修改之外,原本的斷字演算法被 Frank Liang英語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

範例

Thumb
LaTeX巨集基於TeX,可以將純文字生成一個印刷樣頁

此乃於 Microsoft Windows 系統中示範的簡易TeX文字範例。

首先建立一名為 myfile.tex 的純文字檔案,並載有以下內容:

Hello, World
\bye          % marks the end of the file; not shown in the final output

然後在命令列直譯器(Command line interpreter),如 cmdPowerShell 中鍵入

tex myfile.tex

並Enter確認,之後TeX便會建立一名為 myfile.dvi 的檔案。此檔案可用如YAP英語Yet Another Previewer之類的 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

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所特有的,比如數學公式的自動間距調整。

數學公式的自動間距調整

Thumb
TeX讓電腦形成一段段的數學公式,字體為AMS Euler

由於TeX的設計目標是實現高品質的書籍排版,高德納在數學公式的排版上下了很大功夫。[6][7]

他研究了三種按照老方法排版、排版品質高的書籍:艾迪生韋斯利出版社(即高德納的《電腦程式設計藝術》的出版商)的出版物,尤其是漢斯·沃爾夫和 Joseph-Louis Lagrange 的書籍《Thermodynamics Innovation》(1856)、數學期刊《Acta Mathematica英語Acta Mathematica》、和數學期刊《Indagationes Mathematicae英語Indagationes Mathematicae》。高德納通過研究其數學公式的排版,總結出了一套數學公式內部間距的規則,並將其用於TeX。[8]TeX排版數學公式時只是提供了一個間距調整引擎,實際的間距大小由數學字型提供。比如TeX預設的 Computer Modern 字型提供了一套成熟的間距參數,可以直接使用。

TeX的數學排版功能並非十全十美,有時也招來部分批評。比如TeX誕生的時代的部分機器由於容量不夠,不足以儲存TeX的所有字型參數,在部分場合需要hack才能正常使用。在美學方面,TeX對根號的處理也招致部分批評。[9]

OpenType 字型技術的數學字型參數基於TeX。[10][11][12]

Remove ads
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads