尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

LaTeX写IEEE论文实战:模板配置、双栏排版与参考文献避坑指南

LaTeX写IEEE论文实战:模板配置、双栏排版与参考文献避坑指南 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 LivemacOS用户装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: [ -synctex1, -interactionnonstopmode, -file-line-error, %DOC% ] }, { name: pdflatex, command: pdflatex, args: [ -synctex1, -interactionnonstopmode, -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为首选因为它兼容性更强而且在写英文论文时也不会有什么副作用。注意配置里的-interactionnonstopmode参数它的意思是“编译遇到错误时不暂停等待用户按键”这样VSCode能一次性跑完整个编译流程而不是卡在某个错误上等你去按回车。新手如果忘了加这个参数经常遇到的情况是编译卡住命令行里一堆红字看着就很劝退。2.3 第一次编译用一个最小示例跑通全流程环境配好以后别急着打开IEEE模板先写一个最简单的文件验证流程。新建一个文件夹在里面建一个test.tex文件内容就几行\documentclass{article} \begin{document} Hello, LaTeX! \end{document}在VSCode里打开这个文件按CtrlAltBMac上是CmdOptionB编译左侧会出现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[width0.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。正确的编译流程是第一次编译xelatex生成.aux文件。运行bibtex读取.aux文件中的引用信息把.bib中的条目转换成参考文献列表。第二次编译xelatex把参考文献列表写进PDF。第三次编译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编译器不认识就会报这个。解决办法是按下CtrlZ撤销最近一次修改或者通过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上的积累就不再只是“会写一种格式的论文”而是掌握了学术写作排版的核心方法论换期刊只需要换模板文件就行。
返回列表