关于LaTeX,踩过的坑

这一个月没有时间写博客,都在写一个作业,要写一篇论文(我不会告诉你们这个论文非常之水)。正逢我在Mac没有office实在没有办法顺顺利利排出论文的版面,又久仰LaTeX的大名,所以尝试了一下LaTeX,踩了不少坑,记录下来,留作以后查看,也方便后来人。(这篇文我会不断补充,争取把我踩过的坑都能记录下来)

接下来记录都是在Mac环境下,所以Windows或者Linux的童鞋们在安装部分可以略去不看。

安装

第一步是安装LaTex环境,在Mac下大致有三种选择:

  • 安装TexLive,然后进行一系列配置。
  • 安装MacTeX,这是一个基于TexLive之上的封装,免去了新手的一堆麻烦工程,体积比较大,2.3G。
  • 安装BasicTeX,和MacTex是一个东西,不过去掉了额外的包以及编辑器,体积更小,100M左右。

#1坑:

我为了节省每个月6G限定的流量,不得已选择下载BasicTex,下这个玩意省流量是省了,但是后续带来的麻烦可不少:

  • 自己配置编辑器以及预览器。
  • 缺少一些额外的宏包(类似于C的标准库),需要自己安装,这对新手来说简直是噩梦,让我吃尽了苦头。

所以,如果没有特别要节省流量的理由,就一定要下载MacTex下载MacTex下载MacTex(重要的事情说三遍!)
当然,如果你选择下载了MacTex,我接下来写的很多坑你都不用看了:P

写作

安装的事情说完了,接下来就是写作了。

#2坑(页眉之article&book)

LaTex的第一行就是关于文章类型的设定:documentclass[options]{article|book···}

  • 其中options可以规定字号,单双栏等。但是这不是我们要说的重点,详细用法可参考http://www.nada.kth.se/~carsten/latex/class.html,这里不再多做介绍。
  • 其中{article|book···}是文字的类型,说明你是在写文章(article)还是书(book)或者其他。这个类型一定要重视起来!它会影响接下来很多的设置,我所遇到的一个大坑就是关于页眉的设定。

我们都知道,一般文章的页眉都是一样的(有的可能要求首页的页眉和其他页的页眉不一样,但是不会出现奇偶页页眉不同的要求),但是对于书(book)不是这样,这是因为书本的页码总是要在对称的位置,例如奇数页在左下角,偶数页在右下角。初学者很难注意到这一点,然后在选择documentclass的时候就会乱选,然后后面出现bug总是调不对,浪费很长时间。

我的这篇论文要求是按照期刊的格式来写,期刊本质也是书,那么它也是要求奇偶页页眉不同,而我一开始选择的documentclass是文章(article),结果怎么调页眉都调不对,后来才发现把documentclass调成书(book)就正确了,这个问题一度让我发狂。

#3坑(Basic之宏包缺少)

安装了MacTex完整版的可以略过此坑。
正如我前面所说,因为节省流量,我安装了Basic版,这个版本只包含非常少的常用宏包,绝大多数要用的包都没有。需要自己安装。
其实我并不知道如何安装宏包,因为我的论文时间非常紧张,也没有仔细研究如何安装,生怕没安装好,把LaTeX环境也搞烂了。这个教程网上一搜一大把,如果你时间比较充裕,可以按照教程一步一步试一试,但是如果你有和我一样的担心,想要首先把论文写出来,你可以这样做:
比如提示缺少fancyhdr.sty宏包(用来设置页眉页脚的宏包,Basic版中没有自带),在.tex文件同级目录下建立空文件命名为fancyhdr.sty,然后打开谷歌搜索fancyhdr,一般在首条或者第二条就有源代码http://www.aistats.org/aistats2010/format10/fancyhdr.sty,打开把代码直接粘在fancyhdr.sty文件中并保存即可。

我知道这个方法看起来非常笨拙,但是在特殊的情况下也不失为一个解决眼前问题的好方法,你说呢?

#4坑(中文之非CJK)

LaTeX由高德纳老先生创造,西方为其发源之地,注定了对其他语言有那么一点点不友好,但是这个问题早已被睿智的前辈解决。流行的大致有两种方案:

  • 采用CJK宏包,关于CJK更详细的内容见此。这个方案应用十分广泛,但是有一个致命的缺点:字体十分有限!由于字体的版权问题,CJK的宏包里只有问鼎宋体和文鼎楷体这两种字体,可是这两种字体生成的中文文档效果一般。而且就我不多的经验来看,CJK的使用更麻烦一些。
  • 第二种方法就是采用XeLaTeX引擎,在最新的Basic以及MacTex版本中都可以直接采用XeLaTeX编译运行,使用此引擎可以避免使用CJK宏包,并且可以支持任何系统自带的字体。

Tips:Mac下查看系统字体的方法,应用程序->其他->字体册

注意:在第二种方法中要引入三个额外的宏包:

\usepackage{fontspec}
\usepackage{xunicode} %provides unicode character macros
\usepackage{xltxtra} %provides some fixed/extras

在使用的过程中是这样的:

\newfontfamily\song{Songti SC Regular} %Songti SC Regular是Mac中自带的宋体的名称
\newfontfamily\hei{Heiti SC Light}
\newfontfamily\kai{Kaiti SC Regular}
% 把“测试”的字体设置为黑体
\hei{测试}

#5坑(中文之不自动换行)

#4坑中我们已经成功可以使用中文了,但是当我们开始开开心心写论文的时候,发现竟然不能换行!不能...换...行!这简直让人没法接受,我当时就觉得简直三心病狂,直到我百般搜索才发现,只需加一行:

\XeTeXlinebreaklocale "zh" % Chinese typeset

药到病除,浑身酸爽。

#6坑(中文之首行缩进)

在英文中多个段落,往往第一个段落不会缩进,但是在汉语中是每个段首都要缩进,为了解决这个问题,可以引进indentfirst.sty宏包。