《LaTeX入門》內容取材廣泛,涵蓋了正文組織、自動化工具、數學公式、圖表制作、幻燈片演示、錯誤處理等方面。考慮到LaTeX也是不斷進化的,《LaTeX入門》從數以千計的LaTeX工具宏包中進行甄選,選擇較新而且實用的版本來講解排版技巧。
為了方便讀者的學習,《LaTeX入門》給出了大量的實例和一定量的習題,并且還提供了案例代碼。書中的示例大部分來自作者多年的實際排版案例,讀者不斷練習,肯定能掌握LaTeX的排版技能。
《LaTeX入門》適合數學、物理、計算機、化學、生物、工程等專業(yè)的學生、工程師和教師閱讀,也適合中學數學教師。此外,本書還適合對LaTeX排版有興趣的人員。
提到LATEX,便不能不說起它的基礎TEX。TEX是誕生于20世紀70年代末到80年代初的一款計算機排版軟件,用來排版高質量的書籍,特別是包含有數學公式的書籍。TEX以追求高質量為目標,很早就實現了矢量描述的計算機字體、細致的分頁斷行算法和數學排版功能,因其數學排版能力得到了學術界的廣泛使用,也啟發(fā)了不少后來復雜的商業(yè)計算機排版軟件。有趣的是,這樣一款排版軟件卻并非在排版業(yè)界產生,而是由計算機科學家高德納教授在修訂其七卷本巨著《計算機程序設計藝術》的前三卷時,為了排版這一部書籍而產生的。這是一部花費高德納幾乎畢生精力的巨著,直到今天仍在撰寫,然而在照相排版技術剛剛興起的1976年,新的計算機系統(tǒng)卻無法提供與傳統(tǒng)手工排版相媲美的質量。面對這種情況,高德納抱怨道:
我不知道怎么辦。我花了整整15年寫這些書,可要是這么難看,我就再也不寫了。我怎么能對這樣的作品引以為豪呢·
從翌年開始,高德納就在其學生、友人的幫助下,開發(fā)TEX排版軟件。直到8年后TEX軟件功能完備,他才又回到撰寫書籍的工作中去。這段歷史一直被引為TEX和高德納的傳奇,有“十年磨一劍”之稱。TEX原本是用于個人的排版軟件,這也引出了TEX與其他專業(yè)排版軟件的一點重大的區(qū)別,就是TEX主要是由書籍、文章的作者本人來使用的,它是面向作者的。因此,TEX有許多方便作者的自定義功能,使用也簡單方便,很快受到作者們的青睞,排版自己的學術書籍。
LATEX肇始于20世紀80年代初,也是LeslieLamport博士為了編寫他自己的一部書籍而設計的。LATEX實際上就是用TEX語言編寫的一組宏代碼,擁有比原來的TEX格式(PlainTEX)更為規(guī)范的命令和一整套預定義的格式,隱藏了不少排版方面的細節(jié),可以讓完全不懂排版理論的學者們也可以比較容易地將書籍和文稿排版出來。LATEX一出,很快更為風靡,在1994年LATEX2“完善之后,現在已經成為國際上數學、物理、計算機等科技領域專業(yè)排版的事實標準,其他領域(化學、生物、工程、語言學等)也有大量用戶。相關專業(yè)的學術期刊也都主要接受LATEX作為投稿格式。
既然TEX/LATEX主要是面向作者本人的排版軟件,本書的目標對象也就以學術文章的作者為主,也就是需要經常編寫LATEX稿件的高校師生和科研院所的研究人員。本書的內容選擇以滿足學術排版需求為準,閱讀本書后讀者應該不僅能應對各種學術投稿的簡單需要,也將有能力排版一般的學術書籍,并使用LATEX完成簡單的學術報告幻燈片。不過,本書也力圖廣泛取材,讓排版公司的工人、中學數學教師或是用LATEX作筆記的電腦程序員都能有所得。
本書雖然名為“入門”,假定讀者沒有任何使用TEX的經驗,但為了避免讀者逡巡于門外而不入,也力圖使內容詳實可靠,為更深入地使用LATEX打好基礎。在編寫本書時,作者追求以下幾個目標:
·內容廣泛本書從軟件安裝和最基本的示例講起,然后按正文組織、自動化工具、數學公式、圖表制做、幻燈片演示、錯誤處理等方面詳述LATEX的功能和使用,最后收束于LATEX的擴展、相關工具和資源。LATEX的基本內容并不多,功能也很有限,但經過20多年的發(fā)展,現代LATEX文檔的一大特點是大量使用工具宏包來完成復雜的工作。本書也力圖體現這一特點,全書過半的篇幅都在講解各種重要的LATEX宏包和工具。本書正文共有566頁,作為一本入門書已是嫌多,但仍不可能包羅LATEX的所有方面,未免有遺珠之憾,只能留待讀者自己學習了。
·取材從新TEX最初的一個設計目標是良好的穩(wěn)定性,希望在多年前編寫的文檔在最新的系統(tǒng)中排版仍能得到完全相同的結果,各種排版命令的語義保持穩(wěn)定,TEX也確實做到了這一點。然而LATEX是一個更為開放的系統(tǒng),與其他軟件一樣,它是在不斷進化的。不僅其內核從最初的LATEX2.09到LATEX2“再到正在開發(fā)中的LATEX3不斷變化,而且還有數以千計的工具宏包在不斷更新,完成各種復雜的排版功能。實現TEX語言的TEX引擎,也在不斷增添新的功能。為了反映這種變化,本書作者也盡量對內容加以甄別,選取較新并且實用的軟件工具加以介紹。
·切合實用為了增強實用性,本書給出了大量實例和一定量的習題。第1章和第6章提供了兩段完整的文檔源代碼,而其他章節(jié)也給出了大量的代碼示例。代碼示例和習題很多都源自作者歷年來收集的各類實際的排版問題,相信對于本書的讀者也會有所裨益。
為了照顧不同層次的讀者,本書按LATEX的不同功能編排章節(jié),章節(jié)之間沒有嚴格的順序關系,閱讀本書也不必完全依照章節(jié)順序。
·希望快速上手的初學者應首先閱讀第1章,安裝好TEX軟件并在1.2節(jié)學習基本的實例,然后就可以模仿實例編寫自己的LATEX文檔了,等到實際需要時再翻到對應的章節(jié)了解具體內容。
·希望系統(tǒng)學習LATEX的讀者可以從前往后依次閱讀。書中一些段落前,或整個一節(jié)之前有一個危險標記,說明這一段或一節(jié)內容較難或者依賴后面章節(jié)的內容,在初次閱讀時可以略過,可以在讀完基本內容后再來了解這部分內容。還有一些段落前有兩個危險標記,則表示這些內容中部分已經超出本書的范圍,通常需要參見書中引用的其他文檔才能完全理解。
·具有一定LATEX經驗的讀者可以根據自己的需要查找有用的內容,書后的索引將有助于找到特定的概念或命令,而每章末尾的注記與書后的文獻列表則可以幫助讀者找到本書中未能詳述的內容。
本書使用不同的字體表示不同的內容。在正文中,使用等寬字體表示代碼,如\alpha命令、equation環(huán)境;用無襯線字體表示宏包名稱,如amsmath宏包、beamer文檔類;用尖括號內的楷體(西文斜體)表示參數,如h長度i、hkeyi。在表示LATEX命令或環(huán)境的語法形式時,則使用加粗的等寬字體。
還有一些代碼示例沒有直接的排版結果,則只給出源代碼。如上所示,示例通常會有一個編號以方便引用。本書中所有帶編號的示例和第1章、第6章的兩個大的例子會隨書附帶,也可以在CTEX論壇網站上獲取。
書中在部分章節(jié)后面安排了一些題外的內容,在標題前用書籍符號標示(如右),內容用楷體字印刷。這些內容游離于本書的主線之外,主要介紹一些背景知識,讀者可根據自己的興趣選擇閱讀。練習
此外,在部分章節(jié)后還設置了少量的練習題,用鉛筆符號標示(如右),讀者可據此檢查自己是否掌握了正文中的內容。這些題目并非為了把讀者難住,大部分練習在書末都有解答或提示。
在本書編寫過程中,許多朋友都為作者提供了無私的幫助。韓建成閱讀了本書早期的草稿和初稿,在結構和內容方面都提出了寶貴的意見和建議;趙勁松和李清閱讀了本書的初稿,并在內容上給出了詳細的建議與勘誤;江疆和王越在閱讀初稿后,對本書的內容和格式都提出了寶貴的意見。本書的編寫一直受到在CTEX論壇與水木社區(qū)TEX版上網友們的關注和支持,論壇中對LATEX具體問題的大量討論時常能啟發(fā)作者的思路,為成書提供了重要的素材。在此,作者向所有關心本書的人們致以真誠的感謝!
作者已盡力使本書準確可靠,但受精力和水平所限,書中的錯誤在所難免。歡迎讀者指出書中的技術上的、文字上的或是排版上的任何錯誤。有關本書的各種問題,可發(fā)送電子郵件至info@dozan.cn聯(lián)系本書出版策劃。
劉海洋
劉海洋,畢業(yè)于北京大學,對Latex有深入研究,擔任多個Tex論壇版主。
序
前言
第1章 熟悉LATEX
1.1 讓LATEX 跑起來
1.1.1 LATEX 的發(fā)行版及其安裝
CTEX 套裝3 TEX Live
1.1.2 編輯器與周邊工具
編輯器舉例——TeXworks 13 PDF 閱讀器命令行工具
1.1.3 “Happy TEXing”與“特可愛排版”
1.2 從一個例子說起
1.2.1 確定目標
1.2.2 從提綱開始
1.2.3 填寫正文
1.2.4 命令與環(huán)境
1.2.5 遭遇數學公式
1.2.6 使用圖表
1.2.7 自動化工具
1.2.8 設計文章的格式
本章注記
第2章 組織你的文本
2.1 文字與符號
2.1.1 字斟句酌
從字母表到單詞
正確使用標點
看不見的字符——空格與換行
2.1.2 特殊符號
2.1.3 字體
字體的坐標
使用更多字體
強調文字
2.1.4 字號與行距
2.1.5 水平間距與盒子
水平間距85 盒子
2.2 段落與文本環(huán)境
2.2.1 正文段落
2.2.2 文本環(huán)境
2.2.3 列表環(huán)境
基本列表環(huán)
計數器與編號
定制列表環(huán)境
2.2.4 定理類環(huán)境
2.2.5 抄錄和代碼環(huán)境
抄錄命令與環(huán)境
程序代碼與listings
2.2.6 tabbing 環(huán)境
2.2.7 腳注與邊注
2.2.8 垂直間距與垂直盒子
2.3 文檔的結構層次
2.3.1 標題和標題頁
2.3.2 劃分章節(jié)
2.3.3 多文件編譯
2.3.4 定制章節(jié)格式
2.4 文檔類與整體格式設計
2.4.1 基本文檔類和ctex 文檔類
2.4.2 頁面尺寸與geometry
2.4.3 頁面格式與fancyhdr
2.4.4 分欄控制與multicol
2.4.5 定義命令與環(huán)境
本章注記
第3章 自動化工具
3.1 目錄
3.1.1 目錄和圖表目錄
3.1.2 控制目錄內容
3.1.3 定制目錄格式
3.2 交叉引用
3.2.1 標簽與引用
3.2.2 更多交叉引用
3.2.3 電子文檔與超鏈
3.3 BIBTEX 與文獻數據庫
3.3.1 BIBTEX 基礎
3.3.2 JabRef 與文獻數據庫管理
3.3.3 用natbib 定制文獻格式
3.3.4 更多的文獻格式
3.3.5 文獻列表的底層命令
3.4 Makeindex 與索引
3.4.1 制作索引
3.4.2 定制索引格式
索引環(huán)境與格式
Makeindex 與格式文件
3.4.3 詞匯表及其他
手工生成詞匯表
使用glossaries 宏包
本章注記
第4章 玩轉數學公式
4.1 數學模式概說
4.2 數學結構
4.2.1 上標與下標
4.2.2 上下畫線與花括號
4.2.3 分式
4.2.4 根式
4.2.5 矩陣
4.3 符號與類型
4.3.1 字母表與普通符號
4.3.2 數學算子
4.3.3 二元運算符與關系符
4.3.4 括號與定界符
4.3.5 標點
4.4 多行公式
4.4.1 羅列多個公式
4.4.2 拆分單個公式
4.4.3 將公式組合成塊
4.5 精調與雜項
4.5.1 公式編號控制
4.5.2 公式的字號
4.5.3 斷行與數學間距
本章注記
第5章 繪制圖表
5.1 LATEX 中的表格
5.1.1 tabular 和array
5.1.2 表格單元的合并與分割
5.1.3 定寬表格與tabularx
5.1.4 長表格與longtable
5.1.5 三線表與表線控制
5.1.6 array 宏包與列格式控制
5.1.7 定界符與子矩陣
5.2 插圖與變換
5.2.1 graphicx 與插圖
5.2.2 幾何變換
5.2.3 頁面旋轉
5.3 浮動體與標題控制
5.3.1 浮動體
5.3.2 標題控制與caption 宏包
5.3.3 并排與子圖表
5.3.4 浮動控制與float 宏包
5.3.5 文字繞排
5.4 使用彩色
5.4.1 彩色表格
5.5 繪圖語言
5.5.1 XY-pic 與交換圖表
5.5.2 PSTricks 與TikZ 簡介
PSTricks380 pgf 與TikZ
5.5.3 METAPOST 與Asymptote 簡介
METAPOST398 Asymptote
本章注記
第6章 幻燈片演示
6.1 組織幻燈內容
6.1.1 幀
6.1.2 標題與文檔信息
6.1.3 分節(jié)與目錄
6.1.4 文獻
6.1.5 定理與區(qū)塊
6.1.6 圖表
6.2 風格的要素
6.2.1 使用主題
6.2.2 自定義格式
6.3 動態(tài)展示
6.3.1 覆蓋淺說
6.3.2 活動對象與多媒體
本章注記
第7章 從錯誤中救贖
7.1 理解錯誤信息
7.1.1 與TEX 交互
7.1.2 常見錯誤與警告
TEX 錯誤
LATEX 錯誤
TEX 警告
LATEX 警告
7.2 調試與分析
7.2.1 調試命令
7.2.2 更多調試工具
7.3 提問的智慧
7.3.1 提問之前
7.3.2 最小工作示例
7.3.3 壞問題?好問題
本章注記
第8章 LATEX 無極限
8.1 宏編輯淺說
8.1.1 從LATEX 到TEX
8.1.2 編寫自己的宏包和文檔類
8.2 外部工具舉隅
8.2.1 自動代碼生成
生成公式代碼
生成圖形代碼
生成表格代碼
生成完整的TEX 文檔
8.2.2 在其他地方使用LATEX
8.3 LATEX 資源尋找
8.3.1 再探TEX 發(fā)行版
8.3.2 互聯(lián)網上的LATEX
CTAN 496 TEX 用戶組織497 在線社區(qū)與獨立網站
本章注記
部分習題答案
參考文獻
索引