本章导航:
- 1. 介绍 markdown 的基础知识与如何编写 。
- 2. 转换字体。
导言
Markdown 的设计理念
- 易于阅读,方便创作 web 文档,利于各平台无缝分发。
- Markdown 语法灵感最大的来源还是纯文本 email 的格式,完全由标点符号标签组成的纯文本。
- Markdown 文件应该以纯文本形式原样发布,不应该包含标记标签和格式化指令。
Markdown 内联 HTML 语法
HTML 是一种发布格式,Markdown 是一种创作格式。Markdown 语法集合比较小,只是 HTML 标签的一小部分。对于 Markdown 中未包含的标签, 可以直接使用 HTML 标签,例如用 HTML <a>
标签替代 Markdown 的链接语法。
特殊字符自动转义
在 HTML 中, 有两个字符需要特殊对待: <
和 &
,左尖括号用于起始标签。如果你想将它们用作字面量, 你必须将它们转义为字符实体, 例如 <
和 &
。
2.1 Markdown 基本要素
二八定律说:百分之二十的知识解决百分之八十的问题。如果您想学习和使用 Markdown
,建议:
- 常用标记要先花一些时间熟记,后面经常使用的话就会形成习惯;
- 次常用标记要有基本的印象,能记住也是可以的;
- 不常用标记看看就好,等到使用的时候再百度一下。
markdown
是html
的一个子集,它通过在文本中插入标示符的方式来构造文章排版,其源文件是以.md
为后缀名的纯文本格式进行保存。为了排版的可读性需要遵循如下段落前后为空行。
2.1.1 常用标记
常用标记要先花一些时间熟记,后面经常使用的话就会形成习惯。
2.1.1.1 标题
- 使用
#
表示标题,一级标题使用一个#
,二级标题使用两个##
,以此类推,共有六级标题。 -
#
和标题之间最好加一个空格。 - 可以使用
<h1>标题名称</h1>
的形式定义标题,其中h1
表示一级标题,以此类推到六级标题。
# 这是 <h1> 一级标题 </h1>
## 这是 <h2> 二级标题 </h2>
### 这是 <h3> 三级标题 </h3>
#### 这是 <h4> 四级标题 </h4>
##### 这是 <h5> 五级标题 </h5>
###### 这是 <h6> 六级标题 </h6>
如果你想要给你的标题添加 id
或者 class
,请在标题最后添加 {#id .class1 .class2}。例如:
# 这个标题拥有 1 个 id {#my_id}
# 这个标题有 2 个 classes {.class1 .class2}
2.1.1.2 目录
使用 [TOC]
生成目录。
如果你的标题都是按照 Markdown 语法书写的话,可以在文档的开头添加字符 [TOC]
自动生成层级目录。
[TOC]
标记可能只能放在一级标题的前面,视不同的编译器而定。
如果不支持,当然你也可使用 word 等三方软件生成目录。
如果你想要在你的 TOC 中排除一个标题,请在你的标题 后面 添加 {ignore=true}
即可。
使用 code_chunk
在文档开头添加如下代码:
<!-- @import "[TOC]" {cmd="toc" depthFrom=2 depthTo=3 orderedList=false} -->
便可生成目录。
2.1.1.3 引用
使用>
表示引用,>>
表示引用里面再套一层引用,依次类推。
例1:
> 这是一级引用
>> 这是二级引用
>>> 这是三级引用
> 这是一级引用
效果:
这是一级引用
这是二级引用
这是三级引用
这是一级引用
注意:
如果>
和>>
嵌套使用的话,从>>
退到>
时,必须之间要加一个空行或者>
作为过渡,否则默认为下一行和上一行是同一级别的引用。如示例所示。引用标记里可以使用其他标记,如:有序列表或无序列表标记,代码标记等。
2.1.1.4 代码块
使用 ``` 表示代码块。(与上行距离一空行)
例2:
```python
a = range(10)
for i in a: print(i)
```
效果:
a = range(10)
for i in a:
print(i)
注意:` 这个符号是在 Esc 键下面,切换到英文下即可。```
后面的python
表示此段代码为 python 代码,Markdown 会自行使用 python 代码颜色渲染。
使用 ` 表示行内代码。
示例:
这是`javascript`代码
这是javascript
代码
如果你想要你的代码块显示代码行数(vscode 中 的 MPE),只要添加 line-numbers class
就可以了。实例:
```javascript {.line-numbers}
function add(x, y) {
return x + y
}
```
2.1.1.5 列表
使用 1. 2. 3.
表示有序列表,使用 *
、-
或 +
表示无序列表。
例3:有序列表
代码:
1. 第一点
2. 第二点
4. 第三点
效果:
- 第一点
- 第二点
- 第三点
例4:无序列表
+ 呵呵
* 嘉嘉
- 嘻嘻
- 吼吼
- 嘎嘎
+ 桀桀
* 哈哈
效果:
- 呵呵
- 嘉嘉
- 嘻嘻
- 吼吼
- 嘎嘎
- 桀桀
- 哈哈
注意:
- 无序列表或有序列表标记和后面的文字之间要有一个空格隔开。
- 有序列表标记不是按照你写的数字进行显示的,而是根据当前有序列表标记所在位置显示的,如示例3所示。
- 无序列表的项目符号是按照实心圆、空心圆、实心方格的层级关系递进的,如例4所示。通常情况下,同一层级使用同一种标记表示(否则,显示效果不佳),便于自己查看和管理。
任务列表
- [ ] 任务一 未做任务 `- + 空格 + [ ]`
- [x] 任务二 已做任务 `- + 空格 + [x]`
显示如下:
- 任务一 未做任务
- + 空格 + [ ]
- 任务二 已做任务
- + 空格 + [x]
定义型列表表
语法说明:定义型列表由名词和解释组成。一行写上定义,紧跟一行写上解释。解释的写法:紧跟一个缩进(Tab),比如:
Markdown
: 轻量级文本标记语言(左侧有一个可见的冒号和四个不可见的空格)
此语法不适用于所有平台。
2.1.1.6 粗体和斜体
- 使用
**
或者__
(双下划线)表示粗体。 - 使用
*
或者_
表示斜体。
例5:
**粗体1** __粗体2__
*斜体1* _斜体2_
效果:
粗体1 粗体2
斜体1 斜体2
注意:前后的*
或_
与要加粗或倾斜的字体之间不能有空格。
2.1.1.7 表格
下面的 -
的个数可以为任意大于1的数。
------:
为右对齐。
:------
为左对齐。
:------:
为居中对齐。
:
与|
之间不要有空格,否则对齐会有些不兼容
例6:
|序号|交易名|交易说明|备注|
|------: |:-------:|:---------|------|
|1|prfcfg|菜单配置|可以通过此交易查询到所有交易码和菜单的对应关系|
|2|gentmo|编译所有交易|
|100000|sysdba|数据库表模型汇总|
效果:
序号 | 交易名 | 交易说明 | 备注 |
---|---|---|---|
1 | prfcfg | 菜单配置 | 可以通过此交易查询到所有交易码和菜单的对应关系 |
2 | gentmo | 编译所有交易 | |
100000 | sysdba | 数据库表模型汇总 |
2.1.1.8 分割线
使用---
或者***
或者* * *
表示水平分割线。
例7:
---
***
* * *
效果:
注意:
- 只要
*
或者-
大于等于三个就可组成一条平行线。 - 使用
---
作为水平分割线时,要在它的前后都空一行,防止---
被当成标题标记的表示方式。
2.1.1.9 链接
使用[](link "Optional title")
表示行内链接。其中:[]
内的内容为要添加链接的文字。link
为链接地址。Optional title
为显示标题。显示效果为在你将鼠标放到链接上后,会显示一个小框提示,提示的内容就是 Optional title里的内容。
例8:行内链接
这就是我们常用的地址:[简书](http://www.jianshu.com "简书")
效果:
这就是我们常用的地址:简书
例9:参考式链接
这就是我们常用的地址:[Baidu][1]
[1]:www.baidu.com "百度一下,你就知道"
效果:
这就是我们常用的地址:
Baidu
注意:参考式链接和行内链接的显示效果是一样的,但是在编辑状态下的使用情况不一样。行内连接紧跟链接文字,可以在看到链接文字的同时清楚的知道链接地址,但是不便于多次重复利用。参考式链接可以重复使用,但一般都是将一些链接放在一起统一管理,如一段文字后面或文章结尾,因此在找到链接和链接文字的对应关系上有些麻烦。
2.1.1.10 导入图片
使用如下方式导入图片:
![Alt text](/path/to/img.jpg Optional title)
其中:
-
Alt text
为如果图片无法显示时显示的文字; -
/path/to/img.jpg
为图片所在路径; -
Optional title
为显示标题。显示效果为在你将鼠标放到图片上后,会显示一个小框提示,提示的内容就是 Optional title里的内容。
例10:
![Markdown](https://upload-images.jianshu.io/upload_images/1114626-7b94c9431f7bd299.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 "markdown")
导入的图片路径可以使用绝对路径也可以使用相对路径,建议使用相对路径。
- Markdown 文档的同级目录下建立一个
pictures
文件夹,里面放置所有所需的图片,如果图片多的话,你也可以在 pictures 文件夹里建立子文件夹归类。 - 最好的做法是使用网址,还有博客园以及简书可以直接拖曳或上传图片。
图片居中,可以这样:
<center> <!--开始居中对齐-->
![GitHub set up](网址 "图片Title")
格式: ![图片Alt](图片地址 "图片Title")
</center> <!--结束居中对齐-->
2.1.1.11 反斜杠
使用\
表示反斜杠。在你不想显示 Markdown 标记时可以使用反斜杠。
例11:
\*这里不会显示斜体\*
效果:
*这里不会显示斜体*
2.1.1.12 空格
Markdown 语法会忽略首行开头的空格,如果要体现出首行开头空两个的效果,可以使用如下方式:
-
 
或 
//全角 -
 
或 
//半角 -
或 
//半角之半角
2.1.1.13 文本对齐
<center>行中心对齐</center>
<p align="left">行左对齐</p>
<p align="right">行右对齐</p>
此处的语法并不是所有平台都支持。
2.1.2 次常用标记
次常用标记要有基本的印象,能记住也是可以的。
2.1.2.1 注脚
在需要添加注脚的文字后加上脚注名字[^注脚名字]
,称为加注,然后在文本的任意位置(一般在最后)添加脚注,脚注前必须有对应的脚注名字。
注意:经测试注脚与注脚之间必须空一行,不然会失效。成功后会发现,即使你没有把注脚写在文末,经Markdown转换后,也会自动归类到文章的最后。
例12:
使用 Markdown[^1]可以效率的书写文档, 直接转换成 HTML[^2], 你可以使用 Leanote[^Le] 编辑器进行书写。
[^1]: Markdown是一种纯文本标记语言(冒号与文字之间需要有空格)
[^2]: HyperText,超文本标记语言
[^Le]: 开源笔记平台,支持Markdown和笔记直接发为博文
2.1.2.2 标签分类
使用 标签:
或者 Tags:
+空格
+标签名
表示标签标记。
例13:
标签: 数学 英语
Tags: 数学 英语
标签: 数学 英语
Tags: 数学 英语
注意:标签:
或者Tags:
的冒号要使用半角冒号。基本没使用过这个标记,不过应用场景应该是归类。便于快速了解文章分类。
2.1.2.3 删除线
使用~~
表示删除线。
例14:
~~这是一条删除线~~
效果:
这是一条删除线
注意:~~
和要添加删除线的文字之间不能有空格。
2.1.2.4 缩略
*[W3C]: World Wide Web Consortium
*[W3C]: World Wide Web Consortium
再次出现 W3C
,便是如下效果,当鼠标悬停会显示其全称(简书暂不支持)。
2.1.2.5 背景高亮
==背景高亮==
并不是所有平台都支持。
2.1.3 不常用标记
不常用标记看看就好,等到使用的时候再百度一下。
2.1.3.1 实现页内跳转(锚点)
-
<h id='jump'>要跳转的标题位置</h>
h
和jump
可以随心换 - 使用html代码实现页内跳转。
- 在定义个锚
<span id = "jump">要跳转到的位置</span>
- 在定义个锚
- 点击
[跳转提示](#jump)
便会跳转到锚
所在位置的效果。
例15:
[你好](#jump)
<span id = "jump">here</span>
回到[简介](#h1)
效果:
你好
<span id = "jump">hehe</span>
回到简介
2.1.3.2 自动链接
Markdown 支持以比较简短的自动链接形式来处理网址和电子邮件信箱,只要是用<>
包起来, Markdown 就会自动把它转成链接。一般网址的链接文字就和链接地址一样,例如:
例16:
<http://example.com/>
<address@example.com>
效果:
http://example.com/
address@example.com
例17:
- 邮件:
<example@example.com>
- 引用存储文件
[example](…/…/example.md)
2.1.3.3 语义标记
效果 | 代码 |
---|---|
斜体 | *斜体* |
斜体 | _斜体_ |
加粗 | **加粗** |
加粗+斜体 | ***加粗+斜体*** |
加粗+斜体 | **_加粗+斜体_** |
~~删除线~~ |
2.1.3.4 语义标签
效果 | 代码 |
---|---|
<i>斜体</i> | <i>斜体</i> |
<b>加粗</b> | <b>加粗</b> |
<em>强调</em> | <em>强调</em> |
Za | Z<sup>a</sup> |
Za | Z<sub>a</sub> |
<kbd>Ctrl</kbd> | <kbd>Ctrl</kbd> |
2.1.3.5 LaTeX公式
详见以下两个网站:
Cmd Markdown 公式指导手册[1]
Markdown公式编辑(一)[2]
2.2 公式使用参考
2.2.1 如何插入公式
- 行中公式(放在文中与其它文字混编)可以用如下方法表示:
$数学公式$
- 独立公式可以用如下方法表示:
$$数学公式$$
行内公式示例:
$
J_\alpha(x) = \sum_{m=0}^\infty \frac{(-1)^m}{m! \Gamma (m + \alpha + 1)} {\left({ \frac{x}{2} }\right)}^{2m + \alpha} \text {,行内公式示例}
$
显示:
独立公式示例:
$$
J_\alpha(x) = \sum_{m=0}^\infty \frac{(-1)^m}{m! \Gamma (m + \alpha + 1)} {\left({ \frac{x}{2} }\right)}^{2m + \alpha} \text {,独立公式示例}
$$
显示:
2.2.2 如何输入上下标
^
表示上标, _
表示下标。如果上下标的内容多于一个字符,需要用 {}
将这些内容括成一个整体。上下标可以嵌套,也可以同时使用。
例子:
$$x^{y^z}=(1+{\rm e}^x)^{-2xy^w}$$
显示:
另外,如果要在左右两边都有上下标,可以用\sideset
命令
- 例子:
$$\sideset{^1_2}{^3_4}\bigotimes$$
- 显示:
2.2.3 如何输入括号和分隔符
()
、[]
和|
表示符号本身,使用 \{\}
来表示 {}
。当要显示大号的括号或分隔符时,要用 \left
和 \right
命令。
一些特殊的括号:
输入 | 显示 |
---|---|
$$\langle表达式\rangle$$ |
|
$$\lceil表达式\rceil$$ |
|
$$\lfloor表达式\rfloor$$ |
|
$$\lbrace表达式\rbrace$$ |
例子:$$f(x,y,z) = 3y^2z \left( 3+\frac{7x+5}{1+y^2} \right)$$
显示:
2.2.4 如何输入分数
通常使用 \frac {分子} {分母}
命令产生一个分数\frac {分子} {分母},分数可嵌套。
便捷情况可直接输入 \frac ab
来快速生成一个\frac ab。
如果分式很复杂,亦可使用 分子 \over 分母 命令,此时分数仅有一层。
例子:
$$\frac{a-1}{b-1} \quad \text{and} \quad {a+1\over b+1}$$
显示:
2.2.5 如何输入开方
使用 \sqrt [根指数,省略时为2] {被开方数}
命令输入开方。
例子:
$$\sqrt{2} \quad and \quad \sqrt[n]{3}$$
显示:
2.2.6 如何输入省略号
数学公式中常见的省略号有两种,\ldots 表示与文本底线对齐的省略号,\cdots 表示与文本中线对齐的省略号。
例子:
$$f(x_1,x_2,\underbrace{\ldots}_{\rm ldots} ,x_n) = x_1^2 + x_2^2 + \underbrace{\cdots}_{\rm cdots} + x_n^2$$
显示:
2.2.7 如何输入矢量
使用 \vec{矢量}
来自动产生一个矢量。也可以使用 \overrightarrow
等命令自定义字母上方的符号。
例子:
$$\vec{a} \cdot \vec{b}=0$$
显示:
例子:
$$\overleftarrow{xy} \quad and \quad \overleftrightarrow{xy} \quad and \quad \overrightarrow{xy}$$
显示:
2.4.8 如何输入积分
使用 \int_积分下限^积分上限 {被积表达式} 来输入一个积分。
例子:
$$\int_0^1 {x^2} \,{\rm d}x$$
显示:
2.4.9 如何输入极限运算
使用 \lim_{变量 \to 表达式} 表达式
来输入一个极限。如有需求,可以更改 \to
符号至任意符号。
例子:
$$ \lim_{n \to +\infty} \frac{1}{n(n+1)} \quad and \quad \lim_{x\leftarrow{示例}} \frac{1}{n(n+1)}$$
显示:
2.4.10 如何输入累加、累乘运算
使用 \sum_{下标表达式}^{上标表达式} {累加表达式}
来输入一个累加。与之类似,使用 \prod \bigcup \bigcap
来分别输入累乘、并集和交集。此类符号在行内显示时上下标表达式将会移至右上角和右下角。
例子:
$$\sum_{i=1}^n \frac{1}{i^2} \quad and \quad \prod_{i=1}^n \frac{1}{i^2} \quad and \quad \bigcup_{i=1}^{2} R$$
显示:
2.4.11 如何输入希腊字母
输入 \小写希腊字母英文全称
和\首字母大写希腊字母英文全称
来分别输入小写和大写希腊字母。
对于大写希腊字母与现有字母相同的,直接输入大写字母即可。
输入 | 显示 | 输入 | 显示 |
---|---|---|---|
$\alpha$ |
$A$ |
||
$\beta$ |
$B$ |
||
$\gamma$ |
$\Gamma$ |
||
$\delta$ |
$\Delta$ |
||
$\epsilon$ |
$E$ |
||
$\zeta$ |
$Z$ |
||
$\eta$ |
$H$ |
||
$\theta$ |
$\Theta$ |
||
$\iota$ |
$I$ |
||
$\kappa$ |
$K$ |
||
$\lambda$ |
$\Lambda$ |
||
$\nu$ |
$N$ |
||
$\mu$ |
$M$ |
||
$\xi$ |
$\Xi$ |
||
$o$ |
$O$ |
||
$\pi$ |
$\Pi$ |
||
$\rho$ |
$P$ |
||
$\sigma$ |
$\Sigma$ |
||
$\tau$ |
$T$ |
||
$\upsilon$ |
$\Upsilon$ |
||
$\phi$ |
$\Phi$ |
||
$\chi$ |
$X$ |
||
$\psi$ |
$\Psi$ |
||
$\omega$ |
$\Omega$ |
2.2.12 大括号和行标的使用
使用 \left
和 \right
来创建自动匹配高度的 (圆括号),[方括号] 和 {花括号} 。
在每个公式末尾前使用\tag{行标}
来实现行标。
例子:
$$
f\left(
\left[
\frac{
1+\left\{x,y\right\}
}{
\left(
\frac{x}{y}+\frac{y}{x}
\right)
\left(u+1\right)
}+a
\right]^{3/2}
\right)
\tag{行标}
$$
显示:
小技巧:
-
$\smash{\displaystyle\max_{0 \leq q \leq n-1}} f(q) \le n$
显示: -
$f(x + \epsilon) \approx f(x) + f'(x) \epsilon + \mathcal{O}(\epsilon^2).$
, 显示: - 求导符号使用
$\text{d}x$
, 即:
Markdown公式(二)以表格的形式列出了常用符号。
更多内容参见https://www.zybuluo.com/codeep/note/163962
2.3 字体转换
若要对公式的某一部分字符进行字体转换,可以用 {\字体 {需转换的部分字符}}
命令,其中 \字体
部分可以参照下表选择合适的字体。一般情况下,公式默认为意大利体.
输入 | 说明 | 显示实例 |
---|---|---|
\rm |
罗马体 | |
\cal |
花体 | |
\it |
意大利体 | |
\Bbb |
黑板粗体 | |
\bf |
粗体 | |
\mit |
数学斜体 | |
\sf |
等线体 | |
\scr |
手写体 | |
\tt |
打字机体 | |
\frak |
旧德式字体 | |
\boldsymbol |
黑体 | , |