2 markdown基本语法

2.1 段内换行

行末<br/>或两个以上空格 + 回车为段内换行,连续两个回车为新起一段

我是第一段第一行
我是第一段第二行

我是第二段,注意行间距和段间距的差异

2.2 增加段间距

<br>,每多一个就多一次换行;或&nbsp;,表示一个空段落。

正常段间距

正常段间距

连续两次换行<br>后得到本行,虽然看上去行距很大,但仍在一段中

 

中间隔了一个空段落,显然段间距更大。空段落可以叠加

2.3 注释

<!-- -->括住的内容会被注释掉,不显示在最终输出中。

2.4 脚注

markdown 脚注的标准格式为:

  1. 在需要加脚注处用 [^footnote] 标识。
  2. 在下文任意处新起一行,用 [^footnote]: blabla... 将脚注补全。

2.5 参考文献

markdown 其实并无格式化参考文献的语法,但可以利用 html 的脚注语法手动实现——只适合写简易文章的场合。

This is a test sentence.<sup><a href="#ref1">[101]</a></sup>
This is a test sentence.<sup><a href="#ref2">[102]</a></sup>

最后在文章结尾处写:

Reference
<a name="ref1">[101] 文献引用1</font></a>
<a name="ref2">[102] 文献引用2</font></a>

效果为:

This is a test sentence.[101]

This is a test sentence.[102]

Reference

[101] 文献引用1

[102] 文献引用2

2.6 引用

在引用中可以使用其他 Markdown 语法

2.6.1 单层和嵌套引用

> 张三说:李四这样说过    
> 
>> 不想当将军的木匠不是好厨子。

张三说:李四这样说过

不想当将军的木匠不是好厨子。

2.6.2 多行引用

仍然是一段(推荐):

> 第一行  
> 第二行  

> 第一行
> 
> 第二行

第一行
第二行

第一行

第二行

变成了两段(不推荐):

> 第一段

> 第二段

第一段

第二段

2.7 分隔线

三个以上的*/-/_


2.8 链接

2.8.1 直接表示:

格式为<地址>地址(仅限 http 和 www 开头,这是 GFM 扩展语法)。如:百度的网址是 http://www.baidu.com 或 www.baidu.com,我的邮箱是

2.8.2 行内链接

格式为[链接名](地址)。如:点击超链接百度

2.8.3 引用式链接

当链接被重复使用时,最好使用引用链接形式。可以将链接标记理解为一个地址变量。

在某处(比如文章结尾)定义一些链接标识符,语法为:[链接标识符]:网址。定义语句不会显示在输出中。正文中使用时,语法为:[链接名][链接标识符],如:

Google 首页查询 IT 资料通常是第一步,虽然在中文搜索方面这个国际巨头的用户体验常常不如百度

2.9 图片

  1. 行内图片:
    ![图片名称]("图片地址或网址") 不建议使用这种方法,编译pdf有时会报错。

  2. 引用式图片:与链接类似,也可以在文章某处定义图片的标识符,然后把行内图片引用中图片地址替换成图片标识符即可。

2.10 列表

2.10.1 列表嵌套

Tab缩进表示下一级

  • 第一级
    • 第二级
      • 第三级
      • 第三级
    • 第二级

2.10.2 列表缩进

若列表项无换行,一个空格即可;若列表项有换行,建议无序列表用三个空格如- xxx,有序列表用两个空格如1. xxx

  • 这个列表项
    有换行
  • 这个没有
  1. 这个有序列表项
    有换行
  2. 这个没有

2.10.3 列表项间空行

无换行的列表项之间不建议空行;有换行的列表项之间建议空一行;列表开始和末尾都空一行

无换行:

  • 抽烟
  • 喝酒
  • 烫头

有换行:

  • 抽很多的

  • 喝酒

  • 烫头

2.11 任务列表

2019年读书计划

- [x] 《R in Action》
- [x] 《R for Data Science》 
- [ ] 《Python 疯狂讲义》
  • 《R in Action》
  • 《R for Data Science》
  • 《Python 疯狂讲义》

2.12 管道表

Table 2.1: 管道表
Tables Are Cool
col 3 is right-aligned $1600
col 2 is centered $12
zebra stripes are neat $1

注:

  1. 英文冒号 : 使列获得了某种对齐方式。
  2. 代码块和引用块不能插入表格。
  3. 管道表不允许输入单元格换行,单元格内容太宽时转换结果可能自动换行。
  4. Table: (\#tab:label) text,为markdown简易表自动加表编号和表名(text),写在简易表的前后均可。

2.13 代码

markdown 中的代码,只是显示,不可执行。

2.13.1 行内代码

写在两个反引号之间,例:

在命令行中用cd命令切换目录

2.13.2 代码块

Tab或四个空格开头

pipenv shell

或使用成对的三个反引号包裹,并可以显示声明语言,这是 GFM 扩展语法

def print_name():
    print("Markdown")

2.14 转义

\ + 符号

转义时要使用 \ 这个符号,比如美元符号 $,否则,$ 会表示嵌入行内的公式。

2.15 删除线

成对的双波浪线~~之间:

他是个天才疯子。

2.16 公式

2.16.1 行内公式

将公式包在$ $之间,如 \(\sin\pi/2=1\)

$\sin\pi/2=1$ 

2.16.2 独立成行的公式

将公式包含在$$ $$之间,如:

$$
f(x)=\frac{1}{2} \sum_{j=1}^{\infty} \int_{0}^{1} \sin ^{2}(j t x) d t
$$

\[ f(x)=\frac{1}{2} \sum_{j=1}^{\infty} \int_{0}^{1} \sin ^{2}(j t x) d t \]

为了产生对齐的公式,或在某些 markdown 编辑器中成功渲染出独立成行的公式,可使用 aligned 环境。

公式中的环境以\begin{环境名}开始,以\end{环境名}结束,用\\表示换行,用&表示一个上下对齐位置。如:

$$
\begin{aligned}
  f(x) =& \sum_{k=0}^\infty \frac{1}{k!} x^k \\
  =& e^x
\end{aligned}
$$

\[ \begin{aligned} f(x) =& \sum_{k=0}^\infty \frac{1}{k!} x^k \\ =& e^x \end{aligned} \]

2.16.3 为公式手动编号

$$
y = f(x) \tag{label}
$$

\[ y = f(x) \tag{label} \]

2.17 锚点/交叉引用

markdown 原生的交叉引用功能仅适用于各级标题

锚点的定义置于标题的尾部:{#锚点名}

锚点的使用:[锚点描述](#锚点名)[锚点描述](#标题)

例:跳转到引用

2.18 排版风格建议

  1. 中文字符和英文字符(不包括标点符号)之间加空格,
  2. 使用半角符号时,无论是中文还是英文,都要在两边加空格。
  3. “/”表示路径时,前后都不加空格。
  4. 负号后面接数字不加空格。

2.19 Mermaid

2.19.1 什么是Mermaid?

  • Mermaid是一种基于Javascript的绘图工具,使用类似于Markdown的语法,使用户可以方便快捷地通过代码创建图表。
  • 项目地址:https://github.com/mermaid-js/mermaid

2.19.2 图类型

  • 饼状图:使用pie关键字,具体用法后文将详细介绍
  • 流程图:使用graph关键字,具体用法后文将详细介绍
  • 序列图:使用sequenceDiagram关键字
  • 甘特图:使用gantt关键字
  • 类图:使用classDiagram关键字
  • 状态图:使用stateDiagram关键字
  • 用户旅程图:使用journey关键字

2.19.3 饼图

  • 在线渲染器:Online FlowChart & Diagrams Editor

  • 语法

    • pie关键字开始图表
    • 然后使用title关键字及其在字符串中的值,为饼图赋予标题。(这是可选的
    • 数据部分
      • " "内写上分区名。
      • 分区名后使用:作为分隔符
      • 分隔符后写上数值,最多支持2位小数——数据会以百分比的形式展示
  • 实例

pie
    title 为什么总是宅在家里?
    "喜欢宅" : 15
    "天气太热或太冷" : 20
    "穷" : 500

2.19.4 流程图

2.19.4.1 实例

graph LR
    A[Start] --> B{Is it?};
    B -- Yes --> C[OK];
    C --> D[Rethink];
    D --> B;
    B -- No ----> E[End];

2.19.4.2 方向

用于开头,声明流程图的方向。

  • graphgraph TBgraph TD:从上往下
  • graph BT:从下往上
  • graph LR:从左往右
  • graph RL:从右往左

2.19.4.3 结点

  • 无名字的结点:直接写内容,此时结点边框为方形;节点内容不能有空格
  • 有名字的结点:节点名后书写内容,内容左右有特定符号,结点边框由符号决定;节点内容可以有空格

下面的实例中,没有为graph指定方向,因此默认是从上往下的。但是由于各个结点之前没有箭头,所以他们都处于同一排。

graph
    默认方形
    id1[方形]
    id2(圆边矩形)
    id3([体育场形])
    id4[[子程序形]]
    id5[(圆柱形)]
    id6((圆形))
graph
    id1{菱形}
    id2{{六角形}}
    id3[/平行四边形/]
    id4[\反向平行四边形\]
    id5[/梯形\]
    id6[\反向梯形/]

2.19.4.4 连线样式

  • 实线箭头:分为无文本箭头和有文本箭头,有文本箭头有2种书写格式
graph LR
a-->b--文本1-->c-->|文本2|d
  • 粗实线箭头:分为无文本箭头和有文本箭头
graph LR
a==>b==文本==>c
  • 虚线箭头:分为无文本箭头和有文本箭头
graph LR
a-.->b-.文本.->c
  • 无箭头线:即以上三种连线去掉箭头后的形式
graph LR
a---b
b--文本1---c
c---|文本2|d
d===e
e==文本3===f
f-.-g
g-.文本.-h
  • 其他连线:需要将graph关键字改为flowchart,除了新增加的连线形式外,上面三种线的渲染效果也会不同
flowchart LR
    A o--o B
    B <--> C
    C x--x D
    
    旧连线 --文本--> 也会不同
  • 延长连线:增加相应字符即可,如下图中的B到E,连线中增加了一个-。字符可多次添加。
graph LR
    A[Start] --> B{Is it?};
    B -->|Yes| C[OK];
    C --> D[Rethink];
    D --> B;
    B --->|No| E[End];

2.19.4.5 连线形式

  • 直链
graph LR
   A -- text --> B -- text2 --> C
  • 多重链:可以使用&字符,或单个描述
graph 
   a --> b & c--> d
   
   A & B--> C & D
   
    X --> M
    X --> N
    Y --> M
    Y --> N

2.19.4.6 其他

  • 子图:需要将graph关键字改为flowchart,在代码段的开始加入subgraph,尾部加入end
flowchart TB
    c1-->a2
    subgraph one
    a1-->a2
    end
    subgraph two
    b1-->b2
    end
    subgraph three
    c1-->c2
    end
    one --> two
    three --> two
    two --> c2
  • 注释:在行首加入%%即可。
graph LR
%%这是一条注释,在渲染图中不可见
    A[Hard edge] -->|Link text| B(Round edge)
    B --> C{Decision}
    C -->|One| D[Result one]
    C -->|Two| E[Result two]