背景
笔者第一次写学术论文,其研究方向是弹性光网络,本次投递的期刊是JLT。在后续调整论文格式时候使用LATEX来写。而本文主要描述了在使用LATEX写论文时候,一些论文注意细节和LATEX的使用用法。以便帮助后续学弟和学妹们更快的完成论文的撰写。
准备工作
LATREX下载
【LaTex】LaTex的下载与安装(2024新手小白超详细、超简洁 Windows系统)_latex下载-CSDN博客
安装完成后会有下面两个软件:
texlive: LATEX本体,负责编译.tex文件,并生成对应的.pdf文件
TexStudio: 编写.tex文件的编辑器(类似于代码编辑,还有许多其他的编辑器可以自行下载如Overleaf, 在线LaTeX编辑器)。
论文LATEX模板下载(以IEEEtrans为例)
IEEE里面的期刊通过上述链接选择对应的期刊下载LATEX模板。如果不是,则百度对应的期刊名到官网下载对应的LATEX模板。
这里我选择的是Journal of Lightwave Technology期刊的LATEX模板IEEEtrans。下载内容如下图:
IEEEtran.cls提供给模板的接口,bare_jrnl_new_sample4.tex是IEEEtrans对应的期刊的latex模板,点击打开bare_jrnl_new_sample4.tex并选择pdfLaTex编译运行,则会输出对应的pdf。(笔者是用latex自带的Texwork打开的,可以用其它编辑器打开)
LATEX论文撰写
一篇论文的结构在模板里面已经非常清晰了,文件里面的头文件基本上不用变化。只需找到模板中对应的代码段(title, abstract, author, IEEEkeywords, section, subsection, …)把内容填进去。如果有什么不懂的可以百度或者查看目录下面的New_IEEEtran_how-to.pdf帮助文档,笔者这里主要介绍一些需要自定义并且可能会出现问题的地方。
图片
为了方便管理图片,这里我这里把整篇论文要用到的图片都放在模板路径下面的figures文件夹里,然后再模板文件中**\begin{document}上一行加入\graphicspath{{figures/}}**,这样就规定了图片的路径。
要在论文中插入一张图片代码如下:
|
|
[t]:表示将当前图片放置在当前页面的顶部(h当前位置,b表示底部…)
\centering:表示图片居中
width=0.5\textwidth:表示设置图片的宽度为半个页面宽度(注:这里没有设置高度所以会保持长宽的比例)
fig1.pdf:表示插入的图片文件名,上面已经设置好图片的路径,所以这里直接填入文件名就行
\caption:设置图片的标题
\label{fig1}:设置图片的唯一标志,为了方便文中引用该图片。这里笔者设置的名称是fig1,使用\ref{fig1}便可以引用
要在论文中插入多张图片代码如下(竖排):
|
|
!t:系统忽略“美学”标准,放置在顶部(这里加不加!感觉没有上面区别)
\hfil:填充两张图片中间的空白
\subfloat:设置子图
要在论文中插入多张图片代码如下(横排):
|
|
\begin{figure}*:设置跨栏的图片
\hfil:填充两张图片中间的空白
\\:图片换行
表格
|
|
\begin{table}[!b]:设置表格为页面底部 \begin{center}:表格居中
\caption:表格标题
\renewcommand{\arraystretch}{1.5}:设置表格的行距为1.5倍
\setlength{\tabcolsep}{8pt}:设置表格的列宽
\resizebox{0.5\textwidth}{!}:设置表格宽的大小为半个页面大小,并保持长宽比例
\begin{tabular}:设置表格的形式,上述代码“|”设置表格的竖线(c表示单元格内水平对齐,l表示单元格左对齐…, ),“\hline”设置表格的横线。然后将内容填入表格,”&“表示水平下一列,”\\“表示下一行
如果想单独设置表格某一列的列宽可以使用p{xx},下面就是设置第二列的列宽为6cm
|
|
算法
|
|
\begin{algorithm}[!b]:设置算法位置为底部
\caption:设置算法标题
\renewcommand{\algorithmicrequire}{\textbf{Input:}}:将require换成input \renewcommand{\algorithmicensure}{\textbf{Output:}}:将ensure换成output
\begin{algorithmic}[1]:算法开始,并从1开始标号
\REQUIRE:设置输入参数
\ENSURE:设置输出参数
\FOR \ENDFOR \IF \ELSE \ENDIF:与写伪代码一样
\STATE:设置这一行的内容
\label{alg2}:算法的标签,方便引用\ref{alg2}
列表
列表这一块的话
无序列表:
|
|
有序列表:
|
|
符号列表:
|
|
公式
文章中的正文中出现的公式可以用**$F{S_{{r_i}}} = \left[ {\frac{{{w_i}}}{{{C_{slot}} \cdot m}}} \right] + GB$**,
需要标号的公式可以用如下句柄:
|
|
后续文中需要引用公式的时候可以使用\eqref{eq1}来引用该公式的标号。 如果公式已经在mathtype中编辑好那么可以直接复制公式到tex文件中。
mathtype -> 预置 ->剪切与复制预置 ->选择LaTex
\[F{S_{{r_i}}} = \left[ {\frac{{{w_i}}}{{{C_{slot}} \cdot m}}} \right] + GB\]
这样复制过来的直接就是latex公式代码了!!!(记得把[ ]去掉)
参考文献
笔者第一次在弄论文的参考文献时踩了很大的坑。我们知道论文的参考文献要满足以下几个条件(以Journal of Lightwave Technology为例):
- 参考文献的格式要符合从作者-标题-期刊名-页数-年月份
- 参考文献中引用文献的期刊名要保持斜体和缩写
- 参考文献中引用文献的作者数量太长的话要缩写或者简写
- 文章中的引用文献的序号需要要保持从大到小
我们知道设置参考文献的方式有两种
bibitem:
想如下的代码形式,使用\bibitem直接在文中把参考文献的格式一一调整好包括作者姓名,期刊名要缩写和斜体。
1 2 3 4 5 6 7
\begin{thebibliography}{10} \bibliographystyle{IEEEtran} \bibitem{Bao2023} B. Bao, H. Yang, Q. Yao, L. Guan, J. Zhang, and M. Cheriet, “Resource Allocation With Edge-Cloud Collaborative Traffic Prediction in Integrated Radio and Optical Networks,” {\it{IEEE Access}}, vol. 11, pp. 7067–7077, 2023. \bibitem{Shao2023} J. Shao, S. Zhang, W. Sun, and W. Hu, “Dynamic frequency slot allocation on IP-over-EON access links with multiple-type and time-varying traffic,” {\it{J. Opt. Commun. Netw.}}, vol. 15, no. 6, pp. 304–317, 2023, doi: 10.1364/JOCN.481355. \end{thebibliography}
{10}表示序号需要的宽度,统一使用两位数的宽度序号。
\bibliographystyle{IEEEtran}表示参考文献风格
{Bao2023}表示该文献的标签并且在所有文献中必须是唯一的,引用时使用\cite{Bao2023}
所有文献的形式编辑好以后直接运行就行,参考文献的顺序会按照编辑好的顺序排序。
bibtex:
这种方法需要建立参考文献数据库,引用的时候调用所需要的参考文献。每篇文献有它自己的引用的bib文件(可以在网上下载)。下面就是包含两篇文章的文献数据库(是不是有点想json文件的形式,属性–字段,python里面也叫做字典)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
@ARTICLE{9611289, author={Zhang, Juan and Bao, Bowen and Yao, Qiuyan and Ren, Danping and Hu, Jinhua and Zhao, Jijun}, journal={IEEE Access}, title={Resource Allocation Scheme Based on Complete Planning Process for Immediate and Advance Reservation in SDM-EONs}, year={2021}, volume={9}, number={}, pages={153575-153585}, keywords={Resource management;Planning;Optical fiber networks;WDM networks;Routing;Optimization;Quality of service;Advanced reservation (AR);blocking probability;complete planning process;elastic optical networks (EONs);immediate reservation (IR);space division multiplexing (SDM)}, doi={10.1109/ACCESS.2021.3127317} } @article{Ma2023, author = {Ma, Yudong and Yang, Xin and Sun, Qang and Zhao, Yue}, doi = {10.1364/JOCN.496417}, issn = {19430639}, journal = {Journal of Optical Communications and Networking}, number = {9}, pages = {687--699}, title = {{Dynamic resource allocation for multicast in SDM-EON: time-decoupled dynamic path cross talk and joint weight}}, volume = {15}, year = {2023} }
把所有文献的bib文件整合成一个文献数据库并放在模板文件同级目录下,在参考文献的代码部分加上\bibliography{bibfile}就可以调用对应的bibfile.bib文献数据库,当在文档中想使用引用时, 插入 LaTeX 命令\cite{9611289,Ma2023}。参考文献的排序会按照引用的先后顺序排列好。
最后
- 用LaTeX编译你的 .tex 文件 , 这是生成一个 .aux 的文件, 这告诉 BibTeX 将使用那些应用;
- 用BibTeX 编译 .bib 文件;
- 再次用LaTeX 编译你的 .tex 文件,这个时候在文档中已经包含了参考文献,但此时引用的编号可能不正确;
- 最后用 LaTeX 编译你的 .tex 文件,如果一切顺利的话, 这是所有东西都已正常了.
在理解上述的两种方法之后,笔者便思考两者哪一个能更快的实现上述的要求。思考一番后,第二种方法看起来确实是比较便捷。因为这种方法不仅不需要手动去调整参考文献的格式(自动生成IEEEtrans的风格),而且参考文献的排序会按照引用的先后顺序排列好。
为了快速的收集bib文件,笔者选择了一款文献管理工具mendeley.com/autoupdates/installers/1.19.5,只需把参考文献导入mendeley,它能够快速的导出所有文献的bib文件并直接生成文献数据库。它也可以查看对应期刊的参考文献风格。
最后出现以下结果!!!
可以看到图中生成的参考文献并没有满足我说的要求,在看了一下bib文件中的内容之后,发现bibtex生成的参考文献是根据bib中每个文献对应的属性字段来生成的。而有些文章的属性字段缺失,作者也不能保证缩写和简写,并且期刊名也不能缩写。这可能需要对每一篇文章的bib内容调整。笔者一直也在寻找解决的办法,导致浪费了大量的时间。如果您有更好的解决方案,欢迎与笔者联系!
在与导师商量的之后,最后决定用第一种方法生成参考文献
第一种方法看似内容和格式也要自己一个一个的敲上去,但是笔者在用mendeley的时候可以查看IEEEtrans的风格的参考文献,**发现格式非常统一和正确!!!**于是直接从mendeley把参考文献的内容(Formatted Citation)直接导入来并粘贴到模板中就行了(不是bib文件)
但是还有一个难题就是,刚刚说了第一种方法参考文献生成的时候是按照编辑的顺序排列的,文章中引用的参考文献的需要顺序并没有按照从小到大,所以说我们还需要对这些bibitem调整顺序以便确保文中的引用文献的序号需要从小到大。
这里介绍一个使用LaTeX的bibitems引用时按照引用顺序对文献进行编号 - 脂环 - 博客园排序方法能根据引用的顺序把参考文献调整好。最后生成的参考文献的结果要检查一下是否格式正确!
总结
最后,本文主要对在使用latex去撰写论文时如何自定义自己的公式,图片,表格,算法,列表,和参考文献提供了笔者所使用的方法和一些细节并给出了一些建议。由于笔者也是第一次使用latex撰写论文,每个细节都是自己上网或者AI搜索解决的,一些方面的方法和细节无法做到最优。如果读者有更好的想法或者有什么问题欢迎与我讨论。(qq: 1693592330)