在上一篇博文中,我们讲了如何安装LaTex相关的一些东西(详情请见:LATEX安装 win 10(TexLive2019+Texstudio2.12.22))终于我们弄完了所有的准备工作,接下来开始从美赛模板说起。当然,以下所有的流程都源于2020年的美赛经验。
mcmthesis 模板最早由王昭礼编写制作,服务了许多届参加美国大学生数学建模竞赛(简称:美赛)的大学生。2014 年另一位大神接手了模板的开发和维护工作,将模板由宏包改为文档类,并上传至 CTAN。截至今日,TeX Live (2015 及之后的版本) 和 MiKTeX 均收录了这个模板。
相信大部分人在此之前真的没有太多的经验,不妨先看看这篇文章 LaTeX优雅但不神秘,高效却不复杂。但是无论如何,你也需要花点心思去了解它的基本操作。
如果你看过我之前的那篇LaTex的安装教程并成功完成所有操作,理论上你不再需要继续看这一部分的内容,因为所有的宏包已经安装完毕,而且mcmthesis模板已经被TeX Live 和 MiKTeX 收录。但是为了防止错误发生,这里提供完整的自检流程。
首先,确定你的电脑上没有安装CTeX套装,如果安装请完全卸载,并安装 TeX Live 和你喜欢的编辑器。完成之后win+R打开命令行,输入以下命令(不要着急输入,先往后看看可能出现的问题):
tlmgr option repository http://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet
tlmgr update --self --all --reinstall-forcibly-removed
tlmgr install mcmthesis
第一行因为你懂的原因,我们将下载源换成清华的镜像库,当然这个库可以根据你自己的需求进行修改
第二行我们将所有的宏包更新到最新的版本
第三行安装mcmthesis模板
至此如果你熟悉命令行操作,你就拥有了美赛模板。
如果你一切正常那自然是最好的,当然如果你和博主一样在安装完成后编译模板时报错也不要着急,2020美赛的模板会有这样的问题,解决起来也不是大问题:将texlive卸载后重新安装,然后在输入上述命令行时输入:
tlmgr option repository http://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet
tlmgr install mcmthesis
博主通过去掉第二行的升级到最新版本命令解决了这个问题,个人经验如果Texlive是最新版本,此处不将所有宏包升级到最新版本也无妨。
总之,不论是不熟悉命令行操作还是安装过程出现了各种各样的问题,导致自动安装失败,亦或想选取更稳妥的方法,手动安装通常会解决大部分问题。
在这里隆重介绍LaTeX工作室,每年美赛开赛前都会更新美赛模板,除此之外里面有各种各样的模板及教程,是一个深度学习LaTeX的好地方。
点击进入之后到最下方即可下载。
下载之后解压,你会看到下图所示的这些文件,我将需要重点关注的东西用红框标出。
code文件夹是用来放附录里的代码
figures文件夹是用来存放paper中要用到的所有的图片
mcmthesis.pdf是针对当年模板的一些说明,养成良好的习惯在使用之前浏览一下对你有好处。
mcmthesis-demo.pdf就是你编译完成之后的文件。
mcmthesis-demo.tex就是我们需要的模板,双击打开。
打开之后点击构建并查看如果没有报错成功运行美赛模板就准备好了(在此之前需要对TeXstudio进行一些设置,本文开头给的链接详细讨论了这个问题)
接下来在开始文章之前有一些参数需要了解一下:
现在你可以看到真实的代码了:
需要注意的是,需要你修改的是在 \mcmsetup 部分,其中各个参数的含义在说明文档中有详细的说明,下表摘出一部分做出解释:
参数 | 含义 |
---|---|
CTeX | 兼容选项,默认关闭。当使用 2.9.2.164 版本的 CTeX 套装时请打开 |
tcn | 队伍控制号码,接受一个字符串作为值;输入的值将显示在摘要页上和每一页的页眉上;默认为 0000 |
problem | 选题,接受一个字符串作为值;输入的值将显示在摘要页上;默认为 A |
sheet | 布尔值;为真时将输出摘要页,否则不输出;默认为 true |
titleinsheet | 布尔值;为真时将在摘要页输出标题,否则不输出;默认为 false |
keywordsinsheet | 布尔值;为真时将在摘要页输出关键字,否则不输出;默认为 false |
titlepage | 布尔值;为真时将输出标题页,否则不输出;默认为 true |
abstract | 布尔值;为真时将在标题页输出摘要和关键词,否则不输出;默认值为 true |
每年的比赛要求都会有细微的差别,需要根据当年的要求来进行修改。
接下来介绍LaTeX写作辅助文档lshort你可以把该文档当作字典使用,在当中涵盖了几乎所有LaTeX的常用命令,对于美赛的paper写作非常有帮助。在搜索相关的命令之后,所有的操作都非常的简单明了言简意赅,是学习LaTeX不可或缺的资料。
首先看到 \usepackage 命令,这个命令是用来调用宏包类似于python里的 import命令。在一开始构建的模板出来是一些无意义的文本,是由于导入了 \lipsum宏包。个人经验,新手一上来不要删除随机生成的文本,在你需要修改的时候再一部分一部分的去修改。
逻辑严密的同学已经注意到了LaTeX开始正文是这样的:
\begin{document}
LaTeX is elegent!
\end{document}
这也是一个基本的格式 \begin{}+内容+\end{} 贯穿着LaTeX始终。包括优雅的数学公式、正副标题以及各种表格分段。再者,有些同学喜欢首行缩进可以通过以下命令控制:
\usepackage{indentfirst}
\setlength{\parindent}{2em}
第一个命令放置在正文开始前,第二个命令放置在正文开始后,其中2em是指控制缩进字符为中文两字符。
标题的设置也非常的简单:
正标题:
\section{LaTeX is fantastic}
二级标题
\subsection{LaTeX is easy}
三级标题:
\subsubsection{Never too old to learn LaTeX}
有些年份的美赛要求将目录打出,则需要使用以下命令:
\newpage
\tableofcontents
\thispagestyle{empty}
\newpage
\setcounter{page}{1}
首先 \newpage命令将以下内容放置在新的一页,把目录页与摘要页分开,其次 \tableofcontents 显示目录页。这里有点小细节需要注意以下,组委会一般是不会将目录页纳入解决方案的总页数当中,所以 \thispagestyle{empty} 将本页的所有样式删除包括页眉。接着 \newpage 另起一页,将本页页码置1
在一些问题的讨论中,我们需要将讨论点罗列出来,但又不至于到分段讨论的层次可以使用如下命令:
\begin{itemize}
\item the angular velocity of the bat,
\item the velocity of the ball, and
\item the position of impact along the bat.
\end{itemize}
\item 之后就是你需要列出的关键点,效果如下图,可以极大的丰富paper的样式。
当然如果你不喜欢这种 · 样式,可以采用下面的这种形式:
\begin{enumerate}[1.]
\item LaTeX is fantastic
\item LaTeX is easy
\item Never too old to learn LaTeX
\end{enumerate}
图片在美赛的赛场上很关键,精致的排版一定会为你的paper加分。由于LaTeX图片自适应的这种模式会让图片出现在你不想让它出现的地方,由于大小没有设置好跳到下一页打乱了排版是常有的事。所以,可以在所有文字工作全部完成后统一插入图片进行排版,当然你也可以按照正常的工作进度将图片就顺带的排版工作完成,只不过后期的工作量可能会加大。
常见的图片使用以下命令放置 ,值得注意的是你在插入图片的时候确保图片在之前提到的figure文件夹中
\begin{figure}[h]
\small
\centering
\includegraphics[width=8cm]{example-image-a}
\caption{The name of figure} \label{fig:aa}
\end{figure}
[h]参数代表你想在该处插入图片,\centering 参数将图片居中操作,width用来调节图片的宽度,紧接着是插入的图片文件名。\caption用来说明本章图片的标题。效果见下图
**想把好几张照片放在一起并拥有小标题**可以参考如下操作:
首先需要添加宏包 \usepackage{subfig}
\begin{figure}[h]
\centering
\subfloat[LaTeX is fantastic
]{\includegraphics[width=5cm]{example-image-a}}\quad
\subfloat[LaTeX is easy
]{\includegraphics[width=5cm]{example-image-b}}\quad
\subfloat[Never too old to learn LaTeX
]{\includegraphics[width=5cm]{example-image-c}}\\
\caption{LaTeX}
\end{figure}
LaTeX数学公式分为行内公式以及行间公式两种:
行内公式非常的简单由 $ $ 两边是美元符号,中间就是你需要编辑的公式,公式的具体表示方式非常的多种多样,你可以在lshort里找到各种各样非常详细的公式指令,包括不常见的数学专业字符,LaTeX的优雅之处便体现了出来。
在这里给出两个示例,用来说明行间公式以及行内公式的区别:
The Pythagorean theorem is$a^2 + b^2 = c^2$.
该命令为行内公式命令,效果如下图所示:
而行间公式则是需要独立的环境:
The Pythagorean theorem is:
\begin{equation}
a^2 + b^2 = c^2 \label{pythagorean}
\end{equation}
Equation \eqref{pythagorean} is called `Gougu theorem' in Chinese.
其效果如下图所示:
当然,数学公式里常见的还有矩阵的操作,也是在备赛美赛的过程中必不可少的一节:
\begin{equation}
\mathbf{Z}=\left(
\begin{array}{ccc}
z_{11}& \ldots & z_{n1}\\
\vdots & \ddots & \vdots\\
z_{1n} & \ldots &z_{mn}
\end{array} \right)
\end{equation}
其中的 \\是指换行,可以轻松的控制矩阵的行列数。array后跟着的ccc是用来控制列数的对齐方式,每一个 & 字符隔开了矩阵的每一个元素,上述公示的渲染结果为:
对照控制指令看就非常的明了。
依旧需要参考文献的环境:
\begin{thebibliography}{99}
\bibitem{1} D.~E. KNUTH The \TeX{}book the American
Mathematical Society and Addison-Wesley
Publishing Company , 1984-1986.
\bibitem{2}Lamport, Leslie, \LaTeX{}: `` A Document Preparation System '',
Addison-Wesley Publishing Company, 1986.
\bibitem{3}\url{http://www.latexstudio.net/}
\bibitem{4}\url{http://www.chinatex.org/}
\end{thebibliography}
逻辑非常的清晰,环境中 \bibitem 后就是你需要引用文献的详细说明。
在这里顺便说一下文献的引用,绝对引用非常简单,直接在你的文字后方输入 \cite{} 即可:
LaTeX is fantastic. \cite{1}
效果是这样的,非常的简单明了:
当然还有相对引用,其实这个我们已经见到了,向上看行间公式的编辑命令,在你想后期进行引用的公式后方添加 \label{},然后在后期引用的地方添加 \ eqref{} 即可完成引用,括号中可随意填写label的名称,但是不能缺省。示例见行间公式的例子。
终于我们到了最后一部分附录环节,当然如果你的代码量极其之大不如直接放github链接上去,既简洁又整齐,如果你的代码非常规范可读性强,可以考虑如下方法将其放在附录里。
照常,开始附录的环境:
\begin{appendices}
\textbf{\textcolor[rgb]{0.98,0.00,0.00}{Input matlab source:}}
\lstinputlisting[language=Matlab]{./code/mcmthesis-matlab1.m}
\section{Second appendix}
some more text \textcolor[rgb]{0.98,0.00,0.00}{\textbf{Input C++ source:}}
\lstinputlisting[language=C++]{./code/mcmthesis-sudoku.cpp}
\end{appendices}
附录里可以放置不同类型的代码,不同语言注意修改language参数,最重要的一点,将源文件放入code文件夹中,防止意外的发生。
此篇博文非常简略的展示了一些美赛常用的东西,所有指令都是经过测试,应当不会出现很大的偏差。当然,时间有限本篇博文在涉及到一些细小琐碎的东西时并没有进行展开的讲解,相信机智的读者肯定可以大致理解其含义,毕竟都是见多识广的coder。
当然,想要冲击更好的奖项,熟练的使用LaTeX也是一门必修课。Paper是最终呈现到评委面前的东西,其中有些细节还需读者仔细打磨。2020美赛暂告一段落但是LaTeX的用途也不仅限于此,它提供给我们一种不同于Word的排版软件,的确也是一种新鲜的体验,比赛的辛酸与收获,还需各位自己慢慢品尝。
LaTeX工作室
lshort
优秀的讲解视频:
从0开始的美赛LaTeX模板使用教学一
从0开始的美赛LaTeX模板使用教学二