├── #delete-temp-files.bat ├── .gitignore ├── README.md ├── example-color.pdf ├── example-color.tex ├── example.pdf ├── example.tex ├── example_1.png ├── example_2.png ├── figures ├── fig.png ├── gongzhonghao.png ├── gongzhonghao1.png ├── image1.pdf ├── image2.pdf ├── image3.pdf ├── image4.pdf ├── logo.pdf ├── logo2(1).pdf ├── logo2.pdf └── title.pdf ├── gmcm.bst ├── gmcmthesis.cls ├── makefiles.bat ├── makefiles.sh ├── reference.bib ├── 附件3:“华为杯”第二十一届中国研究生数学建模竞赛论文模板.doc └── 附件3:“华为杯”第二十一届中国研究生数学建模竞赛论文模板.pdf /#delete-temp-files.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | del /q *.aux *.bbl *.blg *.log *.out *.toc *.bcf *.xml *.synctex *.nlo *.nls *.bak *.ind *.idx *.ilg *.lof *.lot *.ent-x *.tmp *.ltx *.los *.lol *.loc *.listing *.gz *.userbak *.nav *.snm *.vrb *.synctex(busy) 3 | 4 | 5 | del /q *.nav *.snm *.vrb *.fls *.xdv *.fdb_latexmk -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | GMCMthesis.zip 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | ## 全国研究生数学建模竞赛 LaTeX 论文模板 3 | 4 | GMCMthesis 是为全国研究生数学建模竞赛编写的 LaTeX 模板, 旨在让大家专注于 5 | 论文的内容写作, 而不用花费过多精力在格式的定制和调整上. 本手册是相应的参考, 其 6 | 中提供了一些环境和命令可以让模板的使用更为方便. 同时需要注意, 使用者需要有一 7 | 定的 LaTeX 的使用经验, 至少要会使用 ctex 宏包的一些功能, 比如调节字距或修改字体 8 | 大小等等. 9 | 10 | 2019 年大学生建模模板的免费视频教程发布了,两个模板比较一脉相承,有兴趣用户可以观瞻观瞻: 11 | 12 | 第一部分: 13 | [https://www.bilibili.com/video/av64191560](https://www.bilibili.com/video/av64191560) 14 | 15 | 第二部分: 16 | [https://www.bilibili.com/video/av64221508](https://www.bilibili.com/video/av64221508) 17 | 18 | 另外, 欢迎大家购买我们的视频教程, 参看[这里](https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-3473795048.2.ZlPoPL&id=43823508044). 19 | 20 | 视频教程试看的话,请点击:[试看地址](http://v.xue.taobao.com/learn.htm?spm=2013.1.0.0.kx3j3X&courseId=26740). 21 | 22 | ![](https://github.com/latexstudio/GMCMthesis/blob/master/example_1.png) 23 | 24 | ![](https://github.com/latexstudio/GMCMthesis/blob/master/example_2.png) 25 | 26 | ## 更新记录 27 | 28 | 2024 年 9 月 17 日更新: 29 | 30 | 1,更新封面格式; 31 | 32 | 2,合并 https://github.com/andy123t/GMCMthesis 更新. 修复首页页码; 33 | 34 | 3,调整摘要、标题、关键词和浮动体标题等字体。 35 | 36 | 2023 年 9 月 19 日 更新: 37 | 38 | 1,更新封面格式. 39 | 40 | 41 | 2020 年 9 月 9 日 更新: 42 | 43 | 1,更新封面格式; 44 | 45 | 2,更新了内容的部分小细节和字体选择异常。 46 | 47 | 48 | 2019 年 9 月 14 日更新: 49 | 50 | 1,修改封面格式,由于阴影效果进行截图插图。 51 | 52 | 2,调整了第一页第二页的版式。 53 | 54 | 3,重新设置了全文边距,与 word 模板保持一致。 55 | 56 | 57 | 58 | 2018年9月11日更新: 59 | 60 | 1,修改封面格式,由于阴影效果进行截图插图。 61 | 62 | 2,修改了参考文献的bibtex支持。 63 | 64 | 3,其他冗余代码的删除和清理。 65 | 66 | 2017年9月13日更新说明: 67 | 68 | 1. 去掉正文的页眉信息。 69 | 70 | 2017年9月12日更新说明: 71 | 72 | 1. 更新了封面的logo和页眉的版式; 73 | 74 | 1. 请大家使用TeXLive 2017 进行编译,下载地址:http://www.latexstudio.net 首页焦点图; 75 | 76 | 2. 遇到问题可以到91940767群进行交流。 77 | 78 | 79 | -------------------------------------------------------------------------------- /example-color.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/example-color.pdf -------------------------------------------------------------------------------- /example-color.tex: -------------------------------------------------------------------------------- 1 | % !Mode:: "TeX:UTF-8" 2 | %!TEX program = xelatex 3 | 4 | \documentclass[bwprint,fontset=windows]{gmcmthesis} 5 | 6 | \hypersetup{hidelinks} 7 | \usepackage[framemethod=TikZ]{mdframed} 8 | 9 | %\usepackage{fontspec} % for Consolas & Courier New 10 | %\lstset{basicstyle=\small\fontspec{Consolas}} 11 | %\lstset{basicstyle=\small\fontspec{Courier New}} 12 | %\setmonofont{Consolas} 13 | %\setcounter{tocdepth}{3} % 调整目录深度 14 | 15 | \usepackage{subfig} 16 | \usepackage{colortbl} 17 | \definecolor{color1}{rgb}{0.78,0.88,0.99} 18 | \definecolor{color2}{rgb}{0.36,0.62,0.84} 19 | %\definecolor{color3}{rgb}{0.8235,0.8706,0.9373} 20 | \definecolor{color3}{rgb}{0.88,0.92,0.96} 21 | \definecolor{color4}{rgb}{0.96,0.97,0.98}%{0.9176,0.9373,0.9686} 22 | 23 | % 算法 24 | \usepackage[noend]{algpseudocode} 25 | \usepackage{algorithmicx,algorithm} 26 | \floatname{algorithm}{算法} 27 | \renewcommand{\algorithmicrequire}{\textbf{输入:}} 28 | \renewcommand{\algorithmicensure}{\textbf{输出:}} 29 | 30 | %\numberwithin{equation}{section} 31 | %\numberwithin{figure}{section} 32 | %\numberwithin{table}{section} 33 | 34 | 35 | \newcommand{\red}[1]{\textcolor{red}{#1}} 36 | \newcommand{\blue}[1]{\textcolor{blue}{#1}} 37 | 38 | 39 | %===================== 建模论文题目 ====================== 40 | 41 | \title{全国研究生数学建模竞赛论文标题} 42 | \baominghao{\hspace{6em} 20230900001} %参赛队号 43 | \schoolname{\hspace{5.8em} 学校名称填写} %学校名称 44 | \membera{\hspace{6em} 成员A} %队员A 45 | \memberb{\hspace{6em} 成员B} %队员B 46 | \memberc{\hspace{6em} 成员C} %队员C 47 | 48 | %======================================================= 49 | 50 | 51 | \begin{document} 52 | 53 | %生成标题 54 | \maketitle 55 | 56 | %填写摘要 57 | \begin{abstract} 58 | 本模板是为全国研究生数学建模竞赛编写的 \LaTeX{} 模板, 旨在让大家专注于 59 | 论文的内容写作, 而不用花费过多精力在格式的定制和调整上. 本手册是相应的参考, 其 60 | 中提供了一些环境和命令可以让模板的使用更为方便. 同时需要注意, 使用者需要有一 61 | 定的 \LaTeX{} 的使用经验, 至少要会使用 ctex 宏包的一些功能, 比如调节字距或修改字体 62 | 大小等等. 63 | 64 | \begin{mdframed} [% 65 | roundcorner=5pt, 66 | linecolor=gray!50, 67 | outerlinewidth=0.5pt, 68 | middlelinewidth=0.3pt, backgroundcolor=gray!2, 69 | innertopmargin=\topskip, frametitle={2024年格式变化说明}, 70 | frametitlefont= \bfseries,frametitlerule=true,frametitlealignment =\raggedright\noindent, 71 | frametitlerulewidth=.5pt, frametitlebackgroundcolor=gray!2,] 72 | 今年的格式变化如下: 73 | \begin{enumerate} 74 | \item 论文第一页为标识替换; 75 | \item 合并 \url 76 | {https://github.com/andy123t/GMCMthesis} 更新. 修复首页页码; 77 | \item 调整摘要、标题、关键词和浮动体标题等字体。 78 | \end{enumerate} 79 | 80 | \end{mdframed} 81 | 82 | 这是研究生报名官方网站,点击\href{https://cpipc.chinadegrees.cn}{\fbox{这里}}进入。 83 | 84 | 欢迎大家到QQ群里沟通交流:91940767/478023327/640633524。我们也开通了问答区交流 \LaTeX{}技术:\url{https://ask.latexstudio.net},欢迎大家前来交流。 85 | 86 | 87 | \keywords{折叠桌\quad 曲线拟合\quad 非线性优化模型\quad 受力分析} 88 | 89 | \end{abstract} 90 | 91 | \pagestyle{plain} 92 | 93 | %目录 不推荐加 94 | \maketoc 95 | 96 | \clearpage 97 | 98 | \section{在线使用} 99 | 100 | 如果你想要在 Overleaf 使用, 那么需要设置下字体 101 | \begin{lstlisting}[language={[latex]TeX}] 102 | \documentclass[bwprint,fontset=fandol]{gmcmthesis} 103 | \end{lstlisting} 104 | 105 | 由于线上平台没有隶书,只能用楷体替代了, 大家根据自己的情况来使用。 106 | 107 | 108 | 109 | \uwave{欢迎关注我们的微信公众号}: 110 | 111 | \centerline{\includegraphics[width=5cm]{gongzhonghao1}} 112 | 113 | \section{问题重述} 114 | 115 | 116 | 在保持原题主体思想不变下,可以自己组织词句对问题进行描述,主要数据可以直接复制,对所提出的问题部分基本原样复制。篇幅建议不要超过一页。 117 | \section{问题分析} 118 | 主要是表达对题目的理解,特别是对附件的数据进行必要分析、描述(一般都有数据附件),这是需要提到分析数据的方法、理由。如果有多个小问题,可以对每个小问题进行分别分析。 119 | (假设有2个问题) 120 | 121 | 122 | 123 | \subsection{问题1的分析} 124 | 125 | 对问题1研究的意义的分析。 126 | 127 | 问题1属于。。。。。数学问题,对于解决此类问题一般数学方法的分析。 128 | 129 | 对附件中所给数据特点的分析。 130 | 131 | 对问题1所要求的结果进行分析。 132 | 133 | 由于以上原因,我们可以将首先建立一个。。。。。。的数学模型I,然后将建立一个。。。。。。。的模型II,。。。。。。。。。。对结果分别进行预测,并将结果进行比较. 134 | 135 | 136 | \subsection{问题2的分析} 137 | 138 | 139 | 对问题2研究的意义的分析。 140 | 141 | 142 | 143 | \section{模型假设} 144 | 145 | 1. 假设题目所给的数据真实可靠; 146 | 147 | 2. 148 | 149 | 3. 150 | 151 | 152 | 153 | 注意:假设对整篇文章具有指导性,有时决定问题的难易。一定要注意假设的某种角度上的合理性,不能乱编,完全偏离事实或与题目要求相抵触。注意罗列要工整。 154 | 155 | \section{定义与符号说明} 156 | (对文章中所用到的主要数学符号进行解释) 157 | 158 | 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 159 | 160 | 尽可能借鉴参考书上通常采用的符号,不宜自己乱定义符号,对于改进的一些模型,符号可以适当自 161 | 己修正(下标、上标、参数等可以变,主符号最好与经典模型符号靠近)。对文章自 162 | 己创新的名词需要特别解释。其他符号要进行说明,注意罗列要工整。 163 | 注意格式统一,不要出现零乱或前后不一致现象,关键是容易看懂。 164 | 165 | 166 | \section{符号说明} 167 | 168 | 169 | \begin{table}[htp!] 170 | \centering 171 | \renewcommand\arraystretch{1.2} %定义表格高度 172 | \newcolumntype{L}{>{\quad}X} 173 | \newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}} 174 | \newcolumntype{C}{>{\centering \arraybackslash}X} 175 | \newcolumntype{R}{>{\raggedright \arraybackslash}X} 176 | \begin{tabularx}{0.9\textwidth}{!{\color{color2}\vrule}P{2cm}!{\color{color2}\vrule}L!{\color{color2}\vrule}} 177 | \arrayrulecolor{color2}\hline %\toprule 178 | \rowcolor{color2} 179 | \textbf{符号} & \quad \textbf{意义} \\ 180 | \arrayrulecolor{color2}\hline %\midrule 181 | %\rowcolor[gray]{0.90} 182 | \rowcolor{color3} 183 | $ a $ & 符号1的意义 \\ 184 | \arrayrulecolor{color2}\hline 185 | \rowcolor{color4} 186 | $ b $ & 符号2的意义 \\ 187 | \arrayrulecolor{color2}\hline 188 | \rowcolor{color3} 189 | $ c $ & 符号3的意义符号3的意义 \\ 190 | \arrayrulecolor{color2}\hline 191 | \rowcolor{color4} 192 | $ d $ & 符号4的意义 \\ 193 | \arrayrulecolor{color2}\hline 194 | \rowcolor{color3} 195 | $ e $ & 符号5的意义 \\ 196 | \arrayrulecolor{color2}\hline 197 | \rowcolor{color4} 198 | $ f $ & 符号6的意义符号6的意义 \\ 199 | \arrayrulecolor{color2}\hline 200 | \rowcolor{color3} 201 | $ g $ & 符号7的意义 \\ 202 | \arrayrulecolor{color2}\hline 203 | \rowcolor{color4} 204 | $ h $ & 符号8的意义 \\ 205 | \arrayrulecolor{color2}\hline 206 | \rowcolor{color3} 207 | $ i $ & 符号9的意义符号9的意义 \\ 208 | \arrayrulecolor{color2}\hline 209 | \rowcolor{color4} 210 | $ k $ & 符号10的意义 \\ 211 | \arrayrulecolor{color2}\hline 212 | \end{tabularx} 213 | \end{table} 214 | 215 | %\begin{tabularx}{\textwidth-18pt}{XXX} 216 | %\hline 217 | %Input & Output& Action return \\ 218 | %\hline 219 | %DNF & simulation & jsp\\ 220 | %\hline 221 | %\end{tabularx} 222 | 223 | 224 | \section{模型的建立} 225 | 226 | \subsection{问题一分析} 227 | 题目要求建立模型描述折叠桌的动态变化图,由于在折叠时用力大小的不同,我们不能描述在某一时刻折叠桌的具体形态,但我们可以用每根木条的角度变化来描述折叠桌的动态变化。首先,我们知道折叠桌前后左右对称,我们可以运用几何知识求出四分之一木条的角度变化。最后,根据初始时刻和最终形态两种状态求出桌腿木条开槽的长度 228 | 229 | 230 | \subsection{算法示例} 231 | 232 | 数学建模求解算法示例: 233 | \begin{center} 234 | \begin{minipage}{0.8\textwidth} 235 | \begin{algorithm}[H]%[!htp] 236 | \caption{算法的名字} %算法的名字 237 | {\bf 输入:} %算法的输入, \hspace*{0.02in}用来控制位置,同时利用 \\ 进行换行 238 | input parameters A, B, C\\ 239 | {\bf 输出:} %算法的结果输出 240 | output result 241 | \begin{algorithmic}[1] 242 | \State some description 算法介绍 % \State 后写一般语句 243 | \For{condition} % For 语句,需要和EndFor对应 244 |   \State ... 245 |   \If{condition} % If 语句,需要和EndIf对应 246 |     \State ... 247 |   \Else 248 |     \State ... 249 |   \EndIf 250 | \EndFor 251 | \While{condition} % While语句,需要和EndWhile对应 252 |   \State ... 253 | \EndWhile 254 | \State \Return result 255 | \end{algorithmic} 256 | \end{algorithm} 257 | \end{minipage} 258 | \end{center} 259 | \vspace{2ex} 260 | 261 | \section{表格和图形} 262 | 263 | \subsection{表格} 264 | 265 | %\begin{table}[!htbp] 266 | % \caption{标准三线表格}\label{tab:001} \centering 267 | % \begin{tabular}{ccccc} 268 | % \toprule%[1.5pt] 269 | % $D$(in) & $P_u$(lbs) & $u_u$(in) & $\beta$ & $G_f$(psi.in)\\ 270 | % \midrule%[1pt] 271 | % 5 & 269.8 & 0.000674 & 1.79 & 0.04089\\ 272 | % 10 & 421.0 & 0.001035 & 3.59 & 0.04089\\ 273 | % 20 & 640.2 & 0.001565 & 7.18 & 0.04089\\ 274 | % \bottomrule%[1.5pt] 275 | % \end{tabular} 276 | %\end{table} 277 | 278 | 三线表 279 | \begin{table}[!htp] 280 | \newcolumntype{L}{X} 281 | \newcolumntype{C}{>{\centering \arraybackslash}X} 282 | \newcolumntype{R}{>{\raggedright \arraybackslash}X} 283 | \centering 284 | \caption{某校学生升高体重样本} 285 | \label{tab2:heightweight} 286 | \begin{tabularx}{0.9\textwidth}{CCCC} 287 | \toprule 288 | 序号&年龄&身高&体重\\ 289 | \midrule 290 | 1&14&156&42\\ 291 | 2&16&158&45\\ 292 | 3&14&162&48\\ 293 | 4&15&163&50\\ 294 | \midrule 295 | %\cmidrule{2-4} 296 | 平均&15&159.75&46.25\\ 297 | \bottomrule 298 | \end{tabularx} 299 | \end{table} 300 | 301 | 模型建立的思路想好之后,采取了怎样的算法对模型进行了实现。前面建了几个模型,这里就有几个模型的求解。(如利用Matlab编程求解、用spss软件求解,利用拉普拉斯变换求解,用蒙特卡罗模拟求解等。特别是求解有难度的模型要介绍求解方法。)获得什么样的结果,可围绕题目要求综合给出关键结论,建议不要将问题所需结果全部给出,否则摘要显得太长。 302 | 303 | 304 | 模型建立的思路想好之后,采取了怎样的算法对模型进行了实现。前面建了几个模型,这里就有几个模型的求解。(如利用Matlab编程求解、用spss软件求解,利用拉普拉斯变换求解,用蒙特卡罗模拟求解等。特别是求解有难度的模型要介绍求解方法。)获得什么样的结果,可围绕题目要求综合给出关键结论,建议不要将问题所需结果全部给出,否则摘要显得太长。 305 | 306 | 307 | 308 | 模型建立的思路想好之后,采取了怎样的算法对模型进行了实现。前面建了几个模型,这里就有几个模型的求解。(如利用Matlab编程求解、用spss软件求解,利用拉普拉斯变换求解,用蒙特卡罗模拟求解等。特别是求解有难度的模型要介绍求解方法。)获得什么样的结果,可围绕题目要求综合给出关键结论,建议不要将问题所需结果全部给出,否则摘要显得太长。 309 | 310 | 某行业产量与生产费用的数据 311 | \begin{table}[htp!] 312 | \centering 313 | \caption{某行业产量与生产费用的数据}%\label{} 314 | \newcolumntype{Y}{>{\centering\arraybackslash}X} 315 | \newcolumntype{Z}{!{\vline}@{\color{white}\vrule width \doublerulesep}!{\vrule}}%自定义列格式(双线) 316 | \begin{tabularx}{0.94\textwidth}{c|c|YZc|c|Y}\Xhline{0.9pt} 317 | 企业编号& 产量(台)&生产费用(万元)&企业编号&产量(台)&生产费用(万元)\\\Xcline{1-3}{0.6pt}\Xcline{4-6}{0.6pt} 318 | 1& 40& 130&7& 84& 165\\ 319 | 2& 42& 150&8& 100& 170\\ 320 | 3& 50& 155&9& 116& 167\\ 321 | 4& 55& 140&10& 125& 180\\ 322 | 5& 65& 150&11& 130& 175\\ 323 | 6& 78& 154&12& 140& 185\\\Xhline{0.72pt} 324 | \end{tabularx} 325 | \end{table} 326 | 327 | 研究生数学建模2019年F题结果示例 328 | \begin{table}[htp!] 329 | \centering 330 | \caption{问题1结果1 (左) 与 问题2结果 (右)} 331 | \begin{minipage}[h]{0.48\linewidth} 332 | \renewcommand\arraystretch{1.2} %定义表格高度 333 | \newcolumntype{Y}{>{\centering\arraybackslash}X} 334 | \begin{tabularx}{0.9\textwidth}{|Y|Y|Y|} 335 | \hline 336 | \rowcolor{color1} 337 | 数据集1 & 数据集1 & 数据集2 \\ 338 | \hline 339 | \rowcolor[gray]{0.95} 340 | A问题1 & A问题1 & A问题1 \\ 341 | \hline 342 | \rowcolor[gray]{0.9} 343 | 503 & 503 & 163 \\ 344 | \rowcolor[gray]{0.95} 345 | 294 & 200 & 114 \\ 346 | \rowcolor[gray]{0.9} 347 | 91 & 80 & 8 \\ 348 | \rowcolor[gray]{0.95} 349 | 607 & 237 & 309 \\ 350 | \rowcolor[gray]{0.9} 351 | 540 & 170 & 305 \\ 352 | \rowcolor[gray]{0.95} 353 | 250 & 278 & 123 \\ 354 | \rowcolor[gray]{0.9} 355 | 340 & 369 & 45 \\ 356 | \rowcolor[gray]{0.95} 357 | 277 & 214 & 160 \\ 358 | \rowcolor[gray]{0.9} 359 | B & 397 & 92 \\ 360 | \rowcolor[gray]{0.95} 361 | & B & 93 \\ 362 | \rowcolor[gray]{0.9} 363 | & & 61 \\ 364 | \rowcolor[gray]{0.95} 365 | & & 292 \\ 366 | \rowcolor[gray]{0.9} 367 | & & B \\ 368 | \rowcolor[gray]{0.95} 369 | 104861 & 103518 & 109342 \\ 370 | \hline 371 | \end{tabularx} 372 | \end{minipage} 373 | \begin{minipage}[h]{0.48\linewidth} 374 | \renewcommand\arraystretch{1.2} %定义表格高度 375 | \newcolumntype{Y}{>{\centering\arraybackslash}X} 376 | \begin{tabularx}{0.9\textwidth}{|Y|Y|Y|} 377 | \hline 378 | \rowcolor{color1} 379 | 数据集1 & 数据集1 & 数据集2 \\ 380 | \hline 381 | \rowcolor[gray]{0.95} 382 | A问题2 & A问题2 & A问题2 \\ 383 | \hline 384 | \rowcolor[gray]{0.9} 385 | 503 & 503 & 163 \\ 386 | \rowcolor[gray]{0.95} 387 | 294 & 200 & 114 \\ 388 | \rowcolor[gray]{0.9} 389 | 91 & 80 & 8 \\ 390 | \rowcolor[gray]{0.95} 391 | 607 & 237 & 309 \\ 392 | \rowcolor[gray]{0.9} 393 | 540 & 170 & 305 \\ 394 | \rowcolor[gray]{0.95} 395 | 250 & 278 & 123 \\ 396 | \rowcolor[gray]{0.9} 397 | 340 & 369 & 45 \\ 398 | \rowcolor[gray]{0.95} 399 | 277 & 214 & 160 \\ 400 | \rowcolor[gray]{0.9} 401 | B & 397 & 92 \\ 402 | \rowcolor[gray]{0.95} 403 | & B & 93 \\ 404 | \rowcolor[gray]{0.9} 405 | & & 61 \\ 406 | \rowcolor[gray]{0.95} 407 | & & 292 \\ 408 | \rowcolor[gray]{0.9} 409 | & & B \\ 410 | \rowcolor[gray]{0.95} 411 | 104917 & 103563 &109427 \\ 412 | \hline 413 | \end{tabularx} 414 | \end{minipage} 415 | \end{table} 416 | 417 | \clearpage 418 | \begin{table}[htp!] 419 | %\small 420 | \centering 421 | \renewcommand\arraystretch{1.2} %定义表格高度 422 | \newcolumntype{Y}{>{\centering\arraybackslash}X} 423 | \caption{问题3结果} 424 | \begin{tabularx}{0.9\textwidth}{|Y|Y|Y|Y|Y|Y|} 425 | \hline %定义表格宽度 426 | \rowcolor{color1} 427 | 数据集1 & 数据集1 & \multicolumn{2}{c|}{数据集2 (无问题点)} & \multicolumn{2}{c|}{数据集2 (有问题点)} \\ 428 | \hline 429 | \rowcolor[gray]{0.95} 430 | A问题3 & A问题3 & \multicolumn{2}{c|}{A问题3} & \multicolumn{2}{c|}{A问题3} \\ 431 | \hline 432 | \rowcolor[gray]{0.9} 433 | 503 & 503 & 169 & 73 & 169 & 73 \\ 434 | \rowcolor[gray]{0.95} 435 | 69 & 69 & 322 & 249 & 322 & 249 \\ 436 | \rowcolor[gray]{0.9} 437 | 506 & 506 & 270 & 274 & 270 & 274 \\ 438 | \rowcolor[gray]{0.95} 439 | 371 & 371 & 89 & 12 & 89 & 12 \\ 440 | \rowcolor[gray]{0.9} 441 | 183 & 183 & 236 & 216 & 236 & 216 \\ 442 | \rowcolor[gray]{0.95} 443 | 194 & 194 & 132 & 16 & 132 & 16 \\ 444 | \rowcolor[gray]{0.9} 445 | 450 & 450 & 53 & 282 & 53 & 282 \\ 446 | \rowcolor[gray]{0.95} 447 | 286 & 113 & 112 & 84 & 112 & 141 \\ 448 | \rowcolor[gray]{0.9} 449 | 485 & 485 & 268 & 287 & 268 & 291 \\ 450 | \rowcolor[gray]{0.95} 451 | \red{B (9D)}~~ & 248 & 250 & 99 & 250 &161 \\ 452 | \rowcolor[gray]{0.9} 453 | & \red{B (10D)} & 243 & \red{B (21D)} & 243 & \red{B (21D)} \\ 454 | \rowcolor[gray]{0.95} 455 | & & & & & \\ 456 | \rowcolor[gray]{0.9} 457 | 104861m & 103518m & & 168924m & &161650m \\ 458 | \hline 459 | \end{tabularx} 460 | \end{table} 461 | 462 | 463 | 464 | \subsection{图形} 465 | 466 | 图形并列 467 | \begin{figure}[htp!] 468 | \begin{minipage}[t]{0.48\linewidth} 469 | \centering 470 | \includegraphics[width=0.9\textwidth]{image1} 471 | \caption{fig1} 472 | \label{fig:side:a} 473 | \end{minipage}% 474 | \begin{minipage}[t]{0.48\linewidth} 475 | \centering 476 | \includegraphics[width=0.9\textwidth]{image2} % 2.2in 477 | \caption{fig2} 478 | \label{fig:side:b} 479 | \end{minipage} 480 | \end{figure} 481 | 482 | 483 | \clearpage 484 | 这是一个算法流程图 485 | \begin{figure}[htp!] 486 | \centering 487 | \includegraphics[width=.55\textwidth]{fig.png} 488 | \caption{算法流程图} 489 | \end{figure} 490 | 491 | 多图并排 492 | \begin{figure}[!htp] 493 | \centering 494 | \subfloat[Arabic numerals]{\includegraphics[width=0.4\textwidth]{image1}}\qquad 495 | \subfloat[Arabic numerals]{\includegraphics[width=0.4\textwidth]{image2}} \\ 496 | \subfloat[Arabic numerals]{\includegraphics[width=0.4\textwidth]{image3}}\qquad 497 | \subfloat[Arabic numerals]{\includegraphics[width=0.4\textwidth]{image4}} 498 | \caption{多图示例} 499 | \end{figure} 500 | 501 | 502 | \subsection{问题三分析} 503 | 504 | 505 | 题目要求制作软件的意思就是客户给定折叠桌高度、桌面边缘线的形状大小和桌脚边缘线的大致形状,将这些信息输入程序就得到客户想要的桌子。我们在求解最优设计加工参数时,自行给定桌面边缘线形状(椭圆、相交圆等),桌脚边缘线形状,折叠桌高度,应用第二问的非线性规划模型,用MATLAB软件绘制折叠桌截面图,得到自己设计的创意平板折叠桌。 506 | 507 | 508 | \section{模型评价} 509 | 510 | 这里是模型评价 511 | 512 | 513 | 514 | %参考文献 手工录入 515 | %\begin{thebibliography}{9}%宽度9 516 | % \bibitem{bib:one} .... 517 | % \bibitem{bib:two} .... 518 | %\end{thebibliography} 519 | 520 | %采用bibtex方案 521 | \cite{mittelbach_latex_2004,wright_latex3_2009,beeton_unicode_2008,vieth_experiences_2009,ls:2024} 522 | 523 | \bibliographystyle{gmcm} 524 | \bibliography{reference} 525 | 526 | 527 | \clearpage 528 | %附录 529 | \begin{appendices} 530 | %\setcounter{page}{1} %如果需要可以自行重置页码。 531 | \section{MATLAB 源程序} 532 | \renewcommand{\thesubsection}{A\thinskip.\thinskip\arabic{subsection}} 533 | \subsection{第1问程序} 534 | \vspace{-2ex} 535 | 536 | \begin{Matlab}{code.m} 537 | clear all 538 | kk=2; 539 | [mdd,ndd]=size(dd); 540 | while ~isempty(V) 541 | [tmpd,j]=min(W(i,V)); 542 | tmpj=V(j); 543 | for k=2:ndd 544 | [tmp1,jj]=min(dd(1,k)+W(dd(2,k),V)); 545 | tmp2=V(jj); 546 | tt(k-1,:)=[tmp1,tmp2,jj]; 547 | end 548 | tmp=[tmpd,tmpj,j;tt]; 549 | [tmp3,tmp4]=min(tmp(:,1)); 550 | if tmp3==tmpd, 551 | ss(1:2,kk)=[i;tmp(tmp4,2)]; 552 | else 553 | tmp5=find(ss(:,tmp4)~=0); 554 | tmp6=length(tmp5); 555 | if dd(2,tmp4)==ss(tmp6,tmp4) 556 | ss(1:tmp6+1,kk)=[ss(tmp5,tmp4);tmp(tmp4,2)]; 557 | else, ss(1:3,kk)=[i;dd(2,tmp4);tmp(tmp4,2)]; 558 | end 559 | end 560 | dd=[dd,[tmp3;tmp(tmp4,2)]]; 561 | V(tmp(tmp4,3))=[]; 562 | [mdd,ndd]=size(dd);kk=kk+1; 563 | end; 564 | S=ss; D=dd(1,:); 565 | \end{Matlab} 566 | \vspace{2ex} 567 | 568 | \clearpage 569 | \section{Python 源程序} 570 | \renewcommand{\thesubsection}{B\thinskip.\thinskip\arabic{subsection}} 571 | \subsection{第2问程序} 572 | \vspace{-2ex} 573 | \begin{Python}{mip1.py} 574 | # This example formulates and solves the following MIP model: 575 | # maximize 576 | # x + y + 2 z 577 | # subject to 578 | # x + 2 y + 3 z <= 4 579 | # x + y >= 1 580 | # x, y, z binary 581 | 582 | # import gurobipy as gp 583 | from gurobipy import * #GRB 584 | try: 585 | # Create a new model 586 | m = Model("mip1") 587 | # Create variables 588 | x = m.addVar(vtype=GRB.BINARY, name="x") 589 | y = m.addVar(vtype=GRB.BINARY, name="y") 590 | z = m.addVar(vtype=GRB.BINARY, name="z") 591 | # Set objective 592 | m.setObjective(x + y + 2 * z, GRB.MAXIMIZE) 593 | # Add constraint: x + 2 y + 3 z <= 4 594 | m.addConstr(x + 2 * y + 3 * z <= 4, "c0") 595 | # Add constraint: x + y >= 1 596 | m.addConstr(x + y >= 1, "c1") 597 | # Optimize model 598 | m.optimize() 599 | for v in m.getVars(): 600 | print('%s %g' % (v.varName, v.x)) 601 | print('Obj: %g' % m.objVal) 602 | 603 | except GurobiError as e: 604 | print('Error code ' + str(e.errno) + ': ' + str(e)) 605 | 606 | except AttributeError: 607 | print('Encountered an attribute error') 608 | \end{Python} 609 | 610 | \end{appendices} 611 | 612 | 613 | 614 | \end{document} 615 | -------------------------------------------------------------------------------- /example.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/example.pdf -------------------------------------------------------------------------------- /example.tex: -------------------------------------------------------------------------------- 1 | % !Mode:: "TeX:UTF-8" 2 | %!TEX program = xelatex 3 | 4 | \documentclass[bwprint]{gmcmthesis} 5 | %\documentclass[bwprint,fontset=fandol]{gmcmthesis} % Overleaf 等在线平台需要用这一行。 6 | \usepackage[framemethod=TikZ]{mdframed} 7 | 8 | \usepackage{subfig} 9 | \usepackage{colortbl} 10 | \definecolor{color1}{rgb}{0.78,0.88,0.99} 11 | \definecolor{color2}{rgb}{0.36,0.62,0.84} 12 | %\definecolor{color3}{rgb}{0.8235,0.8706,0.9373} 13 | \definecolor{color3}{rgb}{0.88,0.92,0.96} 14 | \definecolor{color4}{rgb}{0.96,0.97,0.98}%{0.9176,0.9373,0.9686} 15 | 16 | % 算法 17 | \usepackage[noend]{algpseudocode} 18 | \usepackage{algorithmicx,algorithm} 19 | \floatname{algorithm}{算法} 20 | \renewcommand{\algorithmicrequire}{\textbf{输入:}} 21 | \renewcommand{\algorithmicensure}{\textbf{输出:}} 22 | 23 | %\numberwithin{equation}{section} 24 | %\numberwithin{figure}{section} 25 | %\numberwithin{table}{section} 26 | 27 | 28 | \newcommand{\red}[1]{\textcolor{red}{#1}} 29 | \newcommand{\blue}[1]{\textcolor{blue}{#1}} 30 | 31 | 32 | 33 | \title{全国研究生数学建模竞赛论文标题} 34 | \baominghao{4321} %参赛队号 35 | \schoolname{XX大学}%学校名称 36 | \membera{小米} %队员A 37 | \memberb{向左} %队员B 38 | \memberc{哈哈} %队员C 39 | \begin{document} 40 | 41 | %生成标题 42 | \maketitle 43 | 44 | %填写摘要 45 | \begin{abstract} 46 | 本模板是为全国研究生数学建模竞赛编写的 \LaTeX{} 模板, 旨在让大家专注于 47 | 论文的内容写作, 而不用花费过多精力在格式的定制和调整上. 本手册是相应的参考, 其 48 | 中提供了一些环境和命令可以让模板的使用更为方便. 同时需要注意, 使用者需要有一 49 | 定的 \LaTeX{} 的使用经验, 至少要会使用 ctex 宏包的一些功能, 比如调节字距或修改字体 50 | 大小等等. 不少用户把模板上传到 Overleaf 上使用, 由于字体设置无法直接上传, 如果上传了会有字体异常, 请自行修改. 51 | 52 | 53 | \begin{mdframed} [% 54 | roundcorner=5pt, 55 | linecolor=gray!50, 56 | outerlinewidth=0.5pt, 57 | middlelinewidth=0.3pt, backgroundcolor=gray!2, 58 | innertopmargin=\topskip, frametitle={2024年格式变化说明}, 59 | frametitlefont= \bfseries,frametitlerule=true,frametitlealignment =\raggedright\noindent, 60 | frametitlerulewidth=.5pt, frametitlebackgroundcolor=gray!2,] 61 | 今年的格式变化如下: 62 | \begin{enumerate} 63 | \item 论文第一页为标识替换; 64 | \item 合并 \url 65 | {https://github.com/andy123t/GMCMthesis} 更新. 修复首页页码; 66 | \item 调整摘要、标题、关键词和浮动体标题等字体。 67 | \end{enumerate} 68 | 69 | \end{mdframed} 70 | 71 | 这是研究生报名官方网站,点击\href{https://cpipc.chinadegrees.cn}{\fbox{这里}}进入。 72 | 73 | 欢迎大家到QQ群里沟通交流:91940767/478023327/640633524。我们也开通了问答区交流 \LaTeX{}技术:\url{https://ask.latexstudio.net},欢迎大家前来交流。 74 | 75 | 76 | \keywords{模板\quad \LaTeX{}\quad 数学建模} 77 | \end{abstract} 78 | 79 | \pagestyle{plain} 80 | 81 | %目录 不推荐加 82 | %\tableofcontents 83 | 84 | \section{在线使用} 85 | 86 | 如果你想要在 Overleaf 使用, 那么需要设置下字体 87 | \begin{lstlisting}[language={[latex]TeX}] 88 | \documentclass[bwprint,fontset=fandol]{gmcmthesis} 89 | \end{lstlisting} 90 | 91 | 由于线上平台没有隶书,只能用楷体替代了, 大家根据自己的情况来使用。 92 | 93 | 94 | 95 | \uwave{欢迎关注我们的微信公众号}: 96 | 97 | \centerline{\includegraphics[width=5cm]{gongzhonghao1}} 98 | 99 | \section{问题重述} 100 | 101 | 102 | 在保持原题主体思想不变下,可以自己组织词句对问题进行描述,主要数据可以直接复制,对所提出的问题部分基本原样复制。篇幅建议不要超过一页。 103 | \section{问题分析} 104 | 主要是表达对题目的理解,特别是对附件的数据进行必要分析、描述(一般都有数据附件),这是需要提到分析数据的方法、理由。如果有多个小问题,可以对每个小问题进行分别分析。 105 | (假设有2个问题) 106 | 107 | 108 | 109 | \subsection{问题1的分析} 110 | 111 | 对问题1研究的意义的分析。 112 | 113 | 问题1属于。。。。。数学问题,对于解决此类问题一般数学方法的分析。 114 | 115 | 对附件中所给数据特点的分析。 116 | 117 | 对问题1所要求的结果进行分析。 118 | 119 | 由于以上原因,我们可以将首先建立一个。。。。。。的数学模型I,然后将建立一个。。。。。。。的模型II,。。。。。。。。。。对结果分别进行预测,并将结果进行比较. 120 | 121 | 122 | \subsection{问题2的分析} 123 | 124 | 125 | 对问题2研究的意义的分析。 126 | 127 | 128 | 129 | \section{模型假设} 130 | 131 | 1. 假设题目所给的数据真实可靠; 132 | 133 | 2. 134 | 135 | 3. 136 | 137 | 138 | 139 | 注意:假设对整篇文章具有指导性,有时决定问题的难易。一定要注意假设的某种角度上的合理性,不能乱编,完全偏离事实或与题目要求相抵触。注意罗列要工整。 140 | 141 | \section{定义与符号说明} 142 | (对文章中所用到的主要数学符号进行解释) 143 | 144 | 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 145 | 146 | 尽可能借鉴参考书上通常采用的符号,不宜自己乱定义符号,对于改进的一些模型,符号可以适当自 147 | 己修正(下标、上标、参数等可以变,主符号最好与经典模型符号靠近)。对文章自 148 | 己创新的名词需要特别解释。其他符号要进行说明,注意罗列要工整。 149 | 注意格式统一,不要出现零乱或前后不一致现象,关键是容易看懂。 150 | 151 | 152 | \section{符号说明} 153 | 154 | \begin{table}[htp!] 155 | \centering 156 | \renewcommand\arraystretch{1.2} %定义表格高度 157 | \newcolumntype{L}{>{\quad}X} 158 | \newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}} 159 | \newcolumntype{C}{>{\centering \arraybackslash}X} 160 | \newcolumntype{R}{>{\raggedright \arraybackslash}X} 161 | \begin{tabularx}{0.9\textwidth}{|P{1cm}|L|} 162 | \hline %\toprule 163 | 符号 & \quad 意义 \\ 164 | \hline %\midrule 165 | %\rowcolor[gray]{0.90} 166 | $ a $ & 符号1的意义 \\ 167 | \hline 168 | $ b $ & 符号2的意义 \\ 169 | \hline 170 | $ c $ & 符号3的意义符号3的意义 \\ 171 | \hline 172 | $ d $ & 符号4的意义 \\ 173 | \hline 174 | $ e $ & 符号5的意义 \\ 175 | \hline 176 | $ f $ & 符号6的意义符号6的意义 \\ 177 | \hline 178 | $ g $ & 符号7的意义 \\ 179 | \hline 180 | $ h $ & 符号8的意义 \\ 181 | \hline 182 | $ i $ & 符号9的意义符号9的意义 \\ 183 | \hline 184 | 185 | $ k $ & 符号10的意义 \\ 186 | \hline 187 | $ l $ & 符号11的意义 \\ 188 | \hline %\bottomrule 189 | \end{tabularx} 190 | \end{table} 191 | 192 | 193 | %\begin{tabularx}{\textwidth-18pt}{XXX} 194 | %\hline 195 | %Input & Output& Action return \\ 196 | %\hline 197 | %DNF & simulation & jsp\\ 198 | %\hline 199 | %\end{tabularx} 200 | 201 | 202 | \section{模型的建立} 203 | 204 | \subsection{问题一分析} 205 | 题目要求建立模型描述折叠桌的动态变化图,由于在折叠时用力大小的不同,我们不能描述在某一时刻折叠桌的具体形态,但我们可以用每根木条的角度变化来描述折叠桌的动态变化。首先,我们知道折叠桌前后左右对称,我们可以运用几何知识求出四分之一木条的角度变化。最后,根据初始时刻和最终形态两种状态求出桌腿木条开槽的长度 206 | 207 | 208 | \subsection{算法示例} 209 | 210 | 数学建模求解算法示例: 211 | \begin{center} 212 | \begin{minipage}{0.8\textwidth} 213 | \begin{algorithm}[H]%[!htp] 214 | \caption{算法的名字} %算法的名字 215 | {\bf 输入:} %算法的输入, \hspace*{0.02in}用来控制位置,同时利用 \\ 进行换行 216 | input parameters A, B, C\\ 217 | {\bf 输出:} %算法的结果输出 218 | output result 219 | \begin{algorithmic}[1] 220 | \State some description 算法介绍 % \State 后写一般语句 221 | \For{condition} % For 语句,需要和EndFor对应 222 |   \State ... 223 |   \If{condition} % If 语句,需要和EndIf对应 224 |     \State ... 225 |   \Else 226 |     \State ... 227 |   \EndIf 228 | \EndFor 229 | \While{condition} % While语句,需要和EndWhile对应 230 |   \State ... 231 | \EndWhile 232 | \State \Return result 233 | \end{algorithmic} 234 | \end{algorithm} 235 | \end{minipage} 236 | \end{center} 237 | \vspace{2ex} 238 | 239 | \section{表格和图形} 240 | 241 | \subsection{表格} 242 | 243 | %\begin{table}[!htbp] 244 | % \caption{标准三线表格}\label{tab:001} \centering 245 | % \begin{tabular}{ccccc} 246 | % \toprule%[1.5pt] 247 | % $D$(in) & $P_u$(lbs) & $u_u$(in) & $\beta$ & $G_f$(psi.in)\\ 248 | % \midrule%[1pt] 249 | % 5 & 269.8 & 0.000674 & 1.79 & 0.04089\\ 250 | % 10 & 421.0 & 0.001035 & 3.59 & 0.04089\\ 251 | % 20 & 640.2 & 0.001565 & 7.18 & 0.04089\\ 252 | % \bottomrule%[1.5pt] 253 | % \end{tabular} 254 | %\end{table} 255 | 256 | 三线表 257 | 258 | %\begin{table}[!htp] 259 | %\renewcommand\arraystretch{1.0} %定义表格高度 260 | %\newcolumntype{L}{X} 261 | %\newcolumntype{C}{>{\centering \arraybackslash}X} 262 | %\newcolumntype{R}{>{\raggedright \arraybackslash}X} 263 | %\centering 264 | %\caption{某校学生升高体重样本} 265 | %\label{tab2:heightweight} 266 | %\begin{tabularx}{0.9\textwidth}{CC|CC} 267 | % \toprule 268 | % \multicolumn{2}{c}{Numbers} &身高&体重\\ 269 | % \midrule 270 | % 1&14&156&42\\ 271 | % 2&16&158&45\\ 272 | % 3&14&162&48\\ 273 | % 4&15&163&50\\ 274 | % \midrule 275 | % %\cmidrule{2-4} 276 | % 平均&15&159.75&46.25\\ 277 | % \bottomrule 278 | %\end{tabularx} 279 | %\end{table} 280 | 281 | 282 | 283 | \begin{table}[!htp] 284 | \renewcommand\arraystretch{1.0} %定义表格高度 285 | \newcolumntype{L}{X} 286 | \newcolumntype{C}{>{\centering \arraybackslash}X} 287 | \newcolumntype{R}{>{\raggedright \arraybackslash}X} 288 | \centering 289 | \caption{某校学生升高体重样本} 290 | \label{tab2:heightweight} 291 | \begin{tabularx}{0.9\textwidth}{|C|C|C|C|} 292 | \Xhline{2\arrayrulewidth} 293 | \multicolumn{2}{|c|}{Numbers} &身高&体重\\ 294 | \Xhline{2\arrayrulewidth} 295 | \multirow{2}{*}{Item} &14&156&42\\ 296 | \cline{2-4} 297 | &16&158&45\\ 298 | \hline 299 | 3&14&162&48\\ 300 | \hline 301 | 4&15&163&50\\ 302 | %\cmidrule{2-4} 303 | 平均&15&159.75&46.25\\ 304 | \Xhline{2\arrayrulewidth} 305 | \end{tabularx} 306 | \end{table} 307 | 308 | 309 | 题目要求建立模型描述折叠桌的动态变化图,由于在折叠时用力大小的不同,我们不能描述在某一时刻折叠桌的具体形态,但我们可以用每根木条的角度变化来描述折叠桌的动态变化。首先,我们知道折叠桌前后左右对称,我们可以运用几何知识求出四分之一木条的角度变化。最后,根据初始时刻和最终形态两种状态求出桌腿木条开槽的长度。题目要求建立模型描述折叠桌的动态变化图,由于在折叠时用力大小的不同,我们不能描述在某一时刻折叠桌的具体形态,但我们可以用每根木条的角度变化来描述折叠桌的动态变化。首先,我们知道折叠桌前后左右对称,我们可以运用几何知识求出四分之一木条的角度变化。最后,根据初始时刻和最终形态两种状态求出桌腿木条开槽的长度。题目要求建立模型描述折叠桌的动态变化图,由于在折叠时用力大小的不同,我们不能描述在某一时刻折叠桌的具体形态,但我们可以用每根木条的角度变化来描述折叠桌的动态变化。首先,我们知道折叠桌前后左右对称,我们可以运用几何知识求出四分之一木条的角度变化。最后,根据初始时刻和最终形态两种状态求出桌腿木条开槽的长度题目要求建立模型描述折叠桌的动态变化图,由于在折叠时用力大小的不同,我们不能描述在某一时刻折叠桌的具体形态,但我们可以用每根木条的角度变化来描述折叠桌的动态变化。首先,我们知道折叠桌前后左右对称,我们可以运用几何知识求出四分之一木条的角度变化。最后,根据初始时刻和最终形态两种状态求出桌腿木条开槽的长度 310 | 311 | 某行业产量与生产费用的数据 312 | \begin{table}[htp!] 313 | \centering 314 | \caption{某行业产量与生产费用的数据}%\label{} 315 | \newcolumntype{Y}{>{\centering\arraybackslash}X} 316 | \newcolumntype{Z}{!{\vline}@{\color{white}\vrule width \doublerulesep}!{\vrule}}%自定义列格式(双线) 317 | \begin{tabularx}{0.94\textwidth}{c|c|YZc|c|Y} 318 | \Xhline{0.9pt} 319 | 企业编号& 产量(台)&生产费用(万元)&企业编号&产量(台)&生产费用(万元)\\ 320 | \Xcline{1-3}{0.6pt}\Xcline{4-6}{0.6pt} 321 | 1& 40& 130&7& 84& 165\\ 322 | 2& 42& 150&8& 100& 170\\ 323 | 3& 50& 155&9& 116& 167\\ 324 | 4& 55& 140&10& 125& 180\\ 325 | 5& 65& 150&11& 130& 175\\ 326 | 6& 78& 154&12& 140& 185\\ 327 | \Xhline{0.72pt} 328 | \end{tabularx} 329 | \end{table} 330 | 331 | 研究生数学建模2019年F题结果示例 332 | \begin{table}[htp!] 333 | \centering 334 | \caption{问题1结果1 (左) 与 问题2结果 (右)} 335 | \begin{minipage}[h]{0.48\linewidth} 336 | \renewcommand\arraystretch{1.2} %定义表格高度 337 | \newcolumntype{Y}{>{\centering\arraybackslash}X} 338 | \begin{tabularx}{0.9\textwidth}{|Y|Y|Y|} 339 | \hline 340 | 数据集1 & 数据集1 & 数据集2 \\ 341 | \hline 342 | A问题1 & A问题1 & A问题1 \\ 343 | \hline 344 | 503 & 503 & 163 \\ 345 | 294 & 200 & 114 \\ 346 | 91 & 80 & 8 \\ 347 | 607 & 237 & 309 \\ 348 | 540 & 170 & 305 \\ 349 | 250 & 278 & 123 \\ 350 | 340 & 369 & 45 \\ 351 | 277 & 214 & 160 \\ 352 | B & 397 & 92 \\ 353 | & B & 93 \\ 354 | & & 61 \\ 355 | & & 292 \\ 356 | & & B \\ 357 | 104861 & 103518 & 109342 \\ 358 | \hline 359 | \end{tabularx} 360 | \end{minipage} 361 | \begin{minipage}[h]{0.48\linewidth} 362 | \renewcommand\arraystretch{1.2} %定义表格高度 363 | \newcolumntype{Y}{>{\centering\arraybackslash}X} 364 | \begin{tabularx}{0.9\textwidth}{|Y|Y|Y|} 365 | \hline 366 | 数据集1 & 数据集1 & 数据集2 \\ 367 | \hline 368 | A问题2 & A问题2 & A问题2 \\ 369 | \hline 370 | 503 & 503 & 163 \\ 371 | 294 & 200 & 114 \\ 372 | 91 & 80 & 8 \\ 373 | 607 & 237 & 309 \\ 374 | 540 & 170 & 305 \\ 375 | 250 & 278 & 123 \\ 376 | 340 & 369 & 45 \\ 377 | 277 & 214 & 160 \\ 378 | B & 397 & 92 \\ 379 | & B & 93 \\ 380 | & & 61 \\ 381 | & & 292 \\ 382 | & & B \\ 383 | 104917 & 103563 &109427 \\ 384 | \hline 385 | \end{tabularx} 386 | \end{minipage} 387 | \end{table} 388 | 389 | \clearpage 390 | \begin{table}[htp!] 391 | %\small 392 | \centering 393 | \renewcommand\arraystretch{1.2} %定义表格高度 394 | \newcolumntype{Y}{>{\centering\arraybackslash}X} 395 | \caption{问题3结果} 396 | \begin{tabularx}{0.9\textwidth}{|Y|Y|Y|Y|Y|Y|} 397 | \hline %定义表格宽度 398 | 数据集1 & 数据集1 & \multicolumn{2}{c|}{数据集2 (无问题点)} & \multicolumn{2}{c|}{数据集2 (有问题点)} \\ 399 | \hline 400 | A问题3 & A问题3 & \multicolumn{2}{c|}{A问题3} & \multicolumn{2}{c|}{A问题3} \\ 401 | \hline 402 | 503 & 503 & 169 & 73 & 169 & 73 \\ 403 | \hline 404 | 69 & 69 & 322 & 249 & 322 & 249 \\ 405 | \hline 406 | 506 & 506 & 270 & 274 & 270 & 274 \\ 407 | \hline 408 | 371 & 371 & 89 & 12 & 89 & 12 \\ 409 | \hline 410 | 183 & 183 & 236 & 216 & 236 & 216 \\ 411 | \hline 412 | 194 & 194 & 132 & 16 & 132 & 16 \\ 413 | \hline 414 | 450 & 450 & 53 & 282 & 53 & 282 \\ 415 | \hline 416 | 286 & 113 & 112 & 84 & 112 & 141 \\ 417 | \hline 418 | 485 & 485 & 268 & 287 & 268 & 291 \\ 419 | \hline 420 | \red{B (9D)}~~ & 248 & 250 & 99 & 250 &161 \\ 421 | \hline 422 | & \red{B (10D)} & 243 & \red{B (21D)} & 243 & \red{B (21D)} \\ 423 | \hline 424 | & & & & & \\ 425 | \hline 426 | 104861m & 103518m & & 168924m & &161650m \\ 427 | \hline 428 | \end{tabularx} 429 | \end{table} 430 | 431 | 432 | \subsection{图形} 433 | 434 | 图形并列 435 | \begin{figure}[htp!] 436 | \begin{minipage}[t]{0.48\linewidth} 437 | \centering 438 | \includegraphics[width=0.9\textwidth]{image1} 439 | \caption{fig1} 440 | \label{fig:side:a} 441 | \end{minipage}% 442 | \begin{minipage}[t]{0.48\linewidth} 443 | \centering 444 | \includegraphics[width=0.9\textwidth]{image2} % 2.2in 445 | \caption{fig2} 446 | \label{fig:side:b} 447 | \end{minipage} 448 | \end{figure} 449 | 450 | 这是一个算法流程图 451 | \begin{figure}[htp!] 452 | \centering 453 | \includegraphics[width=.55\textwidth]{fig.png} 454 | \caption{算法流程图} 455 | \end{figure} 456 | 457 | 多图并排 458 | \begin{figure}[!htp] 459 | \centering 460 | \subfloat[Arabic numerals]{\includegraphics[width=0.4\textwidth]{image1}}\qquad 461 | \subfloat[Arabic numerals]{\includegraphics[width=0.4\textwidth]{image2}} \\ 462 | \subfloat[Arabic numerals]{\includegraphics[width=0.4\textwidth]{image3}}\qquad 463 | \subfloat[Arabic numerals]{\includegraphics[width=0.4\textwidth]{image4}} 464 | \caption{多图示例} 465 | \end{figure} 466 | 467 | 468 | \clearpage 469 | \subsection{问题三分析} 470 | 471 | 题目要求制作软件的意思就是客户给定折叠桌高度、桌面边缘线的形状大小和桌脚边缘线的大致形状,将这些信息输入程序就得到客户想要的桌子。我们在求解最优设计加工参数时,自行给定桌面边缘线形状(椭圆、相交圆等),桌脚边缘线形状,折叠桌高度,应用第二问的非线性规划模型,用MATLAB软件绘制折叠桌截面图,得到自己设计的创意平板折叠桌。 472 | 473 | 474 | \section{模型评价} 475 | 476 | 这里是模型评价 477 | 478 | 479 | 480 | %参考文献 手工录入 481 | %\begin{thebibliography}{9}%宽度9 482 | % \bibitem{bib:one} .... 483 | % \bibitem{bib:two} .... 484 | %\end{thebibliography} 485 | 486 | %采用bibtex方案 487 | \cite{mittelbach_latex_2004,wright_latex3_2009,beeton_unicode_2008,vieth_experiences_2009,ls:2024} 488 | 489 | \bibliographystyle{gmcm} 490 | \bibliography{reference} 491 | 492 | 493 | \clearpage 494 | %附录 495 | \begin{appendices} 496 | %\setcounter{page}{1} %如果需要可以自行重置页码。 497 | \section{MATLAB 源程序} 498 | \renewcommand{\thesubsection}{A\thinskip.\thinskip\arabic{subsection}} 499 | \subsection{第1问程序} 500 | \vspace{-2ex} 501 | 502 | \begin{Matlab}{code.m} 503 | clear all 504 | kk=2; 505 | [mdd,ndd]=size(dd); 506 | while ~isempty(V) 507 | [tmpd,j]=min(W(i,V)); 508 | tmpj=V(j); 509 | for k=2:ndd 510 | [tmp1,jj]=min(dd(1,k)+W(dd(2,k),V)); 511 | tmp2=V(jj); 512 | tt(k-1,:)=[tmp1,tmp2,jj]; 513 | end 514 | tmp=[tmpd,tmpj,j;tt]; 515 | [tmp3,tmp4]=min(tmp(:,1)); 516 | if tmp3==tmpd, 517 | ss(1:2,kk)=[i;tmp(tmp4,2)]; 518 | else 519 | tmp5=find(ss(:,tmp4)~=0); 520 | tmp6=length(tmp5); 521 | if dd(2,tmp4)==ss(tmp6,tmp4) 522 | ss(1:tmp6+1,kk)=[ss(tmp5,tmp4);tmp(tmp4,2)]; 523 | else, ss(1:3,kk)=[i;dd(2,tmp4);tmp(tmp4,2)]; 524 | end 525 | end 526 | dd=[dd,[tmp3;tmp(tmp4,2)]]; 527 | V(tmp(tmp4,3))=[]; 528 | [mdd,ndd]=size(dd);kk=kk+1; 529 | end; 530 | S=ss; D=dd(1,:); 531 | \end{Matlab} 532 | \vspace{2ex} 533 | 534 | \clearpage 535 | \section{Python 源程序} 536 | \renewcommand{\thesubsection}{B\thinskip.\thinskip\arabic{subsection}} 537 | \subsection{第2问程序} 538 | \vspace{-2ex} 539 | \begin{Python}{mip1.py} 540 | # This example formulates and solves the following MIP model: 541 | # maximize 542 | # x + y + 2 z 543 | # subject to 544 | # x + 2 y + 3 z <= 4 545 | # x + y >= 1 546 | # x, y, z binary 547 | 548 | # import gurobipy as gp 549 | from gurobipy import * #GRB 550 | try: 551 | # Create a new model 552 | m = Model("mip1") 553 | # Create variables 554 | x = m.addVar(vtype=GRB.BINARY, name="x") 555 | y = m.addVar(vtype=GRB.BINARY, name="y") 556 | z = m.addVar(vtype=GRB.BINARY, name="z") 557 | # Set objective 558 | m.setObjective(x + y + 2 * z, GRB.MAXIMIZE) 559 | # Add constraint: x + 2 y + 3 z <= 4 560 | m.addConstr(x + 2 * y + 3 * z <= 4, "c0") 561 | # Add constraint: x + y >= 1 562 | m.addConstr(x + y >= 1, "c1") 563 | # Optimize model 564 | m.optimize() 565 | for v in m.getVars(): 566 | print('%s %g' % (v.varName, v.x)) 567 | print('Obj: %g' % m.objVal) 568 | 569 | except GurobiError as e: 570 | print('Error code ' + str(e.errno) + ': ' + str(e)) 571 | 572 | except AttributeError: 573 | print('Encountered an attribute error') 574 | \end{Python} 575 | 576 | \end{appendices} 577 | 578 | 579 | 580 | \end{document} -------------------------------------------------------------------------------- /example_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/example_1.png -------------------------------------------------------------------------------- /example_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/example_2.png -------------------------------------------------------------------------------- /figures/fig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/figures/fig.png -------------------------------------------------------------------------------- /figures/gongzhonghao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/figures/gongzhonghao.png -------------------------------------------------------------------------------- /figures/gongzhonghao1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/figures/gongzhonghao1.png -------------------------------------------------------------------------------- /figures/image1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/figures/image1.pdf -------------------------------------------------------------------------------- /figures/image2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/figures/image2.pdf -------------------------------------------------------------------------------- /figures/image3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/figures/image3.pdf -------------------------------------------------------------------------------- /figures/image4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/figures/image4.pdf -------------------------------------------------------------------------------- /figures/logo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/figures/logo.pdf -------------------------------------------------------------------------------- /figures/logo2(1).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/figures/logo2(1).pdf -------------------------------------------------------------------------------- /figures/logo2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/figures/logo2.pdf -------------------------------------------------------------------------------- /figures/title.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/figures/title.pdf -------------------------------------------------------------------------------- /gmcm.bst: -------------------------------------------------------------------------------- 1 | %% 2 | %% This is file `gbt7714-unsrt.bst', 3 | %% generated with the docstrip utility. 4 | %% 5 | %% The original source files were: 6 | %% 7 | %% gbt7714.dtx (with options: `2015,numerical') 8 | %% Version: 2018/08/05 v1.0.9 9 | %% 10 | %% Copyright (C) 2016-2018 by Zeping Lee 11 | %% 12 | %% This file may be distributed and/or modified under the 13 | %% conditions of the LaTeX Project Public License, either version 1.3c 14 | %% of this license or (at your option) any later version. 15 | %% The latest version of this license is in 16 | %% https://www.latex-project.org/lppl.txt 17 | %% and version 1.3c or later is part of all distributions of LaTeX 18 | %% version 2005/12/01 or later. 19 | %% 20 | 21 | INTEGERS { 22 | uppercase.name 23 | max.num.authors 24 | period.between.author.year 25 | sentence.case.title 26 | link.title 27 | show.mark 28 | slash.for.extraction 29 | in.booktitle 30 | italic.jounal 31 | bold.journal.volume 32 | show.missing.address.publisher 33 | show.url 34 | show.doi 35 | show.note 36 | } 37 | 38 | FUNCTION {load.config} 39 | { 40 | #0 'uppercase.name := 41 | #3 'max.num.authors := 42 | #0 'period.between.author.year := 43 | #0 'sentence.case.title := 44 | #0 'link.title := 45 | #0 'show.mark := 46 | #0 'slash.for.extraction := 47 | #0 'in.booktitle := 48 | #0 'italic.jounal := 49 | #0 'bold.journal.volume := 50 | #0 'show.missing.address.publisher := 51 | #0 'show.url := 52 | #0 'show.doi := 53 | #0 'show.note := 54 | } 55 | 56 | ENTRY 57 | { address 58 | author 59 | booktitle 60 | date 61 | doi 62 | edition 63 | editor 64 | howpublished 65 | institution 66 | journal 67 | key 68 | language 69 | mark 70 | medium 71 | note 72 | number 73 | organization 74 | pages 75 | publisher 76 | school 77 | series 78 | title 79 | translator 80 | url 81 | urldate 82 | volume 83 | year 84 | } 85 | { entry.lang entry.is.electronic entry.numbered } 86 | { label extra.label sort.label short.list entry.mark entry.url } 87 | 88 | INTEGERS { output.state before.all mid.sentence after.sentence after.block after.slash } 89 | 90 | INTEGERS { lang.zh lang.ja lang.en lang.ru lang.other } 91 | 92 | INTEGERS { charptr len } 93 | 94 | FUNCTION {init.state.consts} 95 | { #0 'before.all := 96 | #1 'mid.sentence := 97 | #2 'after.sentence := 98 | #3 'after.block := 99 | #4 'after.slash := 100 | #3 'lang.zh := 101 | #4 'lang.ja := 102 | #1 'lang.en := 103 | #2 'lang.ru := 104 | #0 'lang.other := 105 | } 106 | 107 | FUNCTION {bbl.anonymous} 108 | { entry.lang lang.zh = 109 | { "佚名" } 110 | { "Anon" } 111 | if$ 112 | } 113 | 114 | FUNCTION {bbl.space} 115 | { entry.lang lang.zh = 116 | { "\ " } 117 | { " " } 118 | if$ 119 | } 120 | 121 | FUNCTION {bbl.et.al} 122 | { entry.lang lang.zh = 123 | { "等" } 124 | { entry.lang lang.ja = 125 | { "他" } 126 | { entry.lang lang.ru = 127 | { "идр" } 128 | { "et~al." } 129 | if$ 130 | } 131 | if$ 132 | } 133 | if$ 134 | } 135 | 136 | FUNCTION {bbl.colon} { ": " } 137 | 138 | FUNCTION {bbl.wide.space} { "\quad " } 139 | 140 | FUNCTION {bbl.slash} { "//\allowbreak " } 141 | 142 | FUNCTION {bbl.sine.loco} 143 | { entry.lang lang.zh = 144 | { "[出版地不详]" } 145 | { "[S.l.]" } 146 | if$ 147 | } 148 | 149 | FUNCTION {bbl.sine.nomine} 150 | { entry.lang lang.zh = 151 | { "[出版者不详]" } 152 | { "[s.n.]" } 153 | if$ 154 | } 155 | 156 | FUNCTION {bbl.sine.loco.sine.nomine} 157 | { entry.lang lang.zh = 158 | { "[出版地不详: 出版者不详]" } 159 | { "[S.l.: s.n.]" } 160 | if$ 161 | } 162 | 163 | FUNCTION {not} 164 | { { #0 } 165 | { #1 } 166 | if$ 167 | } 168 | 169 | FUNCTION {and} 170 | { 'skip$ 171 | { pop$ #0 } 172 | if$ 173 | } 174 | 175 | FUNCTION {or} 176 | { { pop$ #1 } 177 | 'skip$ 178 | if$ 179 | } 180 | 181 | STRINGS { s t } 182 | 183 | FUNCTION {output.nonnull} 184 | { 's := 185 | output.state mid.sentence = 186 | { ", " * write$ } 187 | { output.state after.block = 188 | { "," * write$ 189 | newline$ 190 | "\newblock " write$ 191 | } 192 | { output.state before.all = 193 | 'write$ 194 | { output.state after.slash = 195 | { bbl.slash * write$ 196 | newline$ 197 | } 198 | { add.period$ " " * write$ } 199 | if$ 200 | } 201 | if$ 202 | } 203 | if$ 204 | mid.sentence 'output.state := 205 | } 206 | if$ 207 | s 208 | } 209 | 210 | FUNCTION {output} 211 | { duplicate$ empty$ 212 | 'pop$ 213 | 'output.nonnull 214 | if$ 215 | } 216 | 217 | FUNCTION {output.after} 218 | { 't := 219 | duplicate$ empty$ 220 | 'pop$ 221 | { 's := 222 | output.state mid.sentence = 223 | { t * write$ } 224 | { output.state after.block = 225 | { add.period$ write$ 226 | newline$ 227 | "\newblock " write$ 228 | } 229 | { output.state before.all = 230 | 'write$ 231 | { output.state after.slash = 232 | { bbl.slash * write$ } 233 | { add.period$ " " * write$ } 234 | if$ 235 | } 236 | if$ 237 | } 238 | if$ 239 | mid.sentence 'output.state := 240 | } 241 | if$ 242 | s 243 | } 244 | if$ 245 | } 246 | 247 | FUNCTION {output.check} 248 | { 't := 249 | duplicate$ empty$ 250 | { pop$ "empty " t * " in " * cite$ * warning$ } 251 | 'output.nonnull 252 | if$ 253 | } 254 | 255 | FUNCTION {fin.entry} 256 | { add.period$ 257 | write$ 258 | newline$ 259 | } 260 | 261 | FUNCTION {new.block} 262 | { output.state before.all = 263 | 'skip$ 264 | { output.state after.slash = 265 | 'skip$ 266 | { after.block 'output.state := } 267 | if$ 268 | } 269 | if$ 270 | } 271 | 272 | FUNCTION {new.sentence} 273 | { output.state after.block = 274 | 'skip$ 275 | { output.state before.all = 276 | 'skip$ 277 | { output.state after.slash = 278 | 'skip$ 279 | { after.sentence 'output.state := } 280 | if$ 281 | } 282 | if$ 283 | } 284 | if$ 285 | } 286 | 287 | FUNCTION {new.slash} 288 | { output.state before.all = 289 | 'skip$ 290 | { slash.for.extraction 291 | { after.slash 'output.state := } 292 | { after.block 'output.state := } 293 | if$ 294 | } 295 | if$ 296 | } 297 | 298 | FUNCTION {new.block.checka} 299 | { empty$ 300 | 'skip$ 301 | 'new.block 302 | if$ 303 | } 304 | 305 | FUNCTION {new.block.checkb} 306 | { empty$ 307 | swap$ empty$ 308 | and 309 | 'skip$ 310 | 'new.block 311 | if$ 312 | } 313 | 314 | FUNCTION {new.sentence.checka} 315 | { empty$ 316 | 'skip$ 317 | 'new.sentence 318 | if$ 319 | } 320 | 321 | FUNCTION {new.sentence.checkb} 322 | { empty$ 323 | swap$ empty$ 324 | and 325 | 'skip$ 326 | 'new.sentence 327 | if$ 328 | } 329 | 330 | FUNCTION {field.or.null} 331 | { duplicate$ empty$ 332 | { pop$ "" } 333 | 'skip$ 334 | if$ 335 | } 336 | 337 | FUNCTION {italicize} 338 | { duplicate$ empty$ 339 | { pop$ "" } 340 | { "\textit{" swap$ * "}" * } 341 | if$ 342 | } 343 | 344 | INTEGERS { byte second.byte } 345 | 346 | INTEGERS { char.lang tmp.lang } 347 | 348 | STRINGS { tmp.str } 349 | 350 | FUNCTION {get.str.lang} 351 | { 'tmp.str := 352 | lang.other 'tmp.lang := 353 | #1 'charptr := 354 | tmp.str text.length$ #1 + 'len := 355 | { charptr len < } 356 | { tmp.str charptr #1 substring$ chr.to.int$ 'byte := 357 | byte #128 < 358 | { charptr #1 + 'charptr := 359 | byte #64 > byte #91 < and byte #96 > byte #123 < and or 360 | { lang.en 'char.lang := } 361 | { lang.other 'char.lang := } 362 | if$ 363 | } 364 | { tmp.str charptr #1 + #1 substring$ chr.to.int$ 'second.byte := 365 | byte #224 < 366 | { charptr #2 + 'charptr := 367 | byte #207 > byte #212 < and 368 | byte #212 = second.byte #176 < and or 369 | { lang.ru 'char.lang := } 370 | { lang.other 'char.lang := } 371 | if$ 372 | } 373 | { byte #240 < 374 | { charptr #3 + 'charptr := 375 | byte #227 > byte #234 < and 376 | { lang.zh 'char.lang := } 377 | { byte #227 = 378 | { second.byte #143 > 379 | { lang.zh 'char.lang := } 380 | { second.byte #128 > second.byte #132 < and 381 | { lang.ja 'char.lang := } 382 | { lang.other 'char.lang := } 383 | if$ 384 | } 385 | if$ 386 | } 387 | { byte #239 = 388 | second.byte #163 > second.byte #172 < and and 389 | { lang.zh 'char.lang := } 390 | { lang.other 'char.lang := } 391 | if$ 392 | } 393 | if$ 394 | } 395 | if$ 396 | } 397 | { charptr #4 + 'charptr := 398 | byte #240 = second.byte #159 > and 399 | { lang.zh 'char.lang := } 400 | { lang.other 'char.lang := } 401 | if$ 402 | } 403 | if$ 404 | } 405 | if$ 406 | } 407 | if$ 408 | char.lang tmp.lang > 409 | { char.lang 'tmp.lang := } 410 | 'skip$ 411 | if$ 412 | } 413 | while$ 414 | tmp.lang 415 | } 416 | 417 | FUNCTION {check.entry.lang} 418 | { author field.or.null 419 | title field.or.null * 420 | get.str.lang 421 | } 422 | 423 | FUNCTION {set.entry.lang} 424 | { language empty$ 425 | { check.entry.lang } 426 | { language "english" = language "american" = or language "british" = or 427 | { lang.en } 428 | { language "chinese" = 429 | { lang.zh } 430 | { language "japanese" = 431 | { lang.ja } 432 | { language "russian" = 433 | { lang.ru } 434 | { check.entry.lang } 435 | if$ 436 | } 437 | if$ 438 | } 439 | if$ 440 | } 441 | if$ 442 | } 443 | if$ 444 | 'entry.lang := 445 | } 446 | 447 | FUNCTION {set.entry.numbered} 448 | { type$ "patent" = 449 | type$ "standard" = or 450 | type$ "techreport" = or 451 | { #1 'entry.numbered := } 452 | { #0 'entry.numbered := } 453 | if$ 454 | } 455 | 456 | INTEGERS { nameptr namesleft numnames name.lang } 457 | 458 | FUNCTION {format.names} 459 | { 's := 460 | #1 'nameptr := 461 | s num.names$ 'numnames := 462 | numnames 'namesleft := 463 | { namesleft #0 > } 464 | { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 465 | nameptr max.num.authors > 466 | { bbl.et.al 467 | #1 'namesleft := 468 | } 469 | { t "others" = 470 | { bbl.et.al } 471 | { t get.str.lang 'name.lang := 472 | name.lang lang.en = 473 | { t #1 "{vv~}{ll}{~f{~}}" format.name$ 474 | uppercase.name 475 | { "u" change.case$ } 476 | 'skip$ 477 | if$ 478 | t #1 "{, jj}" format.name$ * 479 | } 480 | { t #1 "{ll}{ff}" format.name$ } 481 | if$ 482 | } 483 | if$ 484 | } 485 | if$ 486 | nameptr #1 > 487 | { ", " swap$ * * } 488 | 'skip$ 489 | if$ 490 | nameptr #1 + 'nameptr := 491 | namesleft #1 - 'namesleft := 492 | } 493 | while$ 494 | } 495 | 496 | FUNCTION {format.key} 497 | { empty$ 498 | { key field.or.null } 499 | { "" } 500 | if$ 501 | } 502 | 503 | FUNCTION {format.authors} 504 | { author empty$ not 505 | { author format.names } 506 | { "empty author in " cite$ * warning$ 507 | "" 508 | } 509 | if$ 510 | } 511 | 512 | FUNCTION {format.editors} 513 | { editor empty$ 514 | { "" } 515 | { editor format.names } 516 | if$ 517 | } 518 | 519 | FUNCTION {format.translators} 520 | { translator empty$ 521 | { "" } 522 | { translator format.names 523 | entry.lang lang.zh = 524 | { translator num.names$ #3 > 525 | { "译" * } 526 | { ", 译" * } 527 | if$ 528 | } 529 | 'skip$ 530 | if$ 531 | } 532 | if$ 533 | } 534 | 535 | FUNCTION {format.full.names} 536 | {'s := 537 | #1 'nameptr := 538 | s num.names$ 'numnames := 539 | numnames 'namesleft := 540 | { namesleft #0 > } 541 | { s nameptr "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 542 | t get.str.lang 'name.lang := 543 | name.lang lang.en = 544 | { t #1 "{vv~}{ll}" format.name$ 't := } 545 | { t #1 "{ll}{ff}" format.name$ 't := } 546 | if$ 547 | nameptr #1 > 548 | { 549 | namesleft #1 > 550 | { ", " * t * } 551 | { 552 | numnames #2 > 553 | { "," * } 554 | 'skip$ 555 | if$ 556 | t "others" = 557 | { " et~al." * } 558 | { " and " * t * } 559 | if$ 560 | } 561 | if$ 562 | } 563 | 't 564 | if$ 565 | nameptr #1 + 'nameptr := 566 | namesleft #1 - 'namesleft := 567 | } 568 | while$ 569 | } 570 | 571 | FUNCTION {author.editor.full} 572 | { author empty$ 573 | { editor empty$ 574 | { "" } 575 | { editor format.full.names } 576 | if$ 577 | } 578 | { author format.full.names } 579 | if$ 580 | } 581 | 582 | FUNCTION {author.full} 583 | { author empty$ 584 | { "" } 585 | { author format.full.names } 586 | if$ 587 | } 588 | 589 | FUNCTION {editor.full} 590 | { editor empty$ 591 | { "" } 592 | { editor format.full.names } 593 | if$ 594 | } 595 | 596 | FUNCTION {make.full.names} 597 | { type$ "book" = 598 | type$ "inbook" = 599 | or 600 | 'author.editor.full 601 | { type$ "collection" = 602 | type$ "proceedings" = 603 | or 604 | 'editor.full 605 | 'author.full 606 | if$ 607 | } 608 | if$ 609 | } 610 | 611 | FUNCTION {output.bibitem} 612 | { newline$ 613 | "\bibitem[{" write$ 614 | label write$ 615 | ")" make.full.names duplicate$ short.list = 616 | { pop$ } 617 | { * } 618 | if$ 619 | "}]{" * write$ 620 | cite$ write$ 621 | "}" write$ 622 | newline$ 623 | "" 624 | before.all 'output.state := 625 | } 626 | 627 | FUNCTION {change.sentence.case} 628 | { entry.lang lang.en = 629 | { "t" change.case$ } 630 | 'skip$ 631 | if$ 632 | } 633 | 634 | FUNCTION {add.link} 635 | { url empty$ not 636 | { "\href{" url * "}{" * swap$ * "}" * } 637 | { doi empty$ not 638 | { "\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" * } 639 | 'skip$ 640 | if$ 641 | } 642 | if$ 643 | } 644 | 645 | FUNCTION {format.title} 646 | { title empty$ 647 | { "" } 648 | { title 649 | sentence.case.title 650 | 'change.sentence.case 651 | 'skip$ 652 | if$ 653 | entry.numbered number empty$ not and 654 | { bbl.colon * number * } 655 | 'skip$ 656 | if$ 657 | link.title 658 | 'add.link 659 | 'skip$ 660 | if$ 661 | } 662 | if$ 663 | } 664 | 665 | FUNCTION {tie.or.space.connect} 666 | { duplicate$ text.length$ #3 < 667 | { "~" } 668 | { " " } 669 | if$ 670 | swap$ * * 671 | } 672 | 673 | FUNCTION {either.or.check} 674 | { empty$ 675 | 'pop$ 676 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 677 | if$ 678 | } 679 | 680 | FUNCTION {is.digit} 681 | { duplicate$ empty$ 682 | { pop$ #0 } 683 | { chr.to.int$ 684 | duplicate$ "0" chr.to.int$ < 685 | { pop$ #0 } 686 | { "9" chr.to.int$ > 687 | { #0 } 688 | { #1 } 689 | if$ 690 | } 691 | if$ 692 | } 693 | if$ 694 | } 695 | 696 | FUNCTION {is.number} 697 | { 's := 698 | s empty$ 699 | { #0 } 700 | { s text.length$ 'charptr := 701 | { charptr #0 > 702 | s charptr #1 substring$ is.digit 703 | and 704 | } 705 | { charptr #1 - 'charptr := } 706 | while$ 707 | charptr not 708 | } 709 | if$ 710 | } 711 | 712 | FUNCTION {format.volume} 713 | { volume empty$ not 714 | { volume is.number 715 | { entry.lang lang.zh = 716 | { "第 " volume * " 卷" * } 717 | { "volume" volume tie.or.space.connect } 718 | if$ 719 | } 720 | { volume } 721 | if$ 722 | } 723 | { "" } 724 | if$ 725 | } 726 | 727 | FUNCTION {format.number} 728 | { number empty$ not 729 | { number is.number 730 | { entry.lang lang.zh = 731 | { "第 " number * " 册" * } 732 | { "number" number tie.or.space.connect } 733 | if$ 734 | } 735 | { number } 736 | if$ 737 | } 738 | { "" } 739 | if$ 740 | } 741 | 742 | FUNCTION {format.volume.number} 743 | { volume empty$ not 744 | { format.volume } 745 | { format.number } 746 | if$ 747 | } 748 | 749 | FUNCTION {format.title.vol.num} 750 | { title 751 | sentence.case.title 752 | 'change.sentence.case 753 | 'skip$ 754 | if$ 755 | entry.numbered 756 | { number empty$ not 757 | { bbl.colon * number * } 758 | 'skip$ 759 | if$ 760 | } 761 | { format.volume.number 's := 762 | s empty$ not 763 | { bbl.colon * s * } 764 | 'skip$ 765 | if$ 766 | } 767 | if$ 768 | } 769 | 770 | FUNCTION {format.series.vol.num.title} 771 | { format.volume.number 's := 772 | series empty$ not 773 | { series 774 | sentence.case.title 775 | 'change.sentence.case 776 | 'skip$ 777 | if$ 778 | entry.numbered 779 | { bbl.wide.space * } 780 | { bbl.colon * 781 | s empty$ not 782 | { s * bbl.wide.space * } 783 | 'skip$ 784 | if$ 785 | } 786 | if$ 787 | title * 788 | sentence.case.title 789 | 'change.sentence.case 790 | 'skip$ 791 | if$ 792 | entry.numbered number empty$ not and 793 | { bbl.colon * number * } 794 | 'skip$ 795 | if$ 796 | } 797 | { format.title.vol.num } 798 | if$ 799 | link.title 800 | 'add.link 801 | 'skip$ 802 | if$ 803 | } 804 | 805 | FUNCTION {format.booktitle.vol.num} 806 | { booktitle 807 | entry.numbered 808 | 'skip$ 809 | { format.volume.number 's := 810 | s empty$ not 811 | { bbl.colon * s * } 812 | 'skip$ 813 | if$ 814 | } 815 | if$ 816 | } 817 | 818 | FUNCTION {format.series.vol.num.booktitle} 819 | { format.volume.number 's := 820 | series empty$ not 821 | { series bbl.colon * 822 | entry.numbered 823 | { bbl.colon * } 824 | { s empty$ not and 825 | { s * bbl.wide.space * } 826 | { bbl.colon * } 827 | if$ 828 | } 829 | booktitle * 830 | } 831 | { format.booktitle.vol.num } 832 | if$ 833 | in.booktitle 834 | { duplicate$ empty$ not entry.lang lang.en = and 835 | { "In: " swap$ * } 836 | 'skip$ 837 | if$ 838 | } 839 | 'skip$ 840 | if$ 841 | } 842 | 843 | FUNCTION {format.journal} 844 | { journal 845 | italic.jounal 846 | 'italicize 847 | 'skip$ 848 | if$ 849 | } 850 | 851 | FUNCTION {set.entry.mark} 852 | { entry.mark empty$ not 853 | 'pop$ 854 | { mark empty$ not 855 | { pop$ mark 'entry.mark := } 856 | { 'entry.mark := } 857 | if$ 858 | } 859 | if$ 860 | } 861 | 862 | FUNCTION {format.mark} 863 | { show.mark 864 | { medium empty$ not 865 | { entry.mark "/" * medium * 'entry.mark := } 866 | { entry.is.electronic 867 | { entry.mark "/OL" * 'entry.mark := } 868 | 'skip$ 869 | if$ 870 | } 871 | if$ 872 | "\allowbreak[" entry.mark * "]" * 873 | } 874 | { "" } 875 | if$ 876 | } 877 | 878 | FUNCTION {num.to.ordinal} 879 | { duplicate$ text.length$ 'charptr := 880 | duplicate$ charptr #1 substring$ 's := 881 | s "1" = 882 | { "st" * } 883 | { s "2" = 884 | { "nd" * } 885 | { s "3" = 886 | { "rd" * } 887 | { "th" * } 888 | if$ 889 | } 890 | if$ 891 | } 892 | if$ 893 | } 894 | 895 | FUNCTION {format.edition} 896 | { edition empty$ 897 | { "" } 898 | { edition is.number 899 | { entry.lang lang.zh = 900 | { edition " 版" * } 901 | { edition num.to.ordinal " ed." * } 902 | if$ 903 | } 904 | { entry.lang lang.en = 905 | { edition change.sentence.case 's := 906 | s "Revised" = s "Revised edition" = or 907 | { "Rev. ed." } 908 | { s " ed." *} 909 | if$ 910 | } 911 | { edition } 912 | if$ 913 | } 914 | if$ 915 | } 916 | if$ 917 | } 918 | 919 | FUNCTION {format.publisher} 920 | { publisher empty$ not 921 | { publisher } 922 | { school empty$ not 923 | { school } 924 | { organization empty$ not 925 | { organization } 926 | { institution empty$ not 927 | { institution } 928 | { "" } 929 | if$ 930 | } 931 | if$ 932 | } 933 | if$ 934 | } 935 | if$ 936 | } 937 | 938 | FUNCTION {format.address.publisher} 939 | { address empty$ not 940 | { address 941 | format.publisher empty$ not 942 | { bbl.colon * format.publisher * } 943 | { entry.is.electronic not show.missing.address.publisher and 944 | { bbl.colon * bbl.sine.nomine * } 945 | 'skip$ 946 | if$ 947 | } 948 | if$ 949 | } 950 | { entry.is.electronic not show.missing.address.publisher and 951 | { format.publisher empty$ not 952 | { bbl.sine.loco bbl.colon * format.publisher * } 953 | { bbl.sine.loco.sine.nomine } 954 | if$ 955 | } 956 | { format.publisher empty$ not 957 | { format.publisher } 958 | { "" } 959 | if$ 960 | } 961 | if$ 962 | } 963 | if$ 964 | } 965 | 966 | FUNCTION {extract.before.dash} 967 | { duplicate$ empty$ 968 | { pop$ "" } 969 | { 's := 970 | #1 'charptr := 971 | s text.length$ #1 + 'len := 972 | { charptr len < 973 | s charptr #1 substring$ "-" = not 974 | and 975 | } 976 | { charptr #1 + 'charptr := } 977 | while$ 978 | s #1 charptr #1 - substring$ 979 | } 980 | if$ 981 | } 982 | 983 | FUNCTION {extract.after.dash} 984 | { duplicate$ empty$ 985 | { pop$ "" } 986 | { 's := 987 | #1 'charptr := 988 | s text.length$ #1 + 'len := 989 | { charptr len < 990 | s charptr #1 substring$ "-" = not 991 | and 992 | } 993 | { charptr #1 + 'charptr := } 994 | while$ 995 | { charptr len < 996 | s charptr #1 substring$ "-" = 997 | and 998 | } 999 | { charptr #1 + 'charptr := } 1000 | while$ 1001 | s charptr global.max$ substring$ 1002 | } 1003 | if$ 1004 | } 1005 | 1006 | FUNCTION {contains.dash} 1007 | { duplicate$ empty$ 1008 | { pop$ #0 } 1009 | { 's := 1010 | { s empty$ not 1011 | s #1 #1 substring$ "-" = not 1012 | and 1013 | } 1014 | { s #2 global.max$ substring$ 's := } 1015 | while$ 1016 | s empty$ not 1017 | } 1018 | if$ 1019 | } 1020 | 1021 | FUNCTION {format.year} 1022 | { year empty$ not 1023 | { year extract.before.dash } 1024 | { date empty$ not 1025 | { date extract.before.dash } 1026 | { "empty year in " cite$ * warning$ 1027 | urldate empty$ not 1028 | { "[" urldate extract.before.dash * "]" * } 1029 | { "" } 1030 | if$ 1031 | } 1032 | if$ 1033 | } 1034 | if$ 1035 | extra.label * 1036 | } 1037 | 1038 | FUNCTION {format.date} 1039 | { type$ "patent" = type$ "newspaper" = or 1040 | date empty$ not and 1041 | { date } 1042 | { year } 1043 | if$ 1044 | } 1045 | 1046 | FUNCTION {format.editdate} 1047 | { date empty$ not 1048 | { "\allowbreak(" date * ")" * } 1049 | { "" } 1050 | if$ 1051 | } 1052 | 1053 | FUNCTION {format.urldate} 1054 | { urldate empty$ not entry.is.electronic and 1055 | { urldate } 1056 | { "" } 1057 | if$ 1058 | } 1059 | 1060 | FUNCTION {hyphenate} 1061 | { 't := 1062 | "" 1063 | { t empty$ not } 1064 | { t #1 #1 substring$ "-" = 1065 | { "-" * 1066 | { t #1 #1 substring$ "-" = } 1067 | { t #2 global.max$ substring$ 't := } 1068 | while$ 1069 | } 1070 | { t #1 #1 substring$ * 1071 | t #2 global.max$ substring$ 't := 1072 | } 1073 | if$ 1074 | } 1075 | while$ 1076 | } 1077 | 1078 | FUNCTION {format.pages} 1079 | { pages empty$ 1080 | { "" } 1081 | { pages hyphenate } 1082 | if$ 1083 | } 1084 | 1085 | FUNCTION {format.journal.volume} 1086 | { volume empty$ not 1087 | { bold.journal.volume 1088 | { "\textbf{" volume * "}" * } 1089 | { volume } 1090 | if$ 1091 | } 1092 | { "" } 1093 | if$ 1094 | } 1095 | 1096 | FUNCTION {format.journal.number} 1097 | { number empty$ not 1098 | { "\penalty0 (" number * ")" * } 1099 | { "" } 1100 | if$ 1101 | } 1102 | 1103 | FUNCTION {format.journal.pages} 1104 | { pages empty$ 1105 | { "" } 1106 | { ":\penalty0 " pages hyphenate * } 1107 | if$ 1108 | } 1109 | 1110 | FUNCTION {format.periodical.year.volume.number} 1111 | { year empty$ not 1112 | { year extract.before.dash } 1113 | { "empty year in periodical " cite$ * warning$ } 1114 | if$ 1115 | volume empty$ not 1116 | { ", " * volume extract.before.dash * } 1117 | 'skip$ 1118 | if$ 1119 | number empty$ not 1120 | { "\penalty0 (" * number extract.before.dash * ")" * } 1121 | 'skip$ 1122 | if$ 1123 | year contains.dash 1124 | { "--" * 1125 | year extract.after.dash empty$ 1126 | volume extract.after.dash empty$ and 1127 | number extract.after.dash empty$ and not 1128 | { year extract.after.dash empty$ not 1129 | { year extract.after.dash * } 1130 | { year extract.before.dash * } 1131 | if$ 1132 | volume empty$ not 1133 | { ", " * volume extract.after.dash * } 1134 | 'skip$ 1135 | if$ 1136 | number empty$ not 1137 | { "\penalty0 (" * number extract.after.dash * ")" * } 1138 | 'skip$ 1139 | if$ 1140 | } 1141 | 'skip$ 1142 | if$ 1143 | } 1144 | 'skip$ 1145 | if$ 1146 | } 1147 | 1148 | FUNCTION {check.url} 1149 | { url empty$ not 1150 | { "\url{" url * "}" * 'entry.url := 1151 | #1 'entry.is.electronic := 1152 | } 1153 | { howpublished empty$ not 1154 | { howpublished #1 #5 substring$ "\url{" = 1155 | { howpublished 'entry.url := 1156 | #1 'entry.is.electronic := 1157 | } 1158 | 'skip$ 1159 | if$ 1160 | } 1161 | { note empty$ not 1162 | { note #1 #5 substring$ "\url{" = 1163 | { note 'entry.url := 1164 | #1 'entry.is.electronic := 1165 | } 1166 | 'skip$ 1167 | if$ 1168 | } 1169 | 'skip$ 1170 | if$ 1171 | } 1172 | if$ 1173 | } 1174 | if$ 1175 | } 1176 | 1177 | FUNCTION {format.url} 1178 | { entry.url empty$ not 1179 | { new.block entry.url } 1180 | { "" } 1181 | if$ 1182 | } 1183 | 1184 | FUNCTION {check.doi} 1185 | { doi empty$ not 1186 | { #1 'entry.is.electronic := } 1187 | 'skip$ 1188 | if$ 1189 | } 1190 | 1191 | FUNCTION {is.in.url} 1192 | { 's := 1193 | s empty$ 1194 | { #1 } 1195 | { entry.url empty$ 1196 | { #0 } 1197 | { s text.length$ 'len := 1198 | entry.url text.length$ 'charptr := 1199 | { entry.url charptr len substring$ s = not 1200 | charptr #0 > 1201 | and 1202 | } 1203 | { charptr #1 - 'charptr := } 1204 | while$ 1205 | charptr 1206 | } 1207 | if$ 1208 | } 1209 | if$ 1210 | } 1211 | 1212 | FUNCTION {format.doi} 1213 | { "" 1214 | doi empty$ not show.doi and 1215 | { "" 's := 1216 | doi 't := 1217 | #0 'numnames := 1218 | { t empty$ not} 1219 | { t #1 #1 substring$ 'tmp.str := 1220 | tmp.str "," = tmp.str " " = or t #2 #1 substring$ empty$ or 1221 | { t #2 #1 substring$ empty$ 1222 | { s tmp.str * 's := } 1223 | 'skip$ 1224 | if$ 1225 | s empty$ s is.in.url or 1226 | 'skip$ 1227 | { numnames #1 + 'numnames := 1228 | numnames #1 > 1229 | { ", " * } 1230 | { "DOI: " * } 1231 | if$ 1232 | "\doi{" s * "}" * * 1233 | } 1234 | if$ 1235 | "" 's := 1236 | } 1237 | { s tmp.str * 's := } 1238 | if$ 1239 | t #2 global.max$ substring$ 't := 1240 | } 1241 | while$ 1242 | 's := 1243 | s empty$ not 1244 | { new.block s } 1245 | { "" } 1246 | if$ 1247 | } 1248 | 'skip$ 1249 | if$ 1250 | } 1251 | 1252 | FUNCTION {check.electronic} 1253 | { "" 'entry.url := 1254 | #0 'entry.is.electronic := 1255 | 'check.doi 1256 | 'skip$ 1257 | if$ 1258 | 'check.url 1259 | 'skip$ 1260 | if$ 1261 | medium empty$ not 1262 | { medium "MT" = medium "DK" = or medium "CD" = or medium "OL" = or 1263 | { #1 'entry.is.electronic := } 1264 | 'skip$ 1265 | if$ 1266 | } 1267 | 'skip$ 1268 | if$ 1269 | } 1270 | 1271 | FUNCTION {format.note} 1272 | { note empty$ not show.note and 1273 | { note } 1274 | { "" } 1275 | if$ 1276 | } 1277 | 1278 | FUNCTION {empty.misc.check} 1279 | { author empty$ title empty$ 1280 | year empty$ 1281 | and and 1282 | key empty$ not and 1283 | { "all relevant fields are empty in " cite$ * warning$ } 1284 | 'skip$ 1285 | if$ 1286 | } 1287 | 1288 | FUNCTION {monograph} 1289 | { output.bibitem 1290 | author empty$ not 1291 | { format.authors } 1292 | { editor empty$ not 1293 | { format.editors } 1294 | { "empty author and editor in " cite$ * warning$ 1295 | "" 1296 | } 1297 | if$ 1298 | } 1299 | if$ 1300 | output 1301 | new.block 1302 | format.series.vol.num.title "title" output.check 1303 | "M" set.entry.mark 1304 | format.mark "" output.after 1305 | new.block 1306 | format.translators output 1307 | new.sentence 1308 | format.edition output 1309 | new.block 1310 | format.address.publisher output 1311 | format.pages output 1312 | format.year "year" output.check 1313 | fin.entry 1314 | } 1315 | 1316 | FUNCTION {incollection} 1317 | { output.bibitem 1318 | format.authors output 1319 | author format.key output 1320 | new.block 1321 | format.title "title" output.check 1322 | "M" set.entry.mark 1323 | format.mark "" output.after 1324 | new.block 1325 | format.translators output 1326 | new.slash 1327 | format.editors output 1328 | new.block 1329 | format.series.vol.num.booktitle "booktitle" output.check 1330 | new.block 1331 | format.edition output 1332 | new.block 1333 | format.address.publisher output 1334 | format.pages output 1335 | format.year "year" output.check 1336 | fin.entry 1337 | } 1338 | 1339 | FUNCTION {periodical} 1340 | { output.bibitem 1341 | format.authors output 1342 | author format.key output 1343 | new.block 1344 | format.title "title" output.check 1345 | "J" set.entry.mark 1346 | format.mark "" output.after 1347 | new.block 1348 | format.periodical.year.volume.number output 1349 | new.block 1350 | format.address.publisher output 1351 | format.date "year" output.check 1352 | fin.entry 1353 | } 1354 | 1355 | FUNCTION {article} 1356 | { output.bibitem 1357 | format.authors output 1358 | author format.key output 1359 | new.block 1360 | format.title "title" output.check 1361 | "J" set.entry.mark 1362 | format.mark "" output.after 1363 | new.block 1364 | format.journal "journal" output.check 1365 | format.journal.volume output 1366 | format.journal.number "" output.after 1367 | format.journal.pages "" output.after 1368 | format.year "year" output.check 1369 | fin.entry 1370 | } 1371 | 1372 | FUNCTION {patent} 1373 | { output.bibitem 1374 | format.authors output 1375 | author format.key output 1376 | new.block 1377 | format.title "title" output.check 1378 | "P" set.entry.mark 1379 | format.mark "" output.after 1380 | new.block 1381 | format.date "year" output.check 1382 | format.urldate "" output.after 1383 | format.url output 1384 | format.doi output 1385 | new.block 1386 | format.note output 1387 | fin.entry 1388 | } 1389 | 1390 | FUNCTION {electronic} 1391 | { #1 #1 check.electronic 1392 | #1 'entry.is.electronic := 1393 | output.bibitem 1394 | format.authors output 1395 | author format.key output 1396 | new.block 1397 | format.series.vol.num.title "title" output.check 1398 | "EB" set.entry.mark 1399 | format.mark "" output.after 1400 | new.block 1401 | format.url output 1402 | format.urldate output 1403 | fin.entry 1404 | } 1405 | 1406 | FUNCTION {misc} 1407 | { journal empty$ not 1408 | 'article 1409 | { booktitle empty$ not 1410 | 'incollection 1411 | { publisher empty$ not 1412 | 'monograph 1413 | { entry.is.electronic 1414 | 'electronic 1415 | { "Z" set.entry.mark 1416 | monograph 1417 | } 1418 | if$ 1419 | } 1420 | if$ 1421 | } 1422 | if$ 1423 | } 1424 | if$ 1425 | empty.misc.check 1426 | } 1427 | 1428 | FUNCTION {archive} 1429 | { "A" set.entry.mark 1430 | misc 1431 | } 1432 | 1433 | FUNCTION {book} { monograph } 1434 | 1435 | FUNCTION {booklet} { book } 1436 | 1437 | FUNCTION {collection} 1438 | { "G" set.entry.mark 1439 | monograph 1440 | } 1441 | 1442 | FUNCTION {database} 1443 | { "DB" set.entry.mark 1444 | electronic 1445 | } 1446 | 1447 | FUNCTION {dataset} 1448 | { "DS" set.entry.mark 1449 | electronic 1450 | } 1451 | 1452 | FUNCTION {inbook} { book } 1453 | 1454 | FUNCTION {inproceedings} 1455 | { "C" set.entry.mark 1456 | incollection 1457 | } 1458 | 1459 | FUNCTION {conference} { inproceedings } 1460 | 1461 | FUNCTION {map} 1462 | { "CM" set.entry.mark 1463 | misc 1464 | } 1465 | 1466 | FUNCTION {manual} { monograph } 1467 | 1468 | FUNCTION {mastersthesis} 1469 | { "D" set.entry.mark 1470 | monograph 1471 | } 1472 | 1473 | FUNCTION {newspaper} 1474 | { "N" set.entry.mark 1475 | article 1476 | } 1477 | 1478 | FUNCTION {online} 1479 | { "EB" set.entry.mark 1480 | electronic 1481 | } 1482 | 1483 | FUNCTION {phdthesis} { mastersthesis } 1484 | 1485 | FUNCTION {proceedings} 1486 | { "C" set.entry.mark 1487 | monograph 1488 | } 1489 | 1490 | FUNCTION {software} 1491 | { "CP" set.entry.mark 1492 | electronic 1493 | } 1494 | 1495 | FUNCTION {standard} 1496 | { "S" set.entry.mark 1497 | misc 1498 | } 1499 | 1500 | FUNCTION {techreport} 1501 | { "R" set.entry.mark 1502 | misc 1503 | } 1504 | 1505 | FUNCTION {unpublished} 1506 | { "Z" set.entry.mark 1507 | misc 1508 | } 1509 | 1510 | FUNCTION {default.type} { misc } 1511 | 1512 | MACRO {jan} {"January"} 1513 | 1514 | MACRO {feb} {"February"} 1515 | 1516 | MACRO {mar} {"March"} 1517 | 1518 | MACRO {apr} {"April"} 1519 | 1520 | MACRO {may} {"May"} 1521 | 1522 | MACRO {jun} {"June"} 1523 | 1524 | MACRO {jul} {"July"} 1525 | 1526 | MACRO {aug} {"August"} 1527 | 1528 | MACRO {sep} {"September"} 1529 | 1530 | MACRO {oct} {"October"} 1531 | 1532 | MACRO {nov} {"November"} 1533 | 1534 | MACRO {dec} {"December"} 1535 | 1536 | MACRO {acmcs} {"ACM Computing Surveys"} 1537 | 1538 | MACRO {acta} {"Acta Informatica"} 1539 | 1540 | MACRO {cacm} {"Communications of the ACM"} 1541 | 1542 | MACRO {ibmjrd} {"IBM Journal of Research and Development"} 1543 | 1544 | MACRO {ibmsj} {"IBM Systems Journal"} 1545 | 1546 | MACRO {ieeese} {"IEEE Transactions on Software Engineering"} 1547 | 1548 | MACRO {ieeetc} {"IEEE Transactions on Computers"} 1549 | 1550 | MACRO {ieeetcad} 1551 | {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} 1552 | 1553 | MACRO {ipl} {"Information Processing Letters"} 1554 | 1555 | MACRO {jacm} {"Journal of the ACM"} 1556 | 1557 | MACRO {jcss} {"Journal of Computer and System Sciences"} 1558 | 1559 | MACRO {scp} {"Science of Computer Programming"} 1560 | 1561 | MACRO {sicomp} {"SIAM Journal on Computing"} 1562 | 1563 | MACRO {tocs} {"ACM Transactions on Computer Systems"} 1564 | 1565 | MACRO {tods} {"ACM Transactions on Database Systems"} 1566 | 1567 | MACRO {tog} {"ACM Transactions on Graphics"} 1568 | 1569 | MACRO {toms} {"ACM Transactions on Mathematical Software"} 1570 | 1571 | MACRO {toois} {"ACM Transactions on Office Information Systems"} 1572 | 1573 | MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} 1574 | 1575 | MACRO {tcs} {"Theoretical Computer Science"} 1576 | 1577 | FUNCTION {sortify} 1578 | { purify$ 1579 | "l" change.case$ 1580 | } 1581 | 1582 | FUNCTION {chop.word} 1583 | { 's := 1584 | 'len := 1585 | s #1 len substring$ = 1586 | { s len #1 + global.max$ substring$ } 1587 | 's 1588 | if$ 1589 | } 1590 | 1591 | FUNCTION {format.lab.names} 1592 | { 's := 1593 | s #1 "{vv~}{ll}{, jj}{, ff}" format.name$ 't := 1594 | t get.str.lang 'name.lang := 1595 | name.lang lang.en = 1596 | { t #1 "{vv~}{ll}" format.name$} 1597 | { t #1 "{ll}{ff}" format.name$} 1598 | if$ 1599 | s num.names$ #1 > 1600 | { bbl.space * bbl.et.al * } 1601 | 'skip$ 1602 | if$ 1603 | } 1604 | 1605 | FUNCTION {author.key.label} 1606 | { author empty$ 1607 | { key empty$ 1608 | { cite$ #1 #3 substring$ } 1609 | 'key 1610 | if$ 1611 | } 1612 | { author format.lab.names } 1613 | if$ 1614 | } 1615 | 1616 | FUNCTION {author.editor.key.label} 1617 | { author empty$ 1618 | { editor empty$ 1619 | { key empty$ 1620 | { cite$ #1 #3 substring$ } 1621 | 'key 1622 | if$ 1623 | } 1624 | { editor format.lab.names } 1625 | if$ 1626 | } 1627 | { author format.lab.names } 1628 | if$ 1629 | } 1630 | 1631 | FUNCTION {author.key.organization.label} 1632 | { author empty$ 1633 | { key empty$ 1634 | { organization empty$ 1635 | { cite$ #1 #3 substring$ } 1636 | { "The " #4 organization chop.word #3 text.prefix$ } 1637 | if$ 1638 | } 1639 | 'key 1640 | if$ 1641 | } 1642 | { author format.lab.names } 1643 | if$ 1644 | } 1645 | 1646 | FUNCTION {editor.key.organization.label} 1647 | { editor empty$ 1648 | { key empty$ 1649 | { organization empty$ 1650 | { cite$ #1 #3 substring$ } 1651 | { "The " #4 organization chop.word #3 text.prefix$ } 1652 | if$ 1653 | } 1654 | 'key 1655 | if$ 1656 | } 1657 | { editor format.lab.names } 1658 | if$ 1659 | } 1660 | 1661 | FUNCTION {calc.short.authors} 1662 | { type$ "book" = 1663 | type$ "inbook" = 1664 | or 1665 | 'author.editor.key.label 1666 | { type$ "collection" = 1667 | type$ "proceedings" = 1668 | or 1669 | { editor empty$ not 1670 | 'editor.key.organization.label 1671 | 'author.key.organization.label 1672 | if$ 1673 | } 1674 | 'author.key.label 1675 | if$ 1676 | } 1677 | if$ 1678 | 'short.list := 1679 | } 1680 | 1681 | FUNCTION {calc.label} 1682 | { calc.short.authors 1683 | short.list 1684 | "(" 1685 | * 1686 | format.year duplicate$ empty$ 1687 | short.list key field.or.null = or 1688 | { pop$ "" } 1689 | 'skip$ 1690 | if$ 1691 | * 1692 | 'label := 1693 | } 1694 | 1695 | INTEGERS { seq.num } 1696 | 1697 | FUNCTION {init.seq} 1698 | { #0 'seq.num :=} 1699 | 1700 | FUNCTION {int.to.fix} 1701 | { "000000000" swap$ int.to.str$ * 1702 | #-1 #10 substring$ 1703 | } 1704 | 1705 | FUNCTION {presort} 1706 | { set.entry.lang 1707 | set.entry.numbered 1708 | show.url show.doi check.electronic 1709 | calc.label 1710 | label sortify 1711 | " " 1712 | * 1713 | seq.num #1 + 'seq.num := 1714 | seq.num int.to.fix 1715 | 'sort.label := 1716 | sort.label * 1717 | #1 entry.max$ substring$ 1718 | 'sort.key$ := 1719 | } 1720 | 1721 | STRINGS { longest.label last.label next.extra } 1722 | 1723 | INTEGERS { longest.label.width last.extra.num number.label } 1724 | 1725 | FUNCTION {initialize.longest.label} 1726 | { "" 'longest.label := 1727 | #0 int.to.chr$ 'last.label := 1728 | "" 'next.extra := 1729 | #0 'longest.label.width := 1730 | #0 'last.extra.num := 1731 | #0 'number.label := 1732 | } 1733 | 1734 | FUNCTION {forward.pass} 1735 | { last.label label = 1736 | { last.extra.num #1 + 'last.extra.num := 1737 | last.extra.num int.to.chr$ 'extra.label := 1738 | } 1739 | { "a" chr.to.int$ 'last.extra.num := 1740 | "" 'extra.label := 1741 | label 'last.label := 1742 | } 1743 | if$ 1744 | number.label #1 + 'number.label := 1745 | } 1746 | 1747 | FUNCTION {reverse.pass} 1748 | { next.extra "b" = 1749 | { "a" 'extra.label := } 1750 | 'skip$ 1751 | if$ 1752 | extra.label 'next.extra := 1753 | extra.label 1754 | duplicate$ empty$ 1755 | 'skip$ 1756 | { "{\natexlab{" swap$ * "}}" * } 1757 | if$ 1758 | 'extra.label := 1759 | label extra.label * 'label := 1760 | } 1761 | 1762 | FUNCTION {bib.sort.order} 1763 | { sort.label 'sort.key$ := 1764 | } 1765 | 1766 | FUNCTION {begin.bib} 1767 | { preamble$ empty$ 1768 | 'skip$ 1769 | { preamble$ write$ newline$ } 1770 | if$ 1771 | "\begin{thebibliography}{" number.label int.to.str$ * "}" * 1772 | write$ newline$ 1773 | "\providecommand{\natexlab}[1]{#1}" 1774 | write$ newline$ 1775 | "\providecommand{\url}[1]{#1}" 1776 | write$ newline$ 1777 | "\expandafter\ifx\csname urlstyle\endcsname\relax\relax\else" 1778 | write$ newline$ 1779 | " \urlstyle{same}\fi" 1780 | write$ newline$ 1781 | show.doi 1782 | { "\providecommand{\href}[2]{\url{#2}}" 1783 | write$ newline$ 1784 | "\providecommand{\doi}[1]{\href{https://doi.org/#1}{#1}}" 1785 | write$ newline$ 1786 | } 1787 | 'skip$ 1788 | if$ 1789 | } 1790 | 1791 | FUNCTION {end.bib} 1792 | { newline$ 1793 | "\end{thebibliography}" write$ newline$ 1794 | } 1795 | 1796 | READ 1797 | 1798 | EXECUTE {init.state.consts} 1799 | 1800 | EXECUTE {load.config} 1801 | 1802 | EXECUTE {init.seq} 1803 | 1804 | ITERATE {presort} 1805 | 1806 | SORT 1807 | 1808 | EXECUTE {initialize.longest.label} 1809 | 1810 | ITERATE {forward.pass} 1811 | 1812 | REVERSE {reverse.pass} 1813 | 1814 | ITERATE {bib.sort.order} 1815 | 1816 | SORT 1817 | 1818 | EXECUTE {begin.bib} 1819 | 1820 | ITERATE {call.type$} 1821 | 1822 | EXECUTE {end.bib} 1823 | -------------------------------------------------------------------------------- /gmcmthesis.cls: -------------------------------------------------------------------------------- 1 | % 2 | % This is file `gmcmthesis.cls', 3 | % created by latexstudio.net 4 | % update by andy123t 5 | % 6 | 7 | \NeedsTeXFormat{LaTeX2e}[1995/12/01] 8 | \ProvidesClass{gmcmthesis}[2023/09/19 v2.4 update by andy123t] 9 | %% Inital Code 10 | \newif\if@gmcm@bwprint\@gmcm@bwprintfalse 11 | \newif\if@gmcm@preface\@gmcm@prefacetrue 12 | % tokens definition 13 | %%%% 承诺书 14 | \newcommand\gmcm@tokens@keywords{} 15 | \newcommand*\gmcm@tokens@tihao{} 16 | \newcommand*\gmcm@tokens@baominghao{} 17 | \newcommand*\gmcm@tokens@schoolname{} 18 | \newcommand*\gmcm@tokens@membera{} 19 | \newcommand*\gmcm@tokens@memberb{} 20 | \newcommand*\gmcm@tokens@memberc{} 21 | \newcommand*\gmcm@tokens@supervisor{} 22 | \newcommand*\gmcm@tokens@yearinput{} 23 | \newcommand*\gmcm@tokens@monthinput{} 24 | \newcommand*\gmcm@tokens@dayinput{} 25 | %%%% 编号专用页 26 | % 没有 27 | %% Declaration of Options 28 | \DeclareOption{colorprint}{\@gmcm@bwprintfalse} 29 | \DeclareOption{bwprint}{\@gmcm@bwprinttrue} 30 | \DeclareOption{withoutpreface}{\@gmcm@prefacefalse} 31 | \DeclareOption*{\PassOptionsToClass{\CurrentOption}{ctexart}} 32 | %% Executing of Options 33 | \ExecuteOptions{colorprint} 34 | \ProcessOptions\relax 35 | %% Loading Class 36 | \LoadClass[a4paper,zihao=-4]{ctexart} 37 | %% Loading Package 38 | \RequirePackage{ifxetex} 39 | \RequireXeTeX 40 | \ifxetex\else 41 | \ClassError{mcmthesis}{You must use the `xelatex' driver\MessageBreak Please choose `xelatex'}{% 42 | Just choose `xelatex', no `pdflatex' or `latex' and so on.} 43 | \fi 44 | % 页面布局 45 | \RequirePackage{geometry} 46 | % 数学宏包 47 | \RequirePackage{amsmath} 48 | \RequirePackage{amsfonts} 49 | \RequirePackage{amssymb} 50 | \RequirePackage{bm} 51 | % 设置颜色 52 | \RequirePackage{color,xcolor} 53 | % 插入图片 54 | \RequirePackage{graphicx} 55 | % 表格 56 | \RequirePackage{tabularx,array} 57 | % 调整单元格格式 58 | \RequirePackage{makecell} 59 | %% 长表格 60 | \RequirePackage{longtable} 61 | %% booktabs 提供了\toprule 等命令. 62 | \RequirePackage{booktabs} 63 | %% multirow 支持在表格中跨行 64 | \RequirePackage{multirow} 65 | %% 调整间隔, 让表格更好看些 66 | \RequirePackage{bigstrut} 67 | %% 在跨行表格中输入定界符 68 | \RequirePackage{bigdelim} 69 | % 保护脆落命令 70 | \RequirePackage{cprotect} 71 | % 设置代码环境 72 | \RequirePackage{listings,xcolor} 73 | 74 | % Matlab highlight color settings 75 | %\definecolor{mBasic}{RGB}{248,248,242} % default 76 | \definecolor{mKeyword}{RGB}{0,0,255} % bule 77 | \definecolor{mString}{RGB}{160,32,240} % purple 78 | \definecolor{mComment}{RGB}{34,139,34} % green 79 | \definecolor{mBackground}{RGB}{245,245,245} % lightgrey 80 | \definecolor{mNumber}{RGB}{128,128,128} % gray 81 | 82 | % Python highlight color settings 83 | %\definecolor{pBasic}{RGB}{248, 248, 242} % default 84 | \definecolor{pKeyword}{RGB}{228,0,128} % magenta 85 | \definecolor{pString}{RGB}{148,0,209} % purple 86 | \definecolor{pComment}{RGB}{117,113,94} % gray 87 | \definecolor{pIdentifier}{RGB}{166, 226, 46} % 88 | \definecolor{pBackground}{RGB}{245,245,245} % lightgrey 89 | \definecolor{pNumber}{RGB}{128,128,128} % gray 90 | 91 | \lstnewenvironment{Matlab}[1]{ 92 | \lstset{language=matlab, % choose the language of the code 93 | xleftmargin=20pt, 94 | xrightmargin=20pt, 95 | frame=tlbr,framesep=4pt,framerule=0.5pt, % sets the frame style 96 | %frame=shadowbox,rulesepcolor=\color{red!20!green!20!blue!20}, 97 | basicstyle=\small\fontspec{Courier New}, 98 | keywordstyle={\color{mKeyword}}, % sets color for keywords 99 | stringstyle={\color{mString}}, % sets color for strings 100 | commentstyle={\color{mComment}}, % sets color for comments 101 | backgroundcolor=\color{gray!5},%\color{pBackground}, % choose the background color 102 | rulecolor=\color{gray!50}, 103 | title=#1, % \lstname show the filename of files 104 | keywords={break,case,catch,classdef,continue,else,elseif,end,for, 105 | function,global,if,otherwise,parfor,persistent,return,spmd,switch,try,while}, 106 | showspaces=false, % show spaces adding particular underscores 107 | showstringspaces=false, % underline spaces within strings 108 | showtabs=false, % show tabs within strings adding particular underscores 109 | tabsize=4, % sets default tabsize to 2 spaces 110 | captionpos=t, % sets the caption-position to bottom 111 | breaklines=true, % sets automatic line breaking 112 | }}{} 113 | 114 | \lstnewenvironment{Python}[1]{ 115 | \lstset{language=python, % choose the language of the code 116 | xleftmargin=20pt, 117 | xrightmargin=20pt, 118 | frame=single,framesep=4pt,framerule=0.5pt, % sets the frame style 119 | %frame=shadowbox,rulesepcolor=\color{red!20!green!20!blue!20}, 120 | basicstyle=\small\ttfamily, % sets font style for the code 121 | %basicstyle=\footnotesize\fontspec{Consolas}, 122 | keywordstyle=\color{pKeyword}, % sets color for keywords 123 | stringstyle=\color{pString}, % sets color for strings 124 | commentstyle=\color{pComment}, % sets color for comments 125 | backgroundcolor=\color{gray!5},%\color{pBackground}, % choose the background color 126 | rulecolor=\color{gray!50}, 127 | title=#1, % \lstnames how the filename of files 128 | emph={format_string,eff_ana_bf,permute,eff_ana_btr}, 129 | emphstyle=\color{pIdentifier} 130 | showspaces=false, % show spaces adding particular underscores 131 | showstringspaces=false, % underline spaces within strings 132 | showtabs=false, % show tabs within strings adding particular underscores 133 | tabsize=4, % sets default tabsize to 2 spaces 134 | captionpos=t, % sets the caption-position to bottom 135 | breaklines=true, % sets automatic line breaking 136 | }}{} 137 | 138 | \lstset{ 139 | frame=tb, 140 | xleftmargin=25pt, 141 | aboveskip=3mm, 142 | belowskip=3mm, 143 | showstringspaces=false, 144 | columns=flexible, 145 | framerule=1pt, 146 | rulecolor=\color{gray!35}, 147 | backgroundcolor=\color{gray!5}, 148 | basicstyle={\small\ttfamily}, 149 | numbers=none, 150 | numberstyle=\tiny\color{gray}, 151 | keywordstyle=\color{blue}, 152 | commentstyle=\color{dkgreen}, 153 | stringstyle=\color{mauve}, 154 | breaklines=true, 155 | breakatwhitespace=true, 156 | tabsize=3, 157 | } 158 | 159 | % \RequirePackage{listings} 160 | % \definecolor{dkgreen}{rgb}{0,0.6,0} 161 | % \definecolor{gray}{rgb}{0.5,0.5,0.5} 162 | % \definecolor{mauve}{rgb}{0.58,0,0.82} 163 | % \lstset{ 164 | % xleftmargin=20pt, 165 | % xrightmargin=20pt, 166 | % frame=single, 167 | % aboveskip=3mm, 168 | % belowskip=3mm, 169 | % showstringspaces=false, 170 | % columns=flexible, 171 | % framerule=0.5pt, 172 | % framesep=4pt, 173 | % rulecolor=\color{gray!35}, 174 | % backgroundcolor=\color{gray!5}, 175 | % basicstyle={\normalsize\ttfamily}, 176 | % numbers=none, 177 | % numberstyle=\tiny\color{gray}, 178 | % keywordstyle=\color{blue}, 179 | % commentstyle=\color{dkgreen}, 180 | % stringstyle=\color{mauve}, 181 | % breaklines=true, 182 | % breakatwhitespace=true, 183 | % tabsize=3, 184 | % } 185 | 186 | 187 | % 首行缩进 188 | \RequirePackage{indentfirst} 189 | % 设置浮动体的标题 190 | \RequirePackage{caption} 191 | % 定制列表环境 192 | \RequirePackage{enumitem} 193 | % 下划线 194 | \RequirePackage{ulem} 195 | % 尺寸计算 196 | \RequirePackage{calc} 197 | \RequirePackage{titletoc,url} 198 | %参考文献 199 | \RequirePackage[numbers]{natbib} 200 | \setlength{\bibsep}{0pt plus 0.3ex} 201 | 202 | \RequirePackage{etoolbox} 203 | \AtBeginEnvironment{thebibliography}{% 204 | \phantomsection 205 | \addcontentsline{toc}{section}{\refname} 206 | } 207 | % 超链接 hyperref 的设置 208 | \RequirePackage{hyperref} 209 | %% Document Layout 210 | % 页面布局 211 | \geometry{top=30.0mm,bottom=25.0mm,left=22.5mm,right=22.5mm,headsep=8mm} 212 | \renewcommand*{\baselinestretch}{1.38} 213 | % 修改tabular 环境, 设置表格中的行间距为正文行间距. 214 | \let\gmcm@oldtabular\tabular 215 | \let\gmcm@endoldtabular\endtabular 216 | \renewenvironment{tabular}% 217 | {\bgroup% 218 | \renewcommand{\arraystretch}{1.38}% 219 | \gmcm@oldtabular}% 220 | {\gmcm@endoldtabular\egroup} 221 | % 每行缩进两个汉字 222 | \setlength\parindent{2em} 223 | % 设置字体 224 | % 代码来自https://github.com/OsbertWang/GMCMthesis 这个是OsbertWang,修正支持让各个系统自适应支持近似字体。 225 | \newif\ifmcm@mac 226 | \newif\ifmcm@windows 227 | \newif\ifmcm@fandol 228 | 229 | 230 | \@ifclasslater{ctexart}{2015/05/06}{ 231 | %\newcommand\mcm@strifeq{\csname str_if_eq_x:nnTF\endcsname} 232 | %修订错误来自:https://github.com/ustctug/ustcthesis/issues/241 233 | \newcommand\mcm@strifeq[4]{% 234 | \edef\ustc@tmp@a{#1}% 235 | \edef\ustc@tmp@b{#2}% 236 | \ifx\ustc@tmp@a\ustc@tmp@b 237 | #3% 238 | \else 239 | #4% 240 | \fi 241 | } 242 | \newcommand\mcm@fontset{\csname g__ctex_fontset_tl\endcsname} 243 | \mcm@strifeq{\mcm@fontset}{mac}{\mcm@mactrue}{} 244 | \mcm@strifeq{\mcm@fontset}{windows}{\mcm@windowstrue}{} 245 | \mcm@strifeq{\mcm@fontset}{fandol}{\mcm@fandoltrue}{} 246 | }{ 247 | \mcm@windowstrue 248 | } 249 | 250 | \ifmcm@fandol 251 | \setmainfont[ 252 | Extension = .otf, 253 | UprightFont = *-regular, 254 | BoldFont = *-bold, 255 | ItalicFont = *-italic, 256 | BoldItalicFont = *-bolditalic, 257 | ]{texgyretermes} 258 | \setsansfont[ 259 | Extension = .otf, 260 | UprightFont = *-regular, 261 | BoldFont = *-bold, 262 | ItalicFont = *-italic, 263 | BoldItalicFont = *-bolditalic, 264 | ]{texgyreheros} 265 | \setmonofont[ 266 | Extension = .otf, 267 | UprightFont = *-regular, 268 | BoldFont = *-bold, 269 | ItalicFont = *-italic, 270 | BoldItalicFont = *-bolditalic, 271 | Scale = MatchLowercase, 272 | ]{texgyrecursor} 273 | \else 274 | \setmainfont{Times New Roman} 275 | \setsansfont{Arial} 276 | \ifmcm@mac 277 | \setmonofont[Scale=MatchLowercase]{Menlo} 278 | \else 279 | \setmonofont[Scale=MatchLowercase]{Courier New} 280 | \fi 281 | \fi 282 | 283 | \ifmcm@mac 284 | \setCJKmainfont[ 285 | UprightFont = * Light, 286 | BoldFont = * Bold, 287 | ItalicFont = Kaiti SC, 288 | BoldItalicFont = Kaiti SC Bold, 289 | ]{Songti SC} 290 | \setCJKsansfont{Heiti SC} 291 | \setCJKfamilyfont{zhsong}[ 292 | UprightFont = * Light, 293 | BoldFont = * Bold, 294 | ]{Songti SC} 295 | \setCJKfamilyfont{zhhei}{Heiti SC} 296 | \setCJKfamilyfont{zhkai}{Kaiti SC} 297 | \setCJKfamilyfont{zhli}{Baoli SC} 298 | \newcommand*\lishu{\CJKfamily{zhli}} 299 | \else 300 | \ifmcm@windows 301 | \IfFileExists{C:/bootfont.bin}{ 302 | \setCJKmainfont[AutoFakeBold=2.15,ItalicFont=KaiTi_GB2312]{SimSun} 303 | \setCJKfamilyfont{zhkai}[AutoFakeBold=2.15]{KaiTi_GB2312} 304 | }{ 305 | \setCJKmainfont[AutoFakeBold=2.15,ItalicFont=KaiTi]{SimSun} 306 | \setCJKfamilyfont{zhkai}[AutoFakeBold=2.15]{KaiTi} 307 | } 308 | \setCJKsansfont[AutoFakeBold=2.15]{SimHei} 309 | \setCJKfamilyfont{zhsong}[AutoFakeBold=2.15]{SimSun} 310 | \setCJKfamilyfont{zhhei}[AutoFakeBold=2.15]{SimHei} 311 | \ifx\lishu\undefined% 312 | \setCJKfamilyfont{zhli}{LiSu} 313 | \newcommand*\lishu{\CJKfamily{zhli}} %% Do this if it is undefined 314 | \fi 315 | \else 316 | \ifmcm@fandol 317 | % \setCJKfamilyfont{zhli}{LiSu} % 需要隶书字体 最好更换其他相似字体 318 | % \newcommand*\lishu{\CJKfamily{zhli}} 319 | \providecommand{\lishu}{\kaishu} 320 | \PackageWarning{heavenlyclouds}{用楷书代替隶书} 321 | \fi 322 | \fi 323 | \fi 324 | 325 | % \ifmcm@windows 326 | % \setCJKfamilyfont{xw}{STXinwei} 327 | % \newcommand*{\xinwei}{\CJKfamily{xw}} 328 | % \else 329 | % \ifmcm@mac 330 | % \setCJKfamilyfont{xw}{Weibei SC} 331 | % \fi 332 | % \ifmcm@fandol 333 | % % \setCJKfamilyfont{xw}{STXinwei} % 需要安装华文新魏字体 最好更换其他相似字体 334 | % \providecommand{\xinwei}{\kaishu} 335 | % \PackageWarning{heavenlyclouds}{用楷书代替华文新魏} 336 | % \fi 337 | % \fi 338 | 339 | 340 | % 数学环境, 定理等设置 341 | \newtheorem{definition}{\gmcm@cap@definition} 342 | \newtheorem{theorem}{\gmcm@cap@theorem} 343 | \newtheorem{lemma}{\gmcm@cap@lemma} 344 | \newtheorem{corollary}{\gmcm@cap@corollary} 345 | \newtheorem{assumption}{\gmcm@cap@assumption} 346 | \newtheorem{conjecture}{\gmcm@cap@conjecture} 347 | \newtheorem{axiom}{\gmcm@cap@axiom} 348 | \newtheorem{principle}{\gmcm@cap@principle} 349 | \newtheorem{problem}{\gmcm@cap@problem} 350 | \newtheorem{example}{\gmcm@cap@example} 351 | \newtheorem{proof}{\gmcm@cap@proof} 352 | \newtheorem{solution}{\gmcm@cap@solution} 353 | 354 | % 浮动环境设置 355 | % 默认情况下, \LaTeX{} 要求每页的文字至少占据 20%,否则该页就只单独放置一个浮动环境, 356 | % 而这通常不是我们想要的, 我们将这个要求降低到 5%. 357 | \renewcommand*{\textfraction}{0.05} 358 | % 有时如果多个浮动环境连续放在一起, \LaTeX{} 359 | % 会将它们分在几个不同页,即使它们可在同一页放 360 | % 得下. 我们可以通过修改 |\topfraction| 和 |\bottomfraction| 分别设置顶端和底端的浮 361 | % 动环境的最大比例. 362 | \renewcommand*{\topfraction}{0.9} 363 | \renewcommand*{\bottomfraction}{0.8} 364 | % 有时\LaTeX{}会把一个浮动环境单独放在一页, 365 | % 我们要求这个环境至少要占据 85% 才能单独放在一页. 366 | % 注意: |\floatpagefraction| 的数值必须小于 |\topfraction|. 367 | \renewcommand*{\floatpagefraction}{0.85} 368 | % 关于图片 graphicx 369 | % 如果图片没有指定后缀, 依次按下列顺序搜索 370 | \DeclareGraphicsExtensions{.pdf,.eps,.jpg,.png} 371 | % 设置图表搜索路径, 可以给图表文件夹取如下名字 372 | \graphicspath{{figures/}{figure/}{pictures/}% 373 | {picture/}{pic/}{pics/}{image/}{images/}} 374 | % 图表标题 375 | \DeclareCaptionFont{song}{\songti} 376 | \DeclareCaptionFont{minusfour}{\zihao{-4}} 377 | \captionsetup[figure]{% 378 | format=hang, % 标题从第二行开始都有缩进, 应该和 justification=raggedright 的效果一样. 379 | labelsep=quad, % 分隔符是一个空格 380 | font={song,minusfour}, % 图的字体, 宋体小四 381 | position=bottom % position=bottom, 不代表标题放在下面, 标题仍放在你放\caption的位置. 382 | } 383 | \captionsetup[table]{% 384 | format=hang, % 标题从第二行开始都有缩进, 应该和 justification=raggedright 的效果一样. 385 | labelsep=quad, % 分隔符是一个空格 386 | font={song,minusfour}, % 表的字体, 宋体小四 387 | position=top % position=bottom, 不代表标题放在下面, 标题仍放在你放\caption的位置. 388 | } 389 | % 列表环境设置 390 | \setlist{% 391 | topsep=0.3em, % 列表顶端的垂直空白 392 | partopsep=0pt, % 列表环境前面紧接着一个空白行时其顶端的额外垂直空白 393 | itemsep=0ex plus 0.1ex, % 列表项之间的额外垂直空白 394 | parsep=0pt, % 列表项内的段落之间的垂直空白 395 | leftmargin=1.5em, % 环境的左边界和列表之间的水平距离 396 | rightmargin=0em, % 环境的右边界和列表之间的水平距离 397 | labelsep=0.5em, % 包含标签的盒子与列表项的第一行文本之间的间隔 398 | labelwidth=2em % 包含标签的盒子的正常宽度;若实际宽度更宽,则使用实际宽度。 399 | } 400 | 401 | % 超链接 402 | % \AtBeginDocument{% 403 | \hypersetup{% 404 | % % unicode=false, % hyperref 和 xetex 同时使用时不能开启 Unicode 选项. 405 | hyperfootnotes=true, 406 | hyperindex=true, 407 | colorlinks=true, 408 | bookmarksnumbered=true, 409 | bookmarksopen=true, 410 | bookmarksopenlevel=0, 411 | allcolors=black, 412 | breaklinks=true}% 413 | % } 414 | % \if@gmcm@bwprint 415 | % \AtBeginDocument{\hypersetup{hidelinks}} 416 | % \else\relax\fi 417 | \def\UrlAlphabet{% 418 | \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j% 419 | \do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t% 420 | \do\u\do\v\do\w\do\x\do\y\do\z\do\A\do\B\do\C\do\D% 421 | \do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M\do\N% 422 | \do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X% 423 | \do\Y\do\Z} 424 | \def\UrlDigits{\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9\do\0} 425 | \g@addto@macro{\UrlBreaks}{\UrlOrds} 426 | \g@addto@macro{\UrlBreaks}{\UrlAlphabet} 427 | \g@addto@macro{\UrlBreaks}{\UrlDigits} 428 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 429 | 430 | %% Document Markup 431 | 432 | % 生成封面, 使用\maketitle 433 | \renewcommand{\maketitle}{\par 434 | \begingroup 435 | \newpage 436 | \global\@topnum\z@ % Prevents figures from going at top of page. 437 | \ge@maketitle % 438 | \endgroup 439 | \global\let\thanks\relax 440 | \global\let\maketitle\relax 441 | \global\let\@maketitle\relax 442 | \global\let\@thanks\@empty 443 | \global\let\@author\@empty 444 | \global\let\@date\@empty 445 | \global\let\@title\@empty 446 | \global\let\title\relax 447 | \global\let\author\relax 448 | \global\let\date\relax 449 | \global\let\and\relax 450 | } 451 | \def\ge@maketitle{% 452 | \clearpage 453 | %\thispagestyle{plain}% 454 | \thispagestyle{empty} 455 | \pdfbookmark[1]{封~面}{cover} 456 | \if@gmcm@preface 457 | %\setcounter{page}{0} 458 | %\def\thepage{0} 459 | 460 | \begin{center} 461 | {\includegraphics{logo}} 462 | 463 | \vskip1.5cm 464 | {\zihao{2} \gmcm@ges@string@contents \par} 465 | \end{center} 466 | 467 | \vskip4em 468 | 469 | % \thispagestyle{gmcmheadings} 470 | \renewcommand\arraystretch{1.5} 471 | %\noindent 472 | \begin{tabularx}{\textwidth-40pt}{lX} 473 | \zihao{-2}\bfseries 学\qquad 校&\zihao{-2}\bfseries\gmcm@tokens@schoolname\\ 474 | \Xhline{1.2pt}\\ 475 | \zihao{-2}\bfseries 参赛队号&\zihao{-2}\bfseries\gmcm@tokens@baominghao\\ 476 | \Xhline{1.2pt}\\[-15pt] 477 | \multirow{3}{*}{\zihao{-2}\bfseries 队员姓名}&\zihao{-2}\bfseries 1. \gmcm@tokens@membera\hfill\null\\ 478 | \cline{2-2}\\[-15pt] 479 | &\zihao{-2}\bfseries 2. \gmcm@tokens@memberb\hfill\null\\ 480 | \cline{2-2}\\[-15pt] 481 | &\zihao{-2}\bfseries 3. \gmcm@tokens@memberc\hfill\null\\ 482 | \Xhline{1.2pt} 483 | \end{tabularx} 484 | 485 | \makenametitle 486 | } 487 | 488 | \def\makenametitle{ 489 | \clearpage 490 | \thispagestyle{plain}% 491 | \pdfbookmark[1]{标~题}{title} 492 | \setcounter{page}{1} 493 | \begin{center} 494 | %{\includegraphics[width=4cm]{logo}} 495 | {\zihao{2} \gmcm@ges@string@contents \par} 496 | \end{center} 497 | 498 | \vskip0.6cm% 499 | 500 | \begin{center} 501 | \begin{tabularx}{.95\textwidth}{@{}lX@{}} 502 | {\zihao{-2}\lishu 题\quad 目: } &\hfill\zihao{3}\heiti \@title\hfill\null\\ 503 | \cline{2-2} 504 | \end{tabularx} 505 | \end{center} 506 | 507 | \vskip0.2cm% 508 | } 509 | 510 | 511 | % 中文标题格式设置 512 | % 目录深度 513 | \setcounter{secnumdepth}{3} 514 | \def\@seccntformat#1{\csname the#1\endcsname\ \ } 515 | % 节标题格式, 居中, 使用\chinese命令修改计数器, \kern 使得数字和内容不至于太远 516 | \newcommand{\thinskip}{\hskip 0.05em\relax} 517 | % \renewcommand\thesection{\arabic{section}\thinskip.} 518 | \renewcommand\thesubsection{\arabic{section}\thinskip.\thinskip\arabic{subsection}} 519 | \renewcommand\thesubsubsection{\thesubsection\thinskip.\thinskip\arabic{subsubsection}} 520 | \renewcommand\section{\@startsection{section}{1}{\z@}% 521 | {2.5ex \@plus -1ex \@minus -.2ex}% 522 | {2.3ex \@plus.2ex}% 523 | {\bfseries\centering\zihao{4}\heiti}} 524 | \renewcommand\subsection{\@startsection{subsection}{2}{\z@}% 525 | {1.25ex\@plus -1ex \@minus -.2ex}% 526 | {1.25ex \@plus .2ex}% 527 | {\normalfont\normalsize\bfseries}} 528 | \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% 529 | {1.25ex\@plus -1ex \@minus -.2ex}% 530 | {1.2ex \@plus .2ex}% 531 | {\normalfont\normalsize\bfseries}} 532 | \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% 533 | {3.25ex \@plus1ex \@minus.2ex}% 534 | {-1em}% 535 | {\normalfont\normalsize\bfseries}} 536 | \renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% 537 | {3.25ex \@plus1ex \@minus .2ex}% 538 | {-1em}% 539 | {\normalfont\normalsize\bfseries}} 540 | 541 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 542 | %% Define new environment and command 543 | %% 摘要两个字设置为 -2 号. 544 | %% 定义摘要环境 545 | \renewenvironment{abstract}{% 546 | \if@twocolumn 547 | \section*{\gmcm@cap@abstractname}% 548 | \else 549 | \begin{center}% 550 | {\zihao{-2}\lishu\gmcm@cap@abstractname\vspace{\z@}}% 551 | \end{center}% 552 | \quotation 553 | \fi} 554 | {\if@twocolumn\else\endquotation\newpage\fi} 555 | \renewenvironment{quotation} 556 | {\list{}{\listparindent 2em% 557 | \itemindent \listparindent 558 | \rightmargin\z@ 559 | \leftmargin\z@ 560 | \parsep \z@ \@plus\p@}% 561 | \item\relax} 562 | {\endlist} 563 | 564 | \newcommand\keywords[1]{% 565 | \renewcommand{\gmcm@tokens@keywords}{#1} 566 | \par 567 | \vskip1ex 568 | {\noindent\zihao{-3}\lishu\gmcm@cap@keywordsname:}~{\gmcm@tokens@keywords} 569 | } 570 | 571 | 572 | \newcommand*\baominghao[1]{% 573 | \renewcommand{\gmcm@tokens@baominghao}{#1}} 574 | \newcommand*\schoolname[1]{% 575 | \renewcommand{\gmcm@tokens@schoolname}{#1}} 576 | \newcommand*\membera[1]{% 577 | \renewcommand{\gmcm@tokens@membera}{#1}} 578 | \newcommand*\memberb[1]{% 579 | \renewcommand{\gmcm@tokens@memberb}{#1}} 580 | \newcommand*\memberc[1]{% 581 | \renewcommand{\gmcm@tokens@memberc}{#1}} 582 | 583 | 584 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 585 | 586 | %% Initialization 587 | %%%数学定理相关的常量 588 | \newcommand*{\gmcm@cap@definition}{定义} 589 | \newcommand*{\gmcm@cap@theorem}{定理} 590 | \newcommand*{\gmcm@cap@lemma}{引理} 591 | \newcommand*{\gmcm@cap@corollary}{推论} 592 | \newcommand*{\gmcm@cap@assumption}{假设} 593 | \newcommand*{\gmcm@cap@conjecture}{猜想} 594 | \newcommand*{\gmcm@cap@axiom}{公理} 595 | \newcommand*{\gmcm@cap@principle}{定律} 596 | \newcommand*{\gmcm@cap@problem}{问题} 597 | \newcommand*{\gmcm@cap@example}{例} 598 | \newcommand*{\gmcm@cap@proof}{证明} 599 | \newcommand*{\gmcm@cap@solution}{解} 600 | %%% 中文标题名称 601 | \newcommand*{\gmcm@cap@abstractname}{摘\quad 要: } 602 | %%% 中文关键字 603 | \newcommand*{\gmcm@cap@keywordsname}{关键词} 604 | 605 | % 常量 606 | 607 | %\newcommand\gmcm@ges@string@contents{“华为杯”第十五届全国研究生\par 数学建模竞赛} 608 | \newcommand\gmcm@ges@string@contents{\includegraphics{title}} 609 | 610 | \renewcommand{\thetable}{\arabic{section}.\arabic{table}} 611 | \renewcommand{\theequation}{\arabic{section}.\arabic{equation}} 612 | \renewcommand{\thefigure}{\arabic{section}.\arabic{figure}} 613 | 614 | % 字图与子标题 615 | % \RequirePackage{subcaption} 616 | \RequirePackage[titles]{tocloft} 617 | %\renewcommand{\cftdot}{$\cdot$} 618 | %\renewcommand{\cftsecdotsep}{1.5} 619 | \renewcommand{\cftsecdotsep}{4.5} 620 | \setlength{\cftbeforesecskip}{7pt} 621 | \setlength{\cftbeforesubsecskip}{3pt} 622 | %\setlength{\cftbeforesubsecskip}{5pt} 623 | \renewcommand{\cftsecfont}{\bfseries\zihao{-4}\heiti} 624 | \renewcommand{\cftsecleader}{\cftdotfill{\cftsecdotsep}} 625 | \renewcommand{\cftsecaftersnumb}{\hskip.4em} 626 | 627 | % ----------- 设置新的生成目录命令 ------------- 628 | \newcommand{\maketoc}{ 629 | \phantomsection 630 | \pdfbookmark[1]{目~录}{contents} 631 | \tableofcontents 632 | } 633 | 634 | \RequirePackage{titletoc} 635 | \RequirePackage[title,titletoc]{appendix} 636 | 637 | \newcommand*{\gmcm@cap@appendixname}{附录} 638 | \renewcommand*\appendixname{\gmcm@cap@appendixname} 639 | 640 | % 定义附录 641 | % \let\oldappendix\appendix 642 | \renewcommand\appendix{\par 643 | \setcounter{section}{0}% 644 | \setcounter{subsection}{0}% 645 | \gdef\thesection{\appendixname\@Alph\c@section} 646 | %\gdef\thesubsection{\@Alph\c@section\thinskip.\thinskip\c@subsection} 647 | } 648 | 649 | 650 | % 设置目录格式 651 | % 节的目录格式 652 | % \titlecontents{section}[0pt]{\vspace{2mm}\bfseries\heiti} 653 | % {\thecontentslabel\hskip.5em}{}{\titlerule*[0.5pc]{.}\contentspage} 654 | % % 小节的目录格式 655 | % \titlecontents{subsection}[30pt]{\songti} 656 | % {\thecontentslabel\hskip.5em}{}{\titlerule*[0.5pc]{.}\contentspage} 657 | 658 | % \titlecontents{subsubsection}[55pt]{\songti} 659 | % {\thecontentslabel\hskip.5em}{}{\titlerule*[0.5pc]{.}\contentspage} 660 | 661 | % \pagestyle{plain} 662 | 663 | \endinput 664 | -------------------------------------------------------------------------------- /makefiles.bat: -------------------------------------------------------------------------------- 1 | @rem ------------------------------------------------ 2 | @rem LaTeX Automated Compiler 3 | @rem ------------------------------------------------ 4 | @echo off 5 | @rem ------------------------------------------------ 6 | @rem ->> Set tex compiler 7 | @rem ------------------------------------------------ 8 | set CompileName="xelatex" 9 | @rem ------------------------------------------------ 10 | @rem ------------------------------------------------ 11 | @rem ->> Get source filename 12 | @rem ------------------------------------------------ 13 | for %%F in (*.tex) do ( 14 | set FileName=%%~nF 15 | ) 16 | @rem ------------------------------------------------ 17 | @rem ->> Set environmental variables 18 | @rem ------------------------------------------------ 19 | set TEXINPUTS=.//;%TEXINPUTS% 20 | set BIBINPUTS=.//;%BIBINPUTS% 21 | set BSTINPUTS=.//;%BSTINPUTS% 22 | @rem ------------------------------------------------ 23 | @rem ->> Build textual content 24 | @rem ------------------------------------------------ 25 | %CompileName% %FileName% 26 | @rem ------------------------------------------------ 27 | @rem ->> Build references and links 28 | @rem ------------------------------------------------ 29 | bibtex %FileName% 30 | %CompileName% %FileName% 31 | %CompileName% %FileName% 32 | @rem ------------------------------------------------ 33 | @rem ->> Delete temporary file 34 | @rem ------------------------------------------------ 35 | del /q *.aux *.bbl *.blg *.log *.out *.toc *.bcf *.xml *.synctex *.nlo *.nls *.bak *.ind *.idx *.ilg *.lof *.lot *.ent-x *.tmp *.ltx *.los *.lol *.loc *.listing *.gz *.userbak *.nav *.snm *.vrb *.synctex(busy) 36 | del /q *.nav *.snm *.vrb *.fls *.xdv *.fdb_latexmk 37 | @rem ------------------------------------------------ 38 | @rem ->> View compiled file 39 | @rem ------------------------------------------------ 40 | echo ------------------------------------------------ 41 | echo %CompileName% %FileName%.tex finished... 42 | echo ------------------------------------------------ 43 | 44 | -------------------------------------------------------------------------------- /makefiles.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | #-> Get source filename 4 | find . -name "*.tex"|while read FileName; 5 | do 6 | #--- Process FileName.tex --- 7 | echo "$FileName" 8 | echo "${FileName%.tex}" 9 | #-> Compile the main file 10 | xelatex --synctex=-1 "$FileName" 11 | bibtex "${FileName%.tex}" 12 | xelatex --synctex=-1 "$FileName" 13 | xelatex --synctex=-1 "$FileName" 14 | #clear aux files 15 | rm -r *.aux *.bbl *.blg *.log *.out *.toc *.bcf *.xml *.synctex *.nlo *.nls *.bak *.ind *.idx *.ilg *.lof *.lot *.ent-x *.tmp *.ltx *.los *.lol *.loc *.listing *.gz *.userbak *.nav *.snm *.vrb 16 | done 17 | 18 | -------------------------------------------------------------------------------- /reference.bib: -------------------------------------------------------------------------------- 1 | @book{mittelbach_latex_2004, 2 | author = {Mittelbach, Frank and Goossens, Michel and Braams, Johannes and Carlisle, David and Rowley, Chris}, 3 | title = {The {\LaTeX} Companion}, 4 | edition = {2}, 5 | address = {Reading, MA, USA}, 6 | publisher = {Addison-Wesley}, 7 | pages = {107--109}, 8 | year = {2004} 9 | } 10 | 11 | @article{wright_latex3_2009, 12 | author = {Wright, Joseph}, 13 | title = {{\LaTeX}3 programming: External perspective}, 14 | journal = {TUGboat}, 15 | volume = {30}, 16 | number = {1}, 17 | pages = {107--109}, 18 | year = {2009}, 19 | urldate = {2018-07-21}, 20 | url = {http://tug.org/TUGboat/tb30-1/tb94wright-latex3.pdf}, 21 | } 22 | 23 | @online{beeton_unicode_2008, 24 | author = {Beeton, Barbara and Freytag, Asmus and Sargent III, Murray}, 25 | title = {Unicode support for mathematics}, 26 | url = {http://www.unicode.org/reports/tr25/}, 27 | urldate = {2018-07-21}, 28 | institution = {Unicode, Inc.}, 29 | year = {2008}, 30 | } 31 | 32 | @inproceedings{vieth_experiences_2009, 33 | author = {Vieth, Ulrik}, 34 | title = {Experiences typesetting mathematical physics}, 35 | booktitle = {Proceedings of EuroTeX}, 36 | year = {2009}, 37 | pages = {13}, 38 | url = {http://tug.org/TUGboat/tb30-3/tb96vieth.pdf}, 39 | } 40 | 41 | 42 | @online{ls:2024, 43 | author = {TeXer, W}, 44 | title = {\LaTeX 工作室}, 45 | month = Sept, 46 | year = {2024}, 47 | url={https://www.latexstudio.net/} 48 | } 49 | -------------------------------------------------------------------------------- /附件3:“华为杯”第二十一届中国研究生数学建模竞赛论文模板.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/附件3:“华为杯”第二十一届中国研究生数学建模竞赛论文模板.doc -------------------------------------------------------------------------------- /附件3:“华为杯”第二十一届中国研究生数学建模竞赛论文模板.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/latexstudio/GMCMthesis/f49b88a2d95c8588ff22f80c35978ab51756ac12/附件3:“华为杯”第二十一届中国研究生数学建模竞赛论文模板.pdf --------------------------------------------------------------------------------