Professional Documents
Culture Documents
LaTeX 入门讲座 - 李向阳
LaTeX 入门讲座 - 李向阳
LATEX 基础入门
李向阳
2018-12-14
Outline
1 快速入门 LATEX
2 文档元素
3 排版文字
4 排版图片和表格
5 排版数学公式
6 关于 LATEX 的一些说明及高级用法
快速入门 LATEX
LATEX 是什么
关于 TEX
TEX 是高德纳 (Donald E.Knuth) 开发的、以排版文字和数学公式为目的的一个计算机软
件. TEX 读作 “Tech” , 其中 “ch” 的发音类似于 “h” , 与汉字“泰赫”的发音相近. 在 ASCII
字符环境, TEX 写作 TeX.
LATEX 是什么
关于 TEX
TEX 是高德纳 (Donald E.Knuth) 开发的、以排版文字和数学公式为目的的一个计算机软
件. TEX 读作 “Tech” , 其中 “ch” 的发音类似于 “h” , 与汉字“泰赫”的发音相近. 在 ASCII
字符环境, TEX 写作 TeX.
关于 LATEX
LATEX 是 TEX 基础上的一套格式, 使用 TEX 作为排版引擎, 由 Leslie Lamport 开发, 令作
者能够使用预定义的专业格式以较高质量排版和印刷他们的作品. LATEX 读作 “Lah-tech”
或者 “Lay-tech” , 与汉字“拉泰赫”或“雷泰赫”的发音相近. LATEX 在 ASCII 字符环境写作
LaTeX.
安装 TEX 发行版
所谓 TeX 发行版, 也叫 TeX 发行、TeX 系统或者 TeX 套装, 指的是包括 TeX 系统的各
种可执行程序, 以及他们执行时需要的一些辅助程序和宏包文档的集合. 常见的比如
CTeX 套装 (MikTeX)、TeX Live 和 MacTeX.
不要再使用 CTeX 套装
安装 TEX 发行版
所谓 TeX 发行版, 也叫 TeX 发行、TeX 系统或者 TeX 套装, 指的是包括 TeX 系统的各
种可执行程序, 以及他们执行时需要的一些辅助程序和宏包文档的集合. 常见的比如
CTeX 套装 (MikTeX)、TeX Live 和 MacTeX.
不要再使用 CTeX 套装
推荐下载地址:
https://mirrors.tuna.tsinghua.edu.cn/CTAN/
TeX Live 安装教程:
https://zhuanlan.zhihu.com/p/19779481?columnSlug=LaTeX
撰写文档并编译
主要步骤:
几点注意:
文件命名尽量采用英文.
在线 LATEX 编辑器
在线 LATEX 编辑器可以实现多人协同工作.
Overleaf: https://www.overleaf.com/
ShareLaTeX: https://www.sharelatex.com/
一个最简单的文档示例
一个最简单的示例如下:
\documentclass{article}
\begin{document}
Hello world!
\end{document}
中英文混排
引用一句话:
\documentclass{ctexart}
\begin{document}
你好, world!
\end{document}
LATEX 命令和环境
LATEX 命令以反斜杠 \ 开头, 为以下两种形式之一:
反斜杠和后面的单个非字母符号, 如 \$、\% 等.
LATEX 命令和环境
LATEX 命令以反斜杠 \ 开头, 为以下两种形式之一:
反斜杠和后面的单个非字母符号, 如 \$、\% 等.
\begin{⟨environment name⟩}{⟨arguments⟩}
\end{⟨environment name⟩}
LATEX 源代码结构
\documentclass{...}
\usepackage{...}
\begin{document}
\section{...}
正文内容……
\end{document}
LATEX 文档类
\documentclass[⟨options⟩]{⟨class-name⟩}
\documentclass[11pt,twoside,a4paper]{article}
LATEX 宏包
\usepackage[⟨options⟩]{⟨package-name⟩}
% 一次性调用两个排版表格常用的宏包
\usepackage{tabularx,multirow}
文档元素
标题页中的作者、标题、日期
LATEX 支持生成简单的标题页. 首先需要给定标题和作者等信息:
\documentclass[UTF8]{ctexart}
\title{期末大报告}
\author{Tony}
\date{\today}
\begin{document}
\maketitle
你好, world!
\end{document}
章节划分
三个标准文档类 article、report 和 book 提供了划分章节的命令:
带星号的变体: \section*{⟨title⟩}
标题不带编号, 也不生成目录项和页眉页脚.
添加目录
\tableofcontents
添加目录
\tableofcontents
\addcontentsline{toc}{⟨level⟩}{⟨title⟩}
交叉引用
\label{⟨label-name⟩}
\ref{⟨label-name⟩} \pageref{⟨label-name⟩}
为了生成正确的交叉引用, 一般也需要多次编译源代码.
交叉引用
定理环境 在定理环境内部任意位置使用.
摘要环境
\begin{abstract}
本文主要讲述了...
\end{abstract}
\providecommand{\keywords}[1]{\textbf{Keywords:} #1}
列表环境
\begin{enumerate}
\item …
\end{enumerate}
\begin{itemize}
数学分析
\item 数学分析
\item 高等代数 高等代数
\end{itemize}
\begin{enumerate}
1 首先,
\item 首先,
\item 其次, 2 其次,
\end{enumerate}
对齐环境
\begin{center} … \end{center}
\begin{flushleft} … \end{flushleft}
\begin{flushright} … \end{flushright}
\begin{flushright}
这是一段右对齐的文本, 不信的话你可以 这是一段右对齐的文本, 不信的话你可
好好看看. 以好好看看.
\end{flushright}
除此之外, 还可以用以下命令直接改变文字的对齐方式:
代码环境
基本代码环境为 verbatim.
\begin{verbatim}
#include <iostream>
#include <iostream>
int main()
int main()
{ {
std::cout << "Hello, world!" std::cout << "Hello, world!"
<< std::endl; << std::endl;
return 0;
return 0;
}
\end{verbatim}
}
代码环境
\begin{minted}[frame=lines,linenos]{c}
#include <iostream> 1 #include <iostream>
int main() 2 int main()
{ 3 {
std::cout << "Hello, world!" 4 std::cout << "Hello, world!"
<< std::endl; 5 << std::endl;
return 0; 6 return 0;
} 7 }
\end{minted}
排版文字
字符和符号
LATEX 使用 % 作为注释.
特殊符号
\# \$ \% \& \{ \} \_
#$%&{}_ˆ˜\
\^{} \~{} \textbackslash
文字强调
强调文字的常用方法: 改变字体或者添加下划线等.
LATEX 定义了 \underline 命令用来为文字添加下划线:
\emph 命令用来将文字变为斜体以示强调.
排版样式设定 - 字体样式
Table 1: 字体命令.
排版样式设定 - 全局字体
排版样式设定 - 字号
LATEX 中有局部的命令可以修改字号大小.
Table 2: 字号.
排版样式设定 - 页边距
\usepackage{geometry}
\geometry{papersize={20cm,15cm}}
\geometry{left=1cm,right=2cm,top=3cm,bottom=4cm}
排版样式设定 - 页眉页脚
\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{\author}
\chead{\date}
\rhead{152xxxxxxxx}
\lfoot{}
\cfoot{\thepage}
\rfoot{}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\headwidth}{\textwidth}
\renewcommand{\footrulewidth}{0pt}
排版图片和表格
插入图片
Table 3: 各种编译方式支持的主流图片格式.
编译格式 矢量图 位图
latex + dvipdfmx .eps n/a
⌞(调用 bmpsize 宏包) .eps .pdf .jpg .png .bmp
pdflatex .pdf .jpg .png
⌞(调用 epstopdf 宏包) .pdf .eps .jpg .png
xelatex .pdf .eps .jpg .png .bmp
几点说明:
插入图片
\includegraphics[⟨options⟩]{⟨filename⟩}
插入图片
一个简单插图示例, 使用命令
1.00
0.75
0.50
0.25
y
0.00
−0.25
−0.50
−0.75
−1.00
采用浮动体环境 figure 插图
\begin{figure}[!htb]
\centering
\includegraphics[width = 0.50 \textwidth]{sin.pdf}
\caption{正弦函数的图像}
\label{fig:sin}
\end{figure}
1.00
0.75
0.50
0.25
y
0.00
−0.25
−0.50
−0.75
−1.00
Fig 1: 正弦函数的图像
Stat-PKU LaTeX 2018-12-14 41 / 94
快速入门 LATEX 文档元素 排版文字 排版图片和表格 排版数学公式 关于 LATEX 的一些说明及高级用法
子图并排
子图并排推荐使用 subfig 宏包里的 \subfoat 命令.
\begin{figure}[!htb]
\centering
\subfloat[欠拟合]{
\includegraphics[width=1.0in]{fit1.pdf}
}
\hspace{0.2in}
\subfloat[正常]{
\includegraphics[width=1.0in]{fit2.pdf}
}
\hspace{0.2in}
\subfloat[过拟合]{
\includegraphics[width=1.0in]{fit3.pdf}
}
\caption{拟合情况}
\label{overfit}
\end{figure}
Stat-PKU LaTeX 2018-12-14 42 / 94
快速入门 LATEX 文档元素 排版文字 排版图片和表格 排版数学公式 关于 LATEX 的一些说明及高级用法
子图并排
上页代码的显示效果如下图 2.
x2 x2
x2
x1 x1 x1
Fig 2: 拟合情况
图文混排
\begin{minipage}{4.2cm}
\includegraphics[height=4cm, width=4cm]{fit3.pdf}
\end{minipage}%
\begin{minipage}{6cm}
\textbf{William George Horner} (geboren in 1786,
gestorven in 1837) was een Brits wiskundige.
Hij studeerde aan de Kingswood School in Bristol,
waar hij reeds op 14(!)-jarige leeftijd een masteropleiding volgde.
Daarna trok hij richting Bath waar hij een school stichtte.
\end{minipage}
图文混排
上页代码显示效果图.
x2
William George Horner (geboren in 1786,
gestorven in 1837) was een Brits wiskundige.
Hij studeerde aan de Kingswood School in
Bristol, waar hij reeds op 14(!)-jarige leeftijd
een masteropleiding volgde. Daarna trok hij
x1 richting Bath waar hij een school stichtte.
好用的绘图工具
知乎: 如何在论文中画出漂亮的插图?
推荐
跑代码出图, 存为 pdf 格式或者 svg 格式
Ipe: http://ipe.otfried.org/
GeoGebra: https://www.geogebra.org/
插入表格
\begin{tabular}{⟨column-spec⟩}
\hline
\end{tabular}
在线表格编辑: http://www.tablesgenerator.com/.
插入表格
列格式 说明
l/c/r 单元格内容左对齐/居中/右对齐, 不折行
p{⟨width⟩} 单元格宽度固定为 ⟨width⟩, 可自动折行
| 绘制竖线
@{⟨string⟩} 自定义内容 ⟨string⟩
插入表格
表格简单示例:
\begin{table}[!htb]
\centering
\caption{简单表格示例}
\label{tab:example} Table 5: 简单表格示例
\begin{tabular}{l|c|c}
\hline 姓名 身高 年龄
姓名 & 身高 & 年龄 \\ \hline
张小明 175 19
张小明 & 175 & 19 \\ \hline
李四 & 182 & 20 \\ 李四 182 20
\hline
\end{tabular}
\end{table}
横向合并单元格
\multicolumn{⟨n⟩}{⟨column-spec⟩}{⟨item⟩}
\begin{tabular}{|c|c|c|}
\hline
1 & 2 & Center \\ \hline 1 2 Center
\multicolumn{2}{|c|}{3} & 3 Right
\multicolumn{1}{r|}{Right} \\ \hline 4 C
4 & \multicolumn{2}{c|}{C} \\ \hline
\end{tabular}
纵向合并单元格
\multirow{⟨n⟩}{⟨width⟩}{⟨item⟩}
\begin{tabular}{ccc}
\hline
\multirow{2}{*}{Item} & Value
\multicolumn{2}{c}{Value} \\ Item
First Second
\cline{2-3}
& First & Second \\ \hline A 1 2
A & 1 & 2 \\ \hline
\end{tabular}
三线表的绘制
\begin{tabular}{cccc}
\toprule
& \multicolumn{3}{c}{Numbers} \\
Numbers
\cmidrule{2-4}
& 1 & 2 & 3 \\ 1 2 3
\midrule
Alphabet A B C
Alphabet & A & B & C \\
Roman & I & II& III \\ Roman I II III
\bottomrule
\end{tabular}
排版数学公式
行内公式和行间公式
勾股定理是: 勾股定理是:
\begin{equation}\label{eq:gougu}
a^2 + b^2 = c^2 a2 + b2 = c2 (1)
\end{equation}
根据公式(\ref{eq:gougu})可得, 根据公式 (1) 可得,
行内公式和行间公式
In text:
$\lim_{n \to \infty}
\sum_{k=1}^n \frac{1}{k^2}
∑n 1 π2
= \frac{\pi^2}{6}$. In text: limn→∞ k=1 k2 = 6
.
In display:
In display:
\[ ∑
n
1 π2
lim =
\lim_{n \to \infty} n→∞ k2 6
k=1
\sum_{k=1}^n \frac{1}{k^2}
= \frac{\pi^2}{6}
\]
数学模式
当使用 $ 开启行内公式输入, 或是使用 \[ 命令、equation 环境时, LATEX 就进入了数学
模式.
数学模式相比于文本模式有以下特点:
1 数学模式中输入的空格被忽略. 数学符号的间距默认由符号的性质 (关系符号、运算
符等) 决定. 需要人为引入间距时, 使用 \quad 和 \qquad 等命令.
2 不允许有空行 (分段). 行间公式中也无法用 \\ 命令手动换行. 排版多行公式有其他
环境.
3 所有的字母被当作数学公式中的变量处理, 字母间距与文本模式不一致, 也无法生成
单词之间的空格. 如果想在数学公式中输入正体的文本, 可使用 amsmath 宏包提供
的 \text 命令.
常用数学符号
常用数学符号
\[
\lim_{x \rightarrow 0}
\frac{\sin x}{x} = 1
\]
sin x
In text: lim =1
x→0 x
$\sum_{i=1}^n \quad ∑n ∫π Hπ ∏
\int_0^{\frac{\pi}{2}} \quad In text: i=1 0
2 2
0 ϵ
括号和定界符
\[
1 + (\frac{1}{1 - x^{2}})^3 \quad
1 + \left( \frac{1}{1 - x^{2}}
( )3
\right)^3 \quad 1 1 ∂f
1+( )3 1+
\left.\frac{\partial f}{\partial t} 1 − x2 1 − x2 ∂t t=0
\right|_{t = 0}
\]
括号和定界符
多行公式
\begin{align}
a & = b + c \\
a=b+c (2)
& = d + e
\end{align} =d+e (3)
\begin{align}
a &=1 & b &=2 & c &=3 \\
a=1 b=2 c=3 (4)
d &=-1 & e &=-2 & f &=-5
\end{align} d = −1 e = −2 f = −5 (5)
多行公式
\begin{align}
a & = b + c \\
a=b+c (6)
& = d + e + f + g + h + i
+ j + k + l \notag \\ =d+e+f+g+h+i+j+k+l
& \quad + m + n + o \\
+m+n+o (7)
& = p + q + r + s
\end{align} =p+q+r+s (8)
多行公式
\begin{gather}
a = b + c \\ a=b+c (9)
d = e + f + g \\
d=e+f+g (10)
h + i = j + k \notag \\
l + m = n h+i=j+k
\end{gather} l+m=n (11)
公用编号的多行公式
\begin{equation}
\begin{aligned}
a=b+c
a & = b + c \\
d & = e + f + g \\ d=e+f+g
(12)
h + i & = j + k \\
h+i=j+k
l + m & = n
\end{aligned} l+m=n
\end{equation}
数组和矩阵
为了排版二维数组, LATEX 提供了 array 环境, 用法与 tabular 环境极为类似, 也需要定
义列格式, 并用 \\ 换行. 数组可作为一个公式块, 在外套用 \left、\right 等定界符:
\[ \mathbf{X} = \left(
\begin{array}{cccc}
x11 x12 ... x1n
x_{11} & x_{12} & \ldots & x_{1n}\\
x
x_{21} & x_{22} & \ldots & x_{2n}\\ 21 x22 ... x2n
X=
.. .. .. ..
\vdots & \vdots & \ddots & \vdots\\ . . . .
x_{n1} & x_{n2} & \ldots & x_{nn}\\
xn1 xn2 ... xnn
\end{array} \right) \]
也可利用空的定界符排版出分段函数:
\[ |x| = \left\{
\begin{array}{rl}
-x & \text{if } x < 0,\\ −x
if x < 0,
|x| = 0 if x = 0,
0 & \text{if } x = 0,\\
x & \text{if } x > 0. x if x > 0.
\end{array} \right. \]
Stat-PKU LaTeX 2018-12-14 65 / 94
快速入门 LATEX 文档元素 排版文字 排版图片和表格 排版数学公式 关于 LATEX 的一些说明及高级用法
分段函数
\[
|x| =
\begin{cases}
−x
if x < 0,
-x & \text{if } x < 0, \\
|x| = 0 if x = 0,
0 & \text{if } x = 0, \\
x & \text{if } x > 0. x if x > 0.
\end{cases}
\]
矩阵
\[
\begin{pmatrix}
1 & 2 \\
3 & 4
\end{pmatrix}, 1 2 1 2
,
\begin{bmatrix} 3 4 3 4
1 & 2 \\
3 & 4
\end{bmatrix}
\]
定理环境
\newtheorem{⟨theorem environment⟩}{⟨title⟩}[⟨section-level⟩]
\newtheorem{⟨theorem environment⟩}[⟨counter⟩]{⟨title⟩}
\newtheorem{mythm}{Theorem}[section]
\begin{mythm}\label{thm:light} Theorem
The light speed in vacuum
is $299,792,458\,\mathrm{m/s}$. The light speed in vacuum is
\end{mythm} 299, 792, 458 m/s.
\begin{mythm}[EM relation]
The relationship of energy, Theorem (EM relation)
momentum and mass is The relationship of energy, momentum
$E^2 = m_0^2 c^4 + p^2 c^2$,
and mass is E2 = m20 c4 + p2 c2 , where
where $c$ is the light speed
described in theorem \ref{thm:light}. c is the light speed described in theorem
\end{mythm} 5.1.
关于公式
关于 LATEX 的一些说明及高级用法
TeX 引擎、格式、发行版
可以参考: https://liam.page/2018/11/26/
introduction-to-TeX-engine-format-and-distribution/
几个概念:
引擎 全称为排版引擎,是编译源代码并生成文档的程序,如 pdfTEX、XƎTEX
等, 有时也称为编译器.
TeX 引擎、格式、发行版
常见的引擎、格式和编译命令的关系总结于表 6.
命令行编译
xelatex test.tex
bibtex test.tex
xelatex test.tex
xelatex test.tex
LATEX 的安装目录树
以 TEX Live 为例, 假设系统的 TEXMF 树根目录为 C:\texlive\2018\texmf-dist, 其
下有很多子目录, 仅举几例:
/usr/local/texlive/2018/texmf-dist/
文字和编码
ASCII 编码
Unicode 编码
UTF-8 编码
GBK 和 GB2312 编码
LATEX 用到的文件
LATEX 在编译过程中除了生成 .dvi 或 .pdf 格式的文档外, 还生成相当多的辅助文件和
日志.
.log 排版引擎生成的日志文件,供排查错误使用.
.aux LaTeX 生成的主辅助文件,记录交叉引用、目录、参考文献的引用等.
.toc LaTeX 生成的目录记录文件.
.lof LaTeX 生成的图片目录记录文件.
.lot LaTeX 生成的表格目录记录文件.
.bbl BibTeX 生成的参考文献记录文件.
.blg BibTeX 生成的日志文件.
.idx LaTeX 生成的供 makeindex 处理的索引记录文件.
.ind makeindex 处理 .idx 生成的用于排版的格式化索引文件.
.ilg makeindex 生成的日志文件.
.out hyperref 宏包生成的 PDF 书签记录文件.
Stat-PKU LaTeX 2018-12-14 78 / 94
快速入门 LATEX 文档元素 排版文字 排版图片和表格 排版数学公式 关于 LATEX 的一些说明及高级用法
LATEX 可能用到的额外文件
常见的额外文件:
代码规范
代码规范是一个良好的编程习惯.
其他讨论:
使用 LaTeX 有什么比较好的编写技巧或习惯?
LaTeX 有哪些「新手须知」的内容?
强迫症玩转 LaTeX
论文常用格式及其 LaTeX 书写方法介绍
Stat-PKU LaTeX 2018-12-14 80 / 94
快速入门 LATEX 文档元素 排版文字 排版图片和表格 排版数学公式 关于 LATEX 的一些说明及高级用法
参考文献
LATEX 提供的参考文献和引用方式比较原始, 需要用户自行书写参考文献列表 (包括格
式), 下面稍作介绍但是不推荐使用.
LATEX 提供了最基本的 \cite 命令用于在正文中引用参考文献:
\cite{⟨citation⟩}
\begin{thebibliography}{⟨widest label⟩}
\end{thebibliography}
使用 BIBTEX 排版参考文献
使用 BIBTEX 数据库生成参考文献和引用主要分为三步:
\documentclass{article}
\bibliographystyle{plain}
\begin{document}
\section{Some words}
Some excellent books, for example, \cite{citation1}
and \cite{citation2} \ldots
\bibliography{books}
\end{document}
使用 BIBTEX 排版参考文献
BIBTEX 数据库以 .bib 作为扩展名, 其内容是若干个文献条目, 每个条目的格式为:
@⟨type⟩{⟨citation⟩,
⟨key1⟩ = {⟨value1⟩},
⟨key2⟩ = {⟨value2⟩},
}
其中 ⟨type⟩ 为文献的类别, ⟨citation⟩ 为 \cite 命令使用的文献标签. 在 ⟨citation⟩ 之后
为条目里的各个数据项, 以 ⟨key⟩ = {⟨value⟩} 的形式组织.
无需自己手写 BIBTEX 文献条目. 从 Google Scholar 或者期刊/数据库的网站上都能
够导出 BIBTEX 文献条目.
可以更改参考文献的样式:
\bibliographystyle{⟨bst-name⟩}
其中 ⟨bst-name⟩ 为 .bst 样式文件的名称, 不要带 .bst 扩展名.
Stat-PKU LaTeX 2018-12-14 83 / 94
快速入门 LATEX 文档元素 排版文字 排版图片和表格 排版数学公式 关于 LATEX 的一些说明及高级用法
定义新命令:
\newcommand{\⟨name⟩}[⟨num⟩]{⟨definition⟩}
\newcommand{\diff}{\,{\mathrm d}}
\newcommand{\p}[3]{\frac{\partial^{#1}#2}{\partial{#3}^{#1}}}
然后可以直接使用
定义新环境:
\newenvironment{⟨name⟩}[⟨num⟩]{⟨before⟩}{⟨after⟩}
比如定义一个证明环境:
然后直接使用
\begin{myproof}
证明: 考虑到 x = y − 1, 因此可得
考虑到$x = y - 1$, 因此可得
\[ a^2 + b^2 = c^2 \] a2 + b2 = c2
代入上式即证.
\end{myproof} 代入上式即证.
\ProvidesPackage{⟨package name⟩}
\RequirePackage[⟨options⟩]{⟨package name⟩}
\ProvidesClass{⟨class name⟩}
\LoadClass[⟨options⟩]{⟨package name⟩}
编写大型文档
编写大型文档 (书籍、毕业论文等), 可以将源代码分成若干个文件, 比如每章内容为一
个.tex 文件, 然后使用命令 \include 用来在源代码里插入文件:
\include{⟨filename⟩}
\include{chapters/a.tex} % 相对路径
\include{/home/Bob/file.tex} % Linux/macOS 绝对路径
\include{D:/file.tex} % Windows 绝对路径, 用正斜杠
\input{⟨filename⟩}
北大学位论文模板 pkuthss
其他各个大学学位论文模板:
国内大学毕业论文 LaTeX 模板集合
LATEX 与 Markdown
关于 Mardkown
Markdown 是一种极简的标记语言
几点推荐
Markdown 编辑器可用 Typora 或者 VS Code + 插件
LATEX 的其他用途
LATEX 的其他用途
使用 beamer 类制作演示文稿
使用 moderncv 类制作个人简历
制作海报
……
遇到问题怎么办
几点建议
不要自以为是的去实现效果, 尽量去搜索优雅的解决方式.
有甄别地下载模板使用
参考资料
LaTeX 入门 - 刘海洋
Any question ?