前来驿站充电的小伙伴们,大家好呀!
今天给大家带来的是LaTeX论文排版的速成技巧。
大纲速览
0 前言
论文完成之后,使用LaTeX工具可以让自己的手稿变得美观整齐。LaTeX上手很快,核心逻辑是:找模板+改代码=完美的PDF。小站在本文中提供了个人自用的爱斯维尔期刊投稿模板,便于大家快速修改使用。话不多说,让我们一起开始吧。
1 获取LaTeX模板
根据不同的排版需求,我们需要寻找大佬们精心制作的模板。
方法1:Overleaf模板库:
直达链接:https://cn.overleaf.com/latex/templates
通过在线LaTeX网站Overleaf,可以下载大多数期刊的模板,如果懒得找,那么这里可以一试。但是可能这里提供的模板可能和期刊官网提供的不同步,所以建议还是去期刊官网下载。
方法2:期刊官网:
一般情况下,期刊模板的位置在
- 期刊首页Author Guide或者For Author
- 投稿系统的所在位置
- 集中统一的模板位置(爱斯维尔;IEEE)
注意:国外的期刊投稿的模板和最终出版的模板是不一致的。
进入期刊的官网根据以上位置一般都能找到对应的LaTex模板,这里以爱斯唯尔出版社为例,带大家下载期刊论文投稿模板。
(不想看教程的小伙伴可以直接通过百度网盘下载哟,链接: https://pan.baidu.com/s/1uZUGiBSFLVOObJ7dT_fMmg?pwd=b3xv 提取码: b3xv)
第一步,找到爱斯维尔出版社旗下的某一个期刊官网,以《Expert Systems with Applications》为例(https://www.sciencedirect.com/journal/expert-systems-with-applications),找到"Guide for authors"按钮,点击进入。
第二步,在新页面左侧目录中找到“Writing and formatting”然后点击“LaTeX”随后点击“LaTeX template”。
最后,完成模板文件的下载。
2 使用LaTeX进行排版
使用LaTeX有两种方式,一种是本地部署LaTeX,另一种则是线上LaTeX,为了方便初次接触LaTeX的小伙伴,小站用Overleaf(在线LaTeX编辑器)来为大家演示线上使用LaTeX的方法。(https://cn.overleaf.com/)
2.1 上传模板
小站在使用LaTeX排版论文中,用的是基于官方模板修改后的LaTeX模板,相较于官方模板会更加简洁易用。因此,下面的演示也是基于此模板,大家可以点击下方链接转存下载。
【自用】爱斯维尔latex投稿模板.zip,链接: https://pan.baidu.com/s/177n13tItLqaKblpV08eFKQ?pwd=mbuq 提取码: mbuq
第一步,通过邮箱注册登录至Overleaf
第二步,在完成前面的基本信息填写后,我们来到了下图所示的选择界面,我们单击“创建一个新项目”
第三步,选择“上传项目”,将“【自用】爱斯维尔latex投稿模板.zip”压缩包导入进Overleaf
看到下图界面即表示上传成功
2.2 论文排版
打开上图界面,即代表我们已经可以顺利使用LaTeX了,小站接下来直接告诉大家如何把自己的论文用LaTeX排版。
我们先要了解一个基本知识:在LaTeX中,代码命令以\
开头,注释则以%
开头。
2.2.1 论文基本信息(投稿期刊、标题、作者、地址、摘要、关键词)
-
期刊名称
第56行代码,仅修改大括号里面的内容
修改完成之后,点击菜单栏中间位置“重新编译”按钮查看编译效果
可以在第一页左下角看到期刊名字的变化
-
论文标题、作者、地址
第62-74行代码,仅修改大括号里面的内容
“重新编译”后,可以在论文第一页的顶部和底部分别看到修改后的信息
注意:本模板仅适用于所有论文作者的地址都相同的情况,如果论文中作者们的地址不尽相同,需要修改LaTeX代码(可以借助AI来生成) -
论文摘要
第77-79行代码,仅修改高亮部分的黑色字体内容
(\begin{abstract}
以及\end{abstract}
这两处代码是LaTeX识别摘要内容的关键代码,不要修改)
-
关键词
第80-82行代码,仅修改高亮部分的黑色字体内容
(如果需要增加/减少关键词,在相应地位置增加/删除\sep
代码并添加关键词)
“重新编译”后,摘要和关键词可以在论文标题的正下方看到修改后的信息
2.2.2 论文正文内容(标题、正文、参考文献、图片、表格、公式、算法)
- 章节标题与章节子标题
\section{标题内容}
表示一级标题
\subsection{具体内容(英文)}
表示二级标题
\subsubsection{具体内容(英文)}
表示三级标题
…
依次类推,具体代码以及渲染效果可以参考下图
- 正文内容
在两个section
之间便可以输入对应的正文内容,包括文本、图片、表格、公式、算法、参考文献等内容,期间还可以借助代码实现交叉引用。接下来我们一一阐述。
另外,在LaTeX中,如果要区分两个段落,那么左边的代码编辑区需要在两个段落之间增加一个空行,具体效果可以参考下一节“参考文献引用”中的图片。 - 参考文献引用
我们将目光定位到第90行代码(大家可以根据教程图片做尝试),里面涉及到参考文献的引用,从下图看,我们能发现参考文献引用的代码指令有很多
对应的渲染效果如下
它们的区别如下
命令格式 | 功能描述 | 示例输出 | 使用场景 |
---|---|---|---|
\cite{key} | 基本引用格式 | Fortunato (2010) | 通用引用 |
\citep{key} | 括号引用格式 | (Newman & Girvan, 2004) | 强调引用来源 |
\citet{key} | 文本嵌入引用 | Vehlow et al. (2013) | 作者作为句子成分 |
\citeauthor{key} | 仅显示作者名 | Fortunato | 强调研究主体 |
\citeyear{key} | 仅显示出版年份 | 2010 | 强调时间信息 |
如果有些期刊要求使用数字引用格式,那么我们可以在第1行代码出,将“authoryear”更改为“numbers”,那么“重新渲染”过后,前三种引用参考文献的代码均会变为数字形式
OK,到这一步我们已经清楚引用参考文献的代码就是\cite{}
及其衍生代码,那么{}
里面的字母与数字怎么来的呢?我们将视线移动到页面的左上角(文件显示区),我们会发现有四个文件,用鼠标点击“ref.bib”文件,我们能够发现三个bib格式的参考文献,见下图
获取BibTeX参考文献的方法
- 学术数据库直导(例如:Google Scholar、IEEE Xplore、ScienceDirect等):搜索文献→点击Cite/Export→BibTeX
- 文献管理器批量导出(例如:Zotero、Mendeley、Endnote等):文献库勾选目标→文件→ 导出→BibTeX
- 在线急速转换(例如:DOI转换器https://www.doi2bib.org/):输入DOI号→BibTeX
经过引用的参考文献才会出现在论文末尾的参考文献页
需要注意的是,这里参考文献的格式通过“model.bst”文件控制,如果需要更改,那么需要额外学习相关的知识
4. 插入图片
第105-110行代码,是插入图片的相关代码,具体解释如下
\begin{figure}[htbp] % 创建浮动图表环境,允许自动调整位置
\centering % 居中图表内容
\includegraphics[width=0.6\columnwidth]{Figure3.1-1.jpg} % 插入图片并设置宽度为栏宽的60%,如果{}中只有图片名字,须将图片与tex文件置于同一目录
\caption{The beauty of Munnar, Kerala. (See also Table \ref{tbl1})} % 添加带交叉引用的标题
\label{fig1} % 设置标签用于文档内引用
\end{figure}
代码组件 | 功能说明 | 技术细节 |
---|---|---|
\begin{figure}[htbp] | 创建浮动图表容器 | htbp 参数控制浮动优先级: - h 当前位置 - t 页面顶部 - b 页面底部 - p 单独浮动页 |
\centering | 内容水平居中 | 作用于容器内所有内容(图片/标题) |
\includegraphics[...]{...} | 插入外部图像文件 | 关键参数: - width :设置相对宽度 - height :设置绝对高度 - scale :整体缩放比例 |
width=0.6\columnwidth | 设置图像宽度 | \columnwidth 动态获取当前栏宽 保持原始宽高比 |
\caption{...} | 添加带编号的标题 | 自动生成"Figure X:"前缀 支持交叉引用( \ref{tbl1} ) |
\label{fig1} | 创建引用锚点 | 通过\ref{fig1} 在文中引用 通过 \pageref{fig1} 引用页码 |
此代码对应在文中的渲染以及引用效果如下图
- 插入表格
第117-136行代码,是插入表格的相关代码,具体解释如下
\begin{table}[htbp] % 创建浮动表格环境,自动调整位置
\centering % 表格内容水平居中
\begin{threeparttable} % 保持标题宽度与表格一致
\captionsetup{justification=raggedright, singlelinecheck=false} % 设置标题左对齐
\caption{This is a test caption. This is a test caption. This is a test
caption. This is a test caption. Use \{table*\} instead of \{table\} if you want a two column spanned table.} % 添加表格标题
\label{tbl1} % 设置表格标签用于交叉引用
\begin{tabular}{@{}cccc@{}} % 创建表格,列格式为4个居中对齐列
\toprule % 顶部水平线
\textbf{Col 1} & \textbf{Col 2} & \textbf{Col 3} & \textbf{Col 4} \\ \midrule % 表头行
12345 & 12345 & 123 & 12345 \\ % 数据行1
12345 & 12345 & 123 & 12345 \\ % 数据行2
12345 & 12345 & 123 & 12345 \\ % 数据行3
12345 & 12345 & 123 & 12345 \\ % 数据行4
12345 & 12345 & 123 & 12345 \\ % 数据行5
\bottomrule % 底部水平线
\end{tabular}
\end{threeparttable} % 结束标题宽度控制
\end{table} % 结束表格环境
代码组件 | 功能说明 | 详细说明 |
---|---|---|
[htbp] | 位置控制 | 浮动位置优先级: - h 当前位置 - t 页面顶部 - b 页面底部 - p 单独浮动页 |
threeparttable | 标题宽度控制 | 确保标题宽度与表格宽度相匹配 |
@{}cccc@{} | 列格式设置 | 两端不留空白(@{}),4个居中列(cccc) |
\toprule /\midrule /\bottomrule | 专业水平线 | 来自booktabs包的优质表格线 |
\textbackslash{}\{\} | 特殊字符转义 | 在标题中显示大括号{} |
此代码对应在文中的渲染效果如下图
- 公式编写
第142-155行代码,是插入公式及引用公式的相关代码,具体解释如下
% 单行公式环境(可左对齐)
\begin{flalign} % 创建可左对齐的公式环境
\label{eq:general_formula} % 设置公式标签用于引用
y_i = \frac{\sum_{\substack{j=1 \\ j \neq i}}^{n} \alpha_{ij} \cdot (1 - \beta_{ij})}{\sum_{i=1}^{n} \sum_{\substack{j=1 \\ j \neq i}}^{n} \alpha_{ij} \cdot (1 - \beta_{ij})}, % 复杂分式公式
\end{flalign} % 结束公式环境
% 多行公式对齐环境(带星号表示无编号)
\begin{align*} % 创建多行对齐公式环境(无编号)
\label{eq:multi_line} % 设置标签(但星号环境不会生成编号)
a &= b + c \\ % 第一行公式(&= 设置对齐位置)
&= d \times e % 第二行公式(延续对齐)
\end{align*} % 结束对齐环境
代码组件 | 功能说明 | 技术细节 |
---|---|---|
flalign | 单行左对齐公式环境 | 替代equation 环境实现左对齐 与 fleqn 文档选项配合使用 |
align* | 多行对齐公式环境(无编号) | 星号(*)表示不生成公式编号 |
\label{...} | 设置引用标签 | 配合\eqref{...} 在文中引用 |
\frac{}{} | 创建分式结构 | 分子在上,分母在下 |
\sum | 求和符号 | 可添加上下限 |
\substack{...} | 创建多行下标 | 用\\ 分隔行 |
&= | 对齐位置标记 | 多行公式中对齐等号位置 |
此代码对应在文中的渲染以及引用效果如下图
- 算法编写
第164-198行代码,是插入算法的相关代码,具体解释如下
% 算法环境开始
\begin{algorithm}[ht] % 创建算法浮动体,位置控制参数ht
\caption{Single-Phase Group Consensus Algorithm with Trust Adjustment} % 算法标题
\label{alg:Algorithm1} % 算法标签用于引用
\SetKwInOut{Input}{Input} % 定义输入块标题为"Input"
\SetKwInOut{Output}{Output} % 定义输出块标题为"Output"
\Input{ % 开始输入参数定义
Individual opinion matrices $ X^h = (x_{ij}^h)_{m \times n} $ for each expert $ h = 1,\dots,b $; \\ % 个体意见矩阵
Initial trust matrix $ R = (r^{hk})_{b \times b} $; \\ % 初始信任矩阵
Consensus threshold $ \eta $; \\ % 共识阈值
Maximum number of iterations $ t_{\max} $. % 最大迭代次数
}
\Output{ % 开始输出结果定义
Final collective opinion matrix $ X^C $; % 最终群体意见矩阵
Ranking of alternatives. % 备选方案排名
}
\Begin{ % 算法主体开始
\textbf{Step 1:} Compute pairwise similarity among individual opinions to estimate consensus levels. Convert the initial trust matrix into a weighted trust index based on opinion distances.\\ % 步骤1
\textbf{Step 2:} Derive trust and distrust scores for each expert pair using a predefined transformation mechanism. \\ % 步骤2
\textbf{Step 3:} Apply a propagation mechanism to account for indirect trust relationships, resulting in a completed trust-distrust matrix.\\ % 步骤3
\textbf{Step 4:} For each expert, calculate reputation indicators and confidence factors based on trust received and opinion centrality. Normalize these to obtain aggregated weights.\\ % 步骤4
\textbf{Step 5:} Generate an initial collective opinion matrix by weighted aggregation of expert opinions. Set iteration counter $ t \leftarrow 0 $.\\ % 步骤5
\While{$ t < t_{\max} $} { % 开始While循环(最大迭代次数控制)
\textbf{Step 6:} Evaluate group consensus based on the current collective opinion.\\ % 步骤6
\eIf{Consensus degree $ \geq \eta $} { % If-else条件判断(共识度是否达标)
\textbf{break} the loop; % 退出循环
} {
\textbf{Step 7:} Identify individuals and alternatives contributing most to disagreement. \\ % 步骤7
\textbf{Step 8:} Adjust individual opinions iteratively using a feedback rule based on trust scores and proximity to group opinion.\\ % 步骤8
Update collective opinion matrix and increment $ t \leftarrow t + 1 $. % 更新矩阵和迭代计数
}
}
\textbf{Step 9:} Calculate final scores for each alternative using the updated collective opinion.\\ % 步骤9
\textbf{Step 10:} Output the final collective matrix and ranking results. % 步骤10
}\textbf{end} % 算法主体结束
\end{algorithm} % 算法环境结束
代码组件 | 功能说明 | 技术细节 |
---|---|---|
[ht] | 位置控制 | h 当前位置,t 页面顶部 |
\SetKwInOut | 输入输出定义 | 创建专业输入/输出块 |
\Begin{} | 算法主体 | 替代传统function 的现代语法 |
\eIf{} | If-Else条件 | 带垂直空间优化的条件判断 |
\\ | 换行控制 | 创建步骤间的适当间距 |
\textbf{Step X:} | 步骤标注 | 显式算法流程标记 |
$ \dots $ | 行内数学公式 | 专业数学符号集成 |
此代码对应在文中的渲染以及引用效果如下图
2.3 注意事项
2.3.1 文档类型设置
第1行代码及其注释详细说明了文档类型的设置以及修改的相关问题,包括单双栏变换、参考文献引用样式变换、设置公式左对齐等功能,有需要的小伙伴可以详细阅读
(过来人悄悄告诉你:此处在期刊投稿的时候能帮上大忙)
\documentclass[final,3p,times,authoryear,fleqn]{elsarticle} % 用于文章类型设置;
%final: 指定文档的最终版本;
%3p:单栏显示(双栏用5p);
%authoryear:参考文献引用样式为作者年份(数字用numbers);
%fleqn: 将公式设置为左对齐(而不是默认的居中);
%elsarticle:文档类型为,overleaf已内置,若本地部署latex报错,则需要单独安装elsarticle.cls文件
2.3.2 宏包设置(中文显示问题)
在第7-30行代码处,小站列出了写论文是个人用到的一些宏包的配置,加了%
的表示未使用到,可以删除。
此外,LaTeX文档原生不支持中文显示,这也意味着整篇文档除了注释其他代码位置不能出现中文,如果报错,那么就要考虑是否有这一问题的影响。当然有细心地小伙伴注意到了在第23-25行代码处被我注释掉的宏包注释里有提示“用于中文支持”,只要把这三行代码启用,LaTeX也可以支持中文的渲染与排版了。
2.3.3 双击PDF文本快速定位LaTeX代码
在检查论文的PDF排版时如果发现一些地方书写有问题,那么可以在PDF双击该位置则可以迅速定位到对应的LaTeX代码。
2.3.4 AI辅助生成LaTeX代码
随着LLM的不断发展,我们也不需要记忆太多复杂的LaTeX命令,在涉及到公式、表格、图片等内容的排版时,学会借助ai来帮助我们完成排版可以节约很多时间。
截图→粘贴→输入命令→发送→调试→完成排版,一气呵成。
AI,让LaTeX不再神秘。
2.3.5 常用LaTeX命令速查
% ===== 基础文档框架 =====
\documentclass{article} % 文档类型(article/report/book)
\usepackage{package} % 加载宏包
\title{Title} % 文档标题
\author{Author} % 作者信息
\date{\today} % 日期
\begin{document} % 文档开始
\maketitle % 生成标题页
\section{Section} % 一级标题
\subsection{Subsection} % 二级标题
\tableofcontents % 目录
\end{document} % 文档结束
% ===== 数学环境 =====
$ E=mc^2 $ % 行内公式
$$ \int_a^b f(x)dx $$ % 无编号公式
\begin{equation} % 带编号公式
\frac{\partial u}{\partial t} = \nabla^2 u
\end{equation}
% ===== 数学符号 =====
\alpha, \beta, \gamma % 希腊字母
\times, \pm, \leq % 运算符
\subseteq, \in, \forall % 逻辑符号
\mathbf{A}, \mathbb{R} % 粗体/空心字体
% ===== 基础表格 =====
\begin{tabular}{|c|c|c|} % 列格式:c居中 l左 r右
\hline
\textbf{Header} & \textbf{Header} & \textbf{Header} \\
\hline
Cell & Cell & Cell \\
\hline
\end{tabular}
% ===== 专业表格 =====
\usepackage{booktabs} % 加载专业表格宏包
\begin{tabular}{@{}ccc@{}}
\toprule
Column1 & Column2 & Column3 \\
\midrule
Data & Data & Data \\
\bottomrule
\end{tabular}
\usepackage{graphicx} % 图片宏包
\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{figure.jpg}
\caption{Figure description}
\label{fig:example}
\end{figure}
% 子图排版
\usepackage{subcaption}
\begin{figure}
\begin{subfigure}{0.45\textwidth}
\includegraphics[width=\textwidth]{sub1.jpg}
\caption{Subfigure 1}
\end{subfigure}
\hfill
\begin{subfigure}{0.45\textwidth}
\includegraphics[width=\textwidth]{sub2.jpg}
\caption{Subfigure 2}
\end{subfigure}
\end{figure}
% ===== 文献引用 =====
\usepackage{natbib} % 文献宏包
\cite{key} % 一般引用
\citep{key} % 括号引用:(Author, Year)
\citet{key} % 文本引用:Author (Year)
\bibliographystyle{plain} % 文献样式
\bibliography{refs} % 参考文献文件
% 文献条目示例 (refs.bib)
@article{key,
author = {Author},
title = {Title},
journal = {Journal},
year = {2023},
volume = {1},
pages = {1-10}
}
3 尾声
(特别鸣谢:小站的同门为本文提供的LaTeX模板,小站是在其提供的模板上进行修改与完善)
LaTeX的功能十分强大,以上代码仅仅是LaTeX部分功能的基础演示,实际在排版论文中,我们会因为内容篇幅、单双栏、阅读习惯等问题需要不断修改细化LaTeX代码以实现我们的预期。
小站相信,掌握了上述命令代码逻辑的你一定可以用LaTeX顺利完成论文的精美排版,如果你有什么在LaTeX排版上的问题可以在评论区或者后台私信小站,我们一起探讨解决方案。
本期文章所涉及的资源均已上传至小站的资源站(http://sykdyz.ysepan.com/)
小伙伴们有需自提哟,让我们下期再见!