一、基本公式
1、上下标
A 1 2 B 12 2 x 2 + y A_1^2 \\ B_{12} \\ 2^{x^2+y} A12B122x2+y
代码:
$$
A_1^2
\\
B_{12}
\\
2^{x^2+y}
$$
2、分数
x 1 + x 2 1 2 + x y a b a b \frac{x}{1+x^2} \\ \frac{\frac{1}{2}+x}{y} \\ \tfrac{a}{b} \frac{a}{b} 1+x2xy21+xbaba
代码:
$$
\frac{x}{1+x^2}
\\
\frac{\frac{1}{2}+x}{y}
\\
\tfrac{a}{b}
\frac{a}{b}
$$
3、根号
x x 3 \sqrt{x} \sqrt[3]{x} x3x
代码:
$$
\sqrt{x}
\sqrt[3]{x}
$$
4、组合数
( n k ) ( n k ) \binom{n}{k} \tbinom{n}{k} (kn)(kn)
代码:
$$
\binom{n}{k}
\tbinom{n}{k}
$$
5、导数
a ′ a ′ ′ a ′ a' a'' a^{\prime} a′a′′a′
代码:
$$
a'
a''
a^{\prime}
$$
6、取模
x ( m o d a ) 2 m o d x x \pmod a \\ 2\mod{x} x(moda)2modx
代码:
$$
x \pmod a
\\
2\mod{x}
$$
7、积分
∫ 1 2 ∫ 2 1 ∮ ∫ ∬ ∯ ∭ ∰ \int_{1}^{2} \intop_{2}^{1} \oint \smallint \\ \iint \oiint \iiint \oiiint ∫122∫1∮∫∬∬∭∭
代码:
$$
\int_{1}^{2}
\intop_{2}^{1}
\oint
\smallint
\\
\iint
\oiint
\iiint
\oiiint
$$
8、微分
∇ ∂ x d x x ˙ y ¨ Δ \nabla \\ \partial x \\ \mathrm{d}x \\ \dot x \\ \ddot y \\ \Delta ∇∂xdxx˙y¨Δ
代码:
$$
\nabla
\partial x
\mathrm{d}x
\dot x
\ddot y
\Delta
$$
9、累加、累乘、极限
∑ i = 1 k ∑ i = 1 n ∑ i = 1 n ∏ i = 1 k ∏ i = 1 n ∏ i = 1 n lim k → ∞ lim k → ∞ lim k → ∞ ] \sum_{i=1}^{k} \displaystyle\sum_{i=1}^n \textstyle\sum_{i=1}^n \\ \prod_{i=1}^{k} \displaystyle\prod_{i=1}^n \textstyle\prod_{i=1}^n \\ \lim_{k \to \infty} \lim\limits_{k \to \infty} \lim\nolimits_{k \to \infty}] i=1∑ki=1∑n∑i=1n∏i=1ki=1∏n∏i=1nlimk→∞k→∞limlimk→∞]
代码:
$$
\sum_{i=1}^{k}
\displaystyle\sum_{i=1}^n
\textstyle\sum_{i=1}^n
\\
\prod_{i=1}^{k}
\displaystyle\prod_{i=1}^n
\textstyle\prod_{i=1}^n
\\
\lim_{k \to \infty}
\lim\limits_{k \to \infty}
\lim\nolimits_{k \to \infty}]
$$
二、修饰符
1、简单的帽子
θ ^ A B ^ y ˉ A B ‾ a ~ a c ~ a ˉ a ˊ a ˇ a ˋ a ˙ a ¨ \hat{\theta} \widehat{AB} \\ \bar{y} \overline{AB} \\ \tilde{a} \widetilde{ac} \\ \bar{a} \acute{a} \check{a} \grave{a} \\ \dot{a} \ddot{a} θ^AB
yˉABa~ac
aˉaˊaˇaˋa˙a¨
代码:
$$
\hat{\theta}
\widehat{AB}
\\
\bar{y}
\overline{AB}
\\
\tilde{a}
\widetilde{ac}
\\
\bar{a}
\acute{a}
\check{a}
\grave{a}
\\
\dot{a}
\ddot{a}
$$
2、帽子和袜子
A B ← A B → A B A B ← A B → A B A B ⏞ A B ⏟ A B ‾ A B ‾ \overleftarrow{AB} \overrightarrow{AB} \overleftrightarrow{AB} \\ \underleftarrow{AB} \underrightarrow{AB} \underleftrightarrow{AB} \\ \overbrace{AB} \underbrace{AB} \\ \overline{AB} \underline{AB} ABABAB
ABAB
ABAB
ABABAB
代码:
$$
\overleftarrow{AB}
\overrightarrow{AB}
\overleftrightarrow{AB}
\\
\underleftarrow{AB}
\underrightarrow{AB}
\underleftrightarrow{AB}
\\
\overbrace{AB}
\underbrace{AB}
\\
\overline{AB}
\underline{AB}
$$
3、盒子和帽子
a + b + c ⏞ note a + b + c ⏟ note π = 3.14 \overbrace{a+b+c}^{\text{note}} \\ \underbrace{a+b+c}_{\text{note}} \\ \boxed{\pi=3.14} a+b+c
notenote
a+b+cπ=3.14
代码:
$$
\overbrace{a+b+c}^{\text{note}}
\\
\underbrace{a+b+c}_{\text{note}}
\\
\boxed{\pi=3.14}
$$
4、各种括号
( ( ( ( ( ( \big( \Big( \bigg( \Bigg( (((((
代码:
$$
(
\big(
\Big(
\bigg(
\Bigg(
$$
[ ] < > ∣ − 2 ∣ { } [] <> |-2| \{\} []<>∣−2∣{
}
代码:
$$
[]
<>
|-2|
\{\}
$$
* x * ∥ a ∥ ⌈ 2.6 ⌉ ⌊ 1.2 ⌋ \lgroup x \rgroup \lVert a \rVert \lceil 2.6 \rceil \lfloor 1.2 \rfloor *x*∥a∥⌈2.6⌉⌊1.2⌋
代码:
$$
\lgroup x \rgroup
\lVert a \rVert
\lceil 2.6 \rceil
\lfloor 1.2 \rfloor
$$
⌜ ⌝ ⌞ ⌟ \ulcorner \urcorner \llcorner \lrcorner ┌┐└┘
代码:
$$
\ulcorner
\urcorner
\llcorner
\lrcorner
$$
三、希腊字母
No. | Lowercase | Uppercase | English | IPA |
---|---|---|---|---|
1 1 1 | α \alpha α | A A A | a l p h a alpha alpha | /'ælfə/ |
2 2 2 | β \beta β | B B B | b e t a beta beta | /'bi:tə/or/'beɪtə/ |
3 3 3 | γ \gamma γ | Γ \Gamma Γ | g a m m a gamma gamma | /'gæmə/ |
4 4 4 | δ \delta δ | Δ \Delta Δ | d e l t a delta delta | /'deltə/ |
5 5 5 | ϵ \epsilon ϵ | E E E | e p s i l o n epsilon epsilon | /'epsɪlɒn/ |
6 6 6 | ζ \zeta ζ | Z Z Z | z e t a zeta zeta | /'zi:tə/ |
7 7 7 | η \eta η | H H H | e t a eta eta | /'i:tə/ |
8 8 8 | θ \theta θ | Θ \Theta Θ | t h e t a theta theta | /'θi:tə/ |
9 9 9 | ι \iota ι | I I I | i o t a iota iota | /aɪ’əʊtə/ |
10 10 10 | κ \kappa κ | K K K | k a p p a kappa kappa | /'kæpə/ |
11 11 11 | λ \lambda λ | λ \lambda λ | l a m b d a lambda lambda | /'læmdə/ |
12 12 12 | μ \mu μ | M M M | m u mu mu | /mju:/ |
13 13 13 | ν \nu ν | N N N | n u nu nu | /nju:/ |
14 14 14 | ξ \xi ξ | Ξ \Xi Ξ | x i xi xi | /ksi/or/'zaɪ/or/'ksaɪ/ |
15 15 15 | ο \omicron ο | O O O | o m i c r o n omicron omicron | /əu’maikrən/or/'ɑmɪ,krɑn/ |
16 16 16 | π \pi π | Π \Pi Π | p i pi pi | /paɪ/ |
17 17 17 | ρ \rho ρ | P P P | r h o rho rho | /rəʊ/ |
18 18 18 | σ \sigma σ | Σ \Sigma Σ | s i g m a sigma sigma | /'sɪɡmə/ |
19 19 19 | τ \tau τ | T T T | t a u tau tau | /tɔ:/or/taʊ/ |
20 20 20 | υ \upsilon υ | Υ \Upsilon Υ | u p s i l o n upsilon upsilon | /'ipsilon/or/'ʌpsilɒn/ |
21 21 21 | ϕ \phi ϕ | Φ \Phi Φ | p h i phi phi | /faɪ/ |
22 22 22 | χ \chi χ | X X X | c h i chi chi | /kaɪ/ |
23 23 23 | ψ \psi ψ | Ψ \Psi Ψ | p s i psi psi | /psaɪ/ |
24 24 24 | ω \omega ω | Ω \Omega Ω | o m e g a omega omega | /'əʊmɪɡə/or/oʊ’meɡə/ |
代码: |
| No. | Lowercase | Uppercase | English | IPA |
| :--: | :--------: | :--------: | :-------: | :---------------------------: |
| $1$ | $\alpha$ | $A$ | $alpha$ | **/'ælfə/** |
| $2$ | $\beta$ | $B$ | $beta$ | **/'bi:tə/or/'beɪtə/** |
| $3$ | $\gamma$ | $\Gamma$ | $gamma$ | **/'gæmə/** |
| $4$ | $\delta$ | $\Delta$ | $delta$ | **/'deltə/** |
| $5$ | $\epsilon$ | $E$ | $epsilon$ | **/'epsɪlɒn/** |
| $6$ | $\zeta$ | $Z$ | $zeta$ | **/'zi:tə/** |
| $7$ | $\eta$ | $H$ | $eta$ | **/'i:tə/** |
| $8$ | $\theta$ | $\Theta$ | $theta$ | **/'θi:tə/** |
| $9$ | $\iota$ | $I$ | $iota$ | **/aɪ'əʊtə/** |
| $10$ | $\kappa$ | $K$ | $kappa$ | **/'kæpə/** |
| $11$ | $\lambda$ | $\lambda$ | $lambda$ | **/'læmdə/** |
| $12$ | $\mu$ | $M$ | $mu$ | **/mju:/** |
| $13$ | $\nu$ | $N$ | $nu$ | **/nju:/** |
| $14$ | $\xi$ | $\Xi$ | $xi$ | **/ksi/or/'zaɪ/or/'ksaɪ/** |
| $15$ | $\omicron$ | $O$ | $omicron$ | **/əu'maikrən/or/'ɑmɪ,krɑn/** |
| $16$ | $\pi$ | $\Pi$ | $pi$ | **/paɪ/** |
| $17$ | $\rho$ | $P$ | $rho$ | **/rəʊ/** |
| $18$ | $\sigma$ | $\Sigma$ | $sigma$ | **/'sɪɡmə/** |
| $19$ | $\tau$ | $T$ | $tau$ | **/tɔ:/or/taʊ/** |
| $20$ | $\upsilon$ | $\Upsilon$ | $upsilon$ | **/'ipsilon/or/'ʌpsilɒn/** |
| $21$ | $\phi$ | $\Phi$ | $phi$ | **/faɪ/** |
| $22$ | $\chi$ | $X$ | $chi$ | **/kaɪ/** |
| $23$ | $\psi$ | $\Psi$ | $psi$ | **/psaɪ/** |
| $24$ | $\omega$ | $\Omega$ | $omega$ | **/'əʊmɪɡə/or/oʊ'meɡə/** |
四、算数运算符
减号: − + × / ÷ ⋅ # % 减号:- \\ + \times / \div \cdot \# \% 减号:−+×/÷⋅#%
代码:
注意:减号的用法,前面有内容 或者 后面不能有空格。
$$
减号:-
\\
+
\times
/
\div
\cdot
\#
\%
$$
∘ ∗ ⋆ ⊗ ⊕ ⊙ \circ \ast \star \otimes \oplus \odot ∘∗⋆⊗⊕⊙
代码:
$$
\circ
\ast
\star
\otimes
\oplus
\odot
$$
± ∓ ∔ ⋇ \pm \mp \dotplus \divideontimes ±∓∔⋇
代码:
$$
\pm
\mp
\dotplus
\divideontimes
$$
五、比较运算符
等于号: = ≠ ≠ ≡ ≢ ∼ ≈ ≊ ≅ 等于号:= \\ \not= \neq \equiv \not\equiv \sim \approx \approxeq \cong 等于号:===≡≡∼≈≊≅
代码:
注意,等于号的用法,前面有内容 或者 后面有内容
$$
等于号:=
\\
\not=
\neq
\equiv
\not\equiv
\sim
\approx
\approxeq
\cong
$$
大于号: > < ≤ ≥ ≫ ≪ 大于号:> \\ < \le \ge \gg \ll 大于号:><≤≥≫≪
代码:
注意,大于号的用法,前面必须有内容
$$
大于号:>
\\
<
\le
\ge
\gg
\ll
$$
⋞ ⋟ ≺ ≻ ⪯ ⪰ \curlyeqprec \curlyeqsucc \prec \succ \preceq \succeq ⋞⋟≺≻⪯⪰
代码:
$$
\curlyeqprec
\curlyeqsucc
\prec
\succ
\preceq
\succeq
$$
六、集合运算符
∈ ∋ ⊄ ⊅ ⊆ ⊇ ∩ ∪ ∧ ∨ ¬ ∅ ∅ ∵ ∀ ∃ ∴ \in \owns \not \subset \not \supset \subseteq \supseteq \\ \cap \cup \land \lor \\ \neg \emptyset \varnothing \\ \because \forall \exists \therefore ∈∋⊂⊃⊆⊇∩∪∧∨¬∅∅∵∀∃∴
代码:
$$
\in
\owns \not
\subset \not
\supset
\subseteq
\supseteq
\\
\cap
\cup
\land
\lor
\\
\neg
\emptyset
\varnothing
\\
\because
\forall
\exists
\therefore
$$
∩ ∪ ∧ ∨ ⊔ ⊓ \cap \cup \land \lor \sqcup \sqcap ∩∪∧∨⊔⊓
代码:
$$
\cap
\cup
\land
\lor
\sqcup
\sqcap
$$
七、箭头符
← ← → → ↑ ↓ \gets \leftarrow \to \rightarrow \leftrightarrow \\ \uparrow \downarrow \updownarrow ←←→→↑↓
代码:
$$
\gets
\leftarrow
\to
\rightarrow
\leftrightarrow
\\
\uparrow
\downarrow
\updownarrow
$$
⇐ ⇒ ⇔ * ⇑ ⇓ ⇕ \Leftarrow \Rightarrow \Leftrightarrow \iff \\ \Uparrow \Downarrow \Updownarrow ⇐⇒⇔*⇑⇓⇕
代码:
$$
\Leftarrow
\Rightarrow
\Leftrightarrow
\iff
\\
\Uparrow
\Downarrow
\Updownarrow
$$
\nearrow \searrow \swarrow \nwarrow
代码:
$$
\nearrow
\searrow
\swarrow
\nwarrow
$$
* * * * * * * \longleftarrow \longrightarrow \longleftrightarrow \Longleftarrow \Longrightarrow \Longleftrightarrow \longmapsto *******
代码:
$$
\longleftarrow
\longrightarrow
\longleftrightarrow
\Longleftarrow
\Longrightarrow
\Longleftrightarrow
\longmapsto
$$
→ o v e r → u n d e r → u n d e r o v e r ← u n d e r o v e r ← u n d e r ← o v e r \xrightarrow{over} \xrightarrow[under]{} \xrightarrow[under]{over} \xleftarrow[under]{over} \xleftarrow[under]{} \xleftarrow[]{over} overunderoverunderoverunderunderover
代码:
$$
\xrightarrow{over}
\xrightarrow[under]{}
\xrightarrow[under]{over}
\xleftarrow[under]{over}
\xleftarrow[under]{}
\xleftarrow[]{over}
$$
八、空格间距
A B A B A B A B A B A B A B A B A\!B \\ AB \\ A\thinspace B \\ A\:B \\ A\ B \\ A \enspace B \\ A\quad B \\ A\qquad B ABABABABA BABABAB
$$
A\!B
\\
AB
\\
A\thinspace B
\\
A\:B
\\
A\ B
\\
A \enspace B
\\
A\quad B
\\
A\qquad B
$$
九、矩阵
A = a b c d A = \begin{matrix} a & b\\ c & d \end{matrix} A=acbd
代码:
$$
A = \begin{matrix}
a & b\\
c & d
\end{matrix}
$$
B = ( a b c d ) B = \begin{pmatrix} a & b\\ c & d \end{pmatrix} B=(acbd)
代码:
$$
B = \begin{pmatrix}
a & b\\
c & d
\end{pmatrix}
$$
C = ∣ a b c d ∣ C = \begin{vmatrix} a & b\\ c & d \end{vmatrix} C=
acbd
代码:
$$
C = \begin{vmatrix}
a & b\\
c & d
\end{vmatrix}
$$
D = [ a b c d ] D = \begin{bmatrix} a & b\\ c & d \end{bmatrix} D=[acbd]
代码:
$$
D = \begin{bmatrix}
a & b\\
c & d
\end{bmatrix}
$$
E = ∥ a b c d ∥ E = \begin{Vmatrix} a & b\\ c & d \end{Vmatrix} E=
acbd
代码:
$$
E = \begin{Vmatrix}
a & b\\
c & d
\end{Vmatrix}
$$
F = { a b c d } F = \begin{Bmatrix} a & b\\ c & d \end{Bmatrix} F={
acbd}
代码:
$$
F = \begin{Bmatrix}
a & b\\
c & d
\end{Bmatrix}
$$
[ A b ] = [ a 11 a 12 a 13 b 1 a 21 a 22 a 23 b 2 a 31 a 32 a 33 b 3 ] [A\ b] = \begin{bmatrix} \begin{array}{c c c|c} a_{11} & a_{12} & a_{13} & b_1\\ a_{21} & a_{22} & a_{23} & b_2\\ a_{31} & a_{32} & a_{33} & b_3\\ \end{array} \end{bmatrix} [A b]=
a11a21a31a12a22a32a13a23a33b1b2b3
代码:
$$
[A\ b] =
\begin{bmatrix}
\begin{array}{c c c|c}
a_{11} & a_{12} & a_{13} & b_1\\
a_{21} & a_{22} & a_{23} & b_2\\
a_{31} & a_{32} & a_{33} & b_3\\
\end{array}
\end{bmatrix}
$$
a b c d e f g h i \begin{array}{c:c:c} a & b & c \\ \hline d & e & f \\ \hdashline g & h & i \end{array} adgbehcfi
代码:
$$
\begin{array}{c:c:c}
a & b & c \\
\hline
d & e & f \\
\hdashline
g & h & i
\end{array}
$$
L n × n = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n n ] L_{n\times n} = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots &\ddots & \vdots\\ a_{n1} & a_{n2} & \cdots & a_{nn} \\ \end{bmatrix} Ln×n=
a11a21⋮an1a12a22⋮an2⋯⋯⋱⋯a1na2n⋮ann
代码:
$$
L_{n\times n} = \begin{bmatrix}
a_{11} & a_{12} & \cdots & a_{1n} \\
a_{21} & a_{22} & \cdots & a_{2n} \\
\vdots & \vdots &\ddots & \vdots\\
a_{n1} & a_{n2} & \cdots & a_{nn} \\
\end{bmatrix}
$$
十、列式、方程组
f ( x ) = ( x + 1 ) 2 = x 2 + 2 x + 1 \begin{aligned} f(x) &= (x+1)^2\\ &= x^2 + 2x + 1 \end{aligned} f(x)=(x+1)2=x2+2x+1
代码:
$$
\begin{aligned}
f(x) &= (x+1)^2\\
&= x^2 + 2x + 1
\end{aligned}
$$
f ( x ) = { a if b b if a f(x) = \begin{cases} a &\text{if b}\\ b &\text{if a}\\ \end{cases} f(x)={
abif bif a
代码:
$$
f(x) = \begin{cases}
a &\text{if b}\\
b &\text{if a}\\
\end{cases}
$$
{ x + 2 y = 1 3 x − y = 5 \begin{cases} \begin{aligned} x + 2y &= 1\\ 3x - y &= 5 \end{aligned} \end{cases} {
x+2y3x−y=1=5
代码:
$$
\begin{cases}
\begin{aligned}
x + 2y &= 1\\
3x - y &= 5
\end{aligned}
\end{cases}
$$
g ( x , y ) = { M g − d M f − b [ f ( x , y ) − b ] + d b ≤ f ( x , y ) ≤ M f F L ∗ S L ≤ 0 < S M F R ∗ S M ≤ 0 < S R F R S R ≤ 0 g(x,y)=\left\{ \begin{array}{rcl} \frac{M_g - d}{M_f-b}[f(x,y)-b]+d & & {b \leq f(x,y) \leq M_f}\\ F^*_L & & {S_L \leq 0 < S_M}\\ F^*_R & & {S_M \leq 0 < S_R}\\ F_R & & {S_R \leq 0} \end{array} \right. g(x,y)=⎩
⎨
⎧Mf−bMg−d[f(x,y)−b]+dFL∗FR∗FRb≤f(x,y)≤MfSL≤0<SMSM≤0<SRSR≤0
代码:
$$
g(x,y)=\left\{
\begin{array}{rcl}
\frac{M_g - d}{M_f-b}[f(x,y)-b]+d & & {b \leq f(x,y) \leq M_f}\\
F^*_L & & {S_L \leq 0 < S_M}\\
F^*_R & & {S_M \leq 0 < S_R}\\
F_R & & {S_R \leq 0}
\end{array} \right.
$$
十一、作废符
5 5 A B C \cancel{5} \bcancel{5} \xcancel{ABC} 5
5
ABC
代码:
$$
\cancel{5}
\bcancel{5}
\xcancel{ABC}
$$
十二、常见图形
□ □ ■ △ ▽ ▲ ⋄ ◊ ⋆ * ∘ ∙ ◯ ⨀ \Box \square \blacksquare \triangle \triangledown \blacktriangle \diamond \Diamond \star \bigstar \circ \bullet \bigcirc \bigodot □□■△▽▲⋄◊⋆*∘∙◯⨀
代码:
$$
\Box
\square
\blacksquare
\triangle
\triangledown
\blacktriangle
\diamond
\Diamond
\star
\bigstar
\circ
\bullet
\bigcirc
\bigodot
$$
* * \diamondsuit \clubsuit \heartsuit \spadesuit **
代码:
$$
\diamondsuit
\clubsuit
\heartsuit
\spadesuit
$$
∠ ∡ ⊤ ⊥ ∞ \angle \measuredangle \top \bot \infty ∠∡⊤⊥∞
代码:
$$
\angle
\measuredangle
\top
\bot
\infty
$$
* † ‡ ¥ $ \checkmark \dagger \ddagger \yen \$ *†‡¥$
代码:
$$
\checkmark
\dagger
\ddagger
\yen
\$
$$
十三、声明宏(高级用法:定义函数)
对于一些复杂但是只有少许不同的表达式,可以声明一个函数来调用,提高源码的可读性,减少出错
\def\macroname#1#2{
your command
}
宏允许带任意数量的参数(也可以不带参),必须是#1,#2,……
这样的命名格式,同时注意在定义宏的时候注意让#1与\
中间隔一个空格,否则会解析成#
。在调用的时候格式为\macroname{x}{y}{z}
例子
f ( x ) = 1 2 π σ 1 exp [ − ( x − u 1 ) 2 2 σ 1 2 ] f ( y ) = 1 2 π σ 2 exp [ − ( y − u 2 ) 2 2 σ 2 2 ] \def\Normal#1#2#3{ \frac{1}{\sqrt{2\pi}\ #3}\exp{[-\frac{(#1 - #2)^2}{2\ #3^2}]} } f(x)=\Normal{x}{u_1}{\sigma_1}\\ f(y)=\Normal{y}{u_2}{\sigma_2}\\ f(x)=2π σ11exp[−2 σ12(x−u1)2]f(y)=2π σ21exp[−2 σ22(y−u2)2]
代码:
\def\Normal#1#2#3{
\frac{1}{\sqrt{2\pi}\ #3}\exp{[-\frac{(#1 - #2)^2}{2\ #3^2}]}
}
f(x)=\Normal{x}{u_1}{\sigma_1}\\
f(y)=\Normal{y}{u_2}{\sigma_2}\\
十四、颜色和大小
F = m a F = m a F = m a o n e l i n e n o t h i n g \textcolor{blue}{F=ma} \\ \textcolor{#00ff00}{F=ma} \\ \textcolor{#ff0000}{F=ma} \\ \color{blue} one\ line \\ nothing F=maF=maF=maone linenothing
代码:
$$
\textcolor{blue}{F=ma}
\\
\textcolor{#00ff00}{F=ma}
\\
\textcolor{#ff0000}{F=ma}
\\
\color{blue} one\ line
\\
nothing
$$
F=ma A A \colorbox{#00ff00}{F=ma} \\ \colorbox{aqua}{A} \\ \fcolorbox{red}{aqua}{A} F=maAA
代码:
$$
\colorbox{#00ff00}{F=ma}
\\
\colorbox{aqua}{A}
\\
\fcolorbox{red}{aqua}{A}
$$
A B A B A B A B A B A B A B A B A B A B AB \Huge AB \huge AB \\ AB \LARGE AB \Large AB \large AB \\ AB \small AB \tiny AB ABABABABABABABABABAB
代码:
$$
AB
\Huge AB
\huge AB
\\
AB
\LARGE AB
\Large AB
\large AB
\\
AB
\small AB
\tiny AB
$$
十五、画图(高级用法)
1、UML时序图
在画时序图的时候
我们的思路应该是这样的:
从左到右(创建好节点),然后,从上到下(编写节点间的交互逻辑),写代码画图。
案例1:(volatile修饰的变量在多线程间的工作流程)
代码:
```mermaid
sequenceDiagram
participant t1 as t1 线程
participant num as num = 0
participant ready as volatile ready = false
participant t2 as t2 线程
t1 -->> t1:num=2
t1 ->> ready:ready=true
Note over t1,ready:写屏障
Note over num,t2:读屏障
t2 ->> ready:读取ready=true
t2->> num:读取num=2
案例2:(JVM字节码在多线程中发生的指令重排)
代码:
```mermaid
sequenceDiagram
participant t1 as t1
participant INSTANCE AS INSTANCE
participant t2 as t2
t1 ->> t1:17:new
t1 ->> t1:20:dup
t1->> INSTANCE:24:putstatic(给 INSTANCE 赋值)
INSTANCE ->> t2:0:getstatic(获取 INSTANCE 引用)
t2->>t2:3:ifnonnull 37(判断不为空,跳转到 37 行)
t2 ->> INSTANCE:37:getstatic(获取 INSTANCE 引用)
t2->>t2:40:areturn(返回)
t2 ->> t2 :使用对象
t1 ->> t1:21:invokespecial(调用构造方法)
2、流程图(纵向和横向)
在流程图的时候
LR 指左边到右边,所以是横向流程图
TD 指上边到下边,所以是纵向流程图
我们的思路应该是这样的:
先定义好所有的流程节点,再确定好各个流程节点的指向关系,最后补充流程线上的条件
案例1:(多线程处理垃圾袋)
代码:
```mermaid
graph TD
s(保洁阿姨)
m(主人)
g1(垃圾袋)
g2(新垃圾袋)
s-. 倒空 .-> g1
m -- 检查 --> g1
g1 -- 已满 --> g2
g1 -- 还空 --> g1
案例2:(LongAdder类中的add方法原理图)
代码:
实现方式1:
```mermaid
graph LR
A(当前线程) --> B(Cells)
B --> |为空| C(cas base 累加)
B --> |不为空| D(当前线程 cell 是否创建)
C --> |成功| E(return)
C --> |失败| F(longAccumulate)
D --> |已创建| G(cas cell 累加)
D --> |没创建| F(longAccumulate)
G --> |成功| E(return)
G --> |失败| F(longAccumulate)
实现方式2:(推荐,可读性更好)
```mermaid
graph LR
A(当前线程)
B(Cells)
C(cas base 累加)
D(当前线程 cell 是否创建)
E(return)
F(longAccumulate)
G(cas cell 累加)
A --> B
B -- 为空 --> C
B -- 不为空 --> D
C -- 成功 --> E
C -- 失败 --> F
D -- 已创建 --> G
D -- 没创建 --> F
G -- 成功 --> E
G -- 失败 --> F
文章评论