pdf版本链接: https://pan.baidu.com/s/17kpCeos7IvsJ_PmVCyp8lw 提取码: 15hz
基本语句
简单文档结构
\documentclass{article} 声明此文档的类型为一篇文章(article)
基本结构为 \documentclass[选项]{文档类}
选项为文档的编码方式,主要有 GBK 和 UTF8 两种编码方式,一般选择 UTF8。
文档类可以选择 article ,report ,ctex 等,处理中文文档我们通常使用 ctex。
\begin{document} 与 \end{document} 标明了正文的范围,我们以后的书写基本上都是在这个范围里进行。
document 是一个环境,用于规定正文,在LaTeX中存在许多
运行结果是一个比较美观的 Hello , World!
对于初学者我们可以认为这是一个LaTex 文档基本结构,以后书写就按照这种结构来就可以了。
\documentclass{article}
\begin{document}
Hello , World!
\end{document}
注释
单行注释
% 这是一行注释
多行注释
\documentclass{article}
\usepackage{verbatim} % 导入包
\begin{document}
Hello , World!
\end{document}
% 使用 verbatim 包
\begin{comment}
第一行注释
第二行注释
第三行注释
\end{comment}
\iffalse
第一行注释
第二行注释
第三行注释
\fi
命令与环境与声明
命令都以反斜线 \ 开头,后接命令名,命令名或者是一串字母,或是单个符号。命令可以带一些参数,如果命令的参数不止一个字符(不包括空格),就必须用花括号括起来。可选参数如果出现,则用方括号括起来。
无参数: \command
有 n 个参数: \command …
有可选参数: \command [] …
环境是以 \begin{环境} 开始 \end{环境} 结束 的,作用范围为中间部分。可以与命令结合进行格式编排,而这种命令成为声明。声明影响着后面的内容直到环境结束。我们可以称一个环境为一个分组,最大的分组便是表示正文的document环境。一般声明环境的格式如下:
\begin {环境名}[可选参数]<其他参数>
内容
\end {环境名}
文本组织
数学符号以及公式编排
数学模式
TEX 有多种工作模式,输入一行文字时我们在水平模式,当折行分段的时候又自动进入了垂直模式,那输入数学公式的时候自然而然的进入了数学模式。在数学模式中,输入的字符都有专门的意义,字符的排列也遵循单独的一套特殊规则,以适应结构复杂的各种数学公式,为的便是让显示的公式与其想表达的数学意义吻合。
数学公式分类
正文公式
即在正文中显示的公式
显式公式
即单独显示出来的公式在正文的行之间显示的
数学环境的设定
需要注意的是即使是正文中出现的没有特殊符号的算式或者单独出现的字母,都需要进入数学模式
对于行内公式主要有以下三种书写方式
% $公式$ 输入比较简便
$a+b=b+a$
% \(公式\)
\(a+b\)
% \begin{math}公式\end{math}
\begin{math}a+b\end{math}
对于显示公式
推荐的方式是使用 \[ \]。
% $$ 公式(可多行) $$
$$
a+b=b+a
$$
% \[ 公式(可多行) \]
\[
a+b=b+a
\]
% \begin{equation} 公式(可多行 \end{equation} displaymath 环境
\begin{equation}
a+b=b+a
\end{equation}
扩展宏包
数学结构
上标与下标
以下面公式为例,A下面的 ij 为下标,括号右上角的为上标
$$
A_{ij} = (A_{ij-1} + A_{i-1j})^2
$$
上下画线,括号,换行,箭头
\overline 与 \underline 可用来在公式的上下方划横线,\\ 表示换行
$$
\overline{a+b} = \overline{a}+\overline{b}
\underline{a+b} = \underline{a}+\overline{b}
$$
amsmath 提供了在公式里加箭头的命令,需要在正文前使用 \usepackage{amsmath} 来调用
语法 | 效果 |
\overrightarrow{a+b} | 上方左向右箭头 |
\overleftrightarrow{a+b} | 上方双向箭头 |
\underleftarrow{a-b} | 下方右向左箭头 |
\underrightarrow{a-b} | 下方左向右箭头 |
\underleftrightarrow{a-b} | 下方双向箭头 |
\overleftarrow{a+b}$ | 上方右向左箭头 |
\vec x | 单个字母的箭头 |
$$
\overleftarrow{a+b}
\overrightarrow{a+b}
\overleftrightarrow{a+b}
\underleftarrow{a-b}
\underrightarrow{a-b}
\underleftrightarrow{a-b}
\vec x
$$
方括号与花括号
使用 \overbrace 和 \underbrace 来加上花括号,加备注可借鉴上标下标的例子来进行定义
mathtools 宏包定义了加方括号的语句,使用需要导包
\underbracket[线宽][伸出高度]{内容}
\overbracket[线宽][伸出高度]{内容}
KaTeX parse error: Can't use function '\overbrace' in text mode at position 102: …1 )\\ a+ \rlap{\̲o̲v̲e̲r̲b̲r̲a̲c̲e̲{\phantom{b+c+d…
% 给出的代码没有加上 \\ 来表示换行,因为在代码框中会显示报错,下同
\[
( \overbrace{a_0,a_1,\dots,a_n}
^{\text{n+1}} ) =
( \underbrace{1,2,\dots,n}_{n} , n+1 )
a+ \rlap{\overbrace{\phantom{b+c+d}}^m} b+ \underbrace{c+d+e}_n +f
\]
分式
\frac 常用来书写分式结构
$$
\frac 36=\frac16+\frac26
\frac {a+b}{ab} = \frac 1a+\frac 1b
$$
有一些类似于分数分为上下两半的形式,比如:
我们使用 \binom 来书写
\[
\binom 21 ab
\tbinom 21 ab % 此格式一般用于显示正文中公式的书写
\dbinom 21 ab
\]
根式
Latex 一般使用 \sqrt 定义书写根式
$$\sqrt [3]{27} = 3
\frac{\sqrt5 + 1}2
$$
矩阵
一般我们在矩阵环境下来书写矩阵,同样我们用 \\ 表示换行 ,& 表示 空格,且支持矩阵嵌套
\begin{matrix} \end{matrix}
\[
A = \begin{matrix}
a_{11} & a_{12} & a_{13}
a_{21} & a_{22} & a_{23}
a_{31} & a_{32} & a_{33}
\end{matrix}
\]
\begin{pmatrix} \end{pmatrix}
\[
B = \begin{pmatrix}
a_{11} & a_{12} & a_{13}
a_{21} & a_{22} & a_{23}
a_{31} & a_{32} & a_{33}
\end{pmatrix}
\]
下面给出其他的形式,限于篇幅,请大家自行测试。
形式 | 效果 |
bmatrix | 中括号 |
Bmatrix | 大括号 |
vmatrix | 单竖线 |
Vmatrix | 双竖线 |
矩阵中常使用省略号来对元素进行省略比如 \dots, \vdots(斜省略号), \ddot(竖直省略号)。
amsmath 宏包 提供 \hdotsfor{列数}(可跨多列的省略号)
amsmath 宏包 提供 smallmatrix 环境 在行内书写比较小的矩阵
mathdots 宏包 提供 \iddots(反向斜省略号)
$$
A = \begin{vmatrix}
a_{11}&\dots&a_{1n}
& \ddots & \vdots
0 & & a_{nn}
\end{vmatrix}_{n*n}
$$
amsmath 提供的 \substack 可用于求和公式的上下限书写,效果如图所示。
amsmath 提供subarray 环境不仅可用于求和公式上下限的书写,还能指定对齐方式为 l(左对齐)、c(居中)或 r(右对齐)。
\[
\sum_{\substack{0<i<n 0<j<i}} A_{ij}
\]
% 由于代码块显示问题,换行 \\ 未加上
\documentclass{article}
\usepackage{verbatim}
\usepackage{amsmath}
\begin{document}
\[
\sum_{\begin{subarray}{r}
i<10 j<100 k<1000
\end{subarray}} X(i,j,k)
\]
\[
\sum_{\begin{subarray}{l}
i<10 j<100 k<1000
\end{subarray}} X(i,j,k)
\]
\[
\sum_{\begin{subarray}{c}
i<10 j<100 k<1000
\end{subarray}} X(i,j,k)
\]
\end{document}
矩阵中的元素也存在左对齐,右对齐的问题
mathtools 宏包提供了带星号的 matrix* , pmatrix* 等矩阵环境,用于指定对齐方式
$$
\begin{pmatrix*}[r]
10 & -10 -20 & 3
\end{pmatrix*}
$$
数学算子
求和,积分等符号
这一类算子是随着显示公式和行内公式变化的,比一般的数学符号大点,也被称为巨算符,,类似于下图,下表给出一些比较常见的巨算符。
巨算符 | 意义 |
\sum | 求和 |
\bigvee | 逻辑或 |
\bigcup | 并集 |
\bigcap | 交集 |
\int | 积分(需要amsmath) |
\oint | 环路积分 |
\iiiint | 四重积分(需要amsmath) |
\idotsint | 加上省略的积分(需要amsmath) |
数学算子通常可以带上上下标,在一般情况下(不导入第三方包 amsmath等)以下图公式为例,在显示公式里,积分号的上下标默认在角标位置,其他巨算符默认在上下方(作为上下限)
% \mathcal 是将字母转化为花体的形式
$$
\mathcal{F}(x) = \sum_{x=0}^\infty \oint_0^1 f_k(x,t)\mathrm{d}t
$$
文字名称的算子
一般为常见的数学函数,后者可以是带有上下限的数学算子,书写的形式一般为 \ 加上数学函数名称
$$
\sin{2x} = 2\sin{x}\cos{x}
$$
括号与定界符
括号可以分为圆括号,花括号,尖括号等等,又可分为开符号闭和闭符号(左边为开,右边为闭,和开闭区间有区别哦~)
开符号 | 闭符合 | 解释 |
( | ) | 圆括号 |
[ | ] | 方括号 |
\lbrace | \rbrace | 花括号 |
\langle | \rangle | 尖括号 |
\lfloor | \rfloor | 向下取整 |
\lceil | \rceil | 向上取整 |
\lvert | \rvert | 绝对值 |
\lVert | \rVert | 范式 |
$$
\lvert x+y \rvert \le \lvert x \rvert + \lvert y \rvert
$$
定界符一般有三种 \left \right \middle(可以在前二者之前再加上一个定位符)
$$
\left( X > 2 \middle \vert Y=0 \right)
$$
手动调整定界符大小(将定界符放大到不同尺寸)
\big, \Big, \bigg, \Bigg 可在其后面加上 l r m 来表示定界符的位置,比如 \bigr 用法 同上述定界符
标点符号
一般情况下,逗号,分号这些符号可以之间使用平常的 ,;来表示,冒号我们可以使用 \colon 来表示。
amsmath 提供了省略号的书写,使用命令 \dots,大多数情况下会自动识别适应高度。为了适用一些特殊情况,amsmath还提供了其他命令
情形 | 命令 |
逗号 | \dotsc |
二元运算符或者关系符 | \dotsb |
乘法运算 | \dotsm |
积分 | \dotsi |
其他 | \dotso |
% 环境问题,请大家自行演示
$$
\int_0^1\dotsi\int_0^1
$$
多行公式
amsmath 提供了 gather gather* (不对公式编号)环境,使用 \\ 来表示换行,每行居中显示
align align* (不对公式编号),按照等号或者其他符号来对齐
可以使用 \notag 来对不需要进行标号的公式进行标记
% 未引入amsmath 需要大家自行引入来测试
$$
\begin{gather}
3^2 + 4^2 = 5^2 \notag
5^2 + 12^2 = 13^2 \notag
a^2 + b^2 = c^2
\end{gather}
$$
对单个公式进行拆分可以使用multline 环境和 multiline* 环境
对齐的方式:第一行左对齐,最后一行右对齐,中间的部分居中。不过左右两边与版心边界都留有一小段间距。
KaTeX parse error: No such environment: multline at position 8: \begin{̲m̲u̲l̲t̲l̲i̲n̲e̲}̲ 1+2+3+4+5 \\ +…
% 这种环境适合排版非常长的连续运算
$$
\begin{multline}
1+2+3+4+5
+1+2+3+4+5
+1+2+3+4+5
+1+2+3+4+5
\end{multline}
$$
公式组合
可以使用 cases 环境,它在几行公式前面用花括号括起来,用来表示几种不同的情况,可用于表示分段函数,使用&分隔条件与值
% 版本问题导致markdown显示公式出错,可以自行在网站上测试
$$
\begin{equation}\label
D(x) = \begin{cases}
1, & x>0;
0, & x<=0;
\end{cases}
\end{equation}
$$
图表绘制
三线表
在科技文档中,数据表经常被表现为一种只有三种横线的形式,即三线表。可使用booktabs 宏包绘制,参数如下。
参数 | 描述 |
\toprule | 用来画表格顶部的粗线,下方有少量垂直间距,可以带一个可选的参数改变画线的粗细 |
\midrule | 用来画表格中间的细分隔线,上下有少量垂直间距,可以带一个可选的参数改变线粗细 |
\bottomrule | 用来画表格底部的粗线,上方有少量垂直间距,可以带一个可 |
\cmidrule | 可以画出比 \midrule 更细的分隔线,上下有少量垂直间距,并且可以指定横线所在的列。\cmidrule 通常用于分隔表头中的主项和子项 |
\begin{tabular}{ccccc}
\toprule
序号 & 性别 & 年龄 & 身高/cm & 体重/kg \\
\midrule
1 & F & 14 & 156 & 42 \\
2 & F & 16 & 158 & 45 \\
3 & M & 14 & 162 & 48 \\
4 & M & 15 & 163 & 50 \\
\bottomrule
\end{tabular}
基本表格
使用 \begin{tabular} \end{tabular} 来定义表格环境
对齐方式有三种 l 左 r 右 c 居中
线条格式:
语法 | 格式 |
| | 竖线 |
|| | 双竖线 |
\hline | 横线 |
\hline \hline | 双横线 |
设置宽度:p{2cm} 如果内容超过宽度时,自动换行
以下图为例
\documentclass[UTF8]{ctexart}
\begin{document}
\begin{tabular}{|l|c|c|c|p{2cm}|}
\hline
学号 & 名字 & 性别 & 年龄 & 备注\\
\hline
01 & Mario & 男& 18 & 这是一个备注 \\
\hline
02 & Hanmeimei & 女 & 17 &这也是一个备注\\
\hline
\hline
03 & Lilei & 男 & 18 & 这还是一个备注\\
\hline
\end{tabular}
\end{document}
流程图
导入package
\usepackage{tikz}
\usetikzlibrary{shapes.geometric, arrows}
定义基本的格式
\tikzstyle{startstop} = [rectangle,rounded corners, minimum width=3cm,minimum height=1cm,text centered, draw=black,fill=red!30]
\tikzstyle{io} = [trapezium, trapezium left angle = 70,trapezium right angle=110,minimum width=3cm,minimum height=1cm,text centered,draw=black,fill=blue!30]
\tikzstyle{process} = [rectangle,minimum width=3cm,minimum height=1cm,text centered,text width =3cm,draw=black,fill=orange!30]
\tikzstyle{decision} = [diamond,minimum width=3cm,minimum height=1cm,text centered,draw=black,fill=green!30]
\tikzstyle{arrow} = [thick,->,>=stealth]
定义node
\tikzstyle{nodeName} = [节点形状,尺寸,格式,文本宽度,边框颜色,填充颜色]
属性 | 解释 |
节点形状 | rectangle:矩形,可加圆角(rounded corners) trapezium:平行四边形 diamond:菱形 |
尺寸 | minimum width minimum height |
文本格式 | text centered:文本居中 |
文本宽度 | text width=3cm:文本超过3cm时会自动换行 |
边框颜色 | draw |
填充颜色 | fill |
定义箭头
\tikzstyle{arrow} = [thick,->,>=stealth]
属性 | 描述 |
箭头粗细 | thick : 粗 thin : 细 |
箭头 | -> : 反向箭头 <- : 正向箭头 <-> : 双向箭头 |
虚线 | dashed |
箭头形状 | >=stealth |
创建节点
\node (decision1) [decision,below of=process1,yshift=-0.5cm] {Decession 1};
画箭头
\draw [arrow] (decision1) -- node[anchor=east] {yes} (process2a);
属性
属性 | 描述 |
基本属性 | [arrow]:需要调用的箭头的属性 (start):箭头的其实位置 (end):箭头的末端位置 |
线型 | –:直线 |-:先竖线后横线 -|:向横线后竖线 |
文字 | {需要添加的文字} |
文字的位置 | [anchor=east](东部) |
页眉页脚
\pagestyle{empty} % 无页眉页脚
一个比较典型的例子,供参考一下
\documentclass[UTF8]{ctexart}
\usepackage{tikz,mathpazo}
\usetikzlibrary{shapes.geometric, arrows}
\begin{document}
\thispagestyle{empty}
% 流程图定义基本形状 这里我们可以直接使用也可以进行修改
\tikzstyle{startstop} = [rectangle, rounded corners, minimum width=3cm, minimum height=1cm,text centered, draw=black, fill=red!30]
\tikzstyle{io} = [trapezium, trapezium left angle=70, trapezium right angle=110, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=blue!30]
\tikzstyle{process} = [rectangle, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=orange!30]
\tikzstyle{decision} = [diamond, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=green!30]
\tikzstyle{arrow} = [thick,->,>=stealth]
\begin{tikzpicture}[node distance=2cm]
%定义流程图具体形状
\node (start) [startstop] {Start};
\node (in1) [io, below of=start] {Input};
\node (dec1) [decision, below of=in1, yshift=-0.5cm] {a $\ge$ b };
\node (pro2a) [process, below of=dec1, yshift=-0.5cm] {max = b};
\node (pro2b) [process, right of=dec1, xshift=2cm] {max = a};
\node (out1) [io, below of=pro2a] {Output};
\node (stop) [startstop, below of=out1] {Stop};
%连接具体形状
\draw [arrow](start) -- (in1);
\draw [arrow](dec1) -- (pro2a);
\draw [arrow](dec1) -- (pro2b);
\draw [arrow](in1)--(dec1);
\draw [arrow](dec1) -- node[anchor=east] {yes} (pro2a);
\draw [arrow](dec1) -- node[anchor=south] {no} (pro2b);
\draw [arrow](pro2a) -- (out1);
\draw [arrow](out1) -- (stop);
\end{tikzpicture}
\end{document}
效果如下:
插入代码
我们可以使用 verbatim 环境排版程序代码,带语法高亮的程序代码可以使用 listings 宏包,我们一般使用 listing,listing的属性我们一般设置为下列参数,可以根据具体情况进行改动。
\documentclass[UTF8]{ctexart}
\usepackage{tikz,mathpazo}
\usepackage{listings}
\begin{document}
\lstset{columns=flexible,
numbers=left,numberstyle=\footnotesize}
\begin{lstlisting}[language=C]
/* hello.c */
#include <stdio.h>
main() {
printf("Hello.\n");
}
\end{lstlisting}
\end{document}
加入中文或中文注释
listings 宏包默认不支持包含中文字串的代码,我们可以使用逃逸字符来进行中文的书写。
\documentclass[UTF8]{ctexart}
\usepackage{tikz,mathpazo}
\usepackage{listings}
\begin{document}
\lstset{columns=flexible,
numbers=left,numberstyle=\footnotesize,escapeinside=''}
\begin{lstlisting}[language=C]
/* hello.c */
#include <stdio.h>
main() {
printf("'你好,世界'\n");
}
\end{lstlisting}
\end{document}