LaTeX 我很早就会了,本文目的是我作为助教引导《高等数学D》课程要求用 LaTeX 排版课程论文的同学快速入门 LaTeX。我将尽量以文科生友好的语言、尽量简单地描述 LaTeX 的概念和用法,以够写课程论文用为原则,不讲解写课程论文用不到的东西。
一、LaTeX 是什么
假设现在你要写一篇比较正式的文章,做成一个文件发给老师。其实你通常会分成两步来做:
- 先打一个草稿,这个草稿只有纯文字,就像在 Windows 的记事本或微信聊天框里打出来的那样,很丑,不能交差;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
高数D论文
作者:XXX
学号:XXX
院系:XXX
摘要
bla, bla ...
1 引言
引言 bla, bla ...
2 XXX
bla, bla ...
3 结论
结论是 bla, bla ...
- 然后把草稿扔到 Word 里,选一选、点一点上面的调字体、字号、颜色、居中之类的按钮,就可以把不好看的纯文字变得视觉观感很好的样子,很好看,可以交差了:
LaTeX 简言之,是一个排版工具,地位和 Word 类似。也就是说,你在完成第 1 步后,除了扔到 Word 里,还可以交给 LaTeX,它也能让纯文字变成想要的带格式的样子。
但是 LaTeX 的用法和 Word 很不一样,它不是在软件的上面点一点,而是在你草稿的纯文本里加一些特殊的标记符号(见下图,有颜色的是标记符号,其他的是原草稿的内容),这些标记符号代表着格式(以下称加了这种标记的文本为 LaTeX 代码)。例如把“高数D论文”用 \title{}
和 \textbf{}
括起来,就表示这一段字是标题(字体会自动变大并居中),而且要用加粗的样式。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
\documentclass{ctexart}
\title{\textbf{高数D论文}}
\author{作者:XXX \\ 学号:XXX \\ 院系:XXX}
\begin{document}
\maketitle
\begin{abstract}
bla, bla ...
\end{abstract}
\section{引言}
引言 bla, bla ...
\section{XXX}
bla, bla ...
\section{结论}
结论是 bla, bla ...
\end{document}
你可以想象软件里有一个翻译官,它是认识这些 LaTeX 标记的,让它翻译一下,就变成带格式的样子:
翻译官是如何区分哪些是标记、哪些是你的正文呢?其实这些标记符号都被设计成了平常不会打的东西,这就避免了冲突。看看上面加的那些标记,什么 \title{}
呀、\section{}
呀,你写的东西不可能里面有这些怪异的符号吧?
此外,如果翻译官发现你的标记打错了(例如 \title{}
打成 \tile{}
或者少了一个括号),它不会自动给你纠正,没有那么智能。既然比较笨,那就谨慎一点好了(又笨又鲁莽的人会搞砸事情的!)——翻译官会立即停止当前的翻译,直接告诉你在哪里打错了,是什么原因让它翻译不出来(俗称“报错”),而不是自以为是地猜你的意思。只有你手动地找出错误并改正过来才可以继续。
这种在纯文本里加特殊的标记符号实现排版的方式可以看作一种编程语言,称为标记语言。LaTeX 是一种标记语言。此外,你现在看到的这篇文章是有格式的吧,其实也是用一种叫 MarkDown 的标记语言排版出来的。(MarkDown 比 LaTeX 语法简单很多,强烈推荐喜欢在电脑上打字记笔记的文科同学用来记笔记~)
总结一下,用 LaTeX 排版就是两步:
- 给纯文本草稿作 LaTeX 标记;
- 找翻译官翻译。
下面就分别介绍这两件事情,LaTeX 标记的语法和翻译 LaTeX 的软件。这两件事情搞定了,就会用 LaTeX 排版了。
二、LaTeX 标记的语法
LaTeX 的发明者规定了各种各样的标记,正如上面看到的,每种标记都有自己的写法,对应了不同的格式。本节就来学习这些格式。
有同学此时会问,试想世上的格式有那么多,每一种格式都有一个 LaTeX 标记,难道都要像背单词一样记下来吗?天啊这 LaTeX 入门门槛好高啊。如果你这样想,你可能忘了一件事情——学 LaTeX 不是为了考试(也没有人会考 LaTeX 这种东西…),而是为了完成一个实际的排版,所以遇到不会的可以找百度呀!但前提是你得知道你要做什么,会给百度讲明白。
也就是说,学习 LaTeX 语法(也适用于任何计算机技术性知识的学习,例如各种软件、各种编程语言)的正确方式应该是:
- 先大体了解 LaTeX 能做哪些事情,能排版出什么样的效果,但不必记忆对应的 LaTeX 标记是什么;
- 在实际需要时,能够回想起来这些效果,挑选自己需要的,再去百度现查它的 LaTeX 标记。
实际操作遇到报错时,说明语法不对,要试图理解错误信息里面描述的内容,尝试解决,自己解决不了的,可以把错误信息复制下来问百度。(这一过程就是编程的 debug 过程,也是用 LaTeX 排版让人头疼的问题)
既然这样,那是不是不用学习 LaTeX 了?也不是的,还是需要一些概念性的知识储备,否则你会为一些很基本的问题感到诧异。下面就介绍一些我觉得必要了解的:
- LaTeX 标记一般有如下几种形式(xxx代表标记的名称):
\xxx{你的文字}
\begin{xxx}你的文字\end{xxx}
\xxx{设置性的描述文字}
前两者括在你的文字身上,起到括号、选定的作用,表示施加在“你的文字”上xxx格式;第 3 个可以看成对整个文章的一种设置命令,并不针对某一部分你的文字;
- LaTeX 代码中,被
\begin{document} \end{document}
括起来的是你的正文,外面的(一般在开头)是一些对整个文章的格式设置,例如默认什么字号、行间距等,文章的题目、作者等信息也是在这里设置。最前面一般用\documentclass{}
规定了文档的类型,写中文文章要用\documentclass{ctexart}
; \section{章节题目}
用于分章节,小节为\subsection{小节题目}
,小小节为\subsubsection{小小节题目}
;换行必须在两段之间用一个(或多个)空行隔开:
1 2 3
这是第一段 这是第二段
否则翻译官会按同一段显示出来;
LaTeX 有大量表示数学公式的标记,所有数学公式都能通过给数或字母加这类标记用 LaTeX 排版显示出来,例如牛顿-莱布尼茨公式 \(\int_a^b f(x)\mathrm{d}x = F(b)-F(a)\) 对应的 LaTeX 代码是
\int_a^b f(x)\mathrm{d}x = F(b)-F(a)
。还是那个原则,不要试图背下来数学公式的 LaTeX 标记,在用到的时候现查(不过记一些非常常用的或者找一个符号汇总表摆在旁边会提高效率);
- 数学公式一定要用以下符号括起来,告诉翻译官我是数学公式,否则会按普通的文字处理(排出来不好看)或者报错:
- 美元符号:
$ 数学公式 $
- 两个美元符号:
$$ 数学公式 $$
或者\begin{equation} 数学公式 \end{equation}
二者的区别是,后者会让公式单独起一行居中显示,而前者会像普通文字一样嵌入在段落中(行内显示);
- 美元符号:
- 一行 LaTeX 代码中跟在
%
后面的,翻译官会直接忽略,可以在这里写注释(对代码进行解释的文字); - 到此为止可以看到,LaTeX 使用了很多特殊字符如
\
,%
作为标记的一部分,翻译官不会把这些特殊字符显示出来。如果确实需要打出这些字符(即看成普通文本),请自行搜索 LaTeX 转义字符的用法。
如果你对这几条感到疑惑,请先耐心看完本文,待掌握 LaTeX 软件的操作后,去软件里实际看看我提供的模板(在最后一节“相关资源” 里)里面 LaTeX 代码对应的显示效果。
三、翻译 LaTeX 的软件
翻译 LaTeX 的翻译官是一个软件,它核心的部件叫“编译器”(计算机科学习惯称翻译编程语言为“编译”),软件就是在此核心功能基础上包装一些其他的功能。从文件角度看,软件是把 .tex
格式的文件编译成 .pdf
格式的文件:tex 文件里面放 LaTeX 代码,pdf 文件就是排版出来的可以直接交的成品。
编译器有 LaTeX、pdfLaTeX、XeLaTeX 等,可以在软件里选择。写中文论文时,一般用 XeLaTeX,其他的编译器有的不认中文字符!
常见的软件有 Tex Live、MiKTeX、CTeX 等,我这里推荐在线的 Overleaf,因为本地的软件安装配置起来很麻烦,而且还占用电脑空间(同学们大概率写完这篇论文就不会再用了)。下面是 Overleaf 软件的用法:
- 先注册一个账号,进入主界面(下图是我的账号,新账号进去应该是空白的);
- Overleaf 有网盘的功能,文件放在 Overleaf 上不会丢,工作全程线上进行。它里面的文件是一个一个的项目(project),每个项目就是一篇排版项目(即文章);
- 左上角新建项目(New Project),进入项目的排版界面:(点左上角的小房子可以返回主界面)
- 左上角的菜单(Menu)可以对在线软件做一些设置。值得注意的是 Compiler 选项,写中文论文要调成 XeLaTeX;
- 最左边是项目的文件列表,可以看到只有一个 tex 文件。可以把自己电脑上的文件上传到这里;
- 中间就是打开的选中的文件,当前左边选中了那个 tex 文件,所以你应该把 LaTeX 代码输入到这里面;
- 右边是软件把中间 tex 文件翻译得到的 pdf 文件的预览。注意翻译不是实时的,需要点击重新编译(Recompile)按钮才能看到最新的结果;
- 重新编译按钮右边的右边——下载按钮可以把 pdf 文件下载到自己电脑里。
相关资源
如果你想进一步了解 LaTeX 的所有知识与语法,请充分利用搜索引擎,网上有大量和我同类的博客写文章介绍 LaTeX 的各方面。系统了解的话可以参考刘海洋的《LaTeX 入门》。
和 Word、PPT 一样的道理,网上也有大量现成的 LaTeX 模板(是 tex 文件),把它们 copy 到你的项目里,你要做的就只剩在 LaTeX 代码里找到对应的位置填空了。Overleaf 社区有很多用户上传模板(包括北大的同学)。我也提供一个我常用的模板,使用方法如下:
- 保存我发给大家的压缩包到电脑,在 Overleaf 新建项目时选择 Upload Project,上传此压缩包即可;
- 或者从 Overleaf 模板库中找到我的模板,点击 Open as Template,模板就作为一个项目复制到你的 Overleaf 项目列表里了。
(如果编译报错,右边红红的一片,检查一下有没有像上一章说的调成 XeLaTeX 编译器)
再推荐一个工具:Mathpix Snipping Tool,可以把手写的或截图里的公式自动识别为 LaTeX 代码。在你不会打数学公式的时候可以直接手写让它识别,复制到你的 LaTeX 代码中即可(记得用美元符号括起来)。
祝大家写论文愉快!