PID:48285353

起因

最近要准备数模国赛了,因此学习一下LaTeX的写作排版。

配置有关环境

VScode集成了非常功能,心想着应该也有Latex插件,在一番参考网上教程后,下载了LaTex Workshop插件。

之后在VScode中,打开一个准备好的空文件夹,创建一个my_latex.tex文件,就可以在VScode中进行LaTex的写作了。

在写作的同时,也可以随时在VScode中预览效果。

如果你想在线编辑LaTeX,也可以使用Overleaf

学习过程

基本语法规则

LaTex中,注释以%开头

LaTeX语言的写法大致分为两类

  • 命令

    \开头,后面跟命令名,如\documentclass

  • 环境

    \begin开头,以\end结尾,如\begin{document}

命令和环境可以嵌套

空格和换行符在LaTex中会被忽略,因此需要专门的空格和换行符。

  • 空格:一般采用\quad\qquad
  • 换行符:\\

分段只需要相邻两段之间空一行即可,分段会自动缩进

this is paragraph1, you can see that there is a space between paragraph1 and paragraph2.

this is paragraph2.

开始一个pdf文档的写作

\documentclass{classname}

classname 代表文章的风格,可选参数有:

  • article: 用于写短文章

  • report: 用于写长文章

  • book: 用于写书

  • letter: 用于写信件

如果要在文中使用中文,在头部加上xeLaTeX编译(这里我也有点没搞懂)

%!TEX program = xelatex  %采用xelatex编译

相关包安装

在开始文档后,需要安装一些包

\usepackage{package1,package2,...}

常用的包包括:

  • xeCJK: 用于在xelatex中使用中文。
  • amsmath,amsfonts,amsthm:数学相关支持包,提供了许多数学函数和符号。
  • bm: 用于在公式中使用黑斜体字体。
  • mathrsfs: 用于在公式中使用斜体字体。
  • graphicx: 用于插入图片。
  • subfigure: 用于在同一张图中插入多个子图。
  • geometry: 用于设置页面布局。
  • fancyhdr: 用于自定义页眉和页脚。
  • lastpage: 用于获取总页数。
  • listings: 用于插入代码。
  • hyperref: 用于生成目录和链接。

导言区

Latex将文章分为导言区(preamble)和正文区(main matter)。

导言区可以放置一些全局的设置,如页眉页脚、字体、标题等。

设置文章格式

设置页面边距

\geometry{left=2cm,right=2cm,top=2cm,bottom=2cm}

设置页眉和页脚

\pagestyle{fancy}
\fancyhf{} %清除默认页眉和页脚
\fancyhead[L]{左页眉} % 可以写成\lhead{左页眉}
\fancyhead[C]{中页眉} % 可以写成\chead{中页眉}
\fancyhead[R]{右页眉} % 可以写成\rhead{右页眉}
\fancyfoot[L]{左页脚} % 可以写成\lfoot{左页脚}
\fancyfoot[C]{中页脚} % 可以写成\cfoot{中页脚}
\fancyfoot[R]{右页脚} % 可以在\rfoot{右页脚}

设置底部页码(默认是1、2…数字)

\cfoot{第 \thepage 页(共 \lastpage 页)} 

\thepage 和 \lastpage 是内置的宏

设置标题格式

\title{文章标题}
\author{作者姓名}
\date{日期} % 2024-07-01 % \today

编写正文区

正文区以\begin{document}开始,以\end{document}结束。

如果你想显示各个设定好的标题,可以加入如下代码:

\maketitle

如果你需要一些无意义的填充,可以加入如下代码:

\lipsum[1-5] % 参数1-5表示填充5段无意义的文本

以下内容均均属正文内容:

目录

如果你想显示目录,可以加入如下代码:

\tableofcontents

目录是根据文章的各级标题自动生成的

各级标题

通过\section{},\subsection{},\subsubsection*{},你可以分别设置一级二级三级标题。

\section{一级标题} % 1 一级标题
\subsection{二级标题} % 1.1 二级标题
\subsubsection{三级标题} % 1.1.1 三级标题

如果不想有前缀数字,可以使用 \section*{},\subsection*{},\subsubsection*{}

字体

LaTex中,字体可以分为粗体、斜体、无衬线字体、打字机字体、小型大写字母、中等大写字母。

\textbf{粗体} % 加粗

\textit{斜体} % 斜体

\textsf{无衬线字体} % 无衬线字体

\texttt{打字机字体} % 打字机字体

\textsc{小型大写字母} % 小型大写字母

\textmd{中等大写字母} % 中等大写字母

数学公式

LaTex中,数学公式可以分为行内公式和行间公式。

行内公式以$符号包裹,如$x^2$

行间公式以\[\]符号包裹,如\[x^2\]

对于复杂的行间公式,可以使用amsmath包中的equation环境。

行内公式演示:

如果$x^2 + y^2 = z^2$,那么 $x = \frac{2}{3}$ \\

如果$ 1+\dfrac{1}{2} = \dfrac{3}{4}$,那么$x = \dfrac{2}{3}$

行间公式演示:

\begin{equation*}
\frac{1}{2} \times 3 = 1.5
\end{equation*}

\begin{equation}
\int_{0}^{1} x^2 dx = \frac{1}{3}
\end{equation}

\begin{equation}
\sum_{i=1}^{n} i = \frac{n(n+1)}{2}
\end{equation}

插入行间公式时,如果用equation环境,那么公式会自动编号,如果用equation*环境,那么公式不会自动编号。而如果用\[]\包裹的形式,也不会自动编号
如果想对公式字母加粗,可以用\bm{需要加粗的字母}方法,注意引入bm

对于复杂的LeTeX公式代码建议利用LaTex公式编辑网站中创建

插入图片

请将需要插入的图片放入你的.tex文件所在目录中(可以是有文件夹的子目录)

插入单图

使用环境\begin{figure}\end{figure}包裹图片

\begin{figure}[h] 
\centering
\includegraphics[width=0.6\textwidth]{your_pic_dir}
\caption{图片标题}
\end{figure}

需要关注的参数:

  • h:代表自动调整位置
  • \center:表示图片居中
  • width=0.6\textwidth:代表图片宽度为页面宽度的60%
  • your_pic_dir:代表你的图片相对.lex文件的相对路径(如你有一张图片pic.png在与.tex文件同目录下,则可以填pic.png)

插入双图

先使用环境\begin{figure}\end{figure}包裹双图图片,再使用环境\begin{minipage}\end{minipage}包裹每张图片

\begin{figure}[h]
\begin{minipage}{0.48\textwidth}
\centering
\includegraphics[width=0.9\textwidth]{your_pic1_dir}
\caption{图片1}
\end{minipage}
\begin{minipage}{0.48\textwidth}
\centering
\includegraphics[width=0.9\textwidth]{your_pic2_dir}
\caption{图片2}
\end{minipage}
\end{figure}

需要关注的参数:

  • h:代表自动调整位置
  • \centering表示图片居中
  • 0.48\textwidth:代表创建一个宽度为页面宽度的48%的容器
  • width=0.9\textwidth:代表图片宽度为容器宽度的90%
  • your_pic1_dir:代表你的第一张图片相对.lex文件的相对路径
  • your_pic2_dir:代表你的第二张图片相对.lex文件的相对路径

调整宽度时不要让你的两张图相互重叠了

插入表格

使用环境\begin{table}\end{table}包裹表格

使用\centering 设置表格居中

使用环境\begin{tabular}\end{tabular}包裹具体的表格内容

使用\caption{title}设置表格标题

普通表格示例:

\begin{table}[h]
\centering
\begin{tabular}{|c|c|c|}
\hline
姓名 & 年龄 & 性别 \\
\hline
张三 & 20 &\\
\hline
李四 & 22 &\\
\hline
\end{tabular}
\caption{表格标题}
\end{table}

三线表示例:

\begin{table}[h]
\centering
\begin{tabular}{cc}
\toprule
\qquad 物理符号 \qquad & \qquad 物理含义 \qquad \\
\midrule
I & 电流 \\
U & 电压 \\
\bottomrule
\end{tabular}
\caption{表格标题}
\end{table}

绘制普通表格关注的参数:

  • |c|c|c|:c是占位符,c的个数决定了表的列数,同时c也意味着文件居中。l :居左;r:居右
  • \hline :在当前行上方绘制一条横线
  • &:分隔单元格
  • \\:分隔行

绘制三线表关注的参数:

  • \toprule :顶部横线
  • \midrule :中部横线
  • \bottomrule :底部横线
  • &:分隔单元格
  • \\:分隔行

表格每列最大宽度是由最宽的单元格决定的,因此直接插入表格可能会显得非常小,一个便捷的方法是手动加入空格\qquad 然后手动调整居中(如上方三线图示例)。

事实上,在了解完表格的基础后,我们并不需要手动建表并调整格式,可以通过在线表格创建网站快速编辑所需表格。如果使用了合并单元格等,注意网站给出添加有关包的提示。

如果你只是想创建简单的表格,或许这个在线表格创建网站使用起来更方便。

插入代码

首先添加包 listings

使用环境\begin{lstlisting}\end{lstlisting}包裹代码

\usepackage{listings}

\begin{lstlisting}[language=C++]
#include <iostream>

int main() {
std::cout << "Hello, world!" << std::endl;
return 0;
}
\end{lstlisting}

\begin{lstlisting}{language=python}

print("Hello, world!")

\end{lstlisting}

需要关注的参数:

  • language=C++:代表代码语言为C++

标签

为了能在文章快速引用公式、图片、表格、章节等,可以使用标签。

同时标签能够避免手动标号产生修改麻烦的问题。

使用\label{label_name}设置标签

使用\ref{label_name}引用标签

\begin{equation}\label{eq:1}
\frac{1}{2} = 0.5
\end{equation}

公式\ref{eq:1}的值是0.5

\begin{table}[h]\label{tab:my_label}
\centering
\begin{tabular}{|c|c|}
\hline
a & b \\
\hline
c & d \\
\hline
\end{tabular}
\caption{my_label}
\end{table}

表格\ref{tab:my_label}是一个普通表格

标签建议写在环境开始\begin{}前。

标签的命名建议:公式:eq:eq_name图片:pic:pic_name表格:tab:tab_name章节:sec:sec_name

参考文献

参考文献可以选择使用BibTex,也可以选择不使用。为了参考文献管理方便,建议选择使用BibTex。

Step1:
使用BibTex需要添加包biblatex

Step2:
在.tex文件下建立一个BibTex文件,即.bib文件,例如my_bib.bib

Step3:
在BibTex文件中添加参考文献,例如:

@article{name1,
author = {作者, 多个作者用 and 连接},
title = {标题},
journal = {期刊名},
volume = {卷20},
number = {页码},
year = {年份},
abstract = {摘要, 这个主要是引用的时候自己参考的, 这一行不是必须的}
}
@book{name2,
author ="作者",
year="年份2008",
title="书名",
publisher ="出版社名称"
}

参考文献的类型由@后面的参数决定,常见有:

  • article:文章
  • book:书籍
  • incollection:书籍中的某一章(
  • inproceedings:会议论文
  • report:报告
  • thesis:学位论文
  • unpublished:未发表的论文
  • misc:其他类型

Step4:
在论文最末,\end{document}之前,使用\bibliographystyle{}\bibliography{}设定参考文献样式和导入数据库。

\bibliographystyle{plain}
\bibliography{my_bib}

常见的预设样式的可选项有8种,分别是:

  • plain:按字母的顺序排列,比较次序为作者、年度和标题;
  • unsrt:样式同plain,只是按照引用的先后排序;
  • abbrv:类似plain,将月份全拼改为缩写,更显紧凑;
  • ieeetr:国际电气电子工程师协会期刊样式;
  • acm:美国计算机学会期刊样式;
  • siam:美国工业和应用数学学会期刊样式;

Step5:
在论文中需要引用参考文献的地方使用\cite{name}引用参考文献。

\documentclass{article}  %文章类型
\usepackage{biblatex} % 设添加包
\begin{document}

I want to cite the paper \cite{ref_name} % ref_name为数据库参考文献自定义名

\bibliographystyle{plain} % 确定样式
\bibliography{your_bib_name} % 导入数据库

论文模板

在学习完基础知识后,就可以直接上手模板啦!

对于论文模板,我们不需要关注他的配置,只需要修改其中内容即可。

overleaf中,可以找到很多优秀的模板,包括全国大学生数学建模竞赛论文模板

作者网站:https://blog.marquis.eu.org/

其中template.tex很好地演示了模板,能够应付绝大多数数模论文需求。在学习完基础知识后,看懂模板示例代码应该不难,其中的自定义命令也比较好理解,这里就不过多讲解了。

为了方便本地编写全国大学生数学建模竞赛论文,我将论文下载到本地,并打包到自己的github仓库中。如有侵权,请联系我删除。

结语

文中大部分内容学习自LaTeX快速上手与数学建模论文写作

通过简单的LaTeX学习,终于已经能够写出自己的数学建模论文了!对于有markdown基础的同学,学习LaTeX应该会比较快。

既然你已经学会了LaTeX的基础知识,现在就快去写一篇数模国赛论文吧!23333

这篇博客仅记录一下自己的学习心得,希望能对你有所帮助。