肖文鵬 (xiaowp@263.net), 碩士研究生, 北京理工大學(xué)計(jì)算機(jī)系 2003 年 10 月 01 日 Linux下的OpenOffice、KWord等字處理軟件雖然在功能上與Microsoft Word類似,但目前在易用性和可用性方面仍然存在許多不足,直接使用它們來生成高質(zhì)量的文檔顯然還不太現(xiàn)實(shí)。本文介紹如何用LaTeX這一專業(yè)級的排版系統(tǒng),在Linux下編寫和生成高質(zhì)量的科技論文。 計(jì)算機(jī)技術(shù)的不斷進(jìn)步推動了各行各業(yè)的飛速發(fā)展,使許多行業(yè)出現(xiàn)了革命性的變化,傳統(tǒng)的印刷出版業(yè)也逐漸告別了鉛與火的時代,開始普遍采用計(jì)算機(jī)排版系統(tǒng)。目前,大大小小的排版系統(tǒng)非常多,并且都有其自身特點(diǎn)和適用范圍,例如PageMaker比較適合于專業(yè)的出版社,而普通用戶在編排要求不高的稿件時使用Word、WPS等也不失為合適的選擇。但如果要用Word這類所見即所得(WYSIWYG)軟件編排學(xué)術(shù)論文或者科技文獻(xiàn),那么一旦遇到復(fù)雜的數(shù)學(xué)公式和特殊字符,即便使出渾身解術(shù),其結(jié)果也難以令人十分滿意。在這種場合下使用TeX則是一個不錯的選擇,它是一種使用方便、價格低廉的專業(yè)級排版系統(tǒng),在編排論文、報(bào)告和書籍時,其輸出質(zhì)量并不比價格昂貴的大型計(jì)算機(jī)專業(yè)排版系統(tǒng)遜色,并且在某些方面(如數(shù)學(xué)公式的編排)仍然是目前排版質(zhì)量最好的系統(tǒng)。 TeX特別適合于科技論文和書籍的排版,利用它可以在計(jì)算機(jī)上生成與印刷品幾乎完全一樣的作品,目前在國外已經(jīng)被廣泛地用于編排書籍、檔案、學(xué)位論文和私人信件,以及各種復(fù)雜的公式、目錄、索引和參考文獻(xiàn)等。由于使用TeX可以很輕松地完成高質(zhì)量科技文獻(xiàn)的排版工作,并且可以按照作者的要求進(jìn)行擴(kuò)充和修改,所以逐漸引起出版界和各國科技工作者的注意,被一致認(rèn)為是目前國際上排版數(shù)學(xué)公式能力最強(qiáng)的系統(tǒng),并且在各種國際會議上被指定為標(biāo)準(zhǔn)的論文編排軟件。 稍有經(jīng)驗(yàn)的人都會知道,即使再好的字處理軟件打印出來的效果也都會跟屏幕上看到的有所差異。而TeX系統(tǒng)的輸出是與設(shè)備無關(guān)的DVI(DeVice Independent)文件,因此無論是在針式打印機(jī)、噴墨打印機(jī)、激光打印機(jī)或是照排機(jī)上,其效果都是完全相同的,僅僅只是文字或者圖形的分辯率因設(shè)備的不同而稍有差異。從某種意義上說,TeX才是真正的"所見即所得"。
TeX系統(tǒng)的發(fā)明者是美國Stanford大學(xué)的Donald E. Knuth教授,他是整個計(jì)算機(jī)學(xué)術(shù)界的泰斗級人物,也是享有盛譽(yù)的計(jì)算機(jī)程序設(shè)計(jì)系列專著《計(jì)算機(jī)編程的藝術(shù)》(The Art of Computer Programming)的作者,TeX的出現(xiàn)與這本舉世聞名的計(jì)算機(jī)理論書籍有著密不可分的聯(lián)系。1977年,當(dāng)出版社要求Knuth教授對他六十年代的力作《計(jì)算機(jī)編程的藝術(shù)》出修訂版時,他感到以手工方式對原稿進(jìn)行修改存在種種不便,于是便放下手頭的工作,開始設(shè)計(jì)一套高質(zhì)量的計(jì)算機(jī)排版系統(tǒng)。原先計(jì)劃只花半年時間來改進(jìn)排版技術(shù)然后繼續(xù)寫作的Knuth教授,最后卻整整耗費(fèi)了十年心血,終于研制成功了聞名于世的TeX系統(tǒng)。 與其它計(jì)算機(jī)排版系統(tǒng)不同的是,在用TeX編排文檔時,除了需要輸入正文內(nèi)容之外,同時還需要加入一些排版命令,這些命令通常不是由編輯人員添加的,而是要由作者本人自己完成。TeX系統(tǒng)提供的排版命令十分靈活,作者可以直接使用這些命令,也可以利用已有的功能來定義新的排版命令,使之適應(yīng)特定場合的需要。 TeX與Linux的Kernel一樣,只是一套核心技術(shù),實(shí)際應(yīng)用時往往需要在TeX的基礎(chǔ)上繼續(xù)開發(fā)。最初的TeX系統(tǒng)提供了300多條基本命令,功能雖然強(qiáng)大,但使用起來卻不那么方便。為此Knuth教授在這些基本命令的基礎(chǔ)上定義了600多條復(fù)合命令,構(gòu)成了名為Plain TeX的宏包,只可惜由于無法與普通PC機(jī)兼容,因此流傳得并不十分廣泛。 Plain Tex雖然比原始的TeX更加方便,但其重點(diǎn)還只放在如何排版的層次上,在排版復(fù)雜公式時仍然需要大量命令,并且在挖掘它的深層功能時往往需要相當(dāng)豐富的排版和編程技巧。好在TeX系統(tǒng)提供了非常強(qiáng)大的宏定義功能,因此很多人開始在TeX之上進(jìn)行二次開發(fā),產(chǎn)生了一些TeX系統(tǒng)的衍生版本,其中最著名的是由美國數(shù)學(xué)會(AMS)組織人員開發(fā)的AMS-TeX和美國計(jì)算機(jī)學(xué)家Leslie Lamport在二十世紀(jì)八十年代初開發(fā)的LaTeX,其中前者適合于排版復(fù)雜的數(shù)學(xué)公式,而后者則適合于排版普通文章和書籍。LaTeX提供了一整套生成復(fù)雜文檔所需的高級命令,這樣即使作者沒有掌握復(fù)雜的排版和程序設(shè)計(jì)知識,也可以充分利用TeX系統(tǒng)提供的強(qiáng)大功能,輕輕松松地完成標(biāo)題、章節(jié)、表格、目錄、索引、公式、圖表等的編排。 隨著LaTeX的逐漸普及,它在許多原本沒有想到的領(lǐng)域中得到了擴(kuò)展,為了建立一個統(tǒng)一的標(biāo)準(zhǔn),Leslie Lamport、Frank Mittelbach、Chris Rowley和Rainer Sch?pf在1989年開始了名為LaTeX3的項(xiàng)目,旨在建立一個最優(yōu)的命令集合。該項(xiàng)目的第一個里程碑是在1994年發(fā)布的LaTeX2e,它是LaTeX3出現(xiàn)之前的現(xiàn)行標(biāo)準(zhǔn)版本。 為了安裝和使用上的方便,有人將TeX基本系統(tǒng)包裝起來并添加了一些實(shí)用工具,做成了各種Tex發(fā)行版本供別人使用,其中常見的有MikTeX、emTeX、PCTeX32、fpTeX、teTeX等,它們大多為自由軟件,可以從網(wǎng)上免費(fèi)下載獲得。 在使用LaTeX進(jìn)行排版時,從輸入文本到最后在打印機(jī)上得到輸出結(jié)果,通常需要經(jīng)過如圖1所示的幾個步驟。 圖1 LaTeX排版流程 ![]()
Knuth教授無私地貢獻(xiàn)出了TeX系統(tǒng)的源碼,使之成為一個免費(fèi)的自由軟件,目前TeX系統(tǒng)有許多發(fā)行版本,每個發(fā)行版本都是一整套工具的集合,一般都會包括TeX、LaTeX、dvipdf、dvips、pdfTeX等。TeXLive是TUG(TeX User Group)提供給其會員的一個TeX發(fā)行版,包含可以在大多數(shù)操作系統(tǒng)下運(yùn)行的TeX系統(tǒng),以及配套的字庫和各種宏包,在網(wǎng)站http://www.tug.org/texlive/上可以找到TexLive的最新消息。 TeXLive是以光盤鏡像(ISO)的形式發(fā)布的,在CTAN的官方網(wǎng)站(http://www.ctan.org)上可以下載到最新的壓縮包texlive7-20020604-cd1.iso.bz2和texlive7-20020604-cd2.iso.bz2,兩者分別適用于不同的操作系統(tǒng)。對于Linux操作系統(tǒng)來講,需要下載文件texlive7-20020604-cd1.iso.bz2,并使用如下命令對其進(jìn)行解壓縮:
在得到texlive7-20020604-cd1.iso文件之后,可以將其刻錄成CD,也可以用mount命令將其作為文件系統(tǒng)加載后使用:
TeXLive的安裝比較容易,首先是將光盤根目錄下的bin和texmf子目錄整個拷貝到硬盤上:
然后再將TeX系統(tǒng)可執(zhí)行程序所在的目錄添加到當(dāng)前用戶的環(huán)境變量PATH中去,就可以完成安裝了:
安裝好TexLive之后,在命令行方式下輸入tex命令,如果能夠看到如下的提示信息,則表明TeX系統(tǒng)已經(jīng)能夠正常工作了:
輸入\relax\bye退出TeX,之后就可以在Linux下使用LaTeX來編排高質(zhì)量的文檔了。 LaTeX文稿(即用于排版的源文件)包含兩部分內(nèi)容:一部分是正文,也就是需要排版輸出的內(nèi)容;另一部分是排版控制命令,用于控制版面樣式、字體字形等格式,它們是用反斜杠"\"所引導(dǎo)的字符串。 LaTeX文稿的基本格式如下所示: \documentclass [選項(xiàng)]{類} 全局命令和定義 \begin{document} 局部命令和正文 \end{document} 每一個LaTeX文稿都包含導(dǎo)言(preamble)和正文(body)兩個部分。導(dǎo)言是一組命令的集合,它指定整個文稿的全局參數(shù),如頁面格式、文本尺寸、頁碼、頁眉和頁腳等。導(dǎo)言部分必須包含\documetclass命令,以指定文檔的版式類型,LaTeX提供了四種最基本的版式類型:book(書籍型)、article(論文型)、report(報(bào)告型)和letter(書信型),作者可以根據(jù)自己的需要選擇一種合適的類型。 LaTeX文稿的導(dǎo)言部分必須包含\documentclass命令,它通常是導(dǎo)言中的第一條命令,如果導(dǎo)言中再沒有其他命令,LaTeX就會為行寬、邊距、段落間隔、頁面高度和寬度等選擇標(biāo)準(zhǔn)的設(shè)置值。導(dǎo)言是用\begin{document}來結(jié)束的,緊接這條命令的所有內(nèi)容都被解釋為正文,它由文本和混雜在其中的排版命令組成。與導(dǎo)言相比,正文中的命令只能起到局部的作用,即它們只作用于部分文本,如縮進(jìn)、公式、字體、字號等。LaTeX文稿中的正文是用\end{documnet}命令來結(jié)束的,這通常也是整個文稿的結(jié)束。 LaTeX文稿是一種自由格式文件,輸入源文件時不必考慮每行的長短,也不必考慮單詞之間空白的多少,LaTeX會自動按照排版命令進(jìn)行編排。下面是一個簡單的LaTeX文稿:
在將上述文稿保存為hello.tex后,再用latex命令進(jìn)行處理:
圖2 LaTeX排版效果 ![]() LaTeX是一個在學(xué)術(shù)界享有盛名的專業(yè)級排版軟件,特別適合于科技論文和書籍的編排,它使得作者能夠?qū)W⒂趯懽鞯膬?nèi)容,而不是拘泥在每個字應(yīng)該如何顯示等具體細(xì)節(jié),此外在排版復(fù)雜的數(shù)學(xué)公式時,至今還沒有任何軟件可以與 LaTeX 匹敵。LaTeX和Linux一樣屬于自由軟件,借助于LaTeX這一專業(yè)的排版系統(tǒng),在Linux下完全可以生成比Word等字處理軟件具有更高質(zhì)量的文檔。
|