☰
LaTeX写IEEE论文实战:模板配置、双栏排版与参考文献避坑指南
2026/9/26 13:09:50 网站建设 项目流程

1. 为什么要用LaTeX写IEEE论文:先搞清楚这件事值不值得

先说结论:如果你准备投IEEE Transactions系列期刊或者IEEE主办的会议,用LaTeX几乎不是“选不选”的问题,而是“早晚都得用”的问题。IEEE官方不仅提供标准的LaTeX模板,很多审稿人在看稿时也会默认你用的是LaTeX——毕竟排版一致性、公式质量、参考文献格式,LaTeX都比Word省心太多。

我第一次用IEEEtrans模板写论文是在研究生二年级,投的是IEEE Transactions on Industrial Informatics。说实话,第一次打开那个模板的tex文件,满屏的\begin{}和\end{}看得我头皮发麻。但真正硬着头皮写完第一篇之后,我就再也不想用Word排版论文了。倒不是说学起来没成本,而是这个成本花得非常值:公式、图表、参考文献全自动编号,格式统一到每个空格都一样,最终PDF的效果直接达到出版级别。

这篇东西不是教你LaTeX入门基础,而是直接针对“用LaTeX写IEEE论文”这个具体场景,把你需要经历的所有环节拆开讲清楚。包括模板怎么下、环境怎么配、双栏排版怎么处理图表、公式编号怎么弄出1a和1b、参考文献怎么用BibTeX管理、遇到编译报错怎么查。适合的人群很明确:已经会用Word但决定转向LaTeX的科研党,或者刚入学被导师要求用LaTeX写论文、手里却只有一份光秃秃模板文件的研究生。

整个过程其实就三个阶段:把环境装好,把模板跑通,然后把内容填进去。前两个阶段一般一天就能搞定,真正花时间的是第三个阶段——但第三个阶段里所有的格式问题,你都应该事先知道怎么处理,而不是写到一半发现图片死活放不到想要的位置、公式编号对不上、参考文献格式警察式报错。

2. 环境搭建:TeX Live + VSCode的完整配法

2.1 TeX发行版怎么选:别在这上面纠结太久

写LaTeX需要安装一个TeX发行版,它相当于编译器加上宏包仓库。主流的三个选择是TeX Live、MacTeX、MiKTeX。

我自己用的是TeX Live,原因是它跨平台、宏包最全,而且每年更新一次,基本覆盖所有期刊模板需要的宏包。Windows和Linux用户直接装TeX Live,macOS用户装MacTeX(其实就是TeX Live的macOS版)。MiKTeX适合那些只想装个轻量级环境的人,它有“缺失宏包自动下载”的功能,听起来方便,但在离线环境或网络不稳的时候反而容易卡住。

下载地址就是TUG官网(tug.org),国内的话建议找清华大学或中科大的镜像站下载ISO镜像。这里有个细节:TeX Live的安装包体积很大,完整安装要几个GB,因为它内置了上千个宏包。但别嫌大,直接装完整版,省得后面缺什么宏包再折腾。安装过程没有太多可操作的空间,一路下一步,等它就完事了。安装完成后,打开命令行输入tex --version,能看到版本号就说明装好了。

2.2 VSCode里配LaTeX Workshop:最顺手的写作组合

编辑器我强烈推荐VSCode,原因有三:免费、跨平台、插件生态强。搭配LaTeX Workshop插件,几乎就能获得一个轻量级的LaTeX IDE体验,编译、预览、正向同步(点PDF跳回源码)都做得很成熟。

安装步骤很简单,在VSCode扩展商店搜索LaTeX Workshop,点安装。装完以后需要设置一下编译工具链。打开VSCode的settings.json,加入这样一段配置:

"latex-workshop.latex.tools": [ { "name": "xelatex", "command": "xelatex", "args": [ "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%" ] }, { "name": "pdflatex", "command": "pdflatex", "args": [ "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%" ] }, { "name": "bibtex", "command": "bibtex", "args": ["%DOCFILE%"] } ], "latex-workshop.latex.recipes": [ { "name": "xelatex -> bibtex -> xelatex*2", "tools": [ "xelatex", "bibtex", "xelatex", "xelatex" ] }, { "name": "pdflatex -> bibtex -> pdflatex*2", "tools": [ "pdflatex", "bibtex", "pdflatex", "pdflatex" ] } ]

这段配置的核心作用有两层:第一,确定默认编译工具用XeLaTeX还是pdfLaTeX;第二,把bibtex编进整个编译流程。IEEEtrans模板默认用pdfLaTeX编译没问题,但如果你的论文里涉及中文或者其他非英文字符,就得用XeLaTeX。我的习惯是直接设XeLaTeX为首选,因为它兼容性更强,而且在写英文论文时也不会有什么副作用。

注意配置里的-interaction=nonstopmode参数,它的意思是“编译遇到错误时不暂停等待用户按键”,这样VSCode能一次性跑完整个编译流程,而不是卡在某个错误上等你去按回车。新手如果忘了加这个参数,经常遇到的情况是编译卡住,命令行里一堆红字,看着就很劝退。

2.3 第一次编译:用一个最小示例跑通全流程

环境配好以后,别急着打开IEEE模板,先写一个最简单的文件验证流程。新建一个文件夹,在里面建一个test.tex文件,内容就几行:

\documentclass{article} \begin{document} Hello, LaTeX! \end{document}

在VSCode里打开这个文件,按Ctrl+Alt+B(Mac上是Cmd+Option+B)编译,左侧会出现PDF预览。如果能正常显示“Hello, LaTeX!”,恭喜你,环境已经是通的。接下来再试一下带参考文献的流程,因为IEEE论文必然要跑BibTeX,如果你这一步没跑通,后面写参考文献时会一脸懵。

3. IEEE模板:下载、安装与结构解析

3.1 去哪里下载正版模板

IEEE的官方模板托管在IEEE Author Center,网址是journals.ieeeauthorcenter.ieee.org,搜索“IEEEtran”就能找到下载入口。最稳的方式是直接去CTAN(宏包中心)搜索IEEEtran,下载那个完整的模板包,里面既有IEEEtran.cls文档类文件,也有示例tex文件。

这里提醒一句:国内很多论坛和博客会提供“精装修版”模板,打包了一堆宏包、改好了颜色和字体,看起来很方便,但我建议不要用。原因是那些改版模板往往强行加了一些IEEE官方模板没有的东西,比如段落间距调整、标题字体放大、颜色标记等,审稿人或者编辑部一眼就能看出来排版不符。老老实实下载官方模板,是让论文格式过关的最快路径。

下载下来以后会得到一个文件夹,里面通常包含:IEEEtran.cls(核心文档类)、bare_jrnl.tex(期刊论文模板)、bare_conf.tex(会议论文模板)、IEEEtran.bst(参考文献样式文件)和一堆说明文档。你只需要关心IEEEtran.cls、bare_jrnl.tex和IEEEtran.bst这三个文件。

3.2 模板文件结构逐行拆解

打开bare_jrnl.tex,你会发现这个文件其实已经是一篇完整论文的骨架。它的整体结构是:

\documentclass[journal]{IEEEtran} \usepackage{cite} \usepackage{amsmath,amssymb,amsfonts} \usepackage{algorithmic} \usepackage{graphicx} \usepackage{textcomp} \usepackage{xcolor} \begin{document} \title{论文标题} \author{作者信息} \markboth{期刊名,卷号,年份}{} \maketitle \begin{abstract} 摘要内容 \end{abstract} \begin{IEEEkeywords} 关键词 \end{IEEEkeywords} \section{Introduction} \label{sec:introduction} \section{结论} \label{sec:conclusion} \bibliographystyle{IEEEtran} \bibliography{IEEEabrv,你的bib文件名} \end{document}

这里有几个容易踩坑的地方。第一,\documentclass[journal]{IEEEtran}后面的journal选项决定你是在写期刊论文还是会议论文。投会议就改成conference,它会自动调整成双栏排版和会议格式。第二,模板里的\markboth是页眉的内容,期刊投稿阶段可以随便填,录用以后编辑部会帮你改成正式卷号信息,不用太纠结。第三,\bibliography{IEEEabrv,你的bib文件名}这一行的IEEEabrv是IEEE提供的期刊缩写库,后面接你自己的bib文件名,注意两个文件名之间用逗号隔开,不能加空格。

3.3 双栏排版的三个核心限制

IEEEtrans模板默认是双栏排版,这个双栏在很多新手眼里就是噩梦的起点。用Word做双栏调个图都要炸半天,LaTeX里的双栏其实更严格,但理解了规则以后反而很简单。

第一个限制是宽度。单栏内的一行文字宽度大约是3.5英寸左右(具体取决于模板的字号设置),这意味着你插入图片时,如果图片的宽度超过这个值,它要么被压缩变形,要么直接溢出栏宽。正确做法是:单栏图片宽度设置成0.9\columnwidth这种比例值,而不是硬编码一个像素值。

第二个限制是浮动体的位置。figure环境的默认位置是t(顶部)或b(底部),在双栏排版中,图片会被限制在当前栏内。如果你想放一个通栏宽的大图,比如系统架构图这种横向跨度很大的图,必须用figure*环境而不是figure。figure*会让图片横跨两栏,通常出现在页面顶部。

第三个限制是表格和图片的留白。IEEE模板对浮动体周围的空间有严格要求,如果表格和图片之间出现大片空白,通常是因为位置参数写得不合适,或者是浮动体太多了放不下。这个我在后面的常见问题部分会专门讲怎么排查。

4. 正文写作的实操细节:公式、图片、表格

4.1 公式编号怎么弄出1a和1b

很多期刊的公式编号习惯是“大编号+小子编号”,比如第1个公式拆成两行,编号显示为(1a)和(1b)。这个在IEEEtrans模板里实现起来并不复杂,难点在于很多人不知道IEEEeqnarray这个环境。

IEEEtrans文档类内置了IEEEeqnarray环境,它比align更专业的地方在于,它可以精确控制等号左右两边的对齐方式和间距。实现(1a)(1b)这个效果,标准写法是这样:

\begin{IEEEeqnarray}{rCl} f(x) &=& a + b \label{eq:first}\\ &=& c + d \IEEEyesnumber \end{IEEEeqnarray}

第一行不加\IEEEyesnumber,它就会继承大编号(1),第二行加了\IEEEyesnumber,编号变成(1a)。如果你有更多行,还可以用\IEEEyessubnumber继续弄出(1c)、(1d)。这个功能在IEEE自己的文档类里支持得最丝滑,如果用普通的align环境,你得自己手动加\tag{}来控制编号,非常繁琐。

还有一个相关的问题:subequation环境也能做类似的事,但它会把所有行纳入同一个大编号下,需要配合\label和\eqref引用时,处理起来比IEEEeqnarray麻烦。直接记住:IEEEtrans模板里,写多行公式优先用IEEEeqnarray。

4.2 图片排版:单栏图、双栏图与“局右”的小技巧

关于图片,热词里有一个“latex图片局右”,这个说法还挺典型的。其实在IEEE论文里,图默认都是居中放置,很少用“局右”这种排版。如果你真的需要把某张图片靠右放置,通常是用在简历、PPT或者一些非正式文档里。但在论文里,IEEE的规范就是居中,别搞特殊。

如果你确实需要把图片放置在右侧,用wrapfigure环境能实现文字环绕浮动。它的基本用法是:

\usepackage{wrapfig} \begin{wrapfigure}{r}{0.4\columnwidth} \centering \includegraphics[width=0.9\linewidth]{figure.png} \caption{说明文字} \label{fig:demo} \end{wrapfigure}

但wrapfigure在双栏排版里非常容易出问题,经常会把图片浮动到意想不到的位置,甚至和栏边界重叠。我的经验是:IEEE论文尽量别用wrapfigure,老老实实用标准的figure环境就够了。如果页面空间紧张导致图片位置不理想,调整代码中图片出现的顺序,或者用\FloatBarrier这类命令控制浮动体位置,都比文字环绕来得安全。

双栏图的关键是记住用figure*:

\begin{figure*}[t] \centering \includegraphics[width=\textwidth]{architecture.png} \caption{系统总体架构图} \label{fig:arch} \end{figure*}

这里宽度用\textwidth(通栏宽度),而不是\columnwidth(单栏宽度)。很多新手漏掉这个细节,导致所谓的“通栏图”只是把一张本来该占单栏的图放大了,结果其实还是歪的。

4.3 表格:三线表是基本操作

IEEE论文里的表格绝大多数是三线表,也就是只有顶线、栏目线和底线,不要竖线。这在LaTeX里实现很简单,用\toprule、\midrule、\bottomrule就行。但在IEEEtrans模板里写表格,最容易出问题的是列宽。

IEEE模板自带的示例表格是:

\begin{table}[t] \caption{性能对比} \label{tab:comparison} \begin{tabular}{lcccc} \toprule 算法 & 准确率 & 召回率 & F1值 & 耗时(s)\\ \midrule 方法A & 0.92 & 0.88 & 0.90 & 3.5\\ 方法B & 0.95 & 0.91 & 0.93 & 4.2\\ \bottomrule \end{tabular} \end{table}

如果你的表格内容比较长,要控制每一列的宽度,可以用p{宽度}指定列宽。另外,IEEEtrans模板允许表格里放注释,用\begin{tablenotes}之类的扩展宏包实现,但对大部分论文来说,简单三线表就足够清晰了。

关于表格有一个隐藏问题:当表格内容较多时,容易超出单栏的宽度。解决办法有两个,一是把表格改成table*通栏环境,二是缩小字号,比如在tabular环境前加\footnotesize。两者都试一下,选定视觉效果更好的那种。

4.4 公式符号与右斜线输入的问题

热词里有“latex右斜线怎么打”,这其实是个很小但很常见的问题:LaTeX的控制命令都是以反斜杠\开头的,但中文输入法状态下打反斜杠经常输出顿号或者别的符号。解决办法就两条:一是确保你在英文输入法状态下按键盘上的\键;二是如果你就是想输出一个反斜杠字符,在LaTeX里用\textbackslash命令。这个问题我在帮师弟改论文时见过很多次,他说“为什么我打的斜杠在PDF里不显示”,多半就是输入法切换没到位。

5. 参考文献:BibTeX是IEEE论文的隐形关键

5.1 建立你自己的bib文件

参考文献这块是很多新手最容易崩溃的地方。IEEEtrans模板的参考文献用BibTeX管理,它的核心是一个.bib文件和一个.bst样式文件。.bst文件就是IEEEtran.bst,决定了参考文献的显示格式;.bib文件是数据库,保存你引用的文献条目。

bib文件的基本格式如下:

@article{liu2023edge, author = {Liu, Yan and Zhang, Wei}, title = {Edge Computing for Industrial IoT: A Survey}, journal = {IEEE Transactions on Industrial Informatics}, year = {2023}, volume = {19}, number = {5}, pages = {1234--1245}, publisher = {IEEE} }

每个条目第一行@article表示文献类型,{liu2023edge}是这个条目的引用键。正文里用\cite{liu2023edge}就能生成引用编号。常用的文献类型有@article(期刊)、@inproceedings(会议)、@book(书籍)、@techreport(技术报告),新手把这四个记住就够用了。

推荐从Google Scholar或者IEEE Xplore直接导出BibTeX条目,格式已经给好了,直接粘进你的.bib文件,把条目里的字段过一遍,确认没有缺失。这里有个坑:Google Scholar导出的BibTeX经常缺少页码或者卷号,需要自己手动补全,否则参考文献显示出来会缺信息。

5.2 引用两篇文献的格式问题

热词里“latex如何引用两篇参考文献格式”,对应的场景是\cite{ref1,ref2}——逗号分隔多个引用键,IEEE排版会自动显示成[2], [3]或者[2]--[3]这种范围格式。如果你想让连续的多篇引用以连字符范围显示,比如[4]-[6],直接写\cite{ref4,ref5,ref6},LaTeX会自动合并。

另外一个容易忽略的点是\cite命令的输出格式依赖.bst文件。有的期刊要求那种“上标引用”,也就是参考文献编号在正文中以上标形式出现,这时需要用到\cite的变体命令,比如\citep或者\cites,具体看模板的对cite宏包的配置。IEEEtrans模板默认是带方括号的普通格式,不需要额外处理。

5.3 编译参考文献的标准流程

写参考文献最头疼的不是.bib文件的语法,而是编译顺序。很多人直接编译一次然后说“为什么引用编号是问号”,这是因为编译器还没有跑BibTeX。

正确的编译流程是:

  1. 第一次编译xelatex,生成.aux文件。
  2. 运行bibtex,读取.aux文件中的引用信息,把.bib中的条目转换成参考文献列表。
  3. 第二次编译xelatex,把参考文献列表写进PDF。
  4. 第三次编译xelatex,解析所有交叉引用编号。

所以在VSCode的LaTeX Workshop里,我配置的recipe名字叫“xelatex -> bibtex -> xelatex*2”,顺序就是严格的四次操作。如果哪一次显示“Citation undefined”,不要慌,先确认是不是没跑bibtex,再检查引用键有没有拼错。

6. 常见问题排查与避坑记录

6.1 编译报错:那些让人怀疑人生的红字

LaTeX的报错信息对新手确实不友好,但大多数错误其实集中在几个固定原因上。我按踩坑频率排个序:

错误信息! LaTeX Error: File 'xxx.sty' not found是最常见的。意思是缺宏包,解决方法是在VSCode终端里用tlmgr install 宏包名安装,或者直接打开终端运行sudo tlmgr install xxx。如果装的是完整版TeX Live,一般不会缺常见的宏包,缺的都是冷门包。

! Undefined control sequence是第二常见。这个一般是命令拼写错误,比如你把\textbf写成\testbf,编译器不认识就会报这个。解决办法是按下Ctrl+Z撤销最近一次修改,或者通过VSCode的语义高亮看哪个命令没有被识别成LaTeX命令的颜色。

! Misplaced alignment tab character &也不少见,多半是表格的&列分隔符在数学环境外面使用了,或者表格的行数不匹配,比如定义了4列表格但某一行只填了3个值。

最后一个高发问题:! Paragraph ended before \section was complete,这类错误通常是因为命令参数里缺少了闭合大括号。检查一下最近的段落里是不是有个{没配对的}。

6.2 图片和表格的浮动体位置不听话

这是所有LaTeX使用者都会遇到的问题。你辛辛苦苦把图放在代码的某个位置,编译出来它却跑到好几页之后,原因是LaTeX的浮动体机制会自动寻找最优位置,而它认为的最优位置不一定和你的代码位置一致。

处理思路有几个。第一个是调整位置参数:figure环境后面的[t]、[b]、[htbp]表示它优先出现在页面顶部、底部、当前位置。想让图片紧跟在某段文字之后,就写[h]或[ht]。第二个是使用\usepackage{float}宏包,然后写[H]强行把浮动体固定在当前位置。第三个是控制浮动体数量——如果一页里浮动体太多,LaTeX会把它们全部挤到页面末尾。想让浮动体集中出现在论文末尾,可以用\FloatBarrier命令,这个需要加载placeins宏包。

期刊投稿阶段,排版位置偶尔不理想问题不大,编辑部后期会重新排版。但如果你导师对格式要求苛刻,比如图表必须紧跟在第一次引用它的段落后面,那就要认真调整位置参数了。

6.3 几张图放在同一行怎么做

热词里还有“latex图片排版问题 双栏”,这个场景常出现在对比实验结果,比如你要把两张图并排放置。实现方式有两种:一是用minipage把多个figure环境包起来,二是直接用\subfloat命令从subfig宏包实现子图排版。

简单写法是:

\begin{figure}[t] \centering \begin{minipage}{0.48\columnwidth} \centering \includegraphics[width=\linewidth]{fig1.png} \end{minipage} \hfill \begin{minipage}{0.48\columnwidth} \centering \includegraphics[width=\linewidth]{fig2.png} \end{minipage} \caption{两组结果对比} \label{fig:comparison} \end{figure}

两个minipage的宽度加起来要小于\columnwidth,中间用\hfill分隔。我习惯用0.48\columnwidth,这样左右各留一点间隙,不会贴在一起。如果两个图需要有自己的子标题(比如(a)和(b)),就用subfig宏包的\subfloat。

6.4 下载安装与模板路径问题

最后补一个很实际的问题:latex下载安装教程这类搜索词背后,其实很多人的需求不只是“把软件装上”,而是“在正确的位置使用模板”。装完TeX Live后,模板文件是放在工作文件夹里的,和编译器的安装目录无关。如果你把bare_jrnl.tex从模板文件夹复制到自己的工作目录,记得把IEEEtran.cls和IEEEtran.bst也一起复制过去,否则编译时会提示找不到IEEEtran.cls。

还有一个容易忽略的路径问题:.bib文件和.tex文件要放在同一个文件夹下。如果你把bib文件放在子目录里,编译时\bibliography{xxx}的路径也要带上相对路径,但为了省事,建议所有文件平铺在同一个目录里,文件名全用英文,不要用中文名或空格。

几点个人的体会

写论文这事,工具永远只是手段,但一个好的工具能让你把时间花在内容而不是格式上。LaTeX的学习曲线是陡峭的,但是你这个“陡峭”其实是在前两周,一旦你过了环境配置和基本语法这关,后面就是一路坦途。

我自己的体会是,尽快开始写,不要等完全“学会”了才动笔。拿一篇旧论文练手,把它从头到尾用LaTeX复刻一遍,这个过程比看十篇教程都有用。做完这一步之后,你会发现自己再也回不去Word排版论文的日子了——那种“一个公式居中调了半小时”的体验,谁用谁知道。

最后分享一个扩展建议:等你能熟练用IEEEtrans模板之后,可以把同一个模板思路迁移到其他期刊。很多期刊的LaTeX模板其实都基于类似的结构,比如Elsevier的elsarticle、Springer的svjour3,它们和IEEEtrans的逻辑高度一致。到那时候,你在LaTeX上的积累就不再只是“会写一种格式的论文”,而是掌握了学术写作排版的核心方法论,换期刊只需要换模板文件就行。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询