LaTex,从入门到精通

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
% 导言区   主要用于全局设置

% documentclass命令用于声明文档的类型,这里是article,表示文章类型。
\documentclass{article} % 还有book , report , article , letter类型

% 使用包,用于扩展功能
\usepackage{ctex} % 中文支持,否则输入中文会报错

% 设置标题、作者、日期。日期用today表示当前日期
\title{My First Document}
\author{\heiti 是DAT} % \heiti用于设置字体为黑体。
\date{\today}


% 正文区
% 用begin和end来表示一个环境

% 一个latex只能有一个document环境
\begin{document}
\maketitle % 为了能让标题显示出来,需要在正文区调用maketitle命令。letter类型的文档不需要这个命令。

Hello World!

% 用$...$来表示数学公式 ,一整段空行表示换行
Let $f(x)$ be defined by the formula
$$f(x)=3x^2+x-1$$ % 用$$...$$来表示行间公式
which is a polynomial of degree 2.

中文测试

\begin{equation} % 用equation环境来产生带编号的行间公式
\int_0^{+\infty} x^2 dx
\end{equation}

\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[10pt]{article} % 字体大小的设置是一个可选参数,这里设置normalsize为10磅。一般只有10pt, 11pt, 12pt三种大小可选。

\usepackage{ctex}

% 不建议直接在文档中直接使用大量命令,而是将命令放在导言区,然后在文档中调用命令。
\newcommand{\myfont}{\textbf{\textsf{Fancy Text}}}

\begin{document}
% 字体族设置 (罗马字体、无衬线字体、打字机字体)
% 用命令声明
\textrm{Roman Family} \textsf{Sans Serif Family} \texttt{Typewriter Family}

% 也可以使用字体声明
{\rmfamily Roman Family} {\sffamily Sans Serif Family} {\ttfamily Typewriter Family}
% 使用大括号限定字体声明的作用范围,如果不限定,那么作用范围就是后续的所有内容。

\rmfamily
TEST

% 当遇到了新的字体声明,之前的字体声明就会失效,然后启用新的字体声明。
\sffamily
TEST

% 字体形状设置 (直立、斜体、伪斜体、小型大写)
% 用命令声明
\textup{Upright Shape} \textit{Italic Shape} \textsl{Slanted Shape} \textsc{Small Caps Shape}

% 也可以使用字体声明
{\upshape Upright Shape} {\itshape Italic Shape} {\slshape Slanted Shape} {\scshape Small Caps Shape}

% 中文字体设置(记得使用ctexhongbao宏包)
\songti 宋体 \heiti 黑体 \fangsong 仿宋 \kaishu 楷书

中文字体的\textbf{粗体}与\textit{斜体} % 中文的粗体是用黑体来表示的,斜体是用楷书来表示的。

% 字体大小
{\tiny Hello}

{\scriptsize Hello}

{\footnotesize Hello}

{\small Hello}

{\normalsize Hello}

{\large Hello}

{\Large Hello}

{\LARGE Hello}

{\huge Hello}

{\Huge Hello}

% 中文字号设置
\zihao{0} 你好

\zihao{1} 你好

\myfont
\end{document}

渲染效果

Latex的基本结构和ctexset设置

源码

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
\documentclass{ctexbook} % 使用ctexart文档类型,这样就可以使用中文了,默认section是居中的,subsection是居左的。

\usepackage{ctex}

% 可以用ctexset来设置,不用居中
\ctexset{
section = {
format+= \zihao{-4} \heiti \raggedright, % \zihao{-4}表示小四号字体,\heiti表示黑体,\raggedright表示左对齐
name = {,、}, % 设置节的编号为、、
number = \chinese{section}, % 设置节的编号为汉字
beforeskip = 1.0ex plus 0.2ex minus .2ex, % 设置节的前间距
afterskip = 1.0ex plus 0.2ex minus .2ex, % 设置节的后间距
aftername = \hspace{0pt} % 设置节的编号和节名之间的空格
},
subsection = {
format+= \raggedright,
name = {,、},
number = \chinese{subsection},
beforeskip = 1.0ex plus 0.2ex minus .2ex,
afterskip = 1.0ex plus 0.2ex minus .2ex,
aftername = \hspace{0pt}
}
}

\begin{document}
% tableofcontents命令用于产生目录
\tableofcontents

% 也可以用chapter命令来产生带章节的大纲,但是这个命令只能在book和report类型的文档中使用。此时,subsubsection是不起作用的。
\chapter{绪论}

\section{引言} % 通过section、subsection、subsubsection来构建提纲
近年来,随着计算机技术的飞速发展,计算机视觉技术在工业界和学术界都得到了广泛的应用。计算机视觉技术的发展,使得计算机能够像人一
样“看”到世界,从而使得计算机能够更好地为人类服务。计算机视觉技术的发展,使得计算机能够像人一样“看”到世界,从而使得计算机能够更
好地为人类服务。计算机视觉技术的发展,使得计算机能够像人一样“看”到世界,从而使得计算机能够更好地为人类服务。计算机视觉技术的发
展,使得计算机能够像人一样“看”到世界,从而使得计算机能够更好地为人类服务。计算机视觉技术的发展,使得计算机能够像人一样“看”到世
界,从而使得计算机能够更好地为人类服务。\par 近年来,随着逆向工程和三维重建技术的发展,三维模型的应用越来越广泛。三维模型的应用
越来越广泛。三维模型的应用越来越广泛。 % 使用\par来产生新的段落
\\其他内容\\其他
% 使用\\来表示换行
% \par 有缩进,\\没有缩进
\section{实验方法}
\section{实验结果}
\subsection{数据} % 用sub来构建下一级提纲
\subsection{图表}
\subsubsection{实验条件} % 用subsub来构建下一级提纲
\subsubsection{实验过程}
\section{结论}
\section{致谢}



\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
64
65
66
67
68
69
70
71
72
73
\documentclass{article}

\usepackage{ctex}
\usepackage{xltxtra}

\begin{document}
\section{空白符号}
% 可以添加任意多个空格,发现只有一个空格的效果。如中英文混用,会自动在中英文之间添加空格。
Are you wiser than others? definitely no. in some ways, ma y it is true.
近年来,随着逆向工程和三维重建技术的发展,三维模型的应用越来 越广泛。三维模型的应用
越来越广泛。三维模型的应用越来越广泛。

% 1em(当前字体中M的宽度)
a \quad b

% 2em
a \qquad b

% 约为1/6个em
a \, b a\thinspace b

% 约为1/3个em
a \: b a\medspace b

% 空格
a\ b

% 硬空格
a~b

% 1pc=12pt=4.218mm,产生指定宽度的空白
a\kern 1pc b

a\hskip 1em b

a\hskip -1em b % 也可以使用负值

a\hspace{35pt}b

% 占位宽度
a\hphantom{xyz}b

% 弹性长度
a\hfill b % 用于撑满整个行

\section{\LaTeX 控制符}
% \用于输出在LaTex中有特殊意义的符号,如$、%、{、}等。
% 如果要输出\本身,需要用\textbackslash来表示。
\# \$ \% \{ \} \~{} \_{} \^{} \textbackslash

\section{排版符号}
\S \P \P \ddag \copyright \pounds

\section{\TeX 标志符号}
\TeX{} \LaTeX{} \LaTeXe{}
\XeLaTeX{} % XeLaTeX的标志符号需要用到xltxtra宏包。

\section{引号}
` ' `` '' ``你好'' % 用两个`来表示左引号,两个'来表示右引号。
% `是键盘上Tab键上方的符号,'是键盘上Enter键左边的符号。

\section{连字符}
- -- --- % -表示一个连字符,--表示数字范围的连字符,---表示破折号。

\section{非英文字符}
\oe \OE \ae \AE \aa \AA \o \O \l \L \ss \SS !` ?`
% 用于产生一些非英文字符。

\section{重音符号(以o为例)}
\`o \'o \^o \''o \~o \=o \.o \u{o} \v{o} \H{o} \r{o} \t{o} \b{o} \c{o} \d{o}


\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
\documentclass{ctexart}

\usepackage{ctex}
\usepackage{graphicx} % 用于插入图片
% 语法:\includegraphics[<选项>]{<文件名>}
% 格式:EPS,PDF,PNG,JPEG,BMP
\graphicspath{{figures/} ,{pics/}} % 图片在当前目录下的figures目录下,
%也可以添加其他目录,如pics目录。如果有多个目录,用逗号隔开。

\begin{document}
\LaTeX{}中的插图:

\includegraphics{1} % 大括号里面是文件名,可以加入扩展名。不过图片太大会超出边界。
\includegraphics{interlude_50.png}
% 可以加入可选参数,然后指定缩放因子,高度和宽度和旋转角度,也可同时指定多个参数
\includegraphics[scale=0.22]{interlude_50.png}

\includegraphics[height=2cm]{interlude_50.png}

\includegraphics[width=2cm]{interlude_50.png}

\includegraphics[height=2cm,width=2cm]{interlude_50.png}

\includegraphics[scale=0.22 ,angle=45]{interlude_50.png}

% 指定相对高度和宽度

\includegraphics[height=0.5\textheight]{interlude_50.png}

\includegraphics[width=0.5\textheight]{interlude_50.png}


\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
\documentclass{ctexart}

\usepackage{ctex}


\begin{document}
% 使用tabular环境来排版表格

% 用|符号产生表格竖线,也可以不加。用两个||产生双竖线。
% 可以用p{宽度}来指定列宽,超过宽度的部分自动换行。
\begin{tabular}{| l || c | c | c | p{1.5cm} |} % 生成5列的表格,每列左对齐,居中,居中,居中,右对齐。
% 可以用\hline命令产生表格横线
\hline
% 不同列间用&分隔,行末用\\分隔
姓名 & 语文 & 数学 & 外语 & 备注\\

% 用两个 \hline 命令产生双横线
\hline \hline
张三 & 87 & 100 & 93 & 优秀\\
\hline
李四 & 75 & 64 & 52 & 补考另行通知\\
\hline
王五 & 80 & 82 & 78 & \\
\hline
\end{tabular}
\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
\documentclass{ctexart}

\usepackage{ctex}
\usepackage{graphicx}
\graphicspath{{figures/}}


\begin{document}

% 浮动体 可以灵活的安排图片和表格的位置
\LaTeX{}中的插图:
\begin{figure}[htbp] % 可选参数指定浮动体排版,htbp表示浮动体可以出现在当前位置(h)、页面顶部(t)、页面底部(b)、单独一页(p)。
\centering % 让环境中的内容居中
\includegraphics[scale=0.1]{interlude_46.png}

\caption{我的老婆们} % 给插图加上标题
\end{figure}

\LaTeX{}中的表格。\ref{tab:example}
% 可以把tabular环境放在table环境中,使得表格可以浮动。
\begin{table}[htbp]
\centering
\caption{实例表格}\label{tab:example} % 用label浮动体设定标签,用ref引用标签。
\begin{tabular}{| l || c | c | c | p{1.5cm} |}
\hline
姓名 & 语文 & 数学 & 外语 & 备注\\
\hline \hline
张三 & 87 & 100 & 93 & 优秀\\
\hline
李四 & 75 & 64 & 52 & 补考另行通知\\
\hline
王五 & 80 & 82 & 78 & \\
\hline
\end{tabular}
\end{table}

\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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
\documentclass{ctexart}

\usepackage{ctex}
\usepackage{graphicx}
\graphicspath{{figures/}}
\usepackage{amsmath}



\begin{document}
\tableofcontents
\section{行内公式}
\section{美元符号}
交换律是 $a+b=b+a$,如$1+2=2+1=3$
\subsection{小括号}
交换律是 \(a+b=b+a\),如\(1+2=2+1=3\)
\subsection{math环境}
交换律是 \begin{math}a+b=b+a\end{math},如\begin{math}1+2=2+1=3\end{math}。
\section{上下标}
\subsection{上标}
$3x^2 - x + 2 = 0$\par % 用 ^ 符号表示上标
$3x^{20} - x + 2 = 0$\par % 如果上标超过一位,需要用 {} 括起来。
$3x^{3x^{20} - x + 2} - x + 2 = 0$ % 甚至可以把公式作为上标。
\subsection{下标}
$a_0, a_1, a_2$\par % 用 _ 符号表示下标
$a_{100}$\par % 同样的,如果下标超过一位,需要用 {} 括起来。
$a_{3x^{20} - x + 2}$\par
\section{希腊字母}
$\alpha$, $\beta$, $\gamma$, $\epsilon$, $\pi$, $\omega$.\par
$\Gamma$, $\Delta$, $\Theta$, $\Pi$, $\Omega$.\par
$\alpha^2 + \beta^2 = \gamma^2$.\par % 希腊字母也可以用在通用数学排版中。

\section{数学函数}
$\log$, $\sin$, $\cos$, $\arcsin$, $\arccos$, $\ln$.\par
$\sin^2 x + \cos^2 x = 1$.\par
$e^{i\pi} + 1 = 0$.\par
$y=\log_{a} x$.\par
$y=\ln x$.\par
$\sqrt[4]{x}$.\par
$\sqrt{x^2 + y^2 + z^2}$.\par
$\sqrt{2 + \sqrt{2}}$.\par

\section{分式}
% 用 \frac{分子}{分母} 来排版分式。也可以直接用 / 符号。
$1/2$, $\frac{1}{2}$.\par

\section{行间公式}
\subsection{美元符号}
交换律是 $$a+b=b+a$$
$$1+2=2+1=3$$
\subsection{中括号}
交换律是 \[a+b=b+a\]
\[1+2=2+1=3\]
\subsection{displaymath环境}
交换律是
\begin{displaymath}
a+b=b+a
\end{displaymath}

\begin{displaymath}
1+2=2+1=3
\end{displaymath}。
\subsection{自动编号的equation环境}
交换律见式\ref{eq:commutative},如式\ref{eq:commutative}所示。
\begin{equation}
1+2=2+1
\end{equation}
\begin{equation}
a+b=b+a \label{eq:commutative}
\end{equation}

\subsection{不自动编号的equation*环境} % 需要amsmath宏包
交换律见式\ref{eq:commutative2},如式\ref{eq:commutative2}所示。
\begin{equation*}
a+b=b+a \label{eq:commutative2}
\end{equation*}


\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
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
\documentclass{article}

\usepackage{ctex}
\usepackage{amsmath}



\begin{document}
%矩阵环境中,&用来分隔列,用\\来分隔行。
%也可以用上下标
\section{矩阵类型和基本用法}
\[
\begin{matrix} % 需要用到amsmath宏包
0 & 1 \\
1 & 0
\end{matrix}
\begin{pmatrix} % 带有小括号的矩阵
0 & 1 \\
1 & 0
\end{pmatrix}
\begin{bmatrix} % 带有中括号的矩阵
0 & 1 \\
1 & 0
\end{bmatrix}
\begin{Bmatrix} % 带有大括号的矩阵
0 & 1 \\
1 & 0
\end{Bmatrix}
\begin{vmatrix} % 带有单竖线的矩阵
0 & 1 \\
1 & 0
\end{vmatrix}
\begin{Vmatrix} % 带有双竖线的矩阵
0 & 1 \\
1 & 0
\end{Vmatrix}
\]

$$
\begin{bmatrix}
a_{11}^2 & a_{12}^2 \\
a_{21}^2 & a_{22}^2
\end{bmatrix}
$$
\section{矩阵省略号}
%矩阵中常用的省略号可以用\dots、\vdots、\ddots来表示
$$
A = \begin{bmatrix}
a_{11} & \dots & a_{1n} \\
\vdots & \ddots & \vdots \\
a_{n1} & \dots & a_{nn}
\end{bmatrix}_{n \times n} % 可以用times来表示乘号
$$
%cdots和dots表示水平省略号,vdots表示竖直省略号,ddots表示对角省略号。

$$
\begin{pmatrix}
1 & \frac 12 & \dots & \frac 1n \\
\hdotsfor{4} \\ % hdotsfor命令用于在矩阵中插入水平省略号,第一个参数表示插入的列数,*表示插入到最后一列。
m & \frac m2 & \dots & \frac mn
\end{pmatrix}
$$

\section{矩阵的分块}
%分块矩阵
$$
\begin{pmatrix}
\begin{matrix}
1 & 0 \\
0 & 1
\end{matrix} & \text{\Large 0} \\ % \text命令用于在数学环境临时切换到文本环境
\text{\Large 0} & \begin{matrix}
1 & 0 \\
0 & -1
\end{matrix}
\end{pmatrix}
$$

\section{三角矩阵}
$$
\begin{pmatrix}
a_{11} & a_{12} & \cdots & a_{1n} \\ % cdots表示水平省略号
& a_{22} & \cdots & a_{2n} \\
& & \ddots & \vdots \\
\multicolumn{2}{c}{\raisebox{1ex}[0pt]{\Huge 0}} & & a_{nn}
\end{pmatrix}
$$
% 这里使用了multicolumn命令,用于合并列,第一个参数表示合并的列数,第二个参数表示合并后的格式,这里c代表居中,第三个参数表示合并后的内容。
% raisebox命令用于提升box,第一个参数表示提升的高度,第二个参数表示提升后的深度(向下),第三个参数表示提升的内容。


\section{行内小矩阵} % smallmatrix环境
复数$z=(x,y)$也可用矩阵
\begin{math}
\left(
\begin{smallmatrix}
x & -y \\
y & x
\end{smallmatrix}
\right)
\end{math}

\section{array环境}
\[
\begin{array}{r | r} % 类似tabular环境。
\frac 12 & 0 \\
\hline
0 & -\frac a{b}c \\
\end{array}
\]

\section{array环境构造复杂矩阵}
\[
% @{<内容>} 用于在列之间插入内容,不占表格列数
% 此处添加一个负值空白,表示向左-5pt的距离,在两列之间插入一个-5磅的水平空白。用来让右侧括号标识符和大矩阵之间产生一定的距离。
\begin{array}{c@{\hspace{-5pt}}l}
% 第1行,第1列。 用来产生矩阵的主要内容
\left( % 用left和right来产生大矩阵两边的定界符,\left(表示小括号,\left|表示竖线。
\begin{array}{ccc | ccc}
a & \cdots & a & b & \cdots & b \\
\vdots & \ddots & \vdots & \vdots & \ddots & \vdots \\
a & \cdots & a & b & \cdots & b \\
\hline
& & & c & \cdots & c \\
& & & \vdots & \ddots & \vdots \\
\multicolumn{3}{c|}{\raisebox{2ex}[0pt]{\Large 0}} & c & \cdots & c \\ % 要用|来补齐竖线。
\end{array}
\right)

&

% 第1行,第2列。 用来产生矩阵的右侧的大括号标识符
\begin{array}{l}
%\left. 仅表示与\right\}配对,什么都不输出。所以只有right\}才会输出一个大括号。
\left. \rule{0mm}{7mm} \right\} p \\ % \rule{width}{height},这里用来控制}的大小。
\\
\left. \rule{0mm}{7mm} \right\} q \\
\end{array}
\\
% 第2行,第1列。 用来产生矩阵的下方的大括号标识符
\begin{array}{cc}
\underbrace{\rule{17mm}{0mm}}_m & % underbrace命令用来产生下方的大括号标识符。
\underbrace{\rule{17mm}{0mm}}_n
\end{array}

&
% 第2行,第2列。

\end{array}
\]



\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
64
65
% 导言区
\documentclass{article} % ctexart or book or report

\usepackage{ctex} % 中文支持
\usepackage{amsmath} % 数学公式
\usepackage{amssymb} % 数学符号
\usepackage{graphicx} % 图片支持
\graphicspath{{figures/}} % 图片路径,当前目录下的 figures 文件夹


% 正文区(文稿区)
\begin{document}

\section{gather和gather*环境}
\begin{gather} %使用gather环境来排版多行公式。
a + b = b + a \\ % 不仅实现了换行,还进行了编号。
ab ba
\end{gather}

% 用gather*环境来排版多行公式,但是不进行编号。
\begin{gather*}
a + b = b + a \\
ab ba
\end{gather*}

\begin{gather}
a + b = b + a \notag \\ % 在gather中也可以用notag来取消编号。
ab ba \notag
\end{gather}

\section{align和align*环境}
% align环境用于排版多行公式,但是会对齐公式。
% 使用&来指定对齐位置。一般用于等号对齐。

% 带编号
\begin{align}
x &= t + \cos t + 1 \\
y &= 2\sin t
\end{align}

% 不带编号
\begin{align*}
x &= t + \cos t + 1 \\
y &= 2\sin t
\end{align*}

\section{split环境}
% split环境,对齐采用align的方式,不过编号在中间。
\begin{equation} % 由equation排版的一个公式,所以只有一个编号,在公式垂直方向中间。
\begin{split}
\cos 2x &= \cos^2 x - \sin^2 x \\
&= 2\cos^2 x - 1
\end{split}
\end{equation}

\section{cases环境}
% cases环境,每行用&将一个公式分成两部分,可以用于分段函数。
\begin{equation}
D(x) = \begin{cases}
1, & \text{如果} x \in \mathbb{Q}; \\
0, & \text{如果} x \in \mathbb{R} \setminus \mathbb{Q}.
\end{cases}
\end{equation}

\end{document}

渲染效果

参考