0%

LaTeX学习

一套强大的文档排版系统。

日常生活中,Office一般足以完成各类文档的处理,后来再到记事、写博客这样需要一些格式化而又方便的排版功能时,Markdown+Mathjax就足以搞定一切了。然而当遇到大型论文排版的需求时,则需要一套更为专业的文档排版系统 —— $\LaTeX$。

历史

最早Donald Ervin Knuth写了一套叫$\TeX$的排版系统,很容易用它来生成高质量排版的文档。

$\TeX$大概就是类似机器语言or汇编语言一样的存在吧(大雾),而它也支持使用宏来简化操作,后人为让人们了更方便地使用它,在原始$\TeX$宏集的基础上增加了许多功能,定义了许多命令和模板,将其作了扩展,于是$\LaTeX$出现了。

$\LaTeX$的使用者不需要知道每一条$\TeX$命令是怎么写的,只要按照$\LaTeX$的标准来写文章,就能够得到非常漂亮的效果。

尤其是$\LaTeX$中的公式显示非常完美,Mathjax支持的也就是$\LaTeX$的公式格式。


装完$\LaTeX$之后,在命令行中输入

1
texdoc tex-overview

可以看到$\TeX$发展多年的黑历史。

有个有趣的地方

$\TeX$是用$\pi$来作为版本号的,每完善发布一个新版本,就多一位小数,表示版本在不断趋近完美($\pi$)。

值得一提的是,$\TeX$发布四十多年,只更新了九次,确实是“完美的系统啊”。

更值得一提的是,Knuth写的另外一个东西Metafont是用自然对数e来作为版本号的,也是每更新一个版本,就往上面加一位小数。-_-///

开始使用$\LaTeX$

$\LaTeX$与Word这种所见即所得的文档软件不同,用它写文章出来会有一种写代码的感觉,这一点与Markdown非常像。而要得到完成的文章,则需要在写完文章的源代码之后,将其编译成PDF等固定格式。

因此通常要使用$\LaTeX$,我们需要一个文本编辑器或者IDE,还需要一个$\LaTeX$编译器。(这个跟编程的过程是一致的。)

与Linux类似,$\LaTeX$有很多种引擎(编译器),也有很多种发行版,选择一种自己常用的发行版装起来就好了。

比如TeX Live就是一套跨平台的$\TeX$发行版。

整个TeX Live 2015的安装包的大小大概2G左右,在线安装会很慢,可以找个镜像站把镜像下过来之后手动装上。


装完$\LaTeX$之后,生成PDF的流程是这样的:

首先文章的源代码写在.tex的文件中,通过latex xxx或者latex xxx.tex可以得到一个xxx.dvi的文件(Device Independent,即与设备无关,用这个文件拿到能够识别的设备上就能直接打印成文章),然后dvips xxx或者dvips xxx.dvi生成xxx.ps,即打印字体文件,最后ps2pdf xxx或者ps2pdf xxx.ps即生成了xxx.pdf文件。

xxx.dvi也可以直接使用dvipdfm xxxdvipdfm xxx.dvi得到xxx.pdf

再简便一些,可以使用pdflatex xxxpdflatex xxx.tex一次得到xxx.pdf

明白了这些编译指令之后,使用Sublime Text再加一些配置即可不依靠其他IDE来完成$\LaTeX$文档的编写和生成。


中文的实现

中文字符与英文字符在排版时有很大的不同,例如英文是以词为单位而中文是以字为单位,英文的字母宽度与标点宽度与中文也有一定的区别等等。所以默认的$\LaTeX$是不支持中文的。

这里就要再提到XeTeX,这也是一套在原基础上扩展而来的引擎,用XeLaTeX来完成.tex的编译,它的特点是原生支持Unicode和OpenType,配合ctex的宏包即可比较完美地支持中文了。


配置SublimeText2

又到了Sublime时间,TexLive自带的那个编辑器感觉没啥功能,用着也很不舒服,于是准备继续使用Sublime来写和编译。

Sublime默认能够自动识别.tex的文本为LaTex文件,因此只需要稍微做一些配置即可。

首先还是要确保cmd下能够正常运行xelatex命令。一开始的时候我这里只能运行xetextex等命令,但是就是运行不了xelatex命令,而在TexLive自带的那个控制台中是正常的。

后来查询TexLive控制台的启动命令,发现它在启动时会把TexLive的运行目录放在系统环境变量的第一个,于是我调整了系统环境变量,遂成功运行。

我不明白为什么需要这样,也不知道这样会不会出现别的什么问题?

接下来在Sublime中Tools > Build System中新建一个Build System,填入:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"cmd": ["xelatex", "${file}"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "text.tex.latex",
"variants":
[
{
"name": "Run",
"cmd": ["cmd", "/c", "start", "${file_base_name}.pdf"]
}
]
}

即配置完成。

之后Ctrl+B进行编译,Ctrl+Shift+B查看生成的Pdf文档。


其他

具体的$\LaTeX$使用还是得花时间学习的,或者像我用Markdown一样,常见的一些操作多用就熟了,遇到解决不了的再去搜使用方法。

这里有一份简单的教程

网上还推荐参照模板来学习:

这个是国外一个不错的$\LaTeX$模板网站

比如这里这份通用论文模板:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
%----------------------------------------------------------------------------------------
% 宏包以及其他文档配置信息
%----------------------------------------------------------------------------------------

\documentclass[twoside]{article}

\usepackage{lipsum} % 用于生成本模板中虚拟内容的宏包

\usepackage[sc]{mathpazo} % 使用Palatino字体
\usepackage[T1]{fontenc} % 使用8位编码256个字形
\linespread{1.05} % Palatino字体需要更多行距
\usepackage{microtype} % 另外一种字体

\usepackage[hmarginratio=1:1,top=32mm,columnsep=20pt]{geometry} % 文章边距
\usepackage{multicol} % 使用多栏布局
\usepackage[hang, small,labelfont=bf,up,textfont=it,up]{caption} % 设定表格和图片的题注格式
\usepackage{booktabs} % 表格水平对齐
\usepackage{float} % 在多栏布局中使用表格和图片时需要的宏包(e.g. \begin{table}[H])
\usepackage{hyperref} % 超链接

\usepackage{lettrine} % 首字大写
\usepackage{paralist} % Used for the compactitem environment which makes bullet points with less space between them

\usepackage{abstract} % 允许定制摘要
\renewcommand{\abstractnamefont}{\normalfont\bfseries} % 摘要设为黑体
\renewcommand{\abstracttextfont}{\normalfont\small\itshape} % 摘要设为小斜体

\usepackage{titlesec} % 允许定制标题
\renewcommand\thesection{\Roman{section}} % 节标题使用罗马字母
\renewcommand\thesubsection{\Roman{subsection}} % 第二级节标题使用罗马字母
\titleformat{\section}[block]{\large\scshape\centering}{\thesection.}{1em}{} % 改变节标题的外观
\titleformat{\subsection}[block]{\large}{\thesubsection.}{1em}{} % 改变第二级节标题的外观

\usepackage{fancyhdr} % 页眉和页脚
\pagestyle{fancy} % 所有页都有页眉和页脚
\fancyhead{} % 取消默认的页眉
\fancyfoot{} % 取消默认的页脚
\fancyhead[C]{Running title $\bullet$ November 2012 $\bullet$ Vol. XXI, No. 1} % 修改页眉文字
\fancyfoot[RO,LE]{\thepage} % 修改页脚文字

%----------------------------------------------------------------------------------------
% 标题部分
%----------------------------------------------------------------------------------------

\title{\vspace{-15mm}\fontsize{24pt}{10pt}\selectfont\textbf{Article Title}} % 文章标题

\author{
\large
\textsc{John Smith}\thanks{A thank you or further information}\\[2mm] % 名字
\normalsize University of California \\ % 来源
\normalsize \href{mailto:john@smith.com}{john@smith.com} % Email
\vspace{-5mm}
}
\date{}

%----------------------------------------------------------------------------------------

\begin{document}

\maketitle % 插入标题

\thispagestyle{fancy} % 所有页都有页眉和页脚

%----------------------------------------------------------------------------------------
% 摘要部分
%----------------------------------------------------------------------------------------

\begin{abstract}

\noindent \lipsum[1] % 虚拟一段摘要文本

\end{abstract}

%----------------------------------------------------------------------------------------
% 文章内容
%----------------------------------------------------------------------------------------

\begin{multicols}{2} % 双栏布局

\section{Introduction}

\lettrine[nindent=0em,lines=3]{L} orem ipsum dolor sit amet, consectetur adipiscing elit. % 一段文字,首字母L大写
\lipsum[2-3] % 虚拟文字

%------------------------------------------------

\section{Methods}

Maecenas sed ultricies felis. Sed imperdiet dictum arcu a egestas.
\begin{compactitem}
\item Donec dolor arcu, rutrum id molestie in, viverra sed diam
\item Curabitur feugiat
\item turpis sed auctor facilisis
\item arcu eros accumsan lorem, at posuere mi diam sit amet tortor
\item Fusce fermentum, mi sit amet euismod rutrum
\item sem lorem molestie diam, iaculis aliquet sapien tortor non nisi
\item Pellentesque bibendum pretium aliquet
\end{compactitem}
\lipsum[4] % 虚拟文字

%------------------------------------------------

\section{Results}

\begin{table}[H]
\caption{Example table}
\centering
\begin{tabular}{llr}
\toprule
\multicolumn{2}{c}{Name} \\
\cmidrule(r){1-2}
First name & Last Name & Grade \\
\midrule
John & Doe & $7.5$ \\
Richard & Miles & $2$ \\
\bottomrule
\end{tabular}
\end{table}

\lipsum[5] % 虚拟文字

\begin{equation}
\label{eq:emc}
e = mc^2
\end{equation}

\lipsum[6] % 虚拟文字

%------------------------------------------------

\section{Discussion}

\subsection{Subsection One}

\lipsum[7] % 虚拟文字

\subsection{Subsection Two}

\lipsum[8] % 虚拟文字

%----------------------------------------------------------------------------------------
% 引用列表
%----------------------------------------------------------------------------------------

\begin{thebibliography}{99} % 参考书目

\bibitem[Figueredo and Wolf, 2009]{Figueredo:2009dg}
Figueredo, A.~J. and Wolf, P. S.~A. (2009).
\newblock Assortative pairing and life history strategy - a cross-cultural
study.
\newblock {\em Human Nature}, 20:317--330.

\end{thebibliography}

%----------------------------------------------------------------------------------------

\end{multicols}

\end{document}

附上一个简单的$\LaTeX$测试文本:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
\documentclass{article}

\usepackage{ctex}

\author{Jcf94}
\title{这是标题Title}

\begin{document}

\maketitle

\tableofcontents

Hello, World!

\section{中国} China is in East Asia.
\subsection{北京} Beijing is the capital of China.
\subsubsection{东城区}
\paragraph{Tian'anmen Square}is in the center of Beijing
\subparagraph{毛泽东纪念堂} is in the center of Tian'anmen Square
\subsection{广州}
\paragraph{Sun Yat-sen University} is the best university in Guangzhou.

\section{段落和换行测试}

Beijing is
the capital
of China.

New York is

the capital

of America.

Amsterdam is \\ the capital \\
of Netherlands.

\section{表格测试}

\begin{tabular}{|c|c|}
a & b \\
c & d\\
\end{tabular}

\begin{tabular}{|c|c|}
\hline
a & b \\
\hline
c & d\\
\hline
\end{tabular}

\begin{center}
\begin{tabular}{|c|c|}
\hline
a & b \\ \hline
c & d\\
\hline
\end{tabular}
\end{center}

\end{document}

很多特性其实感觉跟Markdown非常像。