简介:针对美国大学生数学建模竞赛(MCM/ICM)的LaTeX论文模板压缩包,全程配中文注释,显著降低国内参赛者的排版门槛,使其专注模型推导与论文构思。资源共6个文件:tex主文档用于组织摘要、引言、模型建立、结果分析与结论等章节;cls样式文件预设竞赛要求的页边距、字体和标题样式;bib文件统一管理参考文献;eps示例图片提供插图样例;py与m文件作为建模代码参考,整体仅84KB,体量轻巧。目前已有145人学习下载。压缩包还保留了figures与code目录,方便图片和程序归类;中文注释逐段解释LaTeX命令,并细化说明模板各部分的作用,附带清晰的文件结构说明,即使新手也能快速套用,借助该模板,可高效完成符合美赛官方规范的论文版式与结构,省去格式调整时间;其中对目录和引用的定义较通用,同样适用于毕业设计等学术写作场景,具有不错的扩展性。
1. 美赛LaTeX论文模板(中文注释).zip:拿到手先别急着写,先让它编译通过
美国大学生数学建模竞赛(MCM/ICM)的最终交付物是一篇不超过25页的PDF论文。用Word排公式和图表,尤其是多列布局、页眉页脚、参考文献管理,到后期会让你想摔电脑。而这个带中文注释的LaTeX模板zip,就是为了让参赛者从「找模板」这件破事里解脱出来,把精力留在建模和写作上。它自带美赛要求的页眉、摘要页、标题页、目录结构,注释直接写在你需要改的位置。我见过太多队伍下载完模板后,第一反应是去改内容,连编译都没跑通过。这篇文章就按我自己的使用习惯,从解压、配置环境、改参数,到踩坑和进阶,一条路讲清楚。
2. 把zip变成PDF:先装好本地LaTeX再谈写作
2.1 安装TeX Live还是MacTeX:本地部署的两种选择
你拿到的是zip压缩包,解压出来是一堆.tex、.cls、.sty文件。这些文件本身不是PDF,得靠LaTeX编译引擎渲染。第一步是装一个本地LaTeX发行版。常见做法是Windows/Linux用TeX Live,macOS用MacTeX。TeX Live的好处是跨平台、包全,一次装完基本不用再补宏包。我一般直接装完整版,虽然占地几个GB,但省去以后为了一个宏包折腾半小时。MacTeX其实是TeX Live的macOS套壳,安装包更大,但对mac用户最省心。
装的时候有个取舍:在线安装脚本用install-tl可以选套餐,如果你只是给美赛用,scheme-small也够先跑起来,但后面一旦遇到模板依赖的宏包不在里边,就得用tlmgr install 包名补。我建议直接上完整scheme,别在这上面省时间。Windows用户更简单,下载exe安装包,一路Next,但记得把「安装为系统PATH」勾上,否则后面命令行找不到pdflatex。装完在终端里敲一句latex -v,能弹出版本号就说明PATH没问题。
mac用户装完MacTeX之后,也要确认/Library/TeX/texbin在你的PATH里。我见过不少mac用户卡在VS Code编译时提示latexmk not found,其实是shell没读到TeX Live的bin目录。用export PATH="/Library/TeX/texbin:$PATH"加进~/.zshrc就能解决。这一步做完,你的机器才算“本地部署”完成。
2.2 用VS Code配LaTeX Workshop跑通最小例子
编辑器我推荐VS Code,配合LaTeX Workshop扩展。Vim和TeXstudio当然也行,但VS Code的配置最通用,网上一搜一大把。安装扩展后,先别急,打开设置,搜索latex-workshop.latex.recipes和latex-workshop.latex.tools。美赛模板一般用pdflatex或xelatex编译,如果模板里有中文注释但最终正文是英文,用pdflatex没问题;但如果你改写成中文摘要,就得用xelatex。推荐直接配一个latexmk,让它自动判断。
配置片段如下,保存到settings.json里:
{ "latex-workshop.latex.tools": [ { "name": "latexmk", "command": "latexmk", "args": [ "-xelatex", "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%" ] } ], "latex-workshop.latex.recipes": [ { "name": "latexmk", "tools": ["latexmk"] } ], "latex-workshop.view.pdf.viewer": "tab" }这里%DOC%是当前打开的tex文件主名。-xelatex指定引擎,如果你的模板纯英文,可以改成-pdflatex。-synctex=1是为了PDF和tex源码双向跳转,调试时点左边能跳到对应代码行。-interaction=nonstopmode很重要,它让编译遇到错误不弹交互窗口,而是直接输出日志,方便你定位错误——不然编译器卡在某个错误上,你都不知道它在等什么。
保存配置文件后,在VS Code里新建一个测试文件test.tex,写入一个空白的文档:
\documentclass{article} \begin{document} Hello, MCM. \end{document}按Ctrl+Alt+B编译,能看到PDF生成就算环境通了。这一步我称为“最小可运行验证”,它能区分环境问题还是模板问题。跑不通就先把VS Code、Perl(latexmk依赖)和LaTeX发行版这三者对齐。
2.3 解压zip和首次编译:为什么第一遍必须从clean开始
解压这个zip时,注意两件事:路径不要出现中文和空格;文件夹名也改成英文,比如mcm_template。很多LaTeX工具链对空格和Unicode路径的处理有历史问题,我吃过一次亏:放在“桌面/美赛模板”这个路径下,pdflatex直接报I can't find file。把路径改成英文后,同一个文件一次通过。
解压后先看目录结构,一般会有mcmthesis.cls、mcmthesis.dtx、mcmthesis.pdf、还有一个主.tex文件。别急着改,先整包编译一遍。但注意:模板包里可能带上一轮编译生成的.aux、.log、.pdf残留文件,这些辅助文件会干扰首次编译。我一般先执行一次清理:
rm -f *.aux *.log *.bbl *.blg *.out *.toc *.synctex.gz然后再用默认引擎编译。如果你用latexmk,直接一条命令:
latexmk -xelatex -synctex=1 -interaction=nonstopmode mcmthesis.tex为什么强调先clean?因为.aux文件里记录了上一轮的标签、引用和交叉引用,如果模板作者用的是pdflatex,你换xelatex后可能因为字体编码差异报错。清掉之后,编译器自己重新生成一套,干净。我第一次跑这个模板时不理解,直接按F5编译,结果页眉引用编号错乱,查了半天发现是旧.aux残留。
编译完成后,打开PDF检查第一页是不是标准的MCM/ICM页眉——就是顶部那条有Contest Control Number和Team Number的横线。如果看到,模板就活了。这个步骤的意义,是让你先拥有一个“能编译的白盒子”,之后每改一处,都能确定是自己改坏的,而不是模板本身坏的。
3. 拆开模板看门道:.tex主文件与cls类文件的角色分工
3.1 主文件mcmthesis.tex的骨架:documentclass到end{document}
很多参赛者拿到模板,第一反应是全文搜索“Team Number”然后填数字。这没错,但你得先知道其他代码是干什么的。美赛模板的主文件通常长这样:
\documentclass{mcmthesis} \mcmsetup{CTeX=false, tcn = 1234567, team = 2123456} \title{Your Team's Title} \begin{document} \begin{abstract} 这里是摘要,不要超过一页。 \end{abstract} \tableofcontents \section{Introduction} ... \end{document}逐行看:\documentclass{mcmthesis}加载模板类文件,它才是整套排版规则的核心。\mcmsetup里的tcn是Contest Control Number,team是你的Team Control Number,这两个数字美赛官网注册时会给你,填错会直接判违规。\title是论文标题,美赛标题没有硬性格式限制,但建议别超过一行,太长页眉会挤破。
\begin{abstract}里面是摘要。美赛对摘要要求极高,评奖时评委第一页就看摘要,所以这个位置一定要留足时间打磨。注意,有些模板把摘要单独做成abstract环境,并要求\begin{abstract}写在\maketitle之前,顺序别动。\tableofcontents生成目录,如果不需要,可以直接注释掉,能省出大半页。
主文件里还有一个关键参数:摘要页的开关。常见模板里用\setlength{\parindent}{2em}这种缩进命令,也有像\linespread{1.3}调整行距的。这些都能按美赛要求微调,但别改得太激进,评委更看重内容。
3.2 cls文件里那些带中文注释的命令在管什么
真正难啃的是mcmthesis.cls。它是LaTeX类文件,定义了整套模板的外观。打开后会看到大量\newcommand和\renewcommand,比如:
\newcommand{\mcmsetup}[1]{...} \newcommand{\head} \geometry{top=1in, bottom=1in, left=1in, right=1in, headheight=13pt}这里\geometry设置页边距,美赛规定上下左右各1英寸。headheight是页眉高度,改成别的值会直接影响页眉横线位置。很多中文注释就写在这些命令旁边,告诉你“这行是控制页边距”“这行是控制页眉高度”。我的建议是:第一次打开cls文件,先不修改,只做三件事——搜索tcn、team和title三个变量,看它们怎么被传递到页眉里;搜索\pagestyle{fancy},记住页眉样式在哪定义;搜索\zihao或\fontsize,知道正文字号在哪定义。
cls文件里还有一个高频出现的东西叫\newenvironment,例如:
\newenvironment{abstract}{ \begin{center} \textbf{Summary} \end{center} }它定义了abstract环境。如果你想把“Summary”改成“Abstract”,改这里就行。但注意,美赛官方对摘要页的标题没有硬性规定,常见的用“Summary”或“Abstract”都被接受。关键是你改了环境定义,所有用到\begin{abstract}的地方都会跟着变。
3.3 摘要页和正文页:页眉页脚的字号怎么调
美赛模板的页眉是一行小字,包括Contest Control Number、Team Number、Page X of Y。这个页眉由fancyhdr宏包控制,定义在cls文件里。看这段:
\pagestyle{fancy} \fancyhf{} \fancyhead[L]{\small MCM/ICM} \fancyhead[C]{\small Team \the\value{@team}} \fancyhead[R]{\small Page \thepage\ of \pageref{LastPage}}页眉字号默认\small,这就是你搜“latex怎样调整页眉的字号”时,答案其实就在这里。想改成\footnotesize,直接把三个\small替换掉。页脚如果不需要,保持\fancyhf{}为空即可。注意:这里哪一侧放什么,模板已经按美赛要求排好,别把Team号挪到左边去,评委扫一眼就能看出格式违规。
页脚常用的是页码,但有些模板把页码放在页眉右侧,正文区域不再放重复页码,这完全合法。如果你觉得页眉右侧“Page X of Y”太长占位置,可以只保留\thepage。但建议保留of \pageref{LastPage},因为美赛要求论文必须包含总页数信息,评委翻到第5页时不知道总共20页,会很烦躁。
4. 把标题、作者、摘要、模型和图表替换成自己的
4.1 标题作者和摘要页:把中文注释当成填写指南
现在模板能编译了,开始动手改内容。工作区左侧的文件树里,找到主tex文件里的注释,比如% 在这里填写论文标题、% 在这里填写队伍控制号,照着替换即可。但有一点容易踩雷:\mcmsetup里tcn和team参数,有些版本要求花括号,有些要求方括号,写法以模板注释为准。如果填错,编译不会报错,但页眉会显示空白或乱码,所以填完一定要重新编译并亲眼确认页眉数字。
摘要页不要直接复制Word里写好的中文摘要再机翻。LaTeX的摘要环境里,\textbf{...}加粗、\\换行这些命令都能用。如果摘要里要放数学符号,老老实实用$...$包裹。我见过有人把Word公式截图贴进LaTeX,导致编译后图片模糊、大小不一,评委观感很差。正确的做法是:用支持LaTeX的编辑器重新敲一遍公式,或者用MathPix这类工具将截图转成LaTeX代码,再贴在摘要里。
4.2 正文里的建模板块:问题重述、假设、符号说明的写法和对应LaTeX段落
美赛论文的固定结构是:问题重述、假设、符号说明、模型建立、求解、灵敏度分析、优缺点、结论。模板里一般没有自动生成这些section,需要自己用\section写。我建议先定义好所有section标题,再往里填内容,这样你随时知道当前写到哪,不会漏结构。
符号说明是个适合用表格的地方。常见写法是直接用tabular:
\begin{table}[htbp] \centering \begin{tabular}{ll} $a$ & 汽车加速度 \\ $v$ & 汽车速度 \\ $t$ & 时间 \\ \end{tabular} \caption{符号表} \end{table}这里[htbp]是浮动体位置参数,分别代表here、top、bottom、page,LaTeX会自动选择最优位置。但如果你要求符号表必须出现在某一段落之后,就把参数改成[H](需要加载\usepackage{float})。我一般强制[H],因为评委翻论文时,符号表跑到下一页就会一头雾水。
模型建立部分,最怕的是公式编号混乱。用equation环境自动编号:
\begin{equation} y = \beta_0 + \beta_1 x + \varepsilon \end{equation}需要用二项式系数时,就用\binom{n}{k},这个命令在数学模式下生效。别手打\begin{pmatrix}...\end{pmatrix}去硬凑,丑且容易错。公式里如果要对齐多行,用aligned环境,不要用eqnarray,后者排版间距有毛病。
4.3 图、表、公式:图片位置用H,表格跨页怎么办,word公式转latex
图片插入保持模板风格的做法是:
\begin{figure}[H] \centering \includegraphics[width=0.8\textwidth, keepaspectratio]{figures/model_structure.png} \caption{模型结构示意图} \label{fig:structure} \end{figure}[H]强制图片位置,width=0.8\textwidth让图片占页宽80%,keepaspectratio防止长图被拉伸变形。图片文件放在figures/子目录里,路径别带中文。如果编译报File not found,先检查图片扩展名——pdflatex不支持.eps以外的格式,但支持.png/.jpg/.pdf;如果你用的模板默认pdflatex,图片得是PDF或PNG。用xelatex则基本都能插入。
表格跨页是另一个高频痛点。美赛论文经常有长表格,比如数据表格或灵敏度结果。普通tabular环境一页放不下就整体跑到下一页,留下大片空白。解决办法是用longtable:
\usepackage{longtable} \begin{longtable}{cc} \caption{长数据表} \label{tab:long}\\ 变量 & 数值 \\ \endhead 1 & 2 \\ ... \end{longtable}\endhead表示每页头部重复表头。注意,longtable里不要再用[H],因为它是跨页的,不能用浮动体参数。另一个容易翻车的点是,如果你用了[H]同时表高度超过一页,会直接报错Float too large,这时就该换longtable。
Word公式转LaTeX,线上工具有MathPix、SimpleTeX,但我更推荐本地VSCode里直接用LaTeX Workshop的公式预览。你写一个$...$,鼠标悬停就能预览渲染结果,不用来回切窗口。这也是为什么我在第2章坚持让你配好VS Code。
4.4 参考文献与附录:BibTeX还是手写thebibliography
美赛对参考文献没有强制格式,但要求引用规范。两类做法:一是直接用\begin{thebibliography}手写条目,适合参考文献不超过15篇的情况;二是用BibTeX管理.bib文件。我建议美赛用前者,因为控制号、作者、年份这些信息都是固定的,手写最不会出错。
\begin{thebibliography}{9} \bibitem{ref1} D. G. Luenberger, \textit{Introduction to Linear and Nonlinear Programming}, Springer, 1984. \end{thebibliography}在正文里用\cite{ref1}引用,编译两次才能生成正确的编号。有一个常见坑:如果你先用了\cite再编译,第一次会显示[?],这是正常的,因为BibTeX要跑第三遍。所以模板首次编译时你看到[?]不要慌,再编译一次。如果你用的是latexmk,它会自动跑够多次。
附录里放代码、数据表格或补充推导,用\appendix命令开启附录模式,之后所有\section会自动变成A、B、C之类的编号。代码块用listings或verbatim包,建议用listings并配一个等宽字体:
\lstset{basicstyle=\ttfamily\footnotesize, breaklines=true}breaklines=true能让长代码行自动折行,否则会溢出页边距。附录页也会算在25页限制里,所以放代码时注意精简,不是所有代码都该放进去。
5. 美赛模板避坑:编译报错、字体缺失、图片乱跑和表格跨页
5.1 latex编译报错:缺少宏包或版本太旧
现象:首次编译这个模板zip,控制台刷出一连串! LaTeX Error: File 'xxxx.sty' not found。
原因:模板里用到的某个宏包在你的本地发行版里没装,或者发行版太旧,宏包接口变了。
解决:先看报错前的第一行,确定是哪个.sty文件缺失。然后打开终端,用tlmgr install安装,例如tlmgr install longtable。但如果你装的是完整版还有缺失,大概率是模板太老,用了已废弃的宏包。比如老模板常见fancyheadings,现在应该换成fancyhdr。这种情况我会直接改主文件里的\usepackage,把旧包名换成新包名,再重新编译。改之前先在CTAN或本地texdoc里查一下新包用法,别盲目替换。
5.2 图片跑到奇怪的位置:浮动体参数怎么调
现象:我插入的图明明写在第二节,编译出来却出现在第三节末尾,甚至跑到下一页顶部。
原因:LaTeX默认浮动体机制[htbp]会为了排版美观而移动图片,尤其图多的时候,它们会扎堆跑到某一页顶部。
解决:如果你希望图片严格按你写的顺序出现,有两个方案。第一,用\usepackage{float}并在每个figure环境上写[H],强制就位。第二,接受LaTeX的浮动体机制,自己手动调整图的位置——这其实是正规做法,把图放在对应段落之后,用\begin{figure}[t]让它出现在页面顶部,读者阅读顺序会更流畅。我个人的习惯是,单栏图片用[H],双栏图片用[t],这样既不会乱跑,也不会挤占段落中间。
5.3 表格跨页:longtable和tabu的坑
现象:一个长表格用tabular+[H],编译报错Float too large,或者表格被截断,底线都没了。
原因:[H]会把表格强制塞进当前页,表格高度超过页面剩余空间就会报错。而默认的tabular环境本身不支持断页。
解决:把环境改成longtable,并加上\endhead让每页重复表头。有一个细节:longtable里不能用[H],也不能放在table浮动环境里。另外,有些模板预载了tabu宏包,这个宏包已经多年不更新,在新版TeX Live上会报Package tabu Warning: You are using an old version...,虽然未必致命,但建议直接把tabu替换成longtabular或标准longtable,省心。
5.4 页眉页脚字号不对:改fancyhdr的声明
现象:模板默认页眉字号是\small,但美赛要求页眉文字不要太显眼,评委吐槽页眉比正文标题还大。
原因:页眉是根据fancyhdr的设置来的,模板作者在\fancyhead里用了\small,但你又额外加载了\usepackage{times}或改了全局字号,导致\small相对变大。
解决:去cls文件里找\fancyhead,把字号手动改成\footnotesize或\tiny。改完重新编译,别只在主文件里补救,因为页眉是在cls定义时用的字号。如果你不想动cls,也可以在\begin{document}之后重新设置页眉样式:
\fancyhead[R]{\footnotesize Page \thepage}这样会覆盖cls里的定义。但要注意,cls里可能有\renewcommand{\headrulewidth}{0.4pt}这类控制横线粗细的命令,如果不想有横线,把它设成0pt即可。
5.5 中文注释里的特殊字符导致编译失败
现象:模板的.cls或.tex文件里写了中文注释,用pdflatex编译时,报Unicode character ...错误,或者PDF里出现乱码黑方块。
原因:pdflatex默认只支持ASCII编码,模板里那些“中文注释”如果在保存时用了UTF-8编码,直接编译就会炸。有些模板作者用pdflatex + ctex方案,但如果CTeX宏包没配置好,中文就会变成乱码。
解决:三个办法。第一,把编译引擎换成xelatex,这是最省事的,因为XeLaTeX原生支持UTF-8。第二,在模板主文件开头加上\usepackage[UTF8]{ctex}并改用xelatex编译。第三,如果你坚持用pdflatex,就把注释里的中文删掉,改成英文注释,比如% set team number here。我自己的习惯是,参赛期间全部用xelatex,因为改图片、改字体更方便,而且VS Code的LaTeX Workshop默认也能记住引擎选择。
5.6 编译两次才出正确引用:标签交叉引用的老毛病
现象:正文里\ref{fig:structure}显示??,图编号也是问号,但图明明已经在PDF里了。
原因:LaTeX的交叉引用是写在.aux文件里的,第一次编译时还没生成引用信息。
解决:再编译一遍。如果你用latexmk,它默认会重复运行编译直到引用稳定,第2章配置的latexmk -xelatex已经包含这个特性。如果你手动用pdflatex,就编译两遍,BAU——第二次就正常。还有一种情况:你改了\label但没改引用名,也会显示??。检查拼写是否一致,大小写都敏感。
6. 进阶:把模板改成自己的样式,并用一条命令清理auxiliary files
6.1 改cls文件里的颜色、页眉、摘要标题
当你能稳定编译、替换好内容,下一步就是个性化。美赛不要求统一的封面颜色,但你可以把颜色改成学校标识色,让论文看起来更专业。在cls文件里找\usepackage{xcolor},然后定义主色:
\definecolor{mcmblue}{RGB}{0, 63, 136}再在需要的地方用{\color{mcmblue} ...}包裹标题。注意,颜色别用得太多,评委打印出来如果是黑白,花里胡哨的颜色反而看不清楚。摘要标题如果你不想用默认的“Summary”,可以在cls里把\textbf{Summary}改成\textbf{Abstract},只要整篇统一即可。
6.2 写一个build脚本:编译、清理、校验一遍过
到了比赛最后一天,你很可能改坏了文件,又忘了到底改了什么。我强烈建议你写一个build.sh放在项目根目录,把编译流程固化下来:
#!/bin/bash # 一键编译美赛模板,并清理辅助文件 set -e # 出错即停 rm -f *.aux *.log *.bbl *.blg *.out *.toc *.synctex.gz latexmk -xelatex -synctex=1 -interaction=nonstopmode -halt-on-error main.tex latexmk -c # 清理辅助文件,只保留PDF echo "编译完成,检查 main.pdf"set -e保证任何一步失败都不会继续往后走,避免“以为编译成功”的假象。-halt-on-error让编译器在第一个错误处停下来,否则它会继续编译几十个错误,日志刷屏,你根本不知道第一个错在哪。latexmk -c只清理辅助文件,留下的PDF才是你要上交的东西。我给很多队伍推荐过这个脚本,比赛最后三小时,它比任何编辑器插件都可靠。
6.3 30天冲刺建议:用这套模板做每日一练
我的个人教训是:不要等到比赛前一周才第一次打开模板。你可以用这个模板,每天把一道历年美赛题目的摘要写成一页PDF,练习如何把摘要的字数控制在1页之内,如何用LaTeX公式表达你的模型,如何排版一张漂亮的图表。三周后,你手里的模板会变成你自己熟悉的东西,而不是一件陌生工具。比赛时你唯一要担心的就是建模思路,而不是“怎么让这个表格不跑偏”。
如果你现在还在纠结要不要用这个中文注释模板,我的答案是:用,但别迷信。它帮你节省的是排版时间,不是建模时间。真正拿奖的队伍,靠的是摘要写得清楚、模型建得合理、结果分析得透彻,LaTeX只是让这些内容看起来更体面。希望这篇笔记能让你从解压zip到交出PDF,少走那几步弯路,祝你的美赛之路顺利,希望帮到你。
本文还有配套的精品资源,点击获取