admin管理员组文章数量:1664593
目录
- 1 关于
easymcm
宏包的基本信息,以及编译系统的若干问题 - 2 图片、表格、数学公式、网址的处理
- 3 样式、字体字号、段落的设置
- 4 目录、交叉引用的相关问题
关于标题不能换行的问题:这里有解决方案
一年一度的美国大学生数学建模竞赛(MCM/ICM)又要开始了。在比赛中,将有一部分同学选择用LaTeX
排版论文,以使论文获得更好的视觉效果;但是,就既往经验来看,其中的很大一部分同学,还并没有熟练地掌握LaTeX
的相关技巧,只是比较生硬的套用网上所给的论文模板(例如通行的mcmthesis
,以及本站发布的easymcm
),一旦出现一些小问题就会不知所措。
此份文档,是要为各位同学提供一份比较详细的LaTeX
排版问答集锦,内容集中于比赛时可能出现的种种情况,对其他情形下的常见问题则并不叙述。主要着眼于本站发布的easymcm
宏包,对于mcmthesis
文档类在使用时的常见问题也有少量的论述。读者可将此份文档存留、收藏,待遇到问题无法自行解决时,再来到这份文档中查找解决方案。
此份文档将根据我所了解到的问题继续补充。作者有将此文档转化为pdf
文档(用LaTeX
撰写)的打算,但暂无时间进行此项工作。本文的markdown
源码已发布于GitHub
上,戳这里看看。
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
字样的安装包,如下图所示(截图来自清华镜像)。
另外,补充说明:尽管大多数资深的LaTeX
用户都不推荐大家使用老旧的CTeX
套装(我作为一个初级的LaTeX
用户也不推荐),但easymcm
宏包的更新过程中仍将充分考虑与CTeX
套装的兼容性。许多新手仍然先接触到CTeX
套装,这是不以人的意志为转移的现状。
2 图片、表格、数学公式、网址的处理
Q2.1: 我还不太会插入图标和表格,怎么办怎么办!
Answer: easymcm
的发行版本中附带有一份样例论文,其源码中有大量的图、表插入命令,可供参考。另外,您也可参考一般的LaTeX
教程。
Q2.2: 较大的表格,不易用
LaTeX
命令编写。请问是否有解决方案?
Answer: 一般而言,有两种解决方案:
- 使用有关工具将
Excel
、Matlab
等表格(矩阵)格式转换为LaTeX
命令,或直接在可视化界面中编辑表格并转换为LaTeX
命令。一个可用的工具是Excel2LaTeX
(LaTeXStudio上的中文介绍与下载、CTAN
上的发布页面),另一个可以在线转换的网页是TablesGenerator
(点此进入,我推荐这一方式)。其中的若干门道,这里就不再介绍了,用户可以自行尝试。 - 将表格截图后以图片形式插入到
LaTeX
中。这是最方便的做法,问题在于截图是位图格式的,对文档的显示效果可能有一定的影响。同时,在插入截图时,还应采取这样的“古怪”方式:
\begin{table}[!htbp]
\centering
\caption{Name of the table}\label{tb:XXX}
\includegraphics[width=Xcm]{XXX.jpg}
\end{table}
由此,显示出的标题将是“Table X: Name of the table”,而不是“Figure”。原理上,figure
环境与table
环境都是浮动对象,没有本质上的区别,主要区别就在其标题名称(也即\caption
命令的效果)上。
Q2.3:
easymcm
自带的样例论文中,所有的表格几乎都是三线表。不能使用更复杂的样式吗?
Answer: 三线表是科技论文中的通用表格形式,简洁明快,在美赛论文中的确不推荐用其他类型的表格。但是,如果需要处理特别复杂的表格,必须在表格中用若干竖线分隔(这是三线表中不应该出现的!),则还是用默认的表格样式为好。不建议新手自己用代码写复杂表格,请按照Q2.2中所提供的解决方案来生成复杂表格的LaTeX
代码。关于三线表的更多信息,可以查看三线表宏包booktabs
的说明文档。
Q2.4:
LaTeX
中的公式代码太繁琐了,记不住、用不熟,怎么破?
Answer: 如果您已经比较熟悉LaTeX
中数学公式的基本语法,以及若干的数学环境,只是对具体的符号代码感到苦恼,可以准备一份公式代码表在手头以供查阅。各种纸质的、在线的LaTeX
教程中,都有这样的公式符号代码表。我的资源分享页面中所引用的两种电子版教程(A Primer以及lshort
)中,也有这样的表可供查阅。
如果您对基本的公式语法都感到陌生,则建议您利用其他可视化编辑器生成LaTeX
代码。使用Office
套装处理文档的用户,应该比较熟悉MathType
公式编辑器了,其内置有生成TeX
代码的模块,具体的配置方法可在网上容易地找到(前提是,您使用的是完整版的MathType
,不是在试用期结束后残存的“精简版”)。另外,还有一个较好的在线公式编辑器,语言可调整为中文,使用十分便捷,同时也可以充当一个公式表:如果您遗忘了某些符号,或记不清矩阵、积分号等的使用方法,可直接在界面上寻找对应按钮,点击就能生成规范的LaTeX
代码。
Q2.5: 插入由
\texttt
引导的网址时,出现了不能换行的问题。如何解决?
Answer: 打字机字族ttfamily
在TeX
的底层定义中,默认是不能换行的。(参考这个知乎上的回答)解决方案不少,本站提供的easymcm
宏包中是用url
宏包下\UrlBreaks
命令定义换行字符来解决的。不幸的是,我目前所提供的样例论文中并没有应用这一方案——那时我和队友还在学习LaTeX
论文排版,采用的手段还是手动换行。为了自动换行,请在论文正文及参考文献区采用\url
命令将需要引用的网址括起来,例如一个含网址的bibitem
应写成这样:
\bibitem{XXX}Easymcm: A useful template for MCM/ICM. 2019.1.22. \url{https://wwwblogs/xjtu-blacksmith/p/9737960.html}
效果如下图所示,可见自动换行的问题已解决了。特别注意,\url
是一个抄录环境——也就是说,在其中不需要将_
、^
、$
等字符做转义处理。
3 样式、字体字号、段落的设置
Q3.1: 我想将论文字体调整为
Times New Roman
,请问如何做?
Answer: 首先,美赛官方未要求论文字体,仅要求论文的字号不小于12号,因此任何字体都是可以的。其次,如果您一定要使用一般情况下的规范字体Times New Roman
,首先应将PAPER.tex
导言区中的\usepackage{palatino}
去掉,然后再在原位置引用另一宏包:
\usepackage{mathptmx}
再次编译即可。mathptmx
宏包提供了一种可用的Times New Roman
字体。详细内容,可以参考LaTeXStudio上的一篇介绍),读者也可以尝试该页面上所提供的其他方案。
Q3.2: 如何调整段间距?
Answer: 在easymcm
宏包目前版本(v5.02
)的模板文件夹内,ABSTRACT.tex
文件中,有一段已经被注释掉的命令:
% 下面的语句可调整全文行距为标准值的0.6倍,请自行使用
% \renewcommand{\baselinestretch}{0.6}\normalsize
将下面命令的注释号去掉,即可使之生效;修改其倍数,即可调整段落间距的大小(设为0
则表示不需要段间距)。
Q3.3: 为调整页边距,我在导言区加载了
geometry
宏包后页面显示有问题,请问哪里出了问题?
Answer: easymcm
中已经加载过geometry
宏包了,再次加载会出错(有如在C++
程序中多次引用头文件的错误)。不推荐用户修改相关参数。如一定要修改,则应打开easymcm.sty
并修改引用geometry
宏包时所设定的参数。
特别说明:论文排版时常用的各类宏包,诸如geometry
、hyperref
、booktabs
、fontspec
、fancyhdr
、xcolor
、graphicx
等,全部都在easymcm
之中加载过了,切不可在论文正文的导言区再次加载。如果要修改加载这些宏包时所设置的参数,请使用宏包所提供的设置接口,或直接到easymcm.sty
的对应位置修改。
Q3.4: 如何修改目录、正文标题的样式?
Answer: 不推荐用户修改。如果您有能力轻松地修改这些样式,那何必过来用easymcm
这样的入门级模板呢?如您一定要定制自己的论文样式,可以参考这个页面(但注意,请不要在美赛论文中使用\ctexset
之类的中文处理命令,easymcm
中并未添加对中文的支持!),也可参考titlesec
宏包的说明文档——处理目录、标题样式的titlesec
、titletoc
宏包均已在easymcm
中加载过了。
Q3.5: 我使用的美赛模板是
mcmthesis
文档类,默认的论文样式中有多余的摘要页。请问如何去除?
Answer: 使用mcmthesis
自带的设置命令:
\mcmsetup{CTeX = false, tcn = 1234567, problem = A,%
sheet = true, titleinsheet = true, keywordsinsheet = true,%
titlepage = false, abstract = false}
即可将其调整到符合美赛论文规范的程度(队伍控制号tcn
和选题problem
需根据实际情况再做调整)。其他问题,请用户参考mcmthesis
自带的说明文档(原则上,如果您安装的是完整版的TeX
发行版,则可以直接用本地搜索引擎搜索到mcmthesis.pdf
这份参考文档)。您也可直接联系mcmthesis
目前的维护者,在[LaTeXStudio]上您可以找到其站长(mcmthesis
目前的维护者)的联系方式。
4 目录、交叉引用的相关问题
Q4.1: 编译后,生成了空白的目录,请问发生了什么?!
Answer: 重复编译几次即可。别慌。
Q4.2: 如何自己定义目录上各条目的样式?
Answer: 请参考问题Q3.4的回答。
Q4.3: 我的论文章节太多,导致目录生成了两页。如何将其压缩到一页以内?
Answer: 美赛论文理应短小精悍、结构突出,一篇20页的论文不应有太过繁密的章节划分。目录应当控制在一页以内,因此easymcm
宏包中未考虑目录超出一页的情形。如果目录被迫超出一页(即实在无法删减章节),有下列解决方案:
(1) 将目录页上的字号改小,方法是到easymcm.sty
的第125行左右,加入一条缩小字号的命令:
%=========目录的制作==========
\renewcommand\tableofcontents{%
\centerline{\normalfont\Large\bfseries\contentsname%
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\vskip 3ex%
\small% 这条命令是新加入的
\@starttoc{toc}%
}
该方法对于目录内容仅微微多于一页的情形是适用的。
(2) 不显示三级标题,只显示二级标题。方法是到easymcm.sty
的第48行,将原来的\setcounter{tocdepth}{3}
改成\setcounter{tocdepth}{2}
。(也可在不修改sty
文件的前提下,直接在PAPER.tex
的导言区声明\setcounter{tocdepth}{2}
,以覆盖之前的计数器。)
(3) 定制目录样式,去掉目录中section
级别标题的默认顶部间距。方法在网上可查到,但不推荐,因目录样式定制不是一件容易的事情。
如您坚持认为自己的论文必须有两页目录,请参考一位博友所引用的解决方案:知乎页面。
Q4.4: 我设置了正确的
\label
&\ref
引用,但输出的论文中却显示出“??”,这是什么情况?
Answer: 请参考Q4.1的回答。
转载于:https://wwwblogs/xjtu-blacksmith/p/mcmaid.html
版权声明:本文标题:美赛LaTeX急救指南 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1730023720a1219751.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论