Before:先放一下去年的国赛优秀论文:2023高教社杯全国大学生数学建模竞赛论文展示 — 中国大学生在线 (moe.gov.cn)

配置

要使用Latex,首先需要在电脑中下载 Tex live,详细步骤查看该指南:TeX Live 2024 安装教程(Windows/WSL/Linux) - Eslzzyl - 博客园 (cnblogs.com)
下载好latex环境后,你可以自由选择编辑器,Texstudio,Texworks,VScode等等都可以,大部分使用的是Tex live+TexStudio。我这里为了在数学建模过程中方便一些,决定在 Pycharm 中配置 Latex ,并手动实现 PDF 实时预览(想真正实时预览可以使用 VScode 配置 Latex ),操作如下:
下载这两个插件(TeXIFy 配置时需要重启Pycharm)

然后在项目这里右键就可以看到可以新建Latex文件

然后右键 run 发现他默认是 PdfLatex,而我们需要XeLatex,可以在这里修改

改成XeLatex再Run就好了

在项目中发现生成一个 out 文件夹,在这里找到pdf文件,在没有配置 Pdf Viewer 之前查看该文件都是使用电脑默认 pdf 查看器,配置之后就可以在Pycharm中直接打开了,右键该pdf文件点击 Split Right,就可以分屏查看

每次更改之后重新 Run 就可以实现类似实时预览的功能(只是需要手动 run 一下)

使用

模板

在这里使用 cumcmthesis 模板,附该文件:cumcmthesis.cls
该模板使用指南(建议直接看 2 ):全国大学生数学建模 LaTeX 模板使用指南 一 (latexstudio.net)
全国大学生数学建模 LaTeX 模板使用指南 二 (latexstudio.net)
以及数学建模官方给出的写作方法指南,给出了一些文章规范:数学建模竞赛论文的写作方法 (cnki.net)
还有一篇文章值得收藏,收录了很多实际建模论文中会遇到的问题与解决方法:LaTeX——问题及解决办法_cumcmthesis.cls-CSDN博客

当然也可以找到很多别的模板,在GitHub上或者Latex网站:全国大学生数学建模国赛获奖论文 - LaTeX 工作室 (latexstudio.net)
下面是 cumcmthesis 模板使用的大概样式:

\documentclass{cumcmthesis}
%\documentclass[withoutpreface,bwprint]{cumcmthesis} %去掉封面与编号页

\title{论文题目}
\tihao{A}            % 题号
\baominghao{4321}    % 报名号
\schoolname{你的大学}
\membera{成员A}
\memberb{成员B}
\memberc{成员C}
\supervisor{指导老师}
\yearinput{2017}     % 年
\monthinput{08}      % 月
\dayinput{22}        % 日

\begin{document}
    \maketitle
    \begin{abstract}
      摘要的具体内容。
      \keywords{关键词1\quad  关键词2\quad   关键词3}
    \end{abstract}
    \tableofcontents
    \section{问题重述}
    \subsection{问题的提出}
    \section{模型的假设}
    \section{符号说明}
    \begin{center}
        \begin{tabular}{cc}
            \hline
            \makebox[0.3\textwidth][c]{符号}	&  \makebox[0.4\textwidth][c]{意义} \\ \hline
            D	    & 木条宽度(cm) \\ \hline
        \end{tabular}
    \end{center}
    \section{问题分析}
    \section{总结}
    \begin{thebibliography}{9}%宽度9
      \bibitem{bib:one} ....
    \end{thebibliography}
    \begin{appendices}
        附录的内容。
    \end{appendices}
    \end{document}
\end{tcode}

详细使用

资料

下面的内容都是基础简单使用,如果有需要更复杂的功能,可以查阅更专业的文档

例如:【LaTeX应用】数学公式amsmath包(说明文档) - 知乎 (zhihu.com)(原文档是纯英文的,也放在这里:amsldoc.pdf (latex-project.org)

提示框

\begin{mdframed} [%
	roundcorner=5pt,
	linecolor=gray!50,
	outerlinewidth=0.5pt,
	middlelinewidth=0.3pt, backgroundcolor=gray!2,
innertopmargin=\topskip, frametitle={题目},
frametitlefont= \bfseries,frametitlerule=true,frametitlealignment =\raggedright\noindent,
frametitlerulewidth=.5pt, frametitlebackgroundcolor=gray!2,]
balabala
\begin{enumerate}
    \item balabala
    \item balabala
    \item balabala
    \end{enumerate}
\end{mdframed}

有/无序列表

无序列表是这样的:
\begin{itemize}
    \item one
    \item two
    \item ...
\end{itemize}

有序列表是这样子的:
\begin{enumerate}
    \item one
    \item two
    \item ...
\end{enumerate}

代码块

代码块的使用:
\begin{tcode}
    balabala。。。
\end{tcode}

图片

\begin{figure}[!h]
    \centering
    \includegraphics[width=.6\textwidth]{picture}
    \caption{电路图}
    \label{fig:circuit-diagram}
\end{figure}

并排图片

\begin{figure}
    \centering
    \begin{minipage}[c]{0.3\textwidth}
        \centering
        \includegraphics[width=0.95\textwidth]{picture}
        \subcaption{流程图}
        \label{fig:sample-figure-a}
    \end{minipage}
    \begin{minipage}[c]{0.3\textwidth}
        \centering
        \includegraphics[width=0.95\textwidth]{picture}
        \subcaption{流程图}
        \label{fig:sample-figure-b}
    \end{minipage}
    \begin{minipage}[c]{0.3\textwidth}
        \centering
        \includegraphics[width=0.95\textwidth]{picture}
        \subcaption{流程图}
        \label{fig:sample-figure-c}
    \end{minipage}
    \caption{多图并排示例}
    \label{fig:sample-figure}
\end{figure}

不同高度图片并排

\begin{figure}
    \centering
    \begin{minipage}[c]{0.48\textwidth}
        \centering
        \includegraphics[height=0.2\textheight]{picture}
        \subcaption{一只猫}
    \end{minipage}
    \begin{minipage}[c]{0.48\textwidth}
        \centering
        \includegraphics[height=0.2\textheight]{picture}
        \subcaption{电路图}
    \end{minipage}
    \caption{多图并排示例}
\end{figure}

普通三线表格

\begin{table}[!htbp]
    \caption[标签名]{中文标题}
    \begin{tabular}{cc...c}
        \toprule[1.5pt]
        表头第1个格   & 表头第2个格   & ... & 表头第n个格  \\
        \midrule[1pt]
        表中数据(1,1) & 表中数据(1,2) & ... & 表中数据(1,n)\\
        表中数据(2,1) & 表中数据(2,2) & ... & 表中数据(2,n)\\
        ...................................................\\
        表中数据(m,1) & 表中数据(m,2) & ... & 表中数据(m,n)\\
        \bottomrule[1.5pt]
    \end{tabular}
\end{table}

公式

首先是行内公式 $ \theta $ 是角度。行内公式使用 \verb|$  $| 包裹
行间公式不需要编号的可以使用 \verb|\[  \]| 包裹,例如
\[
E=mc^2
\]
如果希望某个公式带编号,并且在后文中引用可以参考下面的写法:
\begin{equation}
E=mc^2
\label{eq:energy}
\end{equation}
式\cref{eq:energy}是质能方程
多行公式有时候希望能够在特定的位置对齐,以下是其中一种处理方法。
\begin{align}
P & = UI \\
& = I^2R
\end{align}
\verb|&| 是对齐的位置, \verb|&| 可以有多个,但是每行的个数要相同。

矩阵

\[
\mathbf{X} = \left(
    \begin{array}{cccc}
    x_{11} & x_{12} & \ldots & x_{1n}\\
    x_{21} & x_{22} & \ldots & x_{2n}\\
    \vdots & \vdots & \ddots & \vdots\\
    x_{n1} & x_{n2} & \ldots & x_{nn}\\
    \end{array} \right)
\]

分段函数这些可以用 \verb|case| 环境,但是它要放在数学环境里面。
\[
f(x) =
    \begin{cases}
        0 &  x \text{为无理数} ,\\
        1 &  x \text{为有理数} .
    \end{cases}
\]
在数学环境里面,字体用的是数学字体,一般与正文字体不同。假如要公式里面有个别文字,则需要把这部分放在 \verb|text| 环境里面,即 \verb|\text{文本环境}| 。

公式中个别需要加粗的字母可以用 \verb|$\bm{math symbol}$| 。如 $ \alpha a\bm{\alpha a} $ 。

定义环境

\begin{theorem}
    这是一个定理。
    \label{thm:example}
\end{theorem}
由\cref{thm:example}我们知道了定理环境的使用。

\begin{lemma}
    这是一个引理。
    \label{lem:example}
\end{lemma}
由\cref{lem:example}我们知道了引理环境的使用。

\begin{corollary}
    这是一个推论。
    \label{cor:example}
\end{corollary}
由\cref{cor:example}我们知道了推论环境的使用。

\begin{assumption}
    这是一个假设。
    \label{asu:example}
\end{assumption}
由\cref{asu:example}我们知道了假设环境的使用。

\begin{conjecture}
    这是一个猜想。
    \label{con:example}
\end{conjecture}
由\cref{con:example}我们知道了猜想环境的使用。

\begin{axiom}
    这是一个公理。
    \label{axi:example}
\end{axiom}
由\cref{axi:example}我们知道了公理环境的使用。

\begin{principle}
    这是一个定律。
    \label{pri:example}
\end{principle}
由\cref{pri:example}我们知道了定律环境的使用。

\begin{problem}
    这是一个问题。
    \label{pro:example}
\end{problem}
由\cref{pro:example}我们知道了问题环境的使用。

\begin{example}
    这是一个例子。
    \label{exa:example}
\end{example}
由\cref{exa:example}我们知道了例子环境的使用。

\begin{proof}
    这是一个证明。
    \label{prf:example}
\end{proof}
由\cref{prf:example}我们知道了证明环境的使用。

\begin{solution}
    这是一个解。
    \label{sol:example}
\end{solution}
由\cref{sol:example}我们知道了解环境的使用。

脚注

利用 \verb|\footnote{具体内容}| 可以生成脚注\footnote{脚注可以补充说明一些东西}。

参考文献

参考文献对于一篇正式的论文来说是必不可少的,在建模中重要的参考文献当然应该列出。\LaTeX{}在这方面的功能也是十分强大的,下面进介绍一个比较简单的参考文献制作方法。有兴趣的可以学习 \verb|bibtex| 或 \verb|biblatex| 的使用。

\LaTeX{}的入门书籍可以看《\LaTeX{}入门》\cite{liuhaiyang2013latex}。这是一个简单的引用,用 \verb|\cite{bibkey}| 来完成。要引用成功,当然要维护好 bibitem 了。下面是个简单的例子。



%参考文献
\begin{thebibliography}{9}%宽度9
    \bibitem[1]{liuhaiyang2013latex}
    刘海洋.
    \newblock \LaTeX {}入门\allowbreak[J].
    \newblock 电子工业出版社, 北京, 2013.
    \bibitem[2]{mathematical-modeling}
    全国大学生数学建模竞赛论文格式规范 (2020 年 8 月 25 日修改).
    \bibitem{3} \url{https://www.latexstudio.net}
\end{thebibliography}

附录

\begin{appendices}

\section{模板所用的宏包}
\begin{table}[htbp]
    \centering
    \caption{宏包罗列}
    \begin{tabular}{ccccc}
        \toprule
        \multicolumn{5}{c}{模板中已经加载的宏包} \\
        \midrule
        amsbsy & amsfonts & {amsgen} & {amsmath} & {amsopn} \\
        amssymb & amstext & {appendix} & {array} & {atbegshi} \\
        atveryend & auxhook & {bigdelim} & {bigintcalc} & {bigstrut} \\
        bitset & bm    & {booktabs} & {calc} & {caption} \\
        caption3 & CJKfntef & {cprotect} & {ctex} & {ctexhook} \\
        ctexpatch & enumitem & {etexcmds} & {etoolbox} & {everysel} \\
        expl3 & fix-cm & {fontenc} & {fontspec} & {fontspec-xetex} \\
        geometry & gettitlestring & {graphics} & {graphicx} & {hobsub} \\
        hobsub-generic & hobsub-hyperref & {hopatch} & {hxetex} & {hycolor} \\
        hyperref & ifluatex & {ifpdf} & {ifthen} & {ifvtex} \\
        ifxetex & indentfirst & {infwarerr} & {intcalc} & {keyval} \\
        kvdefinekeys & kvoptions & {kvsetkeys} & {l3keys2e} & {letltxmacro} \\
        listings & longtable & {lstmisc} & {ltcaption} & {ltxcmds} \\
        multirow & nameref & {pdfescape} & {pdftexcmds} & {refcount} \\
        rerunfilecheck & stringenc & {suffix} & {titletoc} & {tocloft} \\
        trig  & ulem  & {uniquecounter} & {url} & {xcolor} \\
        xcolor-patch & xeCJK & {xeCJKfntef} & {xeCJK-listings} & {xparse} \\
        xtemplate & zhnumber &       &       &  \\
        \bottomrule
    \end{tabular}%
    \label{tab:addlabel}%
\end{table}%

\section{排队算法--matlab 源程序}

\begin{lstlisting}[language=matlab]
kk=2;[mdd,ndd]=size(dd);
while ~isempty(V)
[tmpd,j]=min(W(i,V));tmpj=V(j);
for k=2:ndd
[tmp1,jj]=min(dd(1,k)+W(dd(2,k),V));
tmp2=V(jj);tt(k-1,:)=[tmp1,tmp2,jj];
end
tmp=[tmpd,tmpj,j;tt];[tmp3,tmp4]=min(tmp(:,1));
if tmp3==tmpd, ss(1:2,kk)=[i;tmp(tmp4,2)];
else,tmp5=find(ss(:,tmp4)~=0);tmp6=length(tmp5);
if dd(2,tmp4)==ss(tmp6,tmp4)
ss(1:tmp6+1,kk)=[ss(tmp5,tmp4);tmp(tmp4,2)];
else, ss(1:3,kk)=[i;dd(2,tmp4);tmp(tmp4,2)];
end;end
dd=[dd,[tmp3;tmp(tmp4,2)]];V(tmp(tmp4,3))=[];
[mdd,ndd]=size(dd);kk=kk+1;
end; S=ss; D=dd(1,:);
 \end{lstlisting}
\end{appendices}