如果在搞科研,想在IEEE上发表文章,那么就不得不用IEEE的论文模板,分为doc版本和Tex版本。Tex是高德纳·纳什所写,大牛级的任务,写过《计算机程序设计艺术》,曾经是美国最年轻的科学院院士(入院年龄),三十多岁。Tex写论文排版十分容易,擅长公式编辑。然而,由于Tex是基于命令式的文本编辑器,不是“所见即所得”的模式,并且包含了大量的内容,所以学习起来比较吃力,但是一旦掌握了会发现word太弱了。本文主要介绍在IEEE模板下如何进行编写。
首先安装CTEX,其是Latex的中文套件,包含了丰富的package,易于使用。当然之后就是漫长的学习了,跟学习编程一样,边学习,边编程,事半功倍。
然后,应当看IEEE给出的IEEEtran_HOWTO.pdf,其中详细介绍了如何在该模板下进行论文排版。
最后,有恒心,有毅力,有耐心地解决碰到的问题。
下面介绍几种常用的,并且容易犯错的。
(一)插入图片
Latex对于eps格式的图片支持的很好,而其它格式却没有这样幸运,所以建议使用eps的图片,这样对于图片操作就简单多了。
包含\usepackage{graphicx}
插入一个图片
\begin{figure}
\centering
\includegraphics[width=2.5in]{pic/BOIN_node.eps}
\caption{The architecture of a network node}
\end{figure}
如果想并排插入多个图片,并且进行编号:
\begin{figure}[!t]
\centering
\subfigure[switch]{\includegraphics[width=1.0in]{pic/os/a.eps}
\label{fig_first_case}}
\subfigure[$ST$(switch)=$ON$]{\includegraphics[width=1.0in]{pic/os/b.eps}
\label{fig_second_case}}
\subfigure[$ST$(switch)=$OFF$]{\includegraphics[width=1.0in]{pic/os/c.eps}
\label{fig_third_case}}
\caption{$2\times2$ optical switch}
\label{fig_sim}
\end{figure}
(二)公式
Latex对于公式的处理主要有三种方法
a. 使用$符号,对于公式y=x^2+z,可以写成$y=x^2+z$。其中^表示上标,_表示下表。
b.采用displaymath,提供公式环境
\begin{displaymath}
E = \left\{ \begin{array}{ll}
\{(R,T0)\} & \textrm{if $ST = ON$}\\
\{(R,T1)\} & \textrm{if $ST = OFF$}\\
\end{array} \right.
\end{displaymath}
c. 采用enquation,displaymath没有公式编号,而enquation有。
(三)算法(伪代码)
一般来说,只需要如下形式就可以了
\documentclass{article}
\usepackage{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
\begin{document}
\begin{algorithm}
\caption{Euclid’s algorithm}\label{euclid}
\begin{algorithmic}[1]
\Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of a and b}
\State $r\gets a\bmod b$
\If{sfdfdsa}
\State sdfsadf
\EndIf
\While{$r\not=0$}\Comment{We have the answer if r is 0}
\State $a\gets b$
\State $b\gets r$
\State $r\gets a\bmod b$
\EndWhile\label{euclidendwhile}
\State \textbf{return} $b$\Comment{The gcd is b}
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}
然而对于IEEE的模板,就不能同时使用
\usepackage{algorithm}
\usepackage{algorithmicx}
\usepackage{algpseudocode}
会报一个algorithmic重复定义的错误,猜想有可能是包含的package冲突,所以就不能使用\If等等一些列的宏,只能供使用\IF,\ENDIF等全大写的宏。
例子如下:
\usepackage{algorithm}
\usepackage{algorithmicx}
\begin{algorithm}[!h]
\caption{Routing algorithm}
\begin{algorithmic}[1]
\IF{there is a packet Px coming from X-}
\IF{$x\neq x_t(Px)$}
\STATE $ST(S_X)=ON$
\STATE $ST(S_F)=ON$
\ENDIF
\ENDIF
\end{algorithmic}
\end{algorithm}
这里一定要注意IF和ENDIF要匹配,否则会报错。