专业的LaTeX: 在Linux下编写高质量的文档
專業的LaTeX: 在Linux下編寫高質量的文檔
Linux下的OpenOffice、KWord等字處理軟件雖然在功能上與Microsoft Word類似,但目前在易用性和可用性方面仍然存在許多不足,直接使用它們來生成高質量的文檔顯然還不太現實。本文介紹如何用LaTeX這一專業級的排版系統,在Linux下編寫和生成高質量的科技論文。
0 評論:
2003 年 10 月 01 日
- 內容
在 IBM Bluemix 云平臺上開發并部署您的下一個應用。
一、簡介
計算機技術的不斷進步推動了各行各業的飛速發展,使許多行業出現了革命性的變化,傳統的印刷出版業也逐漸告別了鉛與火的時代,開始普遍采用計算機排版系統。目前,大大小小的排版系統非常多,并且都有其自身特點和適用范圍,例如PageMaker比較適合于專業的出版社,而普通用戶在編排要求不高的稿件時使用Word、WPS等也不失為合適的選擇。但如果要用Word這類所見即所得(WYSIWYG)軟件編排學術論文或者科技文獻,那么一旦遇到復雜的數學公式和特殊字符,即便使出渾身解術,其結果也難以令人十分滿意。在這種場合下使用TeX則是一個不錯的選擇,它是一種使用方便、價格低廉的專業級排版系統,在編排論文、報告和書籍時,其輸出質量并不比價格昂貴的大型計算機專業排版系統遜色,并且在某些方面(如數學公式的編排)仍然是目前排版質量最好的系統。
TeX特別適合于科技論文和書籍的排版,利用它可以在計算機上生成與印刷品幾乎完全一樣的作品,目前在國外已經被廣泛地用于編排書籍、檔案、學位論文和私人信件,以及各種復雜的公式、目錄、索引和參考文獻等。由于使用TeX可以很輕松地完成高質量科技文獻的排版工作,并且可以按照作者的要求進行擴充和修改,所以逐漸引起出版界和各國科技工作者的注意,被一致認為是目前國際上排版數學公式能力最強的系統,并且在各種國際會議上被指定為標準的論文編排軟件。
稍有經驗的人都會知道,即使再好的字處理軟件打印出來的效果也都會跟屏幕上看到的有所差異。而TeX系統的輸出是與設備無關的DVI(DeVice Independent)文件,因此無論是在針式打印機、噴墨打印機、激光打印機或是照排機上,其效果都是完全相同的,僅僅只是文字或者圖形的分辯率因設備的不同而稍有差異。從某種意義上說,TeX才是真正的"所見即所得"。
回頁首
二、TeX系統
TeX系統的發明者是美國Stanford大學的Donald E. Knuth教授,他是整個計算機學術界的泰斗級人物,也是享有盛譽的計算機程序設計系列專著《計算機編程的藝術》(The Art of Computer Programming)的作者,TeX的出現與這本舉世聞名的計算機理論書籍有著密不可分的聯系。1977年,當出版社要求Knuth教授對他六十年代的力作《計算機編程的藝術》出修訂版時,他感到以手工方式對原稿進行修改存在種種不便,于是便放下手頭的工作,開始設計一套高質量的計算機排版系統。原先計劃只花半年時間來改進排版技術然后繼續寫作的Knuth教授,最后卻整整耗費了十年心血,終于研制成功了聞名于世的TeX系統。
與其它計算機排版系統不同的是,在用TeX編排文檔時,除了需要輸入正文內容之外,同時還需要加入一些排版命令,這些命令通常不是由編輯人員添加的,而是要由作者本人自己完成。TeX系統提供的排版命令十分靈活,作者可以直接使用這些命令,也可以利用已有的功能來定義新的排版命令,使之適應特定場合的需要。
TeX與Linux的Kernel一樣,只是一套核心技術,實際應用時往往需要在TeX的基礎上繼續開發。最初的TeX系統提供了300多條基本命令,功能雖然強大,但使用起來卻不那么方便。為此Knuth教授在這些基本命令的基礎上定義了600多條復合命令,構成了名為Plain TeX的宏包,只可惜由于無法與普通PC機兼容,因此流傳得并不十分廣泛。
Plain Tex雖然比原始的TeX更加方便,但其重點還只放在如何排版的層次上,在排版復雜公式時仍然需要大量命令,并且在挖掘它的深層功能時往往需要相當豐富的排版和編程技巧。好在TeX系統提供了非常強大的宏定義功能,因此很多人開始在TeX之上進行二次開發,產生了一些TeX系統的衍生版本,其中最著名的是由美國數學會(AMS)組織人員開發的AMS-TeX和美國計算機學家Leslie Lamport在二十世紀八十年代初開發的LaTeX,其中前者適合于排版復雜的數學公式,而后者則適合于排版普通文章和書籍。LaTeX提供了一整套生成復雜文檔所需的高級命令,這樣即使作者沒有掌握復雜的排版和程序設計知識,也可以充分利用TeX系統提供的強大功能,輕輕松松地完成標題、章節、表格、目錄、索引、公式、圖表等的編排。
隨著LaTeX的逐漸普及,它在許多原本沒有想到的領域中得到了擴展,為了建立一個統一的標準,Leslie Lamport、Frank Mittelbach、Chris Rowley和Rainer Sch?pf在1989年開始了名為LaTeX3的項目,旨在建立一個最優的命令集合。該項目的第一個里程碑是在1994年發布的LaTeX2e,它是LaTeX3出現之前的現行標準版本。
為了安裝和使用上的方便,有人將TeX基本系統包裝起來并添加了一些實用工具,做成了各種Tex發行版本供別人使用,其中常見的有MikTeX、emTeX、PCTeX32、fpTeX、teTeX等,它們大多為自由軟件,可以從網上免費下載獲得。
回頁首
三、LaTeX排版流程
在使用LaTeX進行排版時,從輸入文本到最后在打印機上得到輸出結果,通常需要經過如圖1所示的幾個步驟。
圖1 LaTeX排版流程
- 編輯
用編輯器編寫文稿(源文件),同時插入排版命令。需要注意的是,源文件必須是純文本格式的,并且通常以.tex作為其擴展名(如hello.tex)。在Linux下建議使用XEmacs或者VIM編輯器,它們都能夠識別LaTeX語法并且可以高亮顯示LaTeX命令中的關鍵字。
- 編譯
生成的LaTeX源文件中如果沒有語法錯誤,那么就可以使用latex命令進行編譯,生成DVI文件:
[xiaowp@xpcdev latex]$ latex hello.tex在處理過程中LaTeX會顯示頁號以及可能會有的錯誤和警告信息,如果在該過程中出現錯誤,則表明源文件中的某些排版命令有誤,此時應該重新對源文件進行修改。當LaTeX成功結束這一處理過程后,將生成一個名為hello.dvi的文件,該文件是與設備無關的,它由格式化后的文本以及所需要的字體信息組成,但是與要使用的打印機的特征無關,該文件通常也稱為元文件(metafile)。
- 查看
在正式打印輸出或者照排制版之前,可以先在計算機屏幕上顯示DVI文件,察看文件內容或者排版結果是否合乎要求,如果有不滿意之外,則應重新對LaTeX源文件進行修改。在Linux下有許多軟件可以用來查看DVI文件,其中最常用的是X-Window環境下的xdvi,下面的命令可以用來查看hello.dvi:[xiaowp@xpcdev latex]$ xdvi hello.dvi由于DVI文件是與設備無關的,因而用xdvi在屏幕上看到的結果是不會受到輸出設備、操作系統、硬件環境等因素影響的。 - 打印
DVI元文件中的信息最終要被轉化成可以在特定打印機上輸出的形式,該過程是由一個稱為打印驅動程序來完成的,它是與具體打印機相關的。例如,在Linux下可以用下面的命令將hello.dvi送到惠普激光打印機上打印:
[xiaowp@xpcdev latex]$ dvihp hello.dvi - 輸出
在很多場合下,使用latex得到的DVI文件并不總是需要打印出來,而是要轉化成更加便于閱讀的格式,如PDF(Portable Document Format)或者PS(PostScript),LaTeX系統提供了相應的工具在這些格式之間進行轉換。要將hello.dvi轉化成hello.pdf和hello.ps,可以分別使用如下的命令:
[xiaowp@xpcdev latex]$ dvipdf hello.dvi [xiaowp@xpcdev latex]$ dvips hello.dvi -o
回頁首
四、LaTeX系統安裝
Knuth教授無私地貢獻出了TeX系統的源碼,使之成為一個免費的自由軟件,目前TeX系統有許多發行版本,每個發行版本都是一整套工具的集合,一般都會包括TeX、LaTeX、dvipdf、dvips、pdfTeX等。TeXLive是TUG(TeX User Group)提供給其會員的一個TeX發行版,包含可以在大多數操作系統下運行的TeX系統,以及配套的字庫和各種宏包,在網站http://www.tug.org/texlive/上可以找到TexLive的最新消息。
TeXLive是以光盤鏡像(ISO)的形式發布的,在CTAN的官方網站(http://www.ctan.org)上可以下載到最新的壓縮包texlive7-20020604-cd1.iso.bz2和texlive7-20020604-cd2.iso.bz2,兩者分別適用于不同的操作系統。對于Linux操作系統來講,需要下載文件texlive7-20020604-cd1.iso.bz2,并使用如下命令對其進行解壓縮:
[root@xpcdev texlive]# bzip2 -d texlive7-20020604-cd1.iso.bz2在得到texlive7-20020604-cd1.iso文件之后,可以將其刻錄成CD,也可以用mount命令將其作為文件系統加載后使用:
[root@xpcdev texlive]# $mount -t iso9660 -o ro,loop texlive7-20020604-cd1.iso /mnt/texliveTeXLive的安裝比較容易,首先是將光盤根目錄下的bin和texmf子目錄整個拷貝到硬盤上:
[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系統可執行程序所在的目錄添加到當前用戶的環境變量PATH中去,就可以完成安裝了:
[xiaowp@xpcdev latex]$ export PATH=/usr/local/texlive/bin/i386-linux/:$PATH安裝好TexLive之后,在命令行方式下輸入tex命令,如果能夠看到如下的提示信息,則表明TeX系統已經能夠正常工作了:
[xiaowp@xpcdev latex]$ tex This is TeX, Version 3.14159 (Web2C 7.3.7x) **輸入\relax\bye退出TeX,之后就可以在Linux下使用LaTeX來編排高質量的文檔了。
回頁首
五、LaTeX文檔處理
LaTeX文稿(即用于排版的源文件)包含兩部分內容:一部分是正文,也就是需要排版輸出的內容;另一部分是排版控制命令,用于控制版面樣式、字體字形等格式,它們是用反斜杠"\"所引導的字符串。
LaTeX文稿的基本格式如下所示:
\documentclass [選項]{類}
全局命令和定義
\begin{document}
局部命令和正文
\end{document}
每一個LaTeX文稿都包含導言(preamble)和正文(body)兩個部分。導言是一組命令的集合,它指定整個文稿的全局參數,如頁面格式、文本尺寸、頁碼、頁眉和頁腳等。導言部分必須包含\documetclass命令,以指定文檔的版式類型,LaTeX提供了四種最基本的版式類型:book(書籍型)、article(論文型)、report(報告型)和letter(書信型),作者可以根據自己的需要選擇一種合適的類型。
LaTeX文稿的導言部分必須包含\documentclass命令,它通常是導言中的第一條命令,如果導言中再沒有其他命令,LaTeX就會為行寬、邊距、段落間隔、頁面高度和寬度等選擇標準的設置值。導言是用\begin{document}來結束的,緊接這條命令的所有內容都被解釋為正文,它由文本和混雜在其中的排版命令組成。與導言相比,正文中的命令只能起到局部的作用,即它們只作用于部分文本,如縮進、公式、字體、字號等。LaTeX文稿中的正文是用\end{documnet}命令來結束的,這通常也是整個文稿的結束。
LaTeX文稿是一種自由格式文件,輸入源文件時不必考慮每行的長短,也不必考慮單詞之間空白的多少,LaTeX會自動按照排版命令進行編排。下面是一個簡單的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命令進行處理:
[xiaowp@xpcdev latex]$ latex hello.tex 排版后的結果在Linux下可以用xdvi查看,其效果如圖2所示: [xiaowp@xpcdev latex]$ xdvi hello.dvi圖2 LaTeX排版效果
回頁首
六、小結
LaTeX是一個在學術界享有盛名的專業級排版軟件,特別適合于科技論文和書籍的編排,它使得作者能夠專注于寫作的內容,而不是拘泥在每個字應該如何顯示等具體細節,此外在排版復雜的數學公式時,至今還沒有任何軟件可以與 LaTeX 匹敵。LaTeX和Linux一樣屬于自由軟件,借助于LaTeX這一專業的排版系統,在Linux下完全可以生成比Word等字處理軟件具有更高質量的文檔。
總結
以上是生活随笔為你收集整理的专业的LaTeX: 在Linux下编写高质量的文档的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NBT | 微生物研究所王军组在AI赋能
- 下一篇: 这份 Pandas 学习教程很不错,可在