相信很多人跟我一样,对Markdown是“一知半解”,会打一点,知道一点,但是其实从没花哪怕一分钟了解过。其实除了标题粗体插入代码,Markdown还有很多有趣的基础语法和扩展语法。

Markdown基本语法就是由 John Gruber 最初设计的语法(如标题,加粗,斜体等),它很简单且很常用,但是功能相当有限。由于一直没有Markdown的确定标准,各个平台自制的“民间Markdown”应运而生,扩展语法增加了许多高级的功能(表格,角标等),可以实现更多功能。各个地方的扩展语法不尽相同。在一些网络平台或者本地编辑器上有效的语法,可能在其他地方并不能正确显示。不过对于一些最常见的扩展语法,各个地方还是大致统一的。

表格(Tables)

大家应该都用过自动生成的Markdown表格,事实上自己打也并不复杂。Markdown支持创建任意mxn表格,并且可以对每一列设置对齐方式

|中国|美国|日本|韩国|
|-:|-|:-:|:-:|
|北京|华盛顿|东京|首尔|
|`1450000000`|327000000|126300000|52000000|
中国 美国 日本 韩国
北京 华盛顿 东京 首尔
1450000000 327000000 126300000 52000000

一个mxn表格由m+1行构成,其中第一行是表头,第二行指定对齐方式(Alignment),之后所有的行是剩余的行。每一行由n+1个分隔符|分割为n格,每一格储存该列的信息。不同列的长度可以不同,无需对齐,这一列会自动调整宽度,完整显示一列里最宽的数据。列里的数据也支持简单的语法

上面的代码创建了一个3x4的表格。观察第二行的对齐方式。可以发现:

  • ---:表示向右对齐(-可以有任意多个,下同)
  • :--:表示向中对齐
  • :----(即默认值)表示向左对齐

列表,引用的嵌套(Nested List & Quotation)

不算扩展的语法,但是很有意思。Markdown中有序或无序列表的嵌套规则是以缩进(Indent)来决定

1. First
- Indent1
- Indent2
2. Second
1. Indent1
2. Indent2
  1. First

    • Indent1
    • Indent2
  2. Second
    1. Indent1
    2. Indent2

实际上,要在任何列表间插入其他内容,都可以不用打断列表,在列表的两项之间缩进就可以,列表的顺序和结构是完全由缩进来决定的

1. First
> Quotation in First
2. Second
  1. First

    Quotation in First

  2. Second

而引用的嵌套只有大于号的个数决定,几个大于号就是几层嵌套,甚至一级引用里可以直接出现三级引用。同一级引用会在引用框左边自动连接。

> line1
> > line2
> > > line3
>
> line4
> line5
> > > line6

line1

line2

line3

line4

line5

line6

注意引用内的文字也需要多打一个回车才能分开,否则可能会显示在一行(这里没有)。

还有一种形式的列表:

First
: First Second Term
: Second
: Thrird
: Fourth
First
First
Second
Second
Thrird
Fourth

这个是在markdown.com.cn)上看到的,我本机并不支持,但是博客园可以(虽然会显示斜体),其嵌套规则也是看缩进。不过这个东西描述为“定义列表”,应该用来做定义,并不应该用来嵌套。

删除线、高亮线与转义表示(Strickout, Highlight and Escape)

~~这是删除~~这是删除

==这是高亮==这是高亮

删除线还算常见,但是高亮很多地方并不支持(但是博客园支持)。要在删除线内使用~字符,使用转义字符\~即可。

~~这是\~\~删除~~这是~~删除

对于加粗或者斜体也是一样,用\*替代*

**ds\*\*ad**ds**ad

但是行内代码字符`并不支持这么做,你可以自己进行尝试,即使进行转义,它往往也会优先匹配最近的两个`,留下空空一个\

`\`and` 显示效果:\and`。

正确的做法:如果行内代码里出现`,就把两端的一个反引号改为两个:``(当然要加上空格,不要连在一起)。那如果行内代码里也出现了两个`呢?那就把两端的两个改为三个,以此类推。

`` ` ``显示效果:`

``` `` ```显示效果:``(那我是怎么打出三重反引号的?那就在边上加4个了)

链接(HyperLink),图片(Picture)与Title

一般的链接是这样[一般的链接是这样](https://www.cnblogs.com/ofnoname/p/15823373.html)

在链接后可以添加一个字符串作为Title[在链接后可以添加一个字符串作为Title](https://www.cnblogs.com/ofnoname/p/15823373.html "Hello?Hello!")

这样,当你把鼠标移至添加了Title的链接而不点击时,鼠标旁就会显示出Title。图片也是一个道理,可以在鼠标指向图片时显示Title。

直接链接:将链接直接用<>括起来即可,不过有些网站不能正确识别

<https://www.cnblogs.com/ofnoname/p/15823373.html>https://www.cnblogs.com/ofnoname/p/15823373.html

引用链接:将链接放在之后的引用里,在链接处只用数字代表

[Click Me][1]

[1]: https://www.cnblogs.com/ofnoname/p/15823373.html

Click Me

同时,这个链接也可以用来指向文中其他位置(定位到其他标题),最常见的就是标题标签的跳转

给图片增加链接:让图片变成可点击的,实现方法很多。其中一种是直接将两个链接暴力嵌套

脚注(Footnote)

上面的“引用链接"已经提到过一点了。真正的脚注用[^1]类似来标记

悔相道之不察[^1]兮,延伫乎吾将反[^3]

[^1]: Footnote 1
[^3]: Footnote 2

悔相道之不察[1]兮,延伫乎吾将反[2](点击链接跳转到文尾)

可以使用任意标记关联脚注,会自动以1,2,3...排列。

待办列表(Todolist)

格式简单,无序列表加上一个框。

- [x] Write the press release
- [ ] Update the website
- [] Contact the media

框里的x表示已完成,否则未完成。一般可以手动点击更改。博客园不支持,大部分地方没有。Typora等本地编辑器有,非常美观。

添加Emoji

Emoji本质是Unicode字符,你可以直接复制表情然后粘贴在文本里(当然同一个符号在不同平台上有不同风格的,样式可能不一样,但是都是同一个表情)。不过在博客园,粘贴图片表情都会自动上传图片过后粘贴图片链接,很方便。

附魔怔笑

更通用的办法是使用:表情代码:的形式。在emojipedia上可以查询各种的表情的显示以及短代码,常见的都可以被识别

:sweat_smile:
:joy:

不过这个仍然比较小众,很多地方没有。

自动目录(TOC)

输入[TOC]召唤下面的目录(全文目录,标题等级动态生成的),比较常见。

流程图

很多笔记软件都支持的流程图。具体实现是在代码框中使用flowchart或者mermaid。这样代码区域就会自动绘制流程图。

    ```flow或者mermaid
//代码
```

代码里可以定义各种图形,文字以及其连接方式。除了一般的流程图,有的还可以做时序图等等。不过博客园是不支持的,并且我也很难用习惯,这里不多做介绍。给大家贴一篇别的文章,描述流程图内的语法。


  1. Footnote 1

  2. Footnote 2

一些Markdown扩展语法的更多相关文章

  1. Markdown扩展语法

    目录 Markdown 语法补充 一.快速生成 HTML 表格代码 在线表格编辑器--TablesGenerator 二. 插入视频.音频或GIF 1. 视频 2. 音频 方法一 方法二 方法三 3. ...

  2. Markdown温故知新(4):更多扩展语法及HTML

    1.强调(删除 & 高亮) 2.脚注(注脚) 3.数学公式 4.更多扩展语法 5.终极扩展之内嵌 HTML 5.1.文本修饰类标签 5.2.内容排版类标签 5.3.图片及多媒体标签 5.4.锚 ...

  3. Markdown温故知新(3):六个实用扩展语法

    目录 1.表格(Table) 2.待办事项或清单(To Do List) 3.自动目录 TOC 4.流程图 5.时序图 6.甘特图 7.总结 1.表格(Table) 没用过 Markdown 表格的人 ...

  4. 转 - markdown 简明语法

    Markdown是一种极简的『标记语言』,将文本转为HTML,通常为我大码农所用.其不追求大而全,简洁至上,正所谓不求最贵,只求最好! 本文介绍Markdown基本语法,内容很少,一行语法一行示例,学 ...

  5. Markdown分级语法手册

    目录 前言(可以不看) 基本语法(18) 1. 标题:# 2. 无序列表:- 3. 有序列表:1. 4. 斜体:* 5. 粗体:** 6. 加粗斜体:*** 7. 删除线:~~ 8. 分隔线:--- ...

  6. MarkDown基础语法大全

    一.MarkDown是什么? Markdown是一种轻量级的「标记语言」,创始人为约翰·格鲁伯,用简洁的语法代替排版,目前被越来越多的知识工作者.写作爱好者.程序员或研究员广泛使用.其常用的标记符号不 ...

  7. markdown常用语法总结

    转自markdown示例[模板] 1.1.段落标题 根据原文中的文档标题可以对应设置标题. # 一级标题## 二级标题### 三级标题 效果 => 一级标题 二级标题 三级标题 1.2.斜体.加 ...

  8. Markdown基本语法

    Markdown 基本语法记录 # 欢迎使用 Cmd Markdown 编辑阅读器 ------ 我们理解您需要更便捷更高效的工具记录思想,整理笔记.知识,并将其中承载的价值传播给他人,**Cmd M ...

  9. Markdown 简明语法手册

    Markdown 简明语法手册 本文原文http://www.jianshu.com/p/fdb5cbdaf244 根据个人使用情况有所修改. Markdown是一种轻量级标记语言,简称md.创始人为 ...

随机推荐

  1. IDEA添加yaml自动补全语法插件

    问题:编写yml文件的时候,系统不能给自动补全 解决办法:File---->Settings---->Plugins---->搜索Spring Assistant x 项目效果预览

  2. sqlalchemy-orm学生签到 成绩记录查询系统

    #!/usr/bin/env python # Author:zhangmingda '''''' from sqlalchemy import create_engine,ForeignKey,DA ...

  3. SpringBoot结果集包装类

    1.前言 在SpringBoot项目中.看了一部分代码.发现一般的接口以JSON形式返回最佳.接口规范遵照RESTFUL风格来写.返回的结果集呢.借助包装类来包装.这样有利于前后端的交互.写出来的代码 ...

  4. 谷歌浏览器(chrome)查找、打包已安装的扩展程序

    我们有时候会安装浏览器扩展程序,正常情况下,我们回去谷歌应用商店里面进行下载,但是这个需要VPN,有时候我们没法使用VPN,想从其他已安装扩展程序的浏览器上直接安装就可以使用我们下面这个方法 win1 ...

  5. 【九度OJ】题目1015:还是A+B 解题报告

    [九度OJ]题目1015:还是A+B 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1015 题目描述: 读入两个小于10000的正整 ...

  6. 【九度OJ】题目1208:10进制 VS 2进制 解题报告

    [九度OJ]题目1208:10进制 VS 2进制 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1208 题目描述: 对于一 ...

  7. 【LeetCode】561. Array Partition I 解题报告(Java & Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 排序 日期 题目地址:https://leetcod ...

  8. 【LeetCode】236. Lowest Common Ancestor of a Binary Tree 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  9. Springcloud-alibaba学习实践(2)- nacos&Eureka Server服务注册实践

    前言:上一篇已搭建好了springcloud服务注册中心(Nacos&Eureka Server),本篇继续代码实践,注册服务到服务中心,本篇只是演示了两种注册中心,后续我们以Nacos注册中 ...

  10. KKT (LICQ)

    目录 基本内容 LICQ 假设 KKT 定理 KKT定理的证明 引理A Farkas 引理 推论 KKT定理的证明 H. E. Krogstad, TMA 4180 Optimeringsteori ...