笔者刚刚接触到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可以解答大多数遇到的问题,非常方便。
以上为两天学习的全部收获,总结与此,以感谢互联网强大到能解决大部分问题,感谢电脑另一端素未谋面的众多好心人。