筆者剛剛接觸到TEX排版,相關知識完全空白,用了兩天時間學習並完成了一篇論文的完整排版。
期間遇到不少小問題,着實辛苦,分享至上,現將其解決辦法總結歸納,共同學習。
一、工具介紹
TeX是一個很好排版工具,在學術界十分流行,特別是數學、物理學和計算機科學界。
CTeX是TeX中的一個版本,指的是CTeX 中文套裝的簡稱。CTeX中文套裝是基於 Windows 下的 MiKTeX系統,集成了編輯器 WinEdt及其他的處理軟件,並增加了對中文的完整支持。
BibTeX是一種格式和一個程序, 用於協調LaTeX的參考文獻處理。BibTeX 使用數據庫的的方式來管理參考文獻,其文獻數據庫文件的后綴名為.bib。
JabRef是一個開源的參考文獻管理軟件,使用 Java 語言編寫,所以天生具有跨平台特性,通用於安裝有Java支持的Windows, Linux和Mac,軟件主頁http://jabref.sourceforge.net/。它可以很方便地管理下載到本機的文獻,生成 BibTeX 文獻數據庫,供 LaTeX 或其它軟件使用,可以與 Kile, Emacs, Vim, WinEdt 等多種軟件結合使用。
BibTex4Word是一個Microsoft Word的插件,能夠將.bib文件中的參考文獻方便地插入到Word文檔中,軟件的使用方法和安裝包可以在http://www.ee.ic.ac.uk/hp/staff/dmb/perl/找到。本文主要介紹在CTeX中插入文獻,這里只是順帶一提。
Microsoft Office Visio能方便地創建具有專業外觀的圖表,以便理解、記錄和分析信息、數據、系統和過程(選用)。
Adobe Acrobat Professional在這里主要用於將.pdf文件轉換為.eps文件。
總的來說,我們用CTeX套裝中的WinEdt為論文排版,用JabRef管理論文的參考文獻,用Visio + Photoshop來制作並生成論文需要的.eps圖片。
二、環境要求
筆者使用Win8.1(x64)操作系統,可以使用以上全部工具。特別需要提出的是,JabRef是用Java語言寫的,所以需要配置Java環境,去oracle下載相應JDK即可。
三、文字處理
(1)結構
文章的大致結構如下:
\documentclass[ ]{ }
\usepackage{ }
\being{document} %從此往上都是導言區(preamble)
…
\section{ } %1級章節
\subsection{ } %2級章節
\subsubsection{ }%3級章節,沒有subsubsubsection
…
\end{document} %begin開始,end結束
(2)符號

在WinEdt工具欄里找到如上紅框里的圖標,點擊后你能找到大多數的符號。
另外,對在該工具欄里沒有的符號,可點擊http://www.cfsm.cn/info/symbols/symbols.htm。
當然對於實在生僻的符號,你也可以百度“LaTeX符號”進行搜索。
四、公式處理
(1)公式插入
如果要在文章中插入公式,可輸入如下命令:
\begin{equation}\label{eq:eq1} A= b + c \end{equation}
“A = b + c”這部分寫入公式即可,不需要加$符號。運行后將顯示

其中\label里是該公式的標簽,將會在引用該公式時用到。
后面的(1)是自動生成的。Latex將自動根據你所編寫的公式順序添加標號。
(2)上下標
上標和下標對於剛剛接觸latex的人來說可能是個問題,所以在這里特地給出:
例子:$p_{i}^{1}$ 結果:pi1
(3)長等式換行
公式不會自動換行,可能會超出文檔范圍,非常難看!筆者嘗試了使用"\\"、"\newline"、"\break"都不奏效,后來總算發現可以這么做:
例子:
\begin{eqnarray}\label{eq:eq2} \lefteqn{Response\_time_{write}(r_{i}, R_{write}^{1}, R_{write}^{2}, R_{write}^{3}, R_{hist})}\nonumber\\ \lefteqn{==F(r_{i}, R_{write}^{1}, R_{write}^{2}, R_{write}^{3}, R_{hist})}\nonumber\\ \lefteqn{= aF(r_{i}, 0, 0, 0, 0) + bF(r_{i}, R_{write}^{1}, 0, 0, 0)}\nonumber\\ \lefteqn{+ cF(r_{i}, 0, R_{write}^{2}, 0, 0)}\nonumber\\ &+ dF(r_{i}, 0, 0, R_{write}^{3},0) + eF(r_{i}, 0, 0, 0, R_{hist}) + f \end{eqnarray}
結果:

在上述例子中,我們使用了”eqnarray”,類似於使用數組對公式進行排列;
前面隔行尾部的”\nonumber”是告訴編譯器不要對此行進行編號;
”\\”即換行;
“&”本用於制表,這里可以用於固定+號的位置。
五、圖片處理
論文中圖是一個很重要的部分,相比直接在Tex中以代碼畫圖,先從其他工具中畫好圖再導入TeX中要方便快捷得多。
TeX支持eps格式的矢量圖,這種類型的圖無論放大多少倍都會很清晰,這也是很多期刊要求論文中的圖片為eps格式的原因。
(1)eps圖片的制作
①用Microsoft Office 中的Word或者Visio畫出你需要的圖形,將其另存為pdf文件。注意要一副圖生成一個只有一頁的pdf文件。
②用Adobe Acrobat Professional打開該pdf文件,選擇【工具】→【頁面】→【剪裁】,設定好想要留下的區域(左圖),雙擊,得到不含大片空白的pdf圖片文件(右圖)。

③將剪裁好的pdf另存為eps格式,在另存對話框的下面有一個設置選項,設置里面一些參數,將一般的PostScript設為語言級三級,字體范圍設為嵌入和引用的字體,然后確定保存。這樣就可以生成eps格式的圖片了,用latex編譯出來效果十分好。
④Photoshop也可將pdf文件轉換為eps圖片,但筆者使用過程中,發現PS生成的eps文件仿佛不再是矢量圖,因為隨着放大倍數的增加,圖片的質量也在降低。更令人無法接受的是,圖片尺寸相同,PS生成的eps文件大小是用Acrobat的2倍以上。因此筆者建議用Acrobat即可。
(2)eps圖片的插入
①用WinEdt編輯排版時,插入的eps圖片需要和TeX文件在同一個文件夾中,否則需要用這行代碼來設定圖片的存儲路徑
\graphicspath{{../eps/}}
②可用如下方式插入長6cm寬3.4cm的名為SSDArchitecture.eps的圖片:
\begin{figure}[ht]
\begin{flushleft}
\includegraphics[width=6cm,height=3.4cm]{SSDArchitecture.eps}
\end{flushleft}
\caption{SSD Architecture}\label{fig:SSDArchitecture} \end{figure}
- 代碼以\begin{figure}開頭,以\end{figure}結尾;
- [ht]為設置圖片位置的參數,共有h、t、b、p四種,具體參見http://www.ctex.org/documents/latex/graphics/node64.html;
- {flushleft}意為左對齊,可通過WinEdt工具欄直接插入代碼
\begin{flushleft} * \end{flushleft}
- \caption{}為圖片的標題,可以使用\caption{\label{}}的格式,使caption為label;
- 圖片的長寬值可以缺省,圖片為原大小;若只設定長或者寬,則圖片縮放時長寬比不變。
(3)關於eps文件其他
①我們可以用CTeX集成的GSview來打開eps文件,其中,【Options】→【Show Bounding Box】可以幫助我們更方便的確定圖片的長和寬。
②eps文件本身可以用記事本打開,打開后可以看到PostScript語言的文本信息。這里可以更直觀地看到BoundingBox等信息。
(4)設置子圖
①有時候我們需要將多副圖組織在一起,並設以統一的標題方便引用,如 
這時我們可以使用以下方法來實現:
在開頭加上
\usepackage{subfigure}
在需要插圖處,按如下格式插入子圖
\begin{figure}[ht] \begin{flushleft} \subfigure[]{ \label{fig:FigureOne:a} \includegraphics[width=4cm,height=2.4cm]{ FigureOne -a.eps}} \hspace{0.1cm} \subfigure[]{ \label{FigfigureTwo:b} \includegraphics[width=4cm,height=2.4cm]{ FigureTwo -b.eps}} \end{flushleft} \caption{FigureName}\label{fig:FigureName} \end{figure}
其中\hspace{}設定子圖的間隔距離。
六、圖片繪制
利用其它軟件繪制eps文件插入論文固然方便,但如果能在TeX文件中直接以代碼的形式繪制圖片,則會讓論文變得輕便而不宜損壞。
(1)常用繪圖宏包
LaTeX 本身有一個 picture 環境,提供了極其有限的繪圖功能:由坐標畫斜率有限制的直線、半徑有限制的圓、圓角矩形、箭頭、標注,以及描點畫的粗糙曲線。由於功能太弱、限制過多、使 用復雜,標准 LaTeX 的 picture 環境很少被人使用。
epic、eepic、pict2e 宏包是標准 LaTeX 的 picture 環境的逐級修正擴展加強,不過仍然不方便使用。只是因為一些與作圖無關的宏包使用到了 picture 環境的一些功能(如表格的斜線),因而偶爾可以使用 pict2e 宏包。
第三方的LaTeX作圖的宏包很多。有的宏包功能專一,如畫餅圖,有的則范圍廣泛功能強大。數學交換圖一般最常用的是XYpic,如果要畫圖論圖形,我們可以用 PSTricks、TikZ、MetaPost 等等各種工具;但如果並不關心每個結點的坐標而只想要迅速地把幾十上百個點連起來,那么 GraphViz 中的 dot 就幾乎成了唯一的選項……
更多的宏包及其特點看這里http://zzg34b.w3.c361.com/package/figure-2.htm
(2)添加新的宏包
Windows:
把宏包解壓到CTEX\MiKTeX\tex\latex下,用命令行執行texhash。
也可以【中文TeX套裝】->【Package Manager】,然后在彈出的窗口中選擇【refresh now(立刻更新)】。
Linux:
把宏包解壓到 USERNAME\local\texmf,然后刷新數據庫,即texhash。
七、管理與插入參考文獻
(1)JabRef生成.bib文獻庫
JabRef 的文獻數據庫是純文本的 bib 文件,可以將該數據庫文件放在該主題文獻的目錄下。比如要建立一個 liver 方向相關文獻的數據庫,只需建立一個liver目錄,在 JabRef 中選擇 File->New Database,然后 Ctrl-S,將該數據庫起名 liver.bib,保存在liver目錄下。然后將 File->Database properties 中的 Database Encoding 設置為 UTF-8(這是因為論文的作者可能是老外和我們會經常用中文寫些注釋,所以最好用國際化的字符集), Directory 都設置成點號 “.”(表示當前目錄,這樣你就可以將整個目錄打個包,扔到另一台 Linux/Win/Mac 機器上照常使用)。
文獻數據庫的內容自然是一篇一篇的論文,每篇論文在數據庫中占一條記錄。那么如何添加論文呢?自然不必全部手工添加,幾乎所有的數據庫在提供論文下載的同時都有該論文 citation 信息的下載,下面這張圖上是計算機科學類常用數據庫網站的 citation 下載鏈接示例。也許你以前不知道它們是做什么用的,但你總能在文章下載頁面的某個地方找到它們。

點開 citation 的鏈接,將內容保存為相應的文件名。比如 BibTeX 格式的 citation 信息,將其保存到名為 xxx.bib 的純文本文件中,然后到 JabRef 里選擇 File->Import into current database,將該文件導入當前數據庫,你就會發現數據庫中多了一條記錄。當然,JabRef 支持很多 citation 信息格式,但是既然 JabRef 采用 BibTeX 格式管理數據庫,我們還是盡量下載 BibTeX 格式的 citation。
每次只導入一條記錄未免太麻煩了些,由於很多參考文獻信息都是純文本格式的,那么我們可以將很多條記錄分段拷貝到xxx.bib里,然后集中導入。
(2)BibTeX在word中插入文獻
①安裝Bibtex4Word
a)登錄http://www.ee.ic.ac.uk/hp/staff/dmb/perl/index.html
b)確保機器上已經安裝有TeX軟件,推薦使用以MiKTeX為核心的中文套裝CTeX
c)確保機器上已有管理BibTeX形式的參考文獻管理工具,推薦使用JabRef
d)將解壓縮后的Bibtex4Word軟件文件夾中的“bibtex4word.dot”文件,復制粘貼至Word的啟動文件夾:
Vista/Win7/Win8: C:\Users\你的用戶名\AppData\Roaming\Microsoft\Word\STARTUP
e)重新啟動Word后,Word的工具欄上將會出現Bibtex4Word的工具條
②使用Bibtex4Word
a)用JabRef打開包含文獻的.bib文件,雙擊想要插入Word的文獻,復制最下面一欄Bibtexkey中的字符串,每個字符串對應一篇文獻
b)回到Word界面,先在你想要插入類似[1]一類的數字標號處,點擊Bibtex4Word工具條中的
,出現一串引用代碼;
c)先不要着急,將光標移到你論文的參考文獻那一章節,點擊
右邊的
,便可自動生成文獻的相關信息,而b)步驟中的代碼串也變成了對應的數字標號。
(3)JabRef在CTeX中插入文獻
這里我們將講解如何使用JabRef在CTeX編輯器WinEdt里進行文獻推送。
①設置

在上圖的下拉菜單中選擇進行文獻推送的目標編輯器。
這里我們使用WinEdt。並在工具欄Options-Preference-External programs-External programs-Settings for WinEdt

設置Path to WinEdt.exe為你安裝的WinEdt的位置即可,即CTEX(安裝目錄)\WinEdt\WinEdt.exe。設置好后選擇ok-ok即可。
②在WinEdt中添加命令
在\being{document}之后添加命令:\bibliographystyle{IEEEtran}(括號內為文獻模板,可更改。需在你的tex文件相同目錄下添加對應的bst文件。本例為IEEEtran.bst。當然,可將該bst文件添加到CTEX(安裝目錄)\MiKTeX\bibtex\bst目錄下,這樣在你所有的ctex工程里可以使用)
在\end{document}之前添加命令:\bibliography{SSDRef}(括號內為你所要使用的bib文件,可多個,用逗號隔開)
③推送
首先在你所打開的bib文件里找到你要引用的文獻,點擊即選擇它;
然后在WinEdt用光標定位你將要推送的文獻引用的位置;回到jabRef界面,點擊工具欄中
按鈕,即將該引用推送到指定位置。如

④編譯

如上圖,編號為點擊順序。即LaTex->BibTex->LaTex.。這樣,文獻即被引如到文章中。
注意:過程中會生成bbl文件還有aux文件,如果編譯時有報錯,可嘗試刪除該bbl和aux文件再進行編譯。
由於不好演示,請大家自己進行嘗試體會一下,方法是很簡單的。
八、其他技巧
(1)行號顯示

工具欄中Line Numbers,即可顯示行號。
(2)模板使用
很多期刊、建模等需要提交論文的比賽都提供了LaTeX模板,下載后在模板中填充內容就好,相應的格式都是提前設定好的。
這里需要提醒讀者的是,模板中往往含有長段的注釋,大多是對文本、公式、圖片、文獻等內容的使用說明。
當遇到編寫問題時,查看這些注釋往往比Google關鍵詞要高效得多。
(3)學習資料
①LaTeX 編輯部:http://zzg34b.w3.c361.com/index.htm
②包老師的latex學習筆記
③去文件目錄CTEX\CTeX\ctex\doc中看看,ctex-faq.pdf可以解答大多數遇到的問題,非常方便。
以上為兩天學習的全部收獲,總結與此,以感謝互聯網強大到能解決大部分問題,感謝電腦另一端素未謀面的眾多好心人。
