跳到主要內容區塊

計資中心電子報C&INC E-paper

專題報導

使用LaTeX做出精美的論文
  • 卷期:v0014
  • 出版日期:2010-09-20

作者:周秉誼 / 臺灣大學計算機及資訊網路中心作業管理組碩士後研究人員


高納德教授設計的TeX系統,對排版有著深遠的影響,是學術寫作不可缺少的工具,更是許多期刊、研討會接受的標準格式。使用LaTeX預先定義好的文件類別,能夠快速簡便地完成論文排版的工作,研究人員可以把焦點放在文章的內容,不需要花費大量時間與格式搏鬥,更能夠產出經典的學術論文。

 

前言

使用Office Word製作畢業論文、作業排版時候,常會碰到一些奇怪的問題,使得論文寫作的效率降低。比如各項格式的調整,好不容易把縮排、段落間距、換頁位置和參考文獻的格式,調整為符合這個研討會要求的格式,結果要投期刊的時候,同樣的事情又要再做一次。辛辛苦苦把上下標都設定好了,結果一套用格式就全部變成一般大小的字體了。新增修改了內容後,目錄的頁數沒有更新,參考文獻的編號有變動,結果顯示的頁數、註標的編號完全不對。當論文的頁數變多後、加入大量表格圖片後,開啟Office Word的速度就變得很慢、很常當機。指導教授針對論文修改之後,很難整理出修改過的地方,沒辦法有系統地保留多個版本,並比較不同版本間的差異。編輯數學方程式很麻煩,編排出來的字體、排版效果又讓人不滿意。不管花再多時間調整格式設定,就是沒辦法做出著名論文那種經典、有深度的排版風格。

 

TeX與LaTeX

1970年代,當高納德 (Donald E. Knuth) 要印製他的名作<計算機程式設計的藝術> (The Art of Computer Programming) 時,也碰到了類似的問題。他發現,書商使用的排版軟體 (typesetting system) 沒有辦法順利地將書中的數學式子正確排版,因此Knuth決定要自己開發一個適合學術寫作和數學式子的排版系統,也就是TeX。TeX讀作 /tɛx/ 或 /tɛk/,是一個低階的排版語言和系統,只要使用一般的文字編輯器,像vi或notepad,就可以在版面上做任何設定。TeX有兩個有趣的地方,TeX的版本編號和一般軟體不同,它是在舊的版本編號的最後面,多加一個位數,讓版本編號越來越接近圓周率 (π),如現在最新的版本號碼就是3.1415926。另一個有趣的地方是,每找到TeX軟體中的一個bug回報給Knuth的話,他會提供獎金,獎金的金額每年倍增,直到$655.36為止。由於Knuth強大的程式功力及熱心人士的幫忙,TeX十分穩定且提供一個在不同平台都能產出相同結果的排版環境,二十年來深深影響了排版軟體的使用習慣。

 

雖然TeX功能強大,可是針對各種細節都需要由使用者定義清楚,為了方便使用,會把常用到的設定和功能定義成巨集 (macro),於是就產生了LaTeX。LaTeX可以想成是TeX的前端,它預先定義好一些常用的文件類別的巨集,如短文 (article)、論文 (report) 等,讓使用者在寫作的時候可以直接套用,把注意力放在文章的內容。而且LaTeX以LaTeX Project Public License發佈,是一個自由軟體 (free software),在任何作業系統平台都可以移植使用。

 

Tex的Live CD

Tex Live是一套TeX的整合發行套件 (distribution),TeX Live整合了TeX相關的程式、許多巨集套件和字體,包括LaTex、algorithm2e、AMSmath、CJK等等非常常用的套件及PS (PostScript) 轉檔程式等,提供使用者一個非常簡單的安裝方式及使用環境,還可以以Live CD的方式運行,不用安裝就可在各種作業系統上使用。目前幾個常見的Linux發行版 (distribution),如Debian、Ubuntu、Fedora等,都已經改用TeX Live作為系統預設的TeX系統。
 

TeX Live 2009的Live CD的映像檔 (ISO),可以從TeX Live官方網站下載,燒成光碟或在作業系統中掛載後,在CD的最上層目錄中找到tl-portable批次檔,執行後會開啟一個TL-SHELL的命令提示字元視窗,在這個視窗中就可以使用latex、bibtex等TeX指令來將LaTex檔案產生排版完成的文件了。

 

 

基本的LaTeX文件

下面是一個最基本的LaTeX檔案,可以用任何純文字編輯軟體,如vim、notepad編輯後存成.tex檔案。其中由反斜線 (backslash) 開頭的單詞就是LaTex的指令,一開始先用\documentclass指令宣告這份文件的類別;方括號內的部份是選擇性的參數,如12pt用來指定本文的字體大小;大括號內是文件類別,研討會、期刊論文每節 (section) 連續顯示的格式,大多可用article;碩博士論文等每章 (chapter) 會從頁首開始的格式,可用report;而如果要每章的開頭都由奇數頁開始的書籍格式,可以使用book。接下來的title和author指令宣告了這個文件的標題和作者的資訊,使用\maketitle指令時可以利用這些訊息印出標題或標題頁。在\begin{document}之前,是用來進行整個文件的格式設定;在\begin{document}和\end{document}之間,就是文件內容了,只要把想要寫的內容寫在這個區塊裡,LaTex就會依照文件類別,自動地編排文件的排列方式。如果要將文章分成不同的章節,可以使用\chapter及\section指令,後面的大括號裡是章節的標題,需要注意的是article類別的文件是沒辦法使用\chapter的。需要編輯數學方程式時,使用\begin{equation}進入方程式環境,就可以編寫任何想表達的方程式了,編輯完成後再用\end{equation}回到原本的內文環境。

 

編輯完成後,在TL-SHELL裡使用pdflatex指令,可以把剛才的LaTex文件編譯成排版完成的PDF文件,就能用Adobe PDF Reader等PDF閱讀軟體瀏覽了。如果在編譯過程有發生錯誤,pdflatex會把錯誤訊息顯示在畫面裡,詳細的編譯資訊會記錄在.log檔案裡。

 

 

BibTeX文獻管理系統

想要在文章之中想要加入參考資料和引用文獻時,可以利用BibTeX這個參考文獻管理套件來幫忙。BibTeX使用副檔名為.bib的純文字檔,列出所有參考文獻的詳細資訊,這些資訊包括這個文獻的種類、在LaTeX中用來連結到這個文獻的關鍵字、文獻的標題作者、年份、出處等等。

下面是一個基本的BibTeX範例。最前面@符號後用來指定這筆文獻的類別,不同類別的資料會需要不同的文獻資訊,@article是期刊論文、研討會論文則是使用@inproceedings,正式出版的書籍可用@book。接在大括號後面的是在LaTeX中用來連結到文獻的關鍵字,可以使用作者姓氏的第一個字母加上發表的年份。在每筆文獻中的author、title、journal等資訊,如果在LaTeX文件中有被參考到,會自動依格式整理並在LaTeX文件中列出。一些論文的入口網站,如ACM Portal等,也會提供每篇論文的BibTeX資料格式,可以直接使用。

在LaTeX文件中連結BibTeX的文獻資料,可在有參考到該文獻的地方,用\cite指令指定該文獻的關鍵字,通常會在\cite前加上一個取代符號 (tilde, ~),以免排版在行尾時和前文不相連。使用\bibliography指令就可以列出所有引用到的文獻列表,大括號裡是BibTeX檔的檔名。還要使用\bibliographystyle指令指定文獻編排的風格,unsrt是依引用的順序編號、plain是依字母順序、alpha是用作者加年份來代替數字,如果期刊有特別的規定,也會提供副檔名為.bst的BibTeX的風格檔。

使用BibTeX,在編譯LaTex文件時會分為三個步驟,先呼叫一次pdflatex產生log檔,再用bibtex依照log檔建立BibTeX資料庫及連結,最後再用pdflatex產生正確連結的PDF文件。

在LaTeX中引用圖檔

如果要在LaTeX的文件裡加入JPEG、PNG等非向量圖片,可以使用graphicx這個套件。首先在LaTeX文件開頭用\usepackage{graphicx}指令,宣告要使用graphicsx套件。在本文要加入圖片的段落,以\begin{figure}進入圖片環境,行末方括號中可以設定圖片放置的位置,h代表要放置在離這個段落最接近的地方、t代表本頁的開頭、b代表本頁的結尾。進入圖片環境後,以\includegraphics指令指定圖片的檔名,方括號中可用scale參數來調整縮放的比率。指令\caption可以設定圖片的標題,如果配合\label指令設定參照用的關鍵字,就可以在本文中以\ref指令直接顯示參照到的圖片編號。如果是架構圖、流程圖或統計圖表等,在繪製圖表時可以用xfig、gnuplot等軟體,直接輸出成eps (Encapsulated PostScript) 檔案,並在LaTeX使用epsfig套件引入圖檔。這樣在放大縮小圖片時,才不會有變形、失真等現象。

中文環境與版本控制

在TeX及LaTeX設計時,畢竟沒有考慮到非英語系的情況,所以在LaTeX中想要使用中文字,要用CJK套件,在CJK的環境下才能使用中文。比較需要注意的是,在CJK的環境裡最好用UTF-8的編碼方式,才不會碰到LaTeX將中文字碼誤認為指令的問題。如果沒有額外安裝中文字體,也可以直接使用bkai和bsmi這兩套內建的字型。配合CJKvert提供的直書功能,就可以輕鬆產生論文的封面和書側了。

撰寫時間很長、或多人同時編輯同一份文件時,最麻煩的就是版本控制(version control)。LaTeX文件是以純文字的模式進行編輯,因此可以使用任何一種常見的版本控制系統來進行版本控制,如SVN或Mercurial等軟體。當進行修改後,將改動的部份送入 (commit) 版本控制的主機,其他人就可以使用版本控制軟體提供的差異比較 (diff) 功能,直接觀看經過改動的部份,或更新 (update) 到最新的版本。

 

結語

從TeX系統問世以來,就一直是最好用的排版系統之一,能讓使用者省下很多調整排版格式的時間,也是許多期刊、研討會指定的稿件格式。雖然TeX系統一開始是為了學術寫作,尤其是數學、理工文章而設計的,但是TeX系統提供了很高的彈性,還有許多好用的套件,對排版、出版界的影響相當深遠。進入新的網路時代,線上和自動文件系統為了與資料來源,如XML等連接,TeX就可以擔任系統的後端,程式設計師只要調整TeX的語法,就能完成自動排版工作,輸出格式正確的文件。TeX系統是很深入而且廣泛的,還有好多有趣好用的功能沒辦法在短短的篇幅裡介紹完,不過只要掌握了TeX的基本功能,想要寫出格式工整、外觀精美的文章,就不是難事了。

 

延伸閱讀

1. http://edt1023.sayya.org/tex/latex123/latex123.html 李果正. 大家來學 LaTeX
2. http://libai.math.ncu.edu.tw/bcc16/7/latex/ 張鈞威, 單維彰. LaTeX 線上教材
3. http://www.csie.ntu.edu.tw/~tzhuan/www/resources/ntu/ 
 黃子桓. 如何用 LaTeX 排版臺灣大學碩士論文