提到LATEX,便不能不說起它的基礎TEX。TEX是誕生於20 世紀70年代末到80年代初的一款計算機排版軟件,用來排版高質量的書籍,特別是包含有數學公式的書籍。TEX以追求高質量為目標,很早就實現了矢量描述的計算機字體、細致的分頁斷行算法和數學排版功能,因其數學排版能力得到了學術界的廣泛使用,也啟發了不少後來復雜的商業計算機排版軟件。有趣的是,這樣一款排版軟件卻並非在排版業界產生,而是由計算機科學家高德納教授在修訂其七卷本巨著《計算機程序設計藝術》的前三卷時,為了排版這一部書籍而產生的。這是一部花費高德納幾乎畢生精力的巨著,直到今天仍在撰寫,然而在照相排版技術剛剛興起的1976年,新的計算機繫統卻無法提供與傳統手工排版相媲美的質量。面對這種情況,高德納抱怨道:
我不知道怎麼辦。我花了整整15年寫這些書,可要是這麼難看,我就再也不寫了。我怎麼能對這樣的作品引以為豪呢?
從翌年開始,高德納就在其學生、友人的幫助下,開發TEX 排版軟件。直到8年後TEX軟件功能完備,他纔又回到撰寫書籍的工作中去。這段歷史一直被引為TEX和高德納的傳奇,有“十年磨一劍”之稱。TEX原本是用於個人的排版軟件,這也引出了TEX 與其他專業排版軟件的一點重大的區別,就是TEX 主要是由書籍、文章的作者本人來使用的,它是面向作者的。因此,TEX 有許多方便作者的自定義功能,使用也簡單方便,很快受到作者們的青睞,排版自己的學術書籍。
LATEX 肇始於20世紀80 年代初,也是LeslieLamport 博士為了編寫他自己的一部書籍而設計的。LATEX 實際上就是用TEX語言編寫的一組宏代碼,擁有比原來的TEX 格式(PlainTEX)更為規範的命令和一整套預定義的格式,隱藏了不少排版方面的細節,可以讓完全不懂排版理論的學者們也可以比較容易地將書籍和文稿排版出來。LATEX一出,很快更為風靡,在1994 年LATEX 2"完善之後,現在已經成為國際上數學、物理、計算機等科技領域專業排版的事實標準,其他領域(化學、生物、工程、語言學等)也有大量用戶。相關專業的學術期刊也都主要接受LATEX作為投稿格式。
既然TEX/LATEX主要是面向作者本人的排版軟件,本書的目標對像也就以學術文章的作者為主,也就是需要經常編寫LATEX稿件的高校師生和科研院所的研究人員。本書的內容選擇以滿足學術排版需求為準,閱讀本書後讀者應該不僅能應對各種學術投稿的簡單需要,也將有能力排版一般的學術書籍,並使用LATEX完成簡單的學術報告幻燈片。不過,本書也力圖廣泛取材,讓排版公司的工人、中學數學教師或是用LATEX作筆記的電腦程序員都能有所得。
本書雖然名為“入門”,假定讀者沒有任何使用TEX 的經驗,但為了避免讀者逡巡於門外而不入,也力圖使內容詳實可靠,為更深入地使用LATEX打好基礎。在編寫本書時,作者追求以下幾個目標:
?內容廣泛本書從軟件安裝和最基本的示例講起,然後按正文組織、自動化工具、數學公式、圖表制做、幻燈片演示、錯誤處理等方面詳述LATEX的功能和使用,最後收束於LATEX 的擴展、相關工具和資源。LATEX 的基本內容並不多,功能也很有限,但經過20 多年的發展,現代LATEX文檔的一大特點是大量使用工具宏包來完成復雜的工作。本書也力圖體現這一特點,全書過半的篇幅都在講解各種重要的LATEX宏包和工具。本書正文共有566頁,作為一本入門書已是嫌多,但仍不可能包羅LATEX 的所有方面,未免有遺珠之憾,隻能留待讀者自己學習了。
?取材從新TEX 最初的一個設計目標是良好的穩定性,希望在多年前編寫的文檔在最新的繫統中排版仍能得到完全相同的結果,各種排版命令的語義保持穩定,TEX也確實做到了這一點。然而LATEX是一個更為開放的繫統,與其他軟件一樣,它是在不斷進化的。不僅其內核從最初的LATEX2.09 到LATEX 2" 再到正在開發中的LATEX3不斷變化,而且還有數以千計的工具宏包在不斷更新,完成各種復雜的排版功能。實現TEX語言的TEX 引擎,也在不斷增添新的功能。為了反映這種變化,本書作者也盡量對內容加以甄別,選取較新並且實用的軟件工具加以介紹。
?切合實用為了增強實用性,本書給出了大量實例和一定量的習題。第1 章和第6章提供了兩段完整的文檔源代碼,而其他章節也給出了大量的代碼示例。代碼示例和習題很多都源自作者歷年來收集的各類實際的排版問題,相信對於本書的讀者也會有所裨益。
為了照顧不同層次的讀者,本書按LATEX 的不同功能編排章節,章節之間沒有嚴格的順序關繫,閱讀本書也不必完全依照章節順序。
?希望快速上手的初學者應首先閱讀第1 章,安裝好TEX軟件並在1.2 節學習基本的實例,然後就可以模仿實例編寫自己的LATEX 文檔了,等到實際需要時再翻到對應的章節了解具體內容。
?希望繫統學習LATEX 的讀者可以從前往後依次閱讀。書中一些段落前,或整個一節之前有一個危險標記,說明這一段或一節內容較難或者依賴後面章節的內容,在初次閱讀時可以略過,可以在讀完基本內容後再來了解這部分內容。還有一些段落前有兩個危險標記,則表示這些內容中部分已經超出本書的範圍,通常需要參見書中引用的其他文檔纔能完全理解。
?具有一定LATEX 經驗的讀者可以根據自己的需要查找有用的內容,書後的索引將有助於找到特定的概念或命令,而每章末尾的注記與書後的文獻列表則可以幫助讀者找到本書中未能詳述的內容。
本書使用不同的字體表示不同的內容。在正文中,使用等寬字體表示代碼,如\\alpha命令、equation 環境;用無襯線字體表示宏包名稱,如amsmath 宏包、beamer文檔類;用尖括號內的楷體(西文斜體)表示參數,如h長度i、hkeyi。在表示LATEX命令或環境的語法形式時,則使用加粗的等寬字體。
還有一些代碼示例沒有直接的排版結果,則隻給出源代碼。如上所示,示例通常會有一個編號以方便引用。本書中所有帶編號的示例和第1章、第6 章的兩個大的例子會隨書附帶,也可以在CTEX 論壇網站上獲取。
書中在部分章節後面安排了一些題外的內容,在標題前用書籍符號標示(如右),內容用楷體字印刷。這些內容遊離於本書的主線之外,主要介紹一些背景知識,讀者可根據自己的興趣選擇閱讀。練習
此外,在部分章節後還設置了少量的練習題,用鉛筆符號標示(如右),讀者可據此檢查自己是否掌握了正文中的內容。這些題目並非為了把讀者難住,大部分練習在書末都有解答或提示。
在本書編寫過程中,許多朋友都為作者提供了無私的幫助。韓建成閱讀了本書早期的草稿和初稿,在結構和內容方面都提出了寶貴的意見和建議;趙勁松和李清閱讀了本書的初稿,並在內容上給出了詳細的建議與勘誤;江疆和王越在閱讀初稿後,對本書的內容和格式都提出了寶貴的意見。本書的編寫一直受到在CTEX論壇與水木社區TEX 版上網友們的關注和支持,論壇中對LATEX 具體問題的大量討論時常能啟發作者的思路,為成書提供了重要的素材。在此,作者向所有關心本書的人們致以真誠的感謝!
作者已盡力使本書準確可靠,但受精力和水平所限,書中的錯誤在所難免。歡迎讀者指出書中的技術上的、文字上的或是排版上的任何錯誤。有關本書的各種問題,可發送電子郵件至info@dozan.cn聯繫本書出版策劃。
劉海洋