美赛LaTeX急救指南

一年一度的美国大学生数学建模竞赛(MCM/ICM)又要开始了。在比赛中,将有一部分同学选择用LaTeX排版论文,以使论文获得更好的视觉效果;但是,就既往经验来看,其中的很大一部分同学,还并没有熟练地掌握LaTeX的相关技巧,只是比较生硬的套用网上所给的论文模板(例如通行的mcmthesis,以及本站发布的easymcm),一旦出现一些小问题就会不知所措

此份文档,是要为各位同学提供一份比较详细的LaTeX排版问答集锦,内容集中于比赛时可能出现的种种情况,对其他情形下的常见问题则并不叙述。主要着眼于本站发布的easymcm宏包,对于mcmthesis文档类在使用时的常见问题也有少量的论述。读者可将此份文档存留、收藏,待遇到问题无法自行解决时,再来到这份文档中查找解决方案。

此份文档将根据我所了解到的问题继续补充。作者有将此文档转化为pdf文档(用LaTeX撰写)的打算,但暂无时间进行此项工作。

1 关于easymcm宏包的基本信息,以及编译系统的若干问题

Q1.1: 目前通行的mcmthesis是一个“文档类”,而本站发布的easymcm是一个“宏包”。请问这二者有何区别?

Answer: 文档类(文件后缀名为.cls)是一整套预定义的文档样式,其决定了诸如标题样式、纸张大小、章节格式等属性,相当于是文档的“框架”。由LaTeX定义的基本文档类包括article、book、report等。而宏包(文件后缀名为.sty)如同编程语言中的“库文件”,可为文档提供若干补充的命令、功能和设置。这是一般的情况。不过,在实际使用时,文档类和宏包却可以发挥类同的作用,这主要是因为LaTeX系统对文档类/宏包文件的内容、格式未做太过严格的限定,因此许多功能既可以通过文档类实现,也可以通过宏包实现。mcmthesis采用的文档类样式,实现较复杂,但更为精细。本站的easymcm宏包二次开发自mcmthesis的老版本,仍然是一个宏包文件,结构简单,便于使用。

在实际使用时,文档类通过\documentclass命令确定,宏包通过\usepackage命令引用。一份可编译的tex文档可以引用多个宏包,也可以不引用任何宏包,但必须确定一种文档类。

Q1.2: 我在编译宏包时出现了以下报错信息,请问是什么问题?

! LaTeX Error: Environment abstract undefined.

Answer: ABSTRACT.tex文件是不能编译的,其已通过\input命令嵌入于PAPER.tex文件之中了。请编译PAPER.tex。

作为补充,需要提醒的是:一份可以编译的LaTeX源代码,至少要具有以下两个要素

文档类的声明(\documentclass命令);

document主环境(一段由\begin{document}与\end{document}括起来的区域)。

如果一份文档中缺少以上两个要素,说明其是作为分支文档被嵌入到其他tex代码中去了,不能用以编译。还不熟悉LaTeX文档结构的用户,可以此为依据,避免再次出错。

Q1.3: 我在编译宏包时出现了以下报错信息,请问是什么问题?

! Missing \endcsname inserted.

Answer: 这是由于您不慎编译了easymcm.sty宏包文件,其是不能编译的。请编译PAPER.tex。

Q1.4: 看起来easymcm中不支持中文(相反,mcmthesis是支持的),请问如何解决这一问题呢?

Answer: 请问您为什么要在美赛论文中插入中文?虽然现在美赛的评委里中国人越来越多了,但美赛论文还是不能用中文写的。

(补充:若您使用pdflatex编译文件,请特别注意,一定不要在论文中插入任何中文符号。否则,论文中将会生成类似于某类拉丁字符的乱码,难以检查出来,会影响论文的最终效果。如果您无法保证自己在来回切换输入法的过程中不会误敲中文符号,请使用UTF-8版本的美赛模板,并使用xelatex或lualatex进行编译。这样,不慎敲入的中文符号能够正常显示出来——尽管这仍然影响论文的美观性。)

Q1.5: 我使用CTeX套装进行排版,编译时系统报错:

! LaTeX Error: File ` lastpage.sty ' not found.

是缺少宏包吗?应如何解决呢?

Answer: 就实际经验来说,您使用的应该是非完整版的CTeX套装,缺少宏包且不能自动联网安装。在安装时,应下载带有Full字样的安装包,如下图所示(截图来自清华镜像)。

CTeX下载

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdyzd.html