如何用latex撰写博士学位论文?

Tsingke Tsingke     2022-08-21     550

关键词:

如何用 LaTeX 撰写博士学位论文?

 

一直觉得有必要写这样一篇文章,因为学位论文从格式上说更像一本书,与文章 的排版不同,不仅多出目录等文章没有的部分,而且一般要设置页眉页脚方便阅 读查找。学校有时会提出具体的格式要求,虽然复旦的要求非常简单,而且事实 上并不严格执行,但自己的论文毕竟是自己的孩子,还是要敝帚自珍的,大家都 希望做得漂亮一点。

网上已经有不少学位论文的模板,其中大都出自一两个最初的版本,针对各自学 校的要求作了一些改动。这些模板还是很方便的,如果对它们的排版效果感到完 全满意,那么直接拿来用就可以了。不过如果想调整其中某些格式,就不得不仔 细研究一下它们的代码或说明文档,有时并不那么容易。而且这些模板的导言或 cls或sty文件都写得很长,内容很多,尽可能的包含了大家有可能用到的功能, 但其实具体到每个人只有一部分是需要用到的。用一个包含"冗余"代码的模板, 总不是一件很舒服的事情。当然也许很多人抱着能用就好的态度,并不care。:)

本文是为那些对论文格式有特殊要求或喜欢自己设置格式的人写的。如果你觉得 网上能找到的论文模板已经足以满足你的需要,并且对TeX本身也没有多少兴趣, 那么你没有必要花费宝贵的时间阅读本文。

阅读本文的基础是假定你已经了解怎样用LaTeX来写普通的文章。一般的 TeX/LaTeX命令不会再作解释,重点将放在学位论文与普通文章的不同点上,以及 怎样用一些宏包方便地设置其格式。其中大部分内容来源于网络资源、工具书以 及各个宏包的说明文档,恕不一一注明,在此一并致谢!


 

首先讲一下纸张大小和页边距的设置。根据复旦的格式要求,纸张大小为A4纸, 正文用小四号字,页边距按Word中的默认设置。小四号字即12pt, Word中默认的 页边距为

上边距=2.54cm, 下边距=2.54cm, 左边距=3.17cm, 右边距=3.17cm

或者换算成更容易记忆的

上边距=1in, 下边距=1in, 左边距=1.25in, 右边距=1.25in

如果我们用book类,第一句可以写

documentclass[a4paper,12pt]{book}

然后用geometry宏包设置页边距

usepackage[top=1in,bottom=1in,left=1.25in,right=1.25in]{geometry}

但其实这样设置的页边距极不美观,尤其是左右对称的页边距没有考虑装订的需 要,而且加上页眉后这样的上边距就显得过窄。所以注重美观的话还是自己调整 一下吧。

需要注意的是,book类默认是twoside即双面打印模式,与article类默认的 oneside即单面打印模式不同。两者区别在于页边距和页码的位置。单面模式每页 的页边距都相同,双面模式则会在偶数页将设置的左、右页边距调换。如果采用 单面打印,则可在documentclass的方括号里加上oneside参数,并在geometry的 选项中适当增加左边距,减少右边距,以留出装订线的位置。但是不要忘了装订 的时候右侧一般会裁掉一点边,所以左、右边距也不要相差过大。如果采用双面 打印,则geometry中的设置被解释为奇数页的页边距,偶数页的左、右边距会自 动互换。

还有几个注意事项。首先,这里的奇数页和偶数页是针对当前page计数器的值来 说的,而不是在生成文件中总的页码。也就是说,假如当前页在整个输出中总排 序是偶数页,但当前page计数器(即显示的页码)为奇数,则当前页的页边距是按 奇数页设置的。

其次,documentclass还有一对选项openright和openany, book类默认是前者, 即每一章(包括目录)都会在奇数页开始,如果前一章的最后一页是奇数页,则会 在其后插入一页空白页,以确保新的一章仍然从奇数页开始。这是书籍的排版规 范,不建议改变,论文页数比较少的还可以借此增加页数。:)这是双面模式的情 况,在单面模式下不存在这个问题。经常有人问为什么自己明明是单面打印,却 仍然会在两章之间有一页空白页,请注意book类默认是双面模式,除非你设为 oneside, 记住告诉TeX你要的是什么!

另外,为了方便查看,页码应该放在书籍的外侧。对于单面模式,外侧就是右 侧,而对于双面模式,奇数页右侧是外侧,偶数页左侧是外侧。如何设置页码留 到后面讲设置页眉、页脚时再详细说。

至于到底是单面打印还是双面打印,看你自己的喜好了。复旦的论文规范没说, 一般的做法是博士双面、硕士单面。反正总页数少于50页的话,就不要双面了, 否则显得太单薄,书脊的内容都很难打印。

最后提一个常见的问题。如果用pdf文件来打印,在Acrobat的打印对话框里有一 项Page Scaling默认是Fit to paper, 这样打印出来整个内容就会缩小一些,不 再是设置的尺寸。这是因为打印机的可打印范围不能达到整个A4纸张的全部,而 是比A4纸的规格要小一些(具体的可打印范围跟打印机型号有关), Fit to paper 的意思就是把整个页面调整到可打印范围上去,以保证所有页面上的内容都能打 印出来。因为可打印范围总是小于A4纸的尺寸,所以打印出来总是会缩小一些。 缩小的比例一般为95%左右,与打印机型号有关。解决这个问题,只要选择Page Scaling为None就可以了。


 

这一节讲中文字体和中英文混排的问题。中文处理推荐使用CJK或新版CCT, 旧版 CCT因为年代久远,有一些bug会导致莫名其妙的问题,不建议再使用。本文以 CJK为例,中文环境为

egin{CJK*}{GBK}{song}
...
end{CJK*}

与英文习惯不同,中文排版一般没有粗体的概念,而是用宋体、黑体、楷体、仿 宋等不同的字体来加强文本效果。在CJK默认的字体定义文件中,宋体对应的粗体 是用CJKbold 命令通过微小平移字形来实现的,不仅放大后能看到锯齿,而且也 不符合中文的排版习惯。建议将宋体对应的粗体设为黑体,这样文中所有粗体命 令作用的环境中加粗的宋体都会自动变成黑体,不需要再用CJKfamily{hei}来转 换。

宋体的字体定义文件C19song.fd里典型的一段代码如下

DeclareFontFamily{C19}{song}{}
DeclareFontShape{C19}{song}{m}{n}{<-> CJK * gbksong}{}
DeclareFontShape{C19}{song}{bx}{n}{<-> CJKb * gbksong}{CJKbold}
DeclareFontShape{C19}{song}{m}{it}{<-> CJK * gbksongsl}{}
DeclareFontShape{C19}{song}{bx}{it}{<-> CJKb * gbksongsl}{CJKbold}
DeclareFontShape{C19}{song}{m}{sl}{<-> CJK * gbksongsl}{}
DeclareFontShape{C19}{song}{bx}{sl}{<-> CJKb * gbksongsl}{CJKbold}

这里C19代表GBK字符集的编码方式,m表示字符的粗细程度和宽紧程度均为中等 (medium), bx表示字符的属性为粗(bold)和松(expanded), n, it和sl分别表示正 常直立体(normal), 意大利斜体(italic)和机械斜体(slanted)。 DeclareFontShape的最后两个参数分别是字体定义和命令序列。显然,上述语句 将宋体的粗体定义为用CJKbold 生成。要将其改为黑体,只需将这段代码改为

DeclareFontFamily{C19}{song}{}
DeclareFontShape{C19}{song}{m}{n}{<-> CJK * gbksong}{}
DeclareFontShape{C19}{song}{bx}{n}{<-> CJKb * gbkhei}{}
DeclareFontShape{C19}{song}{m}{it}{<-> CJK * gbksongsl}{}
DeclareFontShape{C19}{song}{bx}{it}{<-> CJKb * gbkheisl}{}
DeclareFontShape{C19}{song}{m}{sl}{<-> CJK * gbksongsl}{}
DeclareFontShape{C19}{song}{bx}{sl}{<-> CJKb * gbkheisl}{}

实际上,正式的中文排版也不应使用斜体,而应使用楷体或仿宋代替。所以也可 以类似地将上述语句中的gbksongsl改为gbkkai或gbkfs。

上述字体定义命令可以放在sty文件中(设保存文件名为thesis.sty, 则在导言区 用usepackage{thesis}引用,后面所述的大部分命令也都可以放在sty文件中), 而不需要更改本地机器上的fd文件,以便在别的机器上也能产生同样的效果。

另外,为了方便可以定义几个简短的字体转换命令

ewcommand{song}{CJKfamily{song}}
ewcommand{hei}{CJKfamily{hei}}
ewcommand{kai}{CJKfamily{kai}}
ewcommand{fs}{CJKfamily{fs}}

以后就可以用song, hei, kai和fs在文中转换字体了。

在用egin{CJK*}{GBK}{song}开始中文环境后,应加上CJKindent和CJKtilde 两句。前者将段首缩进设为两个中文字符的宽度。后者则是为了解决中英文混排 的美观问题。CJK*环境会吞掉跟在汉字后面的空格,从而使得源文件中的换行不 会在相邻汉字之间产生空白。但是这样一来,像下面这样输入的中英文内容

中文 abc 中文

就会产生如下效果

中文abc 中文

即abc两侧的空白不一样,很不美观。为解决这个问题,CJKtilde重新定义了波 浪符~的意义,使得这个符号不再代表一个不可断行的空格,而是一个可断行的弹 性距离,加在中文和英文之间调整它们的距离。上面的中英文内容应该这样输入

中文~abc~中文

就能得到良好的效果。这个输入方式最好一开始就形成习惯,否则后来再加会很 麻烦。当然你也可以这样输入

中文abc中文

这样的话虽然中英文之间的距离太窄,但至少左右对称,比上述第一种方式略 好,是偷懒的办法。不过如果你比较在意排版质量的话,还是忍受一下输入~的麻 烦吧。

中英文混排有一些标点的问题要处理好。首先是在默认的CJK环境里,行末的中文 标点不能与边界对齐,因为中文标点也被视为一个普通的全角字符,所以看起来 行末就有了不应该有的空白,这不符合中文的排版习惯。另外,当一行文字需要 压缩或拉伸时,逗号与句号也应该区别对待,逗号后面留的空白应该比句号小一 些。这两个问题用CJKpunct 宏包就能很好地解决,只要加上 usepackage{CJKpunct}即可。

此外,中英文混排的时候是用中文标点还是英文标点呢?这并没有统一的规范。 不过比较合理也比较通行的做法是,中文后用中文标点,英文后用英文标点。比 较特殊的两个标点是句号和括号。一般数学文章习惯用全角的实心句点作为中文 句号,这样看起来与英文的句号比较一致。全角的中文括号看起来不太好看,可 以统一使用英文的括号,不过左括号前面和右括号后面最好加上波浪符~以和前后 的文字留出适当的距离。

上面说的这几点也许比较琐碎,不过也正是最能看出是否精心排版的地方。


 

下面几节讲怎样用titlesec和titletoc宏包设置章节标题、页眉页脚和目录的格 式。设置页眉页脚有一个很有名的宏包fancyhdr也可以用,不过titlesec提供的 页面设计命令更方便与它的章节标题命令配合,功能更强大。这一节先讲章节标 题格式的设置。

在引用titlesec宏包时就可以指定几个格式选项,例如

usepackage[bf,small,center,indentafter,pagestyles]{titlesec}

其中bf设置章节标题的字体为黑体,这也是默认值,可以略去。此外,还可以设 为rm(罗马体), sf(无衬线体), tt(打字机体), md(中等黑度), up(直立体), it(意大利斜体), sl(机械斜体), sc(小体大写字母)。

small设置标题字体的尺寸,还可设为big(默认), medium, tiny。

center使标题居中,还可以设为raggedleft(居左,默认), raggedright(居右)。

indentafter相当于宏包indentfirst的作用,使标题下面的第一个段落正常缩进。

pagestyles是申明后面要自定义页面样式。

下面就可以用 itleformat, itlespacing, itlelabel等命令来设置标题格 式了。因为这些命令里会用到中文,所以要在设置之前放一个空的CJK环境,如

egin{CJK*}{GBK}{song}
end{CJK*}

下面的 itleformat命令设置了章标题的格式

	itleformat{chapter}[hang]{centeringLARGEfseries}{chaptername}{1em}{}

其中chapter可以换为section, subsection等,设置节、小节等标题的格式。

hang表示标题头与标题内容在同一行,是默认值。而book类默认的章标题是标题 头与标题内容放在两个段落,对应于display选项。此外还有block, runin, leftmargin, rightmargin, frame, wrap等选项,一般不大用到。

centeringLARGEfseries这一块是设置标题的排版格式,这里设置为居中、 LARGE尺寸和黑体。

后面紧跟的是标题头的定义。book类里的标题头是英文,需要改成中文。如果希 望改成"第一章"这样的格式,则应先引用CJKnumb宏包,它提供了把阿拉伯数字转 换成中文数字的命令。然后定义

enewcommand{chaptername}{第CJKnumber{	hechapter}章}

那么 itleformat里的标题头定义chaptername就得到我们希望的效果。当然你 也可以不用中文数字而用阿拉伯数字,即定义

enewcommand{chaptername}{第~	hechapter~章}

跟在标题头定义后面的是标题头与标题内容之间的距离,这里是1em。注意,在中 文环境里1em等于一个汉字的宽度。

最后一个花括号内是在排版标题前执行的命令,这里空置。

然后用 itlespacing或 itlespacing*命令设置标题与四周的距离,例如

	itlespacing{chapter}{0pt}{*0}{*4}

将章标题与左边、上边、下边内容的距离分别设为0pt, *0, *4。这里*n表示弹性 距离,对上距离来说相当于n ex plus .3ex minus .06ex, 对下距离来说相当于 n ex plus .1ex。弹性距离因为有一定的伸缩自由度,比较容易得到美观的排版。 如果想自己指定用关键字plus, minus定义的弹性距离,可以用星号版本的命令, 即

	itlespacing*{命令}{左距离}{上距离}{下距离}

上面设置了章标题的命令,用相同的命令也可以设置节、小节等的标题格式。但 如果没有特殊的要求,只希望修改一下标题头,可以用更加简单的命令 itlelabel来设置。例如

	itlelabel{S	hetitlequad}

将章节标题设置为类似"§1 标题内容"的格式。这里quad等于hspace{1em}, 即 空出一个汉字宽度的距离。注意, itleformat命令的定义会覆盖 itlelabel的 定义,而一般来说章跟节标题的格式不一样,所以只要另外用 itleformat命令 定义章标题的格式, itlelabel的定义就只能作用于节以下层次的标题了。


 

这一节接着讲怎样用titlesec宏包提供的命令设置页眉、页脚。下面命令定义了 一个新的页面样式并使用该样式

ewpagestyle{main}{
sethead{}{}{kaismallchapternamequadchaptertitleqquad hepage}
setfoot{}{}{}headrule}
pagestyle{main}

其中sethead命令设置页眉,格式为

sethead[偶数页左页眉][偶数页中页眉][偶数页右页眉]
{奇数页左页眉}{奇数页中页眉}{奇数页右页眉}

单面打印模式只要给出奇数页的设置即可,双面模式则需要将左、右页眉做个调 换。上面给出的例子是单面模式的。

setfoot用来设置页脚,格式与sethead类似。

在页眉、页脚里可以显示章节标题、页码等内容。如上面的例子就在页眉中显示 了章标题和页码。注意,qquad相当于两个quad, 即hspace{2em}。

headrule是划出页眉线,类似地footrule划出页脚线,不过比较少用。默认页 眉线的宽度是0.4pt, 如果不满意,可以用下面命令重新设置其宽度

setheadrule{宽度}

此外,还有两种特殊情况需要处理。首先,尽管在上面例子中用 pagestyle{main}使用了自定义的页面样式,但每一章的第一页不受影响,仍然 使用默认的plain样式。在这种页面上,出于美观的考虑,一般不加页眉,而将页 码放在页脚(也有人喜欢不加页码)。所以plain样式(没有页眉,页码放在页脚中 间)已经基本符合要求,不必修改。如果需要修改,可定义一个新的页面样式,再 用下面命令重定义plain样式

enewpagestyle{plain}{新的页面样式}

其次,在目录、参考文献或以chapter*命令生成的章,上面页眉定义中的标题头 chaptername是不应该显示的。所以有必要定义一个页面样式在这种特殊的章使 用,例如可以定义

ewpagestyle{special}{
sethead{}{}{kaismallchaptertitleqquad hepage}
setfoot{}{}{}headrule}

然后在文中适当的地方用pagestyle{special}改用该样式。


 

目录是学位论文的必要组成部分。只要在正文中适当的地方用

	ableofcontents

就可以自动生成目录。但是目录的格式不总是符合个人的要求,有时还要往其中 加一些条目。用titletoc宏包提供的命令可以方便地设置目录的格式。

首先可以用

enewcommand{contentsname}{目quad 录}

将目录部分的标题改为中文。然后,用 itlecontents命令来设置不同级别目录 项的格式。例如,chapter层次的目录项格式可设置如下

	itlecontents{chapter}[0pt]{vspace{.5aselineskip}fseries}
{第CJKnumber{ hecontentslabel}章quad}{}
{hspace{.5em} itlerule*[10pt]{$cdot$}contentspage}

其中0pt是目录项到版芯左边界的距离。紧跟其后的是在排版目录项之前执行的命 令,这里vspace{.5aselineskip}表示与上文留出一定的垂直距离,该距离为 当前单倍行间距的一半。fseries把整条目录项的字体设为黑体。

后面一项是设置目录项的头部,这里设为"第一章"这样的格式,并在其后留出一 个汉字宽度的距离。紧跟的是设置目录项主体的格式,这里因为跟目录项头部相 同而空置。

再后面是设置填充命令和页码。这里先用hspace{.5em}在目录项内容后面留出一 点空白,以免跟其后的填充点靠得太近。然后用 itlerule*命令画出填充点,这 里是把垂直居中的实心圆点作为填充符号(习惯上中文不采用居下的填充点), 并 以10pt为包含一个填充符号的水平盒子的宽度,即这个宽度越小,填充点越紧密。 填充点后加上页码contentspage。

类似地可以设置section层次的目录项格式如下

	itlecontents{section}[2em]{vspace{.25aselineskip}}
{S hecontentslabelquad}{}
{hspace{.5em} itlerule*[10pt]{$cdot$}contentspage}

其中2em表示section层次的目录项距左边界有一个缩进。如果还有subsection等 层次,可以类似地定义。

但是chapter*, section*等命令生成的标题不会自动进入目录中。例如中文摘 要部分如果用下面命令开始

chapter*{摘quad 要}

那么可以紧跟其后加上

addcontentsline{toc}{chapter}{中文摘要}

就可以将中文摘要作为一个chapter层次插入目录中。英文摘要、参考文献部分均 可照此处理。随便提一下,参考文献部分的标题可用如下命令改为中文

enewcommand{ibname}{参考文献}

 

这一节讲前几节尚未提到的一些文本排版问题。

首先是行间距的设置。学校的学位论文规范中提到行间距为20pt。其实不同尺寸 的字体行间距都不相同,而是成比例关系。这个20pt是对正文主要字体来说的。 在TeX中基本的行间距是aselineskip, 对于12pt的字体,这个值等于14.5pt, 而真正的行间距是

aselineskip * aselinestretch

aselinestretch默认为1, 但我们可以重新设置它的值,如

enewcommand{aselinestretch}{1.38}

就得到真正的行间距为14.5pt*1.38≈20pt。而这样定义之后,对不同尺寸的字体 都会按同样的比例因子1.38放大行间距,使得全文排版能协调一致。

那么aselineskip的值是怎么知道的呢?在TeX源文件中加上命令

showtheaselineskip

编译时就会暂停下来显示当前字体的aselineskip值。用这个方法可以知 道,10pt字体对应的aselineskip为12pt, 11pt字体对应的aselineskip为 13.6pt。

至于通常所说的1.5倍行间距和双倍行间距,一般理解为字体基准尺寸的1.5倍和 2倍,例如对于12pt字体, 1.5倍行间距和双倍行间距分别应为12pt*1.5=18pt, 12pt*2=24pt。那么aselinestretch分别应设为18pt/14.5pt≈1.24, 24pt/14.5≈1.66, 而不是1.5和2, 那样的话行间距就会显得过大了。

然后讲一下论文首页的设置。复旦的学位论文,装订的地方会按学校的模板制作 封面,就不用自己做了,不过规范中要求在扉页注明指导小组成员名单,并且为 了保持论文电子版的完整性,最好还是做一个简单的论文首页(标题页)。

没有必要用 itle, author和maketitle等命令自动生成论文的标题,因为那可 能不太符合你的要求。只要用

egin{titlepage}
标题页内容
end{titlepage}

在标题页内容中用上一些center环境、vspace*和字体选择命令就可以很容易地 设计出自己想要的格式了。

注意,上述标题页是没有页码的。而一般正文之前的部分,包括目录、摘要等, 习惯上采用与正文部分不同的页码格式,如用罗马数字表示,而从正文第一页开 始用阿拉伯数字重新开始计算页码。要做到这一点,只要在标题页后加上

frontmatter 或 pagenumbering{roman}

并在正文第一章前加上

mainmatter 或 pagenumbering{arabic}

就可以了。但是推荐使用frontmatter和mainmatter, 因为这两个命令的用处不 仅限于此。前面说过,像中文摘要这种非正文的部分,可以用chapter*命令加 入,但当设置了页眉后就会发现一个问题,页眉中的chaptertitle没有同步更新。 要解决这个问题,一个办法是在chapter*命令后加上一句chaptermark, 例如

chapter*{摘quad 要}chaptermark{摘quad 要}

但假如我们使用了frontmatter, mainmatter以及与其配套的ackmatter, 就 不需要这么麻烦,只要直接用不带星号版本的chapter命令就可以了,对于 frontmatter与mainmatter之间的部分,以及ackmatter之后的部分,系统就 会自动地跟正文部分的章区别开来,不加上"第一章"这样的章标题头。一个典型 的文档结构示例如下

egin{document}

egin{titlepage}
标题页内容
end{titlepage}

frontmatter % 开始正文之前的部分
ableofcontents % 自动生成目录

chapter[中文摘要]{摘quad 要}
% 方括号中是在目录中显示的内容,相当于前面使用的addcontentsline
中文摘要内容

chapter[英文摘要]{Abstract}
英文摘要内容

mainmatter % 开始正文部分
chapter{第一章标题}
第一章内容

ackmatter % 开始正文之后的部分
egin{thebibliography}{99}addcontentsline{toc}{chapter}{参考文献}
参考文献内容
end{thebibliography}

chapter[致谢]{致quad 谢}
致谢内容

end{document}

 

到这里文本排版讲得差不多了。这一节再讲讲定理和证明环境的格式设置。

数学论文里经常使用大量的定理环境。LaTeX默认的定理环境已经不能满足要 求,amsthm 宏包提供了方便的命令用于设置定理环境的格式。例如下面的命令定 义了一个定理样式mythm, 并用它来定义一些常用的定理环境

ewtheoremstyle{mythm}{1.5ex plus 1ex minus .2ex}{1.5ex plus 1ex minus .2ex}
{kai}{parindent}{songfseries}{}{1em}{}
heoremstyle{mythm}
ewtheorem{thm}{定理~}
ewtheorem{lem}{引理~}
ewtheorem{prop}{命题~}
ewtheorem{cor}{推论~}
ewtheorem{defn}{定义~}
ewtheorem{conj}{猜想~}
ewtheorem{exmp}{例~}
ewtheorem{rem}{注~}

我们解释一下 ewtheoremstyle命令里各项参数的意义。样式名称之后的两个长 度分别表示定理与上、下文之间的距离,这里均设为弹性距离。kai是设置定理 内容的字体。parindent是设置定理首行的缩进,在前面使用了CJKindent的情 况下,它就等于2em。

紧随其后的songfseries是设置定理头部即类似"定理 1"部分的格式,一般中 文使用黑体。因为我们在前面已经将宋体对应的粗体定义为黑体,所以这里将中 文字体设为宋体,再用选择粗体命令fseries, 就同时把中文变为黑体,英文变 为粗体了。注意,如果前面没有修改字体定义文件,而在这里用hei改变字体, 再加上fseries就很可能会造成"黑上加黑"即黑体的加粗,这种拙劣的文本效果 是不应该出现的。

这之后的参数是设置紧跟定理头部的符号,英文中常设为一句点,而中文习惯不 加任何符号,所以这里空置。然后是设置定理头部与定理内容之间的空白距离, 这里设为1em, 即一个汉字的宽度。

最后一项是对定理头部的补充说明,这里空置。但如果我们希望得到类似"定理 1 (存在性定理)"这样的定理头部,那么可以再定义一种定理样式

ewtheoremstyle{specthm}{1.5ex plus 1ex minus .2ex}{1.5ex plus 1ex minus 
.2ex}{kai}{parindent}{songfseries}{}{1em}{ hmnote{#3}}

这里最后一项 hmnote{#3}表示用方括号中的附加内容作为定理头部。用此样式 定义一个新的定理环境(与前面定义过的thm环境统一编号)

	heoremstyle{specthm}
ewtheorem{sthm}[thm]{}

并在正文中使用

egin{sthm}[定理~	hethm~(存在性定理)]
定理内容
end{sthm}

就得到了想要的效果。

至于证明的排版,amsthm宏包提供了proof环境,但格式需要做一点调整。 amsthm.sty中对proof环境的定义如下

ewenvironment{proof}[1][proofname]{par
pushQED{qed}%
ormalfont opsep6[email protected]@plus6[email protected] elax
rivlist
item[hskiplabelsep
itshape
#1@addpunct{.}]ignorespaces
}{%
popQEDendtrivlist@endpefalse
}

为了符合一般中文证明环境的排版习惯,可以重新定义proof环境为(注意,因为 这些命令含有@字符,所以需要在前、后分别加上makeatletter和 makeatother)

makeatletter
enewenvironment{proof}[1][proofname]{par
pushQED{qed}%
ormalfont opsep6[email protected]@plus6[email protected] labelsep1em elax
rivlist
item[hskiplabelsepindent
fseries #1]ignorespaces
}{%
popQEDendtrivlist@endpefalse
}
makeatother

并且重新定义proofname为

enewcommand{proofname}{证明}

proof环境会自动在证明最后一行的最右边加上一个证明结束符,默认为空心方 块,可以重新定义qedsymbol来修改它。需要注意的是,当证明以一个独立公式 结束时,证明结束符会出现在下一行的最右边,而不是在公式的同一行上,这不 合乎习惯。这时只要在公式环境内加上qedhere即可。


 

最后还要讲讲浮动图形和表格环境的中文化。首先把Figure和Table改为中文

enewcommand{figurename}{图}
enewcommand{ ablename}{表}

然后需要对浮动环境的标题格式做一点修改。在book.cls中可以找到如下定义

longdef@makecaption#1#2{%
vskipabovecaptionskip
sbox@tempboxa{#1: #2}%
ifdim wd@tempboxa >hsize
#1: #2par
else
global @minipagefalse
[email protected]@hsize{hfilox@tempboxahfil}%
fi
vskipelowcaptionskip}

这段代码包括了一个判断选择结构,如果标题超过一行则直接显示,否则在一行 内居中显示。可以不理会这个,只要根据自己的格式要求修改#1(即figurename 或 ablename) 和#2(标题内容)的格式,以及#1与#2之间的分隔符。例如,如果 希望把#1改为黑体,并把分隔符改为一个空格,可以这样设置

makeatletter
longdef@makecaption#1#2{%
vskipabovecaptionskip
sbox@tempboxa{{fseries #1}quad #2}%
ifdim wd@tempboxa >hsize
{fseries #1}quad #2par
else
global @minipagefalse
[email protected]@hsize{hfilox@tempboxahfil}%
fi
vskipelowcaptionskip}
makeatother

 

结束语

到这里,每个人都需要知道的东西已经基本上介绍完了。如果你仔细读了这些文 字,并且按照它去设置了你的论文格式,我想应该差不多了。当然,不同学科的 论文有各自的特点和要求,肯定还有很多具体的问题没有涉及。例如计算机专业 的可能经常要用到代码抄录环境,文科的论文可能要使用章末注,等等。这些问 题也是版上经常问到的,在本版精华区中大都能找到解答,这里就不再赘述。

希望费了不少时间写的这些东西能对大家有所帮助。最后,祝大家TeX越用越熟练,都能写出漂亮的论文!

 

参考: http://blog.sciencenet.cn/blog-351115-304643.html

“科技论文写作与学术报告”课程笔记1-如何用英语撰写科技论文

...论文写作与学术报告”本门课有4个lecture,分别讲述“如何用英语撰写科技论文”,“如何用英文做报告”,“如何参加国际会议”,“如何选题和写项目申请书”,对此我针对前两个lecture以及第4个lecture的“如何选题”部分做... 查看详情

latexlatex小白入门——如何用.bib文件自动生成论文reference

写在前面:       在研究生阶段搞学术的童鞋们很有可能会接触到Latex这种论文格式编辑工具,一般在论文投稿的时候,大多数期刊和会议会给一个Latex模板,要求将你的论文用Latex编辑成.pdf版本。这里的Latex... 查看详情

如何用zotero获取硕士博士论文的引用信息

参考技术A本文内容:想要下硕士博士论文,大家的第一选择(或者说唯一选择)就是知网,但是捏,不知道是知网不对劲还是zotero不对劲,文献找到了,但是想要把文章添加到zotero中进行引用的时候就犯了难:根据pdf文件,zoter... 查看详情

latex引用硕士论文博士论文bibtex格式(代码片段)

博士@phdthesiscitekey,author="",title="",school="",year=""硕士@mastersthesiscitekey,author="",title="",school="",year="" 查看详情

如何用latex设定标题和段落的字体和字号?

最近需要用Latex完成毕业论文的写作,根据要求,论文的标题和段落需要应用不同的字体和字号,不知是否可以在Latex的开头,即:\begindocument之前,可以用命令对全文进行设置?还请高手指点,谢谢!参考技术A可能你在某个... 查看详情

用latex撰写的学术论文怎么方便的供老师评注和修改

参考技术A转存成word后送修 查看详情

科研论文撰写相关工具一条龙服务指南

0.前言我们科研论文撰写过程需要很多注意的部分,例如,选择撰写平台、latex的图表的设计和制作,为自己的模型起一个名字,英文写作,还有参考文献的搜集和整理,以及适合的投稿会议候选等。本文... 查看详情

科研论文撰写相关工具一条龙服务指南

0.前言我们科研论文撰写过程需要很多注意的部分,例如,选择撰写平台、latex的图表的设计和制作,为自己的模型起一个名字,英文写作,还有参考文献的搜集和整理,以及适合的投稿会议候选等。本文... 查看详情

请详细描绘如何使用latex模版撰写科研论文,在论文中如何插入图片、公式和参

参考技术A为了点明论文的研究对象、研究内容、研究目的,对总标题加以补充、解说,有的论文还可以加副标题。非凡是一些商榷性的论文,一般都有一个副标题,如在总标题下方,添上“与××商榷”之类的副标题。另外,为... 查看详情

用latex撰写的学术论文怎么方便的供老师评注和修改

参考技术A1.能指出记叙的要素(时间、地点、人物、事情的起因、经过、结果)。理解记叙文所记叙的事件、人物、景物及其所表现的思想意义。2.理解记叙文的人称(第一人称、第三人称),记叙的顺序(顺序、倒叙、插叙... 查看详情

latex撰写毕业论文参考文献格式怎么修改

一、毕业论文撰写结构要求1、题目:应简洁、明确、有概括性,字数不宜超过20个字。022、摘要:要有高度的概括力,语言精练、明确,中文摘要约100—200字;033、关键词:从论文标题或正文中挑选3~5个最能表达主要内容的词作... 查看详情

如何用latex合并多个pdf文件?

如何用Latex合并多个pdf文件?  用TeX合并pdf,用LaTeX合并pdf 代码:documentclass[a4paper]{article}usepackage{pdfpages}egin{document}includepdfmerge{1.pdf,1-3}includepdfmerge{2.pdf,5-13}end{document}&n 查看详情

我想请问一下用latex写论文怎样开头空两格或顶格写

通常情况下来说将二级标题左起顶格,前后各空一行,四号,加粗等等,不过具体你所要撰写的论文格式要求要根据你所在专业论文的格式要求规定来撰写参考技术Ay有个宏包的\indent的,这个是缩进的还有\noindent 查看详情

如何用moveit快速搭建机器人运动规划平台?

MoveIt=RobotGo,翻译成中文就是“机器人,走你!”所以,MoveIt的主要就是一款致力于让机器人能够自主运动及其相关技术的软件,它的所有模块都是围绕着运动规划的实现而设计的。两个月前给自己挖了个坑,说要写写MoveIt,但... 查看详情

latex写中文论文的各种模板

...tex-templates/internal-university-tex-template.html 厦门大学硕士博士毕业论文LaTeX模板:https://www.latexstudio.net/archives/8661.html 对应的GitHub项目地址:https://github.com/neofung/XMU_master_and_doctor_degree_thesis (已star) http://www.ulunwen.com/a... 查看详情

如何用latex设置参考文献的超链接

参考技术A点击word上方开始菜单下的编号按键。点击“定义新编号格式”选项,设置编号格式,在“预览”中可以看到所设置的格式。点击确定,这些参考文献自动编号完成。将光标定位在正文中需要插入参考文献上标的地方,... 查看详情

中科院学位论文排版(代码片段)

又到一年毕业季,广大准毕业生都忙着撰写学位论文,有用Word写的,也有用$\LaTeX$排版的。相对来说,我更喜欢用$\LaTeX$排版,因为它对整个论文各个方面提供更精准的控制和更优美的排版效果。当然,$\LaTeX$排版系统不像“... 查看详情

请教latex高手,下面的花体字母如何用latex输入?

1、首先所用到的宏是\\usepackageamsthm,amsmath,amssymb\\usepackagemathrsfs。2、花体字母有不同的几种写法,根据具体需要自行选择$\\mathbbR$,$\\mathcalR$,$\\mathscrR$,注意不要把"$"符号写漏了,否则会出错。3、希腊字母基本就是其英... 查看详情