本文编写于 171 天前,最后修改于 67 天前,其中某些信息可能已经过时。

什么是 Markdown

  Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。并且Markdown有多种拓展,使其更加完整,成为一个成熟的文本编辑语言。目前许多的博客程序都采用Markdown作为编辑语言,例如Typecho。作为一名博主,应该要适当的了解Markdown

基础语法

  这些语法在你利用博客程序书写文章是经常会用到。

标题

我们常用若干个#来标记标题,有多少个#就是几级标题,相当于html中的<h1><h2><h3><h4><h5><h6>

# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

同时按住Shift3(#)来打出#

块引用

我们常用>来标记块引用,有多少个>就是几级引用,相当于html中的<blockquote><p>

> 引用内容
>> 二级引用
>>> 三级引用
>>>> 四级引用

效果如下:

引用内容

二级引用

三级引用

四级引用

列表

我们用-*来标记无序列表,相当于html中的<ul><li>。在一个列表项前追加 4 个空格,可使其成为嵌套列表。

- 肥宅快乐薯片
- 肥宅快乐水
    - 百事
    - 可口
- 肥宅快乐番

效果如下:

  • 肥宅快乐薯片
  • 肥宅快乐水

    • 百事
    • 可口
  • 肥宅快乐番

我们使用阿拉伯数字 + .来标记有序列表,相当于html中的<ol><li>。和无序列表一样,追加四个空格构造嵌套列表。

1. 打开冰箱门
2. 将大象塞进去
    1. 将大象推到冰箱门前
    2. 对准屁股,用力推
3. 关上冰箱门

效果如下:

  1. 打开冰箱门
  2. 将大象塞进去

    1. 将大象推到冰箱门前
    2. 对准屁股,用力推
  3. 关上冰箱门

文本样式

我们用两个*包裹文本来标记粗体文本,两个~包裹文本来标记删除线文本,_或者*包裹文本来标记斜体文本。

**粗体文本**
~~被删除的文本~~
*斜体文本*  _斜体文本_

分割线

用三个及以上的-来标记一个分割线:

---
或者
--------
可以继续往后延长,但效果相同

超链接

我们用以下语法来标记超链接,使一段文本被点击后跳转到一个指定的链接,相当于html中的<a>

[文本](跳转地址)

图片

我们用以下语法在文章中插入一个图片,相当于html中的<img>

![图片描述,可空](图片地址)

记忆方法:在超链接前面加上一个半角字符——!

代码块

用一个`包裹文本来标记一个行内代码块,相当于html中的<code>

`一段行内代码块`

用三个`独立占一行,包裹代码,使其成为块级代码块,相当于html中的<pre><code>

%```
代码(正常使用时请去掉%)
%```

在三个`之后加上代码语言,可规范代码块内的代码高亮。

%```代码语言
与此语言相同的代码(正常使用时请去掉%)
%```

例如:

%```php
php代码(正常使用时请去掉%)
%```

摘要分隔符

<!--more-->定义分割正文与摘要内容,这样程序在拉取摘要时就只会拉取<!--more-->之前的内容。

摘要内容,同时输出在正文中
<!--more-->
正文内容,不输出在摘要之中

拓展语法

这里有一些比较高级的语法~

复选框

你可以用复选框来制作任务清单,它相当于一个被禁用的<input>复选框

- [ ] 未完成的复选框
- [x] 被完成的复选框

Typecho不支持此语法

表格

表头|表头|表头
:-:|:-:|:-:
表项|表项|表项
表项|表项|表项

简单分析下,构造表格是必须要有一下的字符,同时声明表格的内的对齐方式。

-:   代表右对齐
:-:  代表居中
:-   代表左对齐

|可以看做是表格线。举个例子。

-:|:-:|:-

这个代表,第一竖列文本右对齐,第二竖列居中,第三竖列左对齐。
这有点类似html中的<colgroup>,用于定义表格各列文本的样式。
那么,我们姑且把这个东西叫做colgroup

colgroup之前的,是表头。在colgroup之后的,是表项。都用以下方式书写。

单元格|单元格|单元格

然后,把他们合起来,就是一个完整的表格。

表头|表头|表头
-:|:-:|:-
表项|表项|表项
表项|表项|表项

效果如下:

表头表头表头
表项表项表项
表项表项表项

内嵌 html

许多 markdown 编辑器只需要直接输入 html 标签即可嵌套html,但有的需要用!!!框住,比如typecho

!!!
<!DOCTYPE html>
<html>
  <!-- ...... -->
</html>
!!!

数学公式

比如,这是一个质能守恒公式

$$E=mc^2$$

那么,如何书写这样的公式?我们通常用$包裹文本来书写数学公式。
$公式内容$来定义一个行内公式,插入在文本段落之中。
$$公式内容$$是一个独立的公式,它会被换行并且居中,类似块级元素。

^标记上标,如:$x^4$

x4

_标记下表,如:$x_1$

x1

{}标记组合,如:${16}_{8}O{2+}_{2}$

以下内容您可能无法理解,请不要逞强,免得疯掉。以下内容均来自:DanielGavin

汉字、字体与格式

汉字形式,符号:mbox{},如:$V_{\mbox{初始}}$
字体控制,符号:displaystyle,如:$\displaystyle \frac{x+y}{y+z}$
下划线符号,符号:underline,如:$\underline{x+y}$
标签,符号tag{数字},如:$\tag{11}$
上大括号,符号:overbrace{算式},如:$\overbrace{a+b+c+d}^{2.0}$
下大括号,符号:underbrace{算式},如:$a+\underbrace{b+c}_{1.0}+d$
上位符号,符号:stacrel{上位符号}{基位符号},如:$\vec{x}\stackrel{\mathrm{def}}{=}{x_1,\dots,x_n}$

占位符

两个quad空格,符号:qquad,如:$x \qquad y$
quad空格,符号:quad,如:$x \quad y$
大空格,符号,如:$x \ y$
中空格,符号:,如:$x : y$
小空格,符号,,如:$x , y$
没有空格,符号``,如:$xy$
紧贴,符号!,如:$x ! y$

定界符与组合

括号,符号:()big(big) Big(Big) bigg(bigg) Bigg(Bigg),如:$()\big(\big) \Big(\Big) \bigg(\bigg) \Bigg(\Bigg)$
中括号,符号:[],如:$[x+y]$
大括号,符号:{ },如:${x+y}$
自适应括号,符号:left right,如:$\left(x\right)$,$\left(x{yz}\right)$
组合公式,符号:{上位公式 choose 下位公式},如:${n+1 \choose k}={n \choose k}+{n \choose k-1}$
组合公式,符号:{上位公式 atop 下位公式},如:$\sum_{k_0,k_1,\ldots>0 \atop k_0+k_1+\cdots=n}A_{k_0}A_{k_1}\cdots$

四则运算

加法运算,符号:+,如:$x+y=z$
减法运算,符号:-,如:$x-y=z$
加减运算,符号:pm,如:$x \pm y=z$
减甲运算,符号:mp,如:$x \mp y=z$
乘法运算,符号:times,如:$x \times y=z$
点乘运算,符号:cdot,如:$x \cdot y=z$
星乘运算,符号:ast,如:$x \ast y=z$
除法运算,符号:div,如:$x \div y=z$
斜法运算,符号:/,如:$x/y=z$
分式表示,符号:frac{分子}{分母},如:$\frac{x+y}{y+z}$
分式表示,符号:{分子} voer {分母},如:${x+y} \over {y+z}$
绝对值表示,符号:||,如:$|x+y|$

高级运算

平均数运算,符号:overline{算式},如:$\overline{xyz}$
开二次方运算,符号:sqrt,如:$\sqrt x$
开方运算,符号:sqrt[开方数]{被开方数},如:$\sqrt[3]{x+y}$
对数运算,符号:log,如:$\log(x)$
极限运算,符号:lim,如:$\lim^{x \to \infty}_{y \to 0}{\frac{x}{y}}$
极限运算,符号:displaystyle lim,如:$\displaystyle \lim^{x \to \infty}_{y \to 0}{\frac{x}{y}}$
求和运算,符号:sum,如:$\sum^{x \to \infty}_{y \to 0}{\frac{x}{y}}$
求和运算,符号:displaystyle sum,如:$\displaystyle \sum^{x \to \infty}_{y \to 0}{\frac{x}{y}}$
积分运算,符号:int,如:$\int^{\infty}_{0}{xdx}$
积分运算,符号:displaystyle int,如:$\displaystyle \int^{\infty}_{0}{xdx}$
微分运算,符号:partial,如:$\frac{\partial x}{\partial y}$
矩阵表示,符号:begin{matrix} end{matrix},如:$\left[ \begin{matrix} 1 &2 &\cdots &4\5 &6 &\cdots &8\\vdots &\vdots &\ddots &\vdots\13 &14 &\cdots &16\end{matrix} \right]$

逻辑运算

等于运算,符号:=,如:$x+y=z$
大于运算,符号:>,如:$x+y>z$
小于运算,符号:<,如:$x+y<z$
大于等于运算,符号:geq,如:$x+y \geq z$
小于等于运算,符号:leq,如:$x+y \leq z$
不等于运算,符号:neq,如:$x+y \neq z$
不大于等于运算,符号:ngeq,如:$x+y \ngeq z$
不大于等于运算,符号:notgeq,如:$x+y \not\geq z$
不小于等于运算,符号:nleq,如:$x+y \nleq z$
不小于等于运算,符号:notleq,如:$x+y \not\leq z$
约等于运算,符号:approx,如:$x+y \approx z$
恒定等于运算,符号:equiv,如:$x+y \equiv z$

集合运算

属于运算,符号:in,如:$x \in y$
不属于运算,符号:notin,如:$x \notin y$
不属于运算,符号:notin,如:$x \not\in y$
子集运算,符号:subset,如:$x \subset y$
子集运算,符号:supset,如:$x \supset y$
真子集运算,符号:subseteq,如:$x \subseteq y$
非真子集运算,符号:subsetneq,如:$x \subsetneq y$
真子集运算,符号:supseteq,如:$x \supseteq y$
非真子集运算,符号:supsetneq,如:$x \supsetneq y$
非子集运算,符号:notsubset,如:$x \not\subset y$
非子集运算,符号:notsupset,如:$x \not\supset y$
并集运算,符号:cup,如:$x \cup y$
交集运算,符号:cap,如:$x \cap y$
差集运算,符号:setminus,如:$x \setminus y$
同或运算,符号:bigodot,如:$x \bigodot y$
同与运算,符号:bigotimes,如:$x \bigotimes y$
实数集合,符号:mathbb{R},如:mathbb{R}

自然数集合,符号:mathbb{Z},如:mathbb{Z}
空集,符号:emptyset,如:$\emptyset$

数学符号

无穷,符号:infty,如:$\infty$
虚数,符号:imath,如:$\imath$
虚数,符号:jmath,如:$\jmath$
数学符号,符号hat{a},如:$\hat{a}$
数学符号,符号check{a},如:$\check{a}$
数学符号,符号breve{a},如:$\breve{a}$
数学符号,符号tilde{a},如:$\tilde{a}$
数学符号,符号bar{a},如:$\bar{a}$
矢量符号,符号vec{a},如:$\vec{a}$
数学符号,符号acute{a},如:$\acute{a}$
数学符号,符号grave{a},如:$\grave{a}$
数学符号,符号mathring{a},如:$\mathring{a}$
一阶导数符号,符号dot{a},如:$\dot{a}$
二阶导数符号,符号ddot{a},如:$\ddot{a}$
上箭头,符号:uparrow,如:$\uparrow$
上箭头,符号:Uparrow,如:$\Uparrow$
下箭头,符号:downarrow,如:$\downarrow$
下箭头,符号:Downarrow,如:$\Downarrow$
左箭头,符号:leftarrow,如:$\leftarrow$
左箭头,符号:Leftarrow,如:$\Leftarrow$
右箭头,符号:rightarrow,如:$\rightarrow$
右箭头,符号:Rightarrow,如:$\Rightarrow$
底端对齐的省略号,符号:ldots,如:$1,2,\ldots,n$
中线对齐的省略号,符号:cdots,如:$x_1^2 + x_2^2 + \cdots + x_n^2$
竖直对齐的省略号,符号:vdots,如:$\vdots$
斜对齐的省略号,符号:ddots,如:$\ddots$

流程图

首先了解一下表示流程图方向的字符:

TB 从上到下
BT 从下到上
RL 从右到左
LR 从左到右
TD 同TB

然后,用相关语法构造图形:

id + [文字描述]矩形
id + (文字描述)圆角矩形
id + >文字描述]不对称的矩形
id + {文字描述}菱形
id + ((文字描述))圆形

不同的链接方式:

A --> B     A带箭头指向B
A --- B      A不带箭头指向B
A -.- B      A用虚线指向B
A -.-> B    A用带箭头的虚线指向B
A ==> B   A用加粗的箭头指向B
A -- 描述 --- B       A不带箭头指向B并在中间加上文字描述
A -- 描述 --> B      A带箭头指向B并在中间加上文字描述
A -. 描述 .-> B      A用带箭头的虚线指向B并在中间加上文字描述
A == 描述 ==> B  A用加粗的箭头指向B并在中间加上文字描述

示例:

mermaid
graph LR
    start[开始] --> input[输入A,B,C]
    input --> conditionA{A是否大于B}
    conditionA -- YES --> conditionC{A是否大于C}
    conditionA -- NO --> conditionB{B是否大于C}
    conditionC -- YES --> printA[输出A]
    conditionC -- NO --> printC[输出C]
    conditionB -- YES --> printB[输出B]
    conditionB -- NO --> printC[输出C]
    printA --> stop[结束]
    printC --> stop
    printB --> stop

流程图内容参考自lkkwxy