文章目录
摘要
本文针对数学建模论文写作的格式部分,详细介绍图片、表格、公式如何采用latex代码进行实现,并给出参考文献的插入方法、附录代码框的设置等一系列的额外功能的latex代码实现,最后在文末给出完整的latex模板链接。(注:本文内容对数学建模比赛来说,完全够用)
注:笔者采用本地软件Texstudio进行的latex论文编写,读者可尝试用overleaf网页进行使用(需上传对应的tex、bib、图片等文件)下附overleaf链接
https://cn.overleaf.com/
一、latex主文件介绍
我们通常在后缀为.tex的文件中进行编写内容,其采用代码对文字进行排版设计。
学过c++、python等编程语言的同学可能知道,编程的主文件中分为:导言区、主函数两部分。
导言区通常是:导入库、导入命名空间、声明函数的部分
主函数通常是:编写主要核心内容的部分
而在latex中也是一样的,其导言区主要实现以下功能:
- 声明文档模板(如:中文论文模板or英文论文模板or书籍模板等)
\documentclass[16pt,a4paper,UTF8,AutoFakeBold,scheme=chinese,openany]{ctexart}
%article中文宏包
- 导入所需宏包(如:图表宏包、数学宏包等)与其他编程语言的函数库类似
\usepackage{xpatch}
%尝试自定义标题和作者字体和字号用的
\usepackage{geometry}
%调整页间距用的宏包
\usepackage{amsmath}
%数学符号、数学公式、更改公式编号的宏包
\usepackage{amsfonts}
%数学中自然数集、复数集的宏包
- 部分文档设置(如:自定义相关命令、依据已有宏包对整篇文档设置各级标题格式、设置默认正文字体、设置默认页眉页脚、填写标题作者等信息等功能)
\setlength{\parindent} {2em}
%首段缩进两个字符,全文生效,某些区域可能需要删除缩进
\setmainfont{Times New Roman}
%设置全文为新罗马字体
\ctexset{abstractname = \heiti\zihao{3}摘\quad{}要}
%设置摘要的字体和字号%黑体三号,小四为-4
\title{\heiti\zihao{3}基于主成分分析与随机森林算法的企业信用评级模型}
%标题所在,花括号里面是标题内容%黑体三号
\date{}
%日期置空
\author{}
%作者置空,也可以直接删了作者那部分,他也不会有作者显示的
\geometry{a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm}
%具体调整页间距的操作
其中2.、3.两部分内容可以通过在.tex文件外设置一个.cls文件进行设置(相当于c语言中,将所需函数重新放在一个.h文件中),本文并不打算采用这个方式,读者如有需求请自行上网查找对应资料学习。本文采用最方便的模式:导言区与主函数部分均在同一个文件中(.tex),本文导言区示例如下图所示(太长了,不好弄,只截取了一部分,仅作示例展示):

介绍完导言区,就该介绍这个“主函数”了,在latex中,主函数则是通过以下语句体现:
\begin{document}\songti\zihao{-4}
% 中文正文默认采用宋体、字号设置为小四,
%该语句并不与导言区的(\setmainfont{Times New Roman}%设置正文字体为新罗马字体)相冲突
%\songti该语句仅对中文生效,\setmainfont{Times New Roman}仅对英文生效
\end{document}
其中,\begin{document}与\end{document}之间的部分就可以编写内容了,就与c语言中的int mian(){}一样。比如比赛中,第一页(除去承诺书)是摘要,即如下图所示:用摘要的关键字(相当于使用函数)将摘要内容包围起来即可。(注:论文标题在导言区就会填写,此处\maketitle{}便会生成对应内容

对应效果如下图(左侧代码区,右侧pdf显示区):

注:在python中,#是注释的符号,在latex中,%是注释的符号,%以后的内容,编译器不管
一、常用内容
(一)常用语句
标题类
一级标题:\section{模型的建立与求解}%*号消除自带的1编号,手动加上自己需要的
二级标题:\subsection{问题一的模型建立与求解}
三级标题:\subsubsection{数据信息提取}
该语句与摘要的语句不同,摘要有\begin和\end,但是各级标题没有对应的“end”。展示效果如下图所示:

注:笔者习惯性在编写代码会缩进,这个不缩进也是可以的,跟c语言那些类似,可不缩进,缩进只是方便看一点
字体字号
调整字体字号:
\songti对应宋体\kaishu对应楷书\zihao{4}对应四号字体,如果有负号就是小四(即\zihao{-4})
此类语句与各级标题类似,没有对应的“end”。另一方面,此类语句一旦使用,会对该语句之后的所有内容生效,如果想要局部生效,可用{}框住即可
{\zihao{5}企业各指标汇总及说明表}
换行
- 换行不缩进:
\\ - 换行有缩进:
\par或者多空一行
如下图所示

(二)图片的插入与命名(单图与多图)
1.前提
a.本地环境
在本地环境中,让主文件(.tex)与图片放在同一个文件夹内,即:

比如需要插入“评价.png”这张图片,本地则如此放在同一个文件夹内
b.在线编辑器
而在在线编辑器overleaf中,则需要插入左侧的栏目中,即

比如需要需要插入“F.png”图片,则应将其插入左侧栏目中,与主文件document.tex在同一文件夹下。
2.单图语句
代码如下所示:
\begin{figure}[H]
\centering%图片居中
\includegraphics[width=13.8cm,height=9.2cm]{评价.png}
%花括号里面是图片的相对路径,在同文件夹中即可
%中括号里设置图片大小
\caption{信用评级层次图}%标题
\label{图1}%交叉引用的标签
\end{figure}
效果如下图所示:

3.多图语句
代码如下所示:
\begin{figure}[H] % 常规操作\begin{figure}开头说明插入图片
%后面跟着的[htbp]是图片在文档中放置的位置,也称为浮动体的位置,关于这个我们后面的文章会聊聊现在不管,照写就是了
\centering % 前面说过,图片放置在中间
\makebox[\textwidth][c]{
\subfloat[合格率] % 第一张子图的下标(注意:注释要写在[]中括号内)
{
%\label{fig:subfig1}
\includegraphics[width=0.6\textwidth]{问题三合格率.jpg}
% \label{}命令为每个子图添加标签,方便在正文中引用。
% width=0.4\textwidth 就是设置图片的大小,这里设置的是文档宽度(\textwidth)的0.4倍,在设置时注意不要超宽,不然会报错,大家多设置几个数尝试一下就能理解了
}
\subfloat[利润]
{
%\label{fig:subfig2}
\includegraphics[width=0.6\textwidth]{问题三利润.jpg}
}
}
\caption{实例问题求解结果图} % 整个图片的说明,注释写在{}内
%\label{fig:subfig_1}
% 整个图片的标签编号,注意这里跟子图是一样的道理,标签不能重复
\end{figure}
效果如下图所示:

这里只针对偶数张图片,如果是奇数张图片,最好自己先设计一下布局,比如第三张图片很长(横着的)
就可以这样处理:
- 在
\caption{实例问题求解结果图} % 整个图片的说明,注释写在{}内前,先给上半部分两张图做一个“结尾”(用\\换行符) - 插入
\makebox[\textwidth][c]{},在这里的{}中插入与上面类似的语句,来插入第三张图片
代码如下:
\begin{figure}[H]% 常规操作\begin{figure}开头说明插入图片
%后面跟着的[htbp]是图片在文档中放置的位置,也称为浮动体的位置,关于这个我们后面的文章会聊聊现在不管,照写就是了
\centering % 前面说过,图片放置在中间
\makebox[\textwidth][c]{
\subfloat[合格率] % 第一张子图的下标(注意:注释要写在[]中括号内)
{
%\label{fig:subfig1}
\includegraphics[width=0.6\textwidth]{评价.png}
% \label{}命令为每个子图添加标签,方便在正文中引用。
% width=0.4\textwidth 就是设置图片的大小,这里设置的是文档宽度(\textwidth)的0.4倍,在设置时注意不要超宽,不然会报错,大家多设置几个数尝试一下就能理解了
}
\subfloat[利润]
{
%\label{fig:subfig2}
\includegraphics[width=0.6\textwidth]{评价.png}
}
}\\
\makebox[\textwidth][c]{
\subfloat[合格率] % 第一张子图的下标(注意:注释要写在[]中括号内)
{
%\label{fig:subfig1}
\includegraphics[width=1\textwidth]{评价.png}
% \label{}命令为每个子图添加标签,方便在正文中引用。
}
}
\caption{实例问题求解结果图} % 整个图片的说明,注释写在{}内
%\label{fig:subfig_1}
\end{figure}
效果如下:

注:有的多图教程中没有使用这个\makebox这个函数,好处就是简单,本文之所以这样用,是因为这样一定可以让“拼好的图片”居中。
一定要自己设计好哪张图片在哪个地方更好!!!一定要能看清楚图片内容!!!
(三)表格的插入与命名(三线表与合并行列)
1.常规三线表
常见三线表代码:
\begin{table}[H]
\caption{\zihao{5}各因素相关性排序表}
%图表标题
\zihao{-4}
\centering %把表居中
\label{表2}
%\renewcommand\arraystretch{1.5}
% 修改列宽
\begin{tabular}{p{3.2cm}<{\centering}p{3.2cm}<{\centering}p{4cm}<{\centering}p{3.5cm}<{\centering}}
%一行大概15、16cm的样子
%设置列宽并居中
\toprule[1.1pt] %第一道横线
指标名称&特征值&各主成分贡献率(\%)&累计贡献率(\%)\\
\midrule% 第二道横线
盈利多寡 &$1.6809$&$33.6181$&$33.6181$\\
交易作废率 &$1.0413$&$20.8263$&$54.4452$\\
交易取消率 &$0.9841$&$19.6835$&$74.1287$\\
营业时长 &$0.8260$&$16.5203$&$90.6490$\\
上下游企业数 &$0.4675$&$9.3516$&$100$\\
\bottomrule[1.1pt] %第三道横线
\end{tabular}
\end{table}
注:此处的\zihao{-4}由于被\begin{table}[H]与\end{table}所包裹,故,仅在此处生效,并不影响后文字体与字号设置
p{3.2cm}<{\centering}是调整每一列的宽度的,如果把这个p更换成m,就变成了每一个格子中上下居中(但是数学建模论文中基本不会改成m的情况,p基本上够用)\renewcommand\arraystretch{1.5}这个是把整个表格上下拉伸的,一般表格不会用此语句,在符号说明部分会用到,来调整填充页面用的\bottomrule[1.1pt] %第三道横线方括号[]中的是调整线宽的
最终效果如下图所示:

2.合并行列
列的:

行的:
- 将
\multicolumn改为\multirow - 仔细检查
&,不能多写也不能少写一个
(我好像在建模里没怎么用过这个,没找到我自己写的例子,如果感兴趣的话,可以自己上网查一下,很好找)
(四)公式的插入与编号
公式常用代码:
\begin{gather}
Z=0.1652y_1+0.3361y_3+0.2082y_4+0.1968y_5
\end{gather}
- 下标用
y_1,如果下标长就y_{123}这样框起来就行 - 上标用
y^2,如果上标长就y^{123}这样逛起来就行 - 它会自动编号
效果如下图所示:

如果不想编号,可以这样(也是如何在公式中打入汉字的方法):
\begin{gather*}
\text{企业盈利多寡}=\sum\text{销项有效发票价税总和}-\sum\text{进项有效发票价税总和}
\end{gather*}
效果如下图所示:

二、额外功能
(一)设置参考文献
1.新建一个.txt文件,命名为author.bib(是需要改文件后缀的!!!)然后用Texstudio打开。
2.在知网上找到你想用的参考文献,点击红框的引用按钮
3. 然后点击更多引用格式
- 点击左下的bibtex格式,将右边红框内所有的东西复制粘贴进刚才的
author.bib文件中
- 粘贴进去之后,先不管三七二十一,把
language = {chinese},粘贴进去(一定要在@article{}的{}里面),然后,如果发现author={}的{}中是用英文的and来连接各个作者,那你一定要把它换成{,}(把and换成{,})如下图所示

6.这里的JXXB你可以随便改成你喜欢的字母,只要你能认出来就行,在文中想要引用这个文章,那就用语句\cite{JXXB}就行(示例是另外一篇文章,所以不是JXXB)
- 记得,参考文献不要doi那一项,记得删了(知网上复制的时候很有可能有doi那一项)
2.设置附录代码框
这个需要在导言区设置,代码如下:
\lstset{
% basicstyle=\footnotesize, % 设置整体的字体大小
showstringspaces=false, % 不显示字符串中的空格
frame=single, % 设置代码块边框
numbers=left, % 在左侧显示行号
% numberstyle=\footnotesize\color{gray}, % 设置行号格式
numberstyle=\color{darkgray}, % 设置行号格式
backgroundcolor=\color{white}, % 设置背景颜色
keywordstyle=\color{blue}, % 设置关键字颜色
commentstyle=\it\color[RGB]{0,100,0}, % 设置代码注释的格式
stringstyle=\sl\color{red}, % 设置字符串格式
}
%设置插入程序代码格式
然后在附录里面使用的时候,语句是:
\begin{lstlisting}[language=matlab]
clc,clear
data = readmatrix('123家公司指标总表.xlsx',"Range",...
"B2:DT6","OutputType","double");%将原始数据保存在txt文件中
data=data';
data(:,2)=max(data(:,2))-data(:,2);
data(:,3)=max(data(:,3))-data(:,3);
data=zscore(data); %数据的标准化
r=corrcoef(data); %计算相关系数矩阵r
%下面利用相关系数矩阵进行主成分分析,
%vec1的第一列为r的第一特征向量,即主成分的系数
[vec1,lamda,rate]=pcacov(r);
%lamda为r的特征值,rate为各个主成分的贡献率
f=repmat(sign(sum(vec1)),size(vec1,1),1);
%构造与vec1同维数的元素为±1的矩阵
vec2=vec1.*f;
%使每个特征向量的分量和为正,即为最终的特征向量
num = max(find(lamda>1));
%num为选取的主成分的个数,这里选取特征值大于1的
df=data*vec2(:,1:num); %计算各个主成分的得分
tf=df*rate(1:num)/100; %计算综合得分
[stf,ind]=sort(tf,'descend'); %把得分按照从高到低的次序排列
stf=stf'; ind=ind';
%stf为得分从高到低排序,ind为对应的样本编号
\end{lstlisting}
- 这部分自己一定要掌握好代码每一行的长度,不然就超出页面了,这个不会自动换行的,笔者当时懒得查了,都是源代码直接换行的
- 关于附录,附录也是一个一级标题,只是没有序号而已(本质上也是各级标题的体现)
效果如下图:

3.设置交叉引用
- 参考文献的交叉引用不用单独设置,只要参考文献没问题,就自动有交叉引用(就算是pdf文件,你鼠标放到那个
[1],鼠标就会从箭头变成一个手指,你点击一下就自动跳转到对应的参考文献那里了。 - 图、表、公式的交叉引用,需要在插入图表公式的时候,在语句中加入
\label{}如下图所示
然后你在正文中用语句\ref{}就行,如下图所示:
注意,\label{}中{}的内容,千万不要重复,一个表一个标签,一个数学公式一个标签,数学公式与表一模一样,都是\label和\ref进行使用
4.完整latex模板文件获取
https://afdian.com/item/fbea7ff4896f11f0958152540025c377
制作不易,如果觉得本文内容对您有帮助,请点个免费的赞吧,感谢!

4万+

被折叠的 条评论
为什么被折叠?



