1、表格(Table)

没用过 Markdown 表格的人,乍一看会觉得表格很复杂,其实是因为表格中包含了很多内容,尽管看上去密密麻麻的一片,但其语法规则却特别简单。

我们可以把表格拆成两部分来看,表头和数据行,表头就一行,而数据行可以有很多行。在 Markdown 中,表头和数据行的写法是一样的,都是在列之间加竖线。为了区分表头和数据行,需要在二者之间加个分割行,分割行也是由竖线来区分列,竖线之间写上减号即可。

示例一下,输入文本如下:

|名次|姓名|语文|数学|评语|
|-|-|-|-|-|
|1|张三|81|100|优秀,数学天赋异禀|
|2|李四|91|75|优秀,语文不错|
|3|王五|74|78|良好|

显示效果如下:

名次 姓名 语文 数学 评语
1 张三 81 100 优秀,数学天赋异禀
2 李四 91 75 优秀,语文不错
3 王五 74 78 良好

有没有发现表格的语法和表格的结构非常类似呢?其实每一行头尾的竖线是可以省略的,为了看起来更整齐,我个人一般是都会写上的。分割行里的减号可以写多个,起初为了排版更美观,我曾尝试过根据每一列的内容来确定减号个数,后来发现太费劲了,毕竟内容是会改的,所以我现在一般就只写一个减号了。

细心的你可能已经注意到,表头中的文字被自动加粗和居中了。但依然美中不足的是,数据行默认全都居左了,像姓名这种长度相对固定的列还是居中比较好看,而分数这类数字列一般居右会更好。

Markdown 允许我们指定表格中单元格的对其方式,在分割行减号的左边加上冒号就表示左对齐,在右边加上冒号就表示右对齐,在两边都加上冒号则表示居中对齐。需要注意的是,这种写法会同时改变表头和数据行的对齐方式。

让我们来优化一下上面的表格,指定单元格的对齐方式,在表头文本之间加个空格,给满分加粗,让零分倾斜,顺带再加个引用,示例一下,输入文本如下:

>
|名 次|姓 名|语 文|数 学|评 语|
|:-:|:-:|-:|-:|-|
|1|张三|81|**100**|优秀,数学天赋异禀|
|2|李四|91|75|优秀,语文不错|
|3|王五|74|*0*|-|

显示效果如下:

名 次 姓 名 语 文 数 学 评 语
1 张三 81 100 优秀,数学天赋异禀
2 李四 91 75 优秀,语文不错
3 王五 74 0 -

尽管 Markdown 表格并不是标准语法,甚至连 CommonMark 标准中都没有,但在我用 Markdown 的这几年里,还没发现那个稍微好点的网站或软件是支持了 Markdown 却不支持 Markdown 表格的。换句话说,Markdown 表格是一种非官方通用标准。

2、待办事项或清单(To Do List)

在日常生活及工作中,我们常常需要列一个代办事项或任务清单。在 Markdown 中,你只需要在待办的事项文本或者清单文本前加上- [ ]- [x]即可,前者会被渲染成一个未被选中的复选框,而后者会被渲染成一个被勾选的复选框。

注意减号和左中括号之间得留一个空格,右中括号与文本之间也要留一个空格,中括号中能且只能有一个空格或字母x,且不区分大小写,其它任何字符都不行,多个空格或字母x也不行。

一般待办事项或清单,示例一下(截自印象笔记):

分级待办事项或清单,示例一下(截自印象笔记):

3、自动目录 TOC

Word 中有个生成目录的功能,但需要逐级设置,操作步骤特别繁琐,时间一长就容易忘记,下次再用还得花时间去查或尝试,相当于每用一次就得学一遍,一句话——真心累。

而在 Markdown 中,你只需要在整篇文章的任意地方,新起一行并输入[toc],即可在该位置自动生成一个全文内容结构的目录。这个目录是根据你在内容中设置的分级标题来自动生成的。

一般目录结构,示例一下(截自印象笔记):

分级目录结构,示例一下(截自印象笔记):

上图右边的红框内即为自动生成的目录。如果有需要,你可以在文章的头尾各输入一个[toc],不区分大小写,这样就可以在开头和结尾就都能看到目录了。

4、流程图

常见的流程图扩展插件有两个,分别是 mermaidflowchart.js。本节会结合印象笔记和马克飞象两款编辑器分别给出两个示例,相信会看本文的你仔细一看就能明白。

mermaid 的流程图语法以三个反单引号开头,并且以三个反单引号结尾。在开头的反单引号之后写上mermaid,然后新起一行写上graph XX,用以确定流程图的走向,这里的 XX 有 5 种可能的取值,释义如下:

  • TB,top bottom,自上而下
  • BT,bottom top,自下而上
  • LR,left right,从左到右
  • RL,right left,从右到左
  • TD,与 TB 的含义相同

常用图形(mermaid),示例一下(截自印象笔记):

常用连接线(mermaid),示例一下(截自印象笔记):

高中学生成为社会人士的流程(mermaid),示例一下(截自印象笔记):

flowchart.js 的流程图语法也是以三个反单引号开头和结尾。整个语法分为元素定义部分和元素连接部分。并且还有 6 个含义很形象的关键词,分别是 start、end、operation、subroutine、condition 和 inputoutput,其中 condition 有 yes 和 no 两个分支。

示例一下(截自马克飞象):

相比较而言,mermaid 和 flowchart.js 各有千秋。flowchart.js 对流程图形的支持更全面和深入,但语法比较复杂,且流程定义较为严格,对使用者的要求较高。mermaid 的语法则比较简洁和简单,用起来也更灵活,很容易入门。另外 flowchart.js 中 subroutine 的样子很丑,而 mermaid 中的判断图形看起来像一个竖起来的正方形,太占地方,也不够协调。

5、时序图

时序图又名序列图,是一种 UML 交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

示例一下(截自印象笔记):

示例一下(截自印象笔记):

示例一下(截自印象笔记):

示例一下(截自马克飞象):

6、甘特图

在工作中制作项目计划进度表时,甘特图绝对是不二选择。mermaid 插件对甘特图的支持比较好。

mermaid 的甘特图语法以三个独占一行的反单引号开头,并且以三个独占一行的反单引号结尾。在开头的反单引号之后写上mermaid,然后新起一行写上gantt,用以确定将要绘制的是甘特图。然后可以用title来指定标题,用dateFormat来指定时间格式,用section来定义任务。

示例一下(截自印象笔记):

示例一下(截自印象笔记):

7、总结

本文主要讲解了 6 个比较实用的 Markdown 扩展语法的用法。

本文链接http://www.cnblogs.com/hanzongze/p/markdown-extensions.html

版权声明:本文为博客园博主 韩宗泽 原创,作者保留署名权!欢迎通过转载、演绎或其它传播方式来使用本文,但必须在明显位置给出作者署名和本文链接!个人博客,能力有限,若有不当之处,敬请批评指正,谢谢!

Markdown温故知新(3):六个实用扩展语法的更多相关文章

  1. Markdown温故知新(0):导航目录

    Markdown温故知新(0):导航目录 Markdown温故知新(1):Markdown面面观 Markdown温故知新(2):详解七大标准语法 Markdown温故知新(3):六个实用扩展语法 M ...

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

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

  3. 一些Markdown扩展语法

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

  4. Markdown温故知新(1):Markdown面面观

    1.什么是 Markdown? 2.有哪些人在用 Markdown? 3.用 Markdown 的优势是什么? 4.Markdown 的语法标准简介 5.怎么用 Markdown? 6.如何选择 Ma ...

  5. [书籍翻译] 《JavaScript并发编程》第六章 实用的并发

    本文是我翻译<JavaScript Concurrency>书籍的第六章 实用的并发,该书主要以Promises.Generator.Web workers等技术来讲解JavaScript ...

  6. Markdown学习——Typora入门之常用操作语法及其快捷键

    Markdown 学习--Typora入门 Markdown是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档. 由于Markdown的轻 ...

  7. Visual Studio 实用扩展推荐

    Visual Studio 拥有非常不错的可扩展性,在之前的文章中,我也给大家示范了如何进行编辑器的扩展(详见文末参考资源).在本篇文章中,我将介绍几款非常实用的扩展,从而帮助我们提高开发效率. C# ...

  8. [转]Visual Studio 实用扩展推荐

    本文转自 http://www.cnblogs.com/stg609/p/3726898.html Visual Studio 拥有非常不错的可扩展性,在之前的文章中,我也给大家示范了如何进行编辑器的 ...

  9. .NET 实用扩展方法

    .NET 实用扩展方法(持续更新...) 1. 字符串转换为可空数值类型(int, long, float...类似) /// <summary> /// 将字符串转换成32位整数,转换失 ...

随机推荐

  1. Mysql优化之6年工作经验总结

    我们究竟应该如何对MySQL数据库进行优化?下面我就从MySQL对硬件的选择.MySQL的安装.my.cnf的优化.MySQL如何进行架构设计及数据切分等方面来说明这个问题.   服务器物理硬件的优化 ...

  2. DNS解惑之资源记录(2)

    1.区域解析库 每个域都要维护一个区域解析库,而区域解析库都是由一条条的记录组成的,而每一条记录就被称为资源记录(resource  record  RR). 我们知道大多数域名下面都不仅仅有www服 ...

  3. 创建maven父子项目(九)

    一.父子-聚合项目 通过 maven 可以创建父子-聚合项目. 所谓的父子项目,即有一个父项目,有多个子项目.这些子项目,在业务逻辑上,都归纳在这个父项目下,并且一般来说,都会有重复的jar包共享.所 ...

  4. 洛谷 P1628 合并序列

    洛谷 P1628 合并序列 题目传送门 题目描述 有N个单词和字符串T,按字典序输出以字符串T为前缀的所有单词. 输入格式 输入文件第一行包含一个正整数N: 接下来N行,每行一个单词,长度不超过100 ...

  5. 树莓派“Wlan0: Not associated”报错解决方案

    当执行 ifconfig wlan0 时,是有wlan0的网卡信息输出的. 当执行 ifconfig wlan0 up 是没问题的(即没有任何输出). 执行 iwlist wlan0 scan | g ...

  6. 【Mybatis】多个参数如何写xml和mapper

    1:#{0},#{1}  不写parameterType 2:注解 @Param("id")String id 3:Map   parameterType="hashma ...

  7. workerman docker 运行试用

    看到别人项目使用了workerman 作为webserver ,看了下介绍发现此框架还是挺强大的,比较喜欢使用 docker运行软件,所以基于php 7.3 的基础镜像简单使用下 环境准备 项目使用了 ...

  8. Linux学习笔记-第1天(补发)- 新的开始

    本来不打算补发第一天的笔记,第一天讲的内容并不多,且大部分内容都是书本上已有的,就没有写多少笔记. 其实在学习的过程中我挺好奇其它同学各种千奇百怪的问题.想法是怎么来的,我怎么想不出来这些.或许这就是 ...

  9. 基于paramiko将文件上传到服务器上

    通过安装使用paramiko模块,将本地文件上传到服务器上 import paramiko import datetime import os hostname = '服务器ip' username ...

  10. MySQL实战45讲学习笔记:第十二讲

    一.引子 平时的工作中,不知道你有没有遇到过这样的场景,一条 SQL 语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短. ...