Through silver light the hidden letters gleam.
\documentclass{article} % 文档类型
\begin{document} % 正文开始
\title{一个 LaTeX 文档示例} % 标题
\author{owo} % 作者
\maketitle % 在正文部分生成标题
% 正文内容
这是一个 LaTeX 文档示例。
\end{document} % 正文结束\thispagestyle{empty} % 无样式
\newpage
\thispagestyle{plain} % 有页码
\pagenumbering{arabic}
\setcounter{page}{1}
\begin{center}
{\heiti\sanhao 论文题目} % 三号黑体标题
\\[2em]
\end{center}
\begin{center}
\textbf{\heiti 摘 要}
\end{center}
% 摘要内容,控制在小四宋体,单倍行距,不超过一页
\vspace{2em}
\noindent
\textbf{\heiti 关键词:}关键词1;关键词2;关键词3
\newpage\pagestyle{plain} % 页码居中显示在页脚,无页眉
\pagenumbering{arabic} % 阿拉伯数字编号
\setcounter{page}{1} % 从第三页开始编号为1\pagestyle{plain} % 无页眉,仅页脚显示页码% 字体设置
\setCJKmainfont{SimSun} % 正文宋体
\setCJKsansfont{SimHei} % 标题黑体
\newcommand{\xiaosi}{\fontsize{12pt}{12pt}\selectfont} % 小四号,单倍行距
\newcommand{\sihao}{\fontsize{14pt}{17pt}\selectfont} % 四号
\newcommand{\sanhao}{\fontsize{16pt}{20pt}\selectfont} % 三号
\songti\xiaosi % 全文默认宋体小四
% 标题格式
\ctexset{
section = {
format+ = {\centering\bfseries\sihao}, % 一级标题居中四号黑体
name = {},
number = \arabic{section},
beforeskip = 12pt,
afterskip = 8pt
},
subsection = {
format+ = {\raggedright\bfseries\xiaosi}, % 二级标题左对齐小四黑体
name = {},
number = \arabic{section}.\arabic{subsection},
beforeskip = 10pt,
afterskip = 6pt
},
subsubsection = {
format+ = {\raggedright\bfseries\xiaosi}, % 三级标题左对齐小四黑体
name = {},
number = \arabic{section}.\arabic{subsection}.\arabic{subsubsection},
beforeskip = 8pt,
afterskip = 4pt
}
}\begin{center}
\textbf{\heiti 摘 要}
\end{center}
% 摘要内容
\vspace{2em}
\noindent
\textbf{\heiti 关键词:}关键词1;关键词2;关键词3% 在正文中引用
这是正文内容,引用文献[1],引用书籍具体页码[2, pages 10-15]。
% 文末参考文献列表
\begin{thebibliography}{99}
\bibitem{ref1} 张三,数学建模基础,北京:清华大学出版社,2020。
\bibitem{ref2} 李四,建模方法研究,数学研究,卷10期3:25-30,2019。
\bibitem{ref3} 王五,数学建模资源,http://example.com,访问时间:2023-10-01。
\end{thebibliography}\documentclass[12pt]{ctexart}
% ---------------------- 基本设置 ----------------------
\usepackage[a4paper,margin=2.5cm]{geometry} % 页面设置,左右上下边距 2.5cm
\usepackage{float} % 图表位置控制
\usepackage{amsmath,amssymb} % 提供数学环境和符号
\usepackage{fontspec} % 处理字体
\usepackage{graphicx} % 处理图片
\usepackage{listings,ctex,xcolor} % 代码环境支持
\pagestyle{plain} % 无页眉,仅保留页码居中显示
% 字体设置
\setCJKmainfont{SimSun} % 正文宋体
\setCJKsansfont{SimHei} % 标题黑体
% 字号,行距设置
\newcommand{\xiaosi}{\fontsize{12pt}{12pt}\selectfont} % 小四,单倍行距
\newcommand{\sihao}{\fontsize{14pt}{17pt}\selectfont} % 四号
\newcommand{\sanhao}{\fontsize{16pt}{20pt}\selectfont} % 三号
% ---------------------- 标题与章节格式 ----------------------
\ctexset{
section = {
format+ = {\centering\bfseries\sihao}, % 一级标题:四号黑体,居中
name = {},
number = \arabic{section},
beforeskip = 12pt,
afterskip = 8pt
},
subsection = {
format+ = {\raggedright\bfseries\xiaosi}, % 二级标题:小四号黑体,左对齐
name = {},
number = \arabic{section}.\arabic{subsection},
beforeskip = 10pt,
afterskip = 6pt
},
subsubsection = {
format+ = {\raggedright\bfseries\xiaosi}, % 三级标题:小四号黑体,左对齐
name = {},
number = \arabic{section}.\arabic{subsection}.\arabic{subsubsection},
beforeskip = 8pt,
afterskip = 4pt
},
bibname = {参考文献}
}
% ---------------------- 代码块格式(可选) ----------------------
\lstset{
basicstyle = \sffamily, % 基本代码风格
keywordstyle = \bfseries, % 关键字风格
commentstyle = \rmfamily\itshape, % 注释风格,斜体
stringstyle = \ttfamily, % 字符串风格
flexiblecolumns, % 灵活列
numbers = left, % 行号在左边
showspaces = false, % 不显示空格
numberstyle = \zihao{-5}\ttfamily, % 行号样式,小五号
showstringspaces = false, % 不显示字符串中的空格
captionpos = t, % 代码标题在上方
frame = lrtb, % 显示边框
}
\lstdefinestyle{Python}{
language = Python,
basicstyle = \zihao{-5}\ttfamily,
numberstyle = \zihao{-5}\ttfamily,
keywordstyle = \color{blue},
keywordstyle = [2] \color{teal},
stringstyle = \color{magenta},
commentstyle = \color{red}\ttfamily,
breaklines = true, % 自动换行
columns = fixed, % 固定字间距
basewidth = 0.5em,
}
% ---------------------- 正文开始 ----------------------
\begin{document}
\songti\xiaosi % 全文默认为宋体、小四号,单倍行距
% ---------------------- 标题、摘要、关键词 ----------------------
\thispagestyle{plain} % 有页码,居中显示
\pagenumbering{arabic} % 阿拉伯数字编号
\setcounter{page}{1} % 从第1页开始
\begin{center}
{\heiti\sanhao 论文题目} % 三号黑体居中标题,请替换为实际题目
\\[2em]
\end{center}
\begin{center}
\textbf{\heiti 摘 要}
\end{center}
此处填写摘要内容,摘要应简明扼要,控制在一页以内,突出论文的核心问题、方法和结论。
\vspace{2em}
\noindent
\textbf{\heiti 关键词:}关键词1;关键词2;关键词3 % 替换为实际关键词
\newpage
% ---------------------- 目录 ----------------------
\newpage
\pagenumbering{gobble} % 禁止页码编号
\tableofcontents % 生成目录
\newpage
\pagenumbering{arabic} % 恢复页码编号
% ---------------------- 正文开始 ----------------------
\setcounter{page}{1} % 正文页码从 1 开始
\section{引言}
此处开始论文正文内容。一级标题使用四号黑体居中,二级及以下标题使用小四号黑体左对齐。正文内容为小四号宋体,单倍行距。
\section{问题分析}
\subsection{问题背景}
此处可描述问题的背景和重要性,使用小四号宋体排版。
\subsection{问题重述}
可对竞赛题目进行重述,明确需要解决的问题。
\section{模型建立}
\subsection{模型假设}
列出模型的假设条件,确保内容清晰。
\subsection{符号说明}
\begin{table}[H]
\centering
\begin{tabular}{lll}
符号 & 说明 & 单位 \\
\hline
$x$ & 变量1 & 单位1 \\
$y$ & 变量2 & 单位2
\end{tabular}
\caption{符号说明表}
\label{tab:symbols}
\end{table}
\subsection{数学模型}
可在此处插入数学公式,例如:
\begin{align}
f(x) = x^2 + 2x + 1
\end{align}
\section{模型求解}
可在此处描述模型的求解过程,插入必要的图表。例如:
\begin{figure}[H]
\centering
\includegraphics[height=5cm]{example-image} % 替换为实际图片路径
\caption{示例图形}
\label{fig:example}
\end{figure}
\section{结果分析}
分析模型结果,说明其意义和局限性。
\section{总结}
总结论文的主要贡献和结论,提出可能的改进方向。
% ---------------------- 参考文献 ----------------------
\begin{thebibliography}{99}
\bibitem{ref1} 作者1,书名,出版地:出版社,出版年。
\bibitem{ref2} 作者2,论文名,杂志名,卷期号:起止页码,出版年。
\bibitem{ref3} 作者3,资源标题,网址,访问时间(年月日)。
\end{thebibliography}
% ---------------------- 附录(可选) ----------------------
\section*{附录}
\subsection*{附录一:示例代码}
\lstinputlisting[
style = Python,
caption = {示例代码},
label = {code:example}
]{
./src/main.py % 替换为实际代码路径
}
\end{document}正文中的公式为 $f(x) = x^2 + 2x + 1$,表示一个二次函数。\[ f(x) = x^2 + 2x + 1 \]\begin{equation}
f(x) = x^2 + 2x + 1
\label{eq:quadratic}
\end{equation}\usepackage{amsmath,amssymb} % 提供数学环境和符号\begin{align}
x &= (r_1 - r_2)\cos\theta + d\cos\left(\frac{r_1 - r_2}{r_2}\theta\right) \\
y &= (r_1 - r_2)\sin\theta - d\sin\left(\frac{r_1 - r_2}{r_2}\theta\right)
\end{align}\begin{align*}
x &= (r_1 - r_2)\cos\theta + d\cos\left(\frac{r_1 - r_2}{r_2}\theta\right) \\
y &= (r_1 - r_2)\sin\theta - d\sin\left(\frac{r_1 - r_2}{r_2}\theta\right)
\end{align*}$x^2$ % 上标:平方
$r_1$ % 下标:索引$\frac{a}{b}$ % 分数
$\int_{0}^{1} x \, dx$ % 定积分$\theta$\begin{equation}
\mathbf{A} = \begin{pmatrix}
1 & 2 \\
3 & 4
\end{pmatrix}
\end{equation}\begin{align*}
2x + 3y &= 5 \\
4x - y &= 1
\end{align*}\begin{equation}
\begin{bmatrix}
2 & 3 \\
4 & -1
\end{bmatrix}
\begin{bmatrix}
x \\
y
\end{bmatrix}
=
\begin{bmatrix}
5 \\
1
\end{bmatrix}
\label{eq:linearsystem}
\end{equation}$\mathbb{R}$ % 实数集
$\forall$ % 任意量词
$\in$ % 属于\begin{equation}
E = mc^2
\label{eq:energy}
\end{equation}
正文中可引用公式 \ref{eq:energy} 来解释其意义。\begin{table}[htbp]
\centering
\caption{表格标题}
\label{tab:example}
\begin{tabular}{ccc}
\hline
列1 & 列2 & 列3 \\
\hline
数据1 & 数据2 & 数据3 \\
数据4 & 数据5 & 数据6 \\
\hline
\end{tabular}
\end{table}\begin{tabular}{|c|c|c|}
\hline
参数 & 取值 & 单位 \\
\hline
$\alpha$ & 0.5 & - \\
\hline
$\beta$ & 1.2 & kg \\
\hline
\end{tabular}\usepackage{multirow}
\begin{tabular}{|c|c|c|}
\hline
\multicolumn{2}{|c|}{合并的列} & 普通列 \\
\hline
\multirow{2}{*}{合并的行} & 数据1 & 数据2 \\
\cline{2-3}
& 数据3 & 数据4 \\
\hline
\end{tabular}\usepackage{booktabs}
\begin{table}[H]
\centering
\caption{模型参数比较}
\label{tab:comparison}
\begin{tabular}{lccc}
\toprule
模型 & 准确率 & 运行时间(s) & 内存占用(MB) \\
\midrule
模型A & 92.5\% & 15.3 & 128 \\
模型B & 94.1\% & 22.7 & 256 \\
模型C & 89.8\% & 8.2 & 64 \\
\bottomrule
\end{tabular}
\end{table}如表 \ref{tab:tablename} 所示。\usepackage{longtable}
\begin{longtable}{lcc}
\caption{大规模数据结果} \\
\label{tab:longdata} \\
\toprule
参数 & 值1 & 值2 \\
\midrule
\endfirsthead
\multicolumn{3}{c}{续表 \ref{tab:longdata}} \\
\toprule
参数 & 值1 & 值2 \\
\midrule
\endhead
\midrule
\multicolumn{3}{r}{接下页} \\
\endfoot
\bottomrule
\endlastfoot
参数1 & 0.1 & 0.2 \\
参数2 & 0.3 & 0.4 \\
% 更多数据行...
\end{longtable}\usepackage{siunitx}
\begin{tabular}{lS[table-format=2.2]S[table-format=3.1]}
\toprule
项目 & {准确率(\%)} & {时间(ms)} \\
\midrule
测试1 & 95.42 & 123.5 \\
测试2 & 87.30 & 45.8 \\
\bottomrule
\end{tabular}\usepackage{threeparttable}
\begin{table}[H]
\centering
\begin{threeparttable}
\caption{实验结果}
\begin{tabular}{lcc}
\toprule
方法 & 准确率 & 效率\tnote{1} \\
\midrule
方法A & 90\% & 高 \\
方法B & 95\% & 中 \\
\bottomrule
\end{tabular}
\begin{tablenotes}
\item[1] 效率基于单位时间内处理的样本数量
\end{tablenotes}
\end{threeparttable}
\end{table}\begin{thebibliography}{99}
\bibitem{ref1} 张三,数学建模方法,北京:高等教育出版社,2020。
\bibitem{ref2} 李四,最优化理论在数学建模中的应用,数学建模与应用,14(3):35-42,2019。
\bibitem{ref3} 王五,多元回归分析教程,http://example.com/regression,访问时间:2023-09-15。
\end{thebibliography}根据张三的研究\cite{ref1},该模型在处理类似问题时具有显著优势。
多元回归分析是解决此类问题的有效方法\cite{ref2}\cite{ref3}。@book{zhang2020,
author = {张三},
title = {数学建模方法},
publisher = {高等教育出版社},
year = {2020},
address = {北京}
}
@article{li2019,
author = {李四},
title = {最优化理论在数学建模中的应用},
journal = {数学建模与应用},
volume = {14},
number = {3},
pages = {35-42},
year = {2019}
}
@misc{wang2023,
author = {王五},
title = {多元回归分析教程},
howpublished = {http://example.com/regression},
note = {访问时间:2023-09-15}
}\bibliographystyle{plain} % 使用 plain 样式
\bibliography{references} % 引用 references.bib 文件根据张三的研究\cite{zhang2020},该模型具有显著优势。\usepackage[square,numbers]{natbib} % 方括号引用,数字编号\citet{zhang2020} % 文本引用:张三 [1] 提出...
\citep{zhang2020} % 括号引用:...有效方法 [1]
\citep[第10页]{zhang2020} % 带页码引用:...有效方法 [1, 第10页]\usepackage{listings,ctex,xcolor} % 代码展示相关\lstset{
basicstyle = \sffamily, % 基本代码风格,建议使用等宽字体
keywordstyle = \bfseries, % 关键字风格,粗体
commentstyle = \rmfamily\itshape, % 注释风格,斜体
stringstyle = \ttfamily, % 字符串风格,等宽字体
flexiblecolumns, % 灵活列,适应内容
numbers = left, % 行号显示在左侧
showspaces = false, % 不显示空格
numberstyle = \zihao{-5}\ttfamily, % 行号字体,小五号等宽字体
showstringspaces = false, % 不显示字符串中的空格
captionpos = t, % 代码标题在上方
frame = lrtb, % 显示边框(左、右、上、下)
}\lstdefinestyle{Python}{
language = Python, % 指定语言为 Python
basicstyle = \zihao{-5}\ttfamily, % 代码字体,小五号等宽字体
numberstyle = \zihao{-5}\ttfamily, % 行号字体,小五号
keywordstyle = \color{blue}, % 关键字颜色(可改为黑色以符合打印要求)
keywordstyle = [2] \color{teal}, % 次要关键字颜色(可调整)
stringstyle = \color{magenta}, % 字符串颜色(可调整)
commentstyle = \color{red}\ttfamily, % 注释颜色(可调整)
breaklines = true, % 自动换行,防止代码超出页面
columns = fixed, % 固定字间距
basewidth = 0.5em, % 字符间距
}% 在正文中插入代码块
\subsection*{示例代码}
以下是一个简单的 Python 代码片段,用于数据处理:
\begin{lstlisting}[style=Python, caption={数据处理示例代码}, label={code:data_processing}]
def process_data(data):
# 对输入数据进行处理
result = []
for item in data:
result.append(item * 2)
return result
# 测试代码
data = [1, 2, 3, 4, 5]
print(process_data(data))
\end{lstlisting}% 在附录中引用外部代码文件
\section*{附录}
\subsection*{附录一:数据分析代码}
\lstinputlisting[
style = Python,
caption = {数据分析完整代码},
label = {code:analysis}
]{./src/analysis.py} % 替换为实际文件路径
前段时间博主以新生的身份参加了学校组织的数学建模竞赛,这也是博主第一次真正意义上接触 LaTeX 这个排版语言,正好趁着刚用完的记忆水一篇文章(bushi,至于使用感受嘛emm...
很好的东西,下次不用了(逃
还有一个一定要写在前面的:记得写一点就编译一下!!不要问我为什么说这个
关于 LaTeX
相比于轻量级的 Markdown ,LaTeX 是一个基于标记语言的专业排版系统,适合处理复杂的文档。两者的关系就像小汽车和赛车,有着各自的优缺点。
不同于 Word 这种所见即所得的文字处理软件,LaTeX 需要通过编译来生成文档,常见的编译产物是 PDF 格式,随后你才能够看到文档里的内容、排版等等。这也是 LaTeX 难以上手的原因。
LaTeX 基于 TeX ,也正因如此在迭代中产生了多种格式与引擎。博主使用的是 XeTeX 格式与 XeLaTeX 引擎,重要的是, XeTeX 支持 Unicode 字符集,便于中文显示。
编辑器
或许应该称之为“发行版”。
最常用的大概是 TeX Live 了,它包含了大量的宏包和引擎,足够应对绝大多数的排版需求。而对于 MacOS 用户,TeX Live 也有一个针对 Mac 的发行版 MacTeX 。
对于 Windows 用户,你可以从清华大学镜像站下载到最新的 TeX 发行版,如下图:
你会得到一个名为 texlive.iso 的镜像文件,将其挂载到虚拟 DVD 驱动器,运行其中的 install-tl-windows.bat ,按步骤安装,会有一段漫长的等待。在这段时间里,你可以去喝杯咖啡~
引擎
打开 TeXworks Editor ,左上角的下拉框便是选择引擎的地方。博主推荐选择 XeLaTeX 。
语法
你需要在开头部分通过相应的代码来引入宏包,设置字体、版式等内容,完成所有的设置后,在 \begin{document} 和 \end{document} 包裹的部分书写文档的正文。
主体结构就像这样:
需要注意的是,LaTeX 的注释是以 % 开头的。
关于详细的格式和语法说明,推荐参考 OI Wiki 的这篇文档。
版式
数学建模竞赛(国赛)的版式要求
《全国大学生数学建模竞赛论文格式规范》节选:
让我们一起逐个看看这个要求吧~
在 LaTeX 中,我们可以通过插入空白页和控制页码来实现这一要求。空白页放置标题、摘要、关键词,正文是从标题页的下一页开始的。格式如下:
LaTeX 中使用 \pagestyle{plain} 可以实现页码居中显示在页脚,并通过 \pagenumbering{arabic} 和 \setcounter{page}{1} 确保从第三页开始编号为 1。格式如下:
使用 \pagestyle{plain} 即可去除页眉。此外,编写时需手动检查论文内容,确保不包含姓名、学校等信息。格式如下:
在 LaTeX 中,通过自定义命令设置字体大小和样式,并使用 ctexset 调整标题格式。打印时注意选择黑白模式。格式如下:
摘要需控制在第三页一页内,内容简洁明了,突出论文核心观点和方法。LaTeX 中通过手动调整内容长度确保不超过一页,格式如下:
LaTeX 中使用 thebibliography 环境实现参考文献列表,并在正文中用 \cite 命令标注编号。格式如下:
分点介绍完了,那么话不多说,上模板~
模板
用法
数学公式
其实可以用一些在线公式编辑器来帮助你快速书写数学公式~ 例如:这个
基础环境
LaTeX 中的数学公式主要通过特定的环境或命令插入,根据使用场景分为行内公式和独立公式两种。
编译后,公式会嵌入在文本行内,适合简短表达式。
或带编号的公式:
这里 \label{eq:quadratic} 用来给公式添加标签,可在正文中通过 \ref{eq:quadratic} 引用公式编号。
宏包 amsmath
多行公式、矩阵、对齐等复杂排版可使用 amsmath 宏包。
多行公式与对齐方式
在涉及多步计算时,需使用多行公式并将公式对齐。amsmath 提供的 align 环境可以实现这个操作。
常用数学符号与特殊格式
其中 \mathbf{A} 表示粗体向量或矩阵符号,用 pmatrix 来显示圆括号矩阵,用 bmatrix 来显示方括号矩阵。
又如求解线性方程组
用矩阵形式表示的代码如下:
公式编号与引用
在论文中,公式往往需要编号并在正文中引用,便于快速定位。我们可以使用 \begin{equation}...\end{equation} 为公式编号,并通过 \label 和 \ref 实现引用。
编译后,\ref{eq:energy} 会自动替换为公式编号。但请注意每个公式的 \label 名称要唯一,否则引用会出错。
表格
基本表格结构
LaTeX 中的表格主要通过 tabular 环境创建,结合 table 浮动体可实现表格编号和引用。基本结构如下:
其中:
表格线条与样式
如果需要添加表格的分隔线,可以通过指定 |c|c|c| 样式和 \hline 元素完成
合并单元格
可以使用 \multicolumn 和 \multirow(需导入 multirow 宏包)来实现单元格的合并。
表格排版
对于较复杂的表格,可以使用 booktabs 宏包排版。booktabs 提供了 \toprule、\midrule 和 \bottomrule 命令,用于创建三线表。
表格引用
在正文中引用表格同样是使用 \ref 命令。
长表格
可使用 longtable 宏包处理跨页表格。
数字对齐
使用 siunitx 宏包的 S 列类型可以使数字按小数点对齐。
表格注释
表格注释一般放在脚注位置,如下:
文献
在数学建模竞赛中,合理引用文献是非常重要的一环,既能增强论文的可信度,也是学术规范的体现。LaTeX 提供了多种管理参考文献的方式,以下介绍最基本的方法。
手动管理
最简单的方式是使用 thebibliography 环境手动创建参考文献列表。
在正文中使用 \cite 命令引用:
BibTeX
对于较多文献,可以使用 BibTeX 进行管理。需要创建一个扩展名为 .bib 的文件(如 references.bib)来添加文献信息。
然后在 LaTeX 文档末尾进行引用:
在正文中引用方式与上文相同。
配合 natbib 使用
如需更灵活的引用格式,可以使用 natbib 宏包。
natbib 支持多种引用方式:
代码
宏包 listings
listings 宏包支持多种编程语言的语法高亮,而且能提供行号、边框、标题等。
基本设置
可以通过 \lstset 定义代码块的基本样式。
针对特定语言的设定
以 Python 为例,其他语言同理。
插入代码块
在 LaTeX 插入代码块有两种常见方式:直接嵌入代码内容或引用外部文件。对于较长的代码建议从外部引用。
直接插入代码块
引用外部代码文件
先将代码保存为外部文件(如 main.py),然后通过 \lstinputlisting 命令引入,这里可以使用相对路径也可以使用绝对路径引入。
效果就像这样
写在最后
LaTeX 的用法远远不止这些,再次推荐 OI Wiki 的这篇文档,博主在使用的时候也参考了上面很多内容。
最后祝各位看到这里的小伙伴们竞赛顺利~