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