Markdown 语法学习笔记

Markdown 语法学习笔记

Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯(John Gruber)。它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档”。[4]这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。

由于Markdown的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,当前许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息。例如:GitHub、reddit、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge等。甚至Markdown能被使用来撰写电子书。

1 基础语法

1.1 分级标题

语法说明:

  • 在想要设置为标题的文字前面加#来表示
  • 一个#是一级标题,二个#是二级标题,以此类推。支持六级标题。
  • 标准语法一般在#后跟个空格再写文字
# H1 一级标题
## H2 二级标题
### H3 三级标题
#### H4 四级标题
##### H5 五级标题
###### H6 六级标题

显示效果如下:

1.2 文本样式

语法说明:

  • 加粗:要加粗的文字左右分别用两个*号包起来
  • 斜体:要倾斜的文字左右分别用一个*号包起来(或用下划线_包裹)
  • 斜体加粗:要倾斜和加粗的文字左右分别用三个*号包起来
  • 删除线:要加删除线的文字左右分别用两个~~号包起来
~~这里是删除线~~
**字体加粗**
*字体倾斜*
_字体倾斜_
***倾斜加粗***

显示效果如下:

1.3 列表

语法说明:

  • 无序列表:用-+*任何一种都可以,和内容之间都要有一个空格
  • 有序列表:数字后加.,序号跟内容之间要有空格
  • 列表嵌套:上一级和下一级之间敲三个空格即可
1. 一级有序列表
   * 二级无序列表
   * 二级无序列表
      1. 三级有序列表
      2. 三级有序列表
         - 四级无序列表
         - 四级无序列表
   * 无序列表
2. 一级有序列表
3. 一级有序列表

显示效果如下:

1.4 插入 链接/图片

Markdown 支持两种形式的链接语法: Inline-style(行内式)和Reference-style(参考式)两种形式,行内式一般使用较多。

1.4.1 行内式

语法说明:

  • [ ]里写链接文字,( )里写链接地址,( )中的" "中可以为链接指定title属性,title属性可加可不加。
  • title属性的效果,是鼠标悬停在链接上会出现指定的title文字。
  • 链接地址与链接标题前有一个空格。
欢迎访问[&娴敲棋子&'s Blog](https://HGzhao.github.io/)

欢迎访问[&娴敲棋子&'s Blog](https://HGzhao.github.io/ "&娴敲棋子&'s Blog")

显示效果如下:

欢迎访问&娴敲棋子&’s Blog

欢迎访问&娴敲棋子&’s Blog

1.4.2 参考式

参考式超链接一般用在学术论文上面,或者另一种情况,如果某一个链接在文章中多处使用,那么使用引用 的方式创建链接将非常好,它可以让你对链接进行统一的管理。

语法说明:

  • 参考式链接分为两部分,文中的写法 [链接文字][链接标记],在文本的任意位置添加[链接标记]:链接地址 “链接标题”,链接地址与链接标题前有一个空格。
  • 如果链接文字本身可以做为链接标记,你也可以写成[链接文字][] [链接文字]:链接地址的形式,见代码的最后一行。
网站推荐[Github][1]、[&娴敲棋子&'s Blog][2]、[&娴敲棋子&'s Blog][]。

[1]:https://github.com/
[2]:https://HGzhao.github.io/ "&娴敲棋子&'s Blog"
[&娴敲棋子&'s Blog]:https://HGzhao.github.io/

显示效果如下:

网站推荐Github&娴敲棋子&’s Blog&娴敲棋子&’s Blog

1.4.3 自动链接

语法说明:

Markdown 支持以比较简短的自动链接形式来处理网址和电子邮件信箱,只要是用<>包起来, Markdown 就会自动把它转成链接。一般网址的链接文字就和链接地址一样,例如:

<http://example.com/>
<address@example.com>

显示效果如下:

http://example.com/
address@example.com

1.4.4 插入图片

图片的创建方式与超链接相似,而且和超链接一样也有两种写法,行内式和参考式写法。

语法中图片Alt的意思是如果图片因为某些原因不能显示,就用定义的图片Alt文字来代替图片。 图片Title则和链接中的Title一样,表示鼠标悬停与图片上时出现的文字。 Alt 和 Title 都不是必须的,可以省略,但建议写上。

![图片alt](图片地址 ''图片title'')

图片alt就是显示在图片下面的文字,相当于对图片内容的解释。
图片title是图片的标题,当鼠标移到图片上时显示的内容。title可加可不加

Inline-style: 
![alt text](https://d233eq3e3p3cv0.cloudfront.net/fit/c/256/256/0*njGaeIRG6IiQJqNX.jpeg “Logo Title Text 1")

Reference-style: 
![alt text][logo]
[logo]: https://d233eq3e3p3cv0.cloudfront.net/fit/c/256/256/0*njGaeIRG6IiQJqNX.jpeg “Logo Title Text 2"

1.5 代码块和语法高亮

Blocks of code are either fenced by lines with three back-ticks ```, or are indented with four spaces. I recommend only using the fenced code blocks — they’re easier and only they support syntax highlighting.

语法说明:

显示效果如下:
javascript

var s = “JavaScript syntax highlighting”;
alert(s);

python

s = “Python syntax highlighting”
print(s)

HTML

<table><tr><td bgcolor=orange>背景色是:orange</td></tr></table>

不指定语言

No language indicated, so no syntax highlighting. 
But let’s throw in a <b>tag</b>.

1.6 表格

语法说明:

| 左对齐标题 | 右对齐标题 | 居中对齐标题 |
| :------| ------: | :------: |
| 短文本 | 中等文本 | 稍微长一点的文本 |
| 稍微长一点的文本 | 短文本 | 中等文本 |


*字体倾斜* | `语法高亮` | **字体加粗**
-- | -- | --
1 | 2 | 3
  • 第二行用于分割表头和内容。
  • -有一个就行,为了对齐,多加了几个
    • :---表示所在列的内容居对齐
    • :--:表示所在列的内容居中对齐
    • ---:表示所在列的内容居对齐
  • 此外,最外侧的管道符可以省略。

显示效果如下: (第一个表格)

1.7 引用

语法说明:

  • 在引用的文字前加>即可。
  • 引用也可以嵌套,如加两个>>,三个>>>,n个…这可以一直加下去。
> 这是引用的内容
>> 这是引用的内容
>>>>>>>> 这是引用的内容

显示效果如下:

或是如下这种显示方式:

这是第一级引用的内容

这是第二级引用的内容

这是第八级引用的内容

1.8 分割线

语法说明:

  • 三个或者三个以上的-或者*即可作出分割线。
---
----
***
****

显示效果如下:(此处仅拿其中一种写法做为展示)

2 进阶技巧

2.1 缩进

语法说明:

  • 不断行的空白格 
  • 半角的空格
  • 全角的空格

2.2 换行

语法说明:

  • 方法1: 连续两个以上空格+回车
  • 方法2:使用html语言换行标签:<br>

2.3 链接的高级技巧

2.3.1 注脚

语法说明:

  • 在需要添加注脚的文字后加上脚注名字[^注脚名字],称为加注。 然后在文本的任意位置(一般在最后)添加脚注,脚注前必须有对应的脚注名字。
  • 脚注自动被搬运到最后面,请到文章末尾查看,并且脚注后方的链接可以直接跳转回到加注的地方。

2.3.2 内容目录

语法说明:

  • 关于目录生成,只要文章是按照markdown语法写作的。在需要生成目录的地方写[TOC]即可。
  • 注意,在[TOC]上下需要空出一行。
  • 有些Markdown编辑器需要使用@[TOC]语法。

2.3.3 锚点

名词解释:
锚点是是网页制作中超级链接的一种,又叫命名锚记。命名锚记像一个迅速定位器一样是一种页面内的超级链接,运用相当普遍。
英文名:anchor
使用命名锚记可以在文档中设置标记,这些标记通常放在文档的特定主题处或顶部。然后可以创建到这些命名锚记的链接,这些链接可快速将访问者带到指定位置。
创建到命名锚记的链接的过程分为两步。首先,创建命名锚记,然后创建到该命名锚记的链接。

语法说明:
总之就是用于文章快速定位,点击目录便可直接跳转到指定位置。下面来介绍一下在MarkDown编辑器中怎么使用:

首先是建立一个跳转的连接。注意符号 # 和 target 参数要设置正确:
<a href="#jump" target="_self">说明文字</a>
然后标记要跳转到什么位置即可。文字颜色可随意设置,这里以红色为例:

跳转到这里:

2.4 字体设置

Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式。但是它本身是不支持修改字体、字号与颜色等功能的!

CSDN-markdown编辑器是其衍生版本,扩展了Markdown的功能(如表格、脚注、内嵌HTML等等)!对,就是内嵌HTML,接下来要讲的功能就需要使用内嵌HTML的方法来实现。

字体,字号和颜色编辑如下代码

语法说明:

  • 字体:<fontface= "xxx">我是xxx体字</font>
  • 字号:<fontsize=xxx>我是xxx号字</font>
  • 颜色:<fontcolor=xxxx>我是xxxx色</font>

显示效果如下:

我是黑体字
我是微软雅黑
我是华文彩云
我是红色
我是绿色
我是蓝色
我是5号字
我是等线字,绿色,字号5

我是等线
我是微软雅黑
我是华文彩云
color=#0099ff size=72 face=”幼圆”
color=#00ffff 可以用十六位颜色值
color=gray 在这里也可以用已知的颜色名

2.4 反斜杠转义

Markdown 中可以使用反斜杠转义 Markdown 语法符号为字面量. 例如, 如果你想用星号包围一个单词 (而不是 HTML 的<em>标签), 你可以在星号前面加反斜杠(\), 就像这样:

\*literal asterisks\*

显示效果如下:

2.5 特殊符号

https://unicode-table.com/cn/'

2.6 添加背景色

Markdown本身不支持背景色设置,需要采用内置html的方式实现:借助 table, tr, td 等表格标签的 bgcolor 属性来实现背景色的功能。举例如下:

<table><tr><td bgcolor=orange>背景色是:orange</td></tr></table>

显示效果如下:

背景色是:orange

2.7 emoji表情

3 高级用法

3.1 Latex 数学公式

语法说明:

  • 行内公式:使用两个”$”符号引用公式: $公式$
  • 行间公式:使用两对“$$”符号引用公式: $$公式$$

3.2 Todo List

语法说明:

-[ ] 待办事项1
-[ ] 待办事项2
-[x] 已办事项1

显示效果如下:

3.3 绘制流程图

语法说明:

显示效果如下:

3.4 绘制甘特图

3.5 绘制序列图

4 Markdown工具

4.1 快捷键

5 Markdown 的大大小小坑

5.1 Markdown版本演进

5.2 语法差异

语法差异其实就是看支持的是 Markdown 的哪一种实现,以及对应的配置选择。好消息就是,通用的格式 CommonMark 里面基础的标记是都支持的,只是单纯文字和图片几乎是随处可用,样式一致。

有兴趣的话,可以看看这个开源项目,它统计了不同Markdown实现的33个版本差异:
https://babelmark.github.io/faq/

举个例子:支持扩展效果不一致

最典型的就是表格和流程图了。大部分的实现都支持表格的功能,通过 Babelmark 3 可以看到 6 种转换后的 Html,如果表格里面还使用了加粗的话更是惨不忍睹,12 种效果任君猜测在不同网站显示,你绝对想不到的。

5.3 显示效果

这也是个天坑,辛苦的写好后,最终是需要面对读者的。引起的原因无非是实现的扩展功能不一致以及网站的 CSS 样式差异影响到了排版。

  • 实现的扩展功能不一致
  • CSS 样式差异影响
  • 这时候就必须要关注效果了。有预览功能那是最好的,否则需要一次次的发布然后查看,修改。因此选择的工具和你发布的平台的兼容性问题就来了,最好是都是同一个核心源码的变种实现。

文章作者: &娴敲棋子&
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 &娴敲棋子& !
评论
  目录