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. ansible服务部署

    1.ansible.cfg配置文件 [defaults] #inventory= /home/op/ansible/testing #sudo_user=root remote_port=9122 r ...

  2. 201871010115 马北 《面向对象程序设计(java)》 第6-7周学习总结

    项目 内容 <面向对象程序设计(java)> https://home.cnblogs.com/u/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.c ...

  3. 201871010133-赵永军《面向对象程序设计(java)》第十二周学习总结

    201871010133-赵永军<面向对象程序设计(java)>第十二周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...

  4. java.util.Base64

    Base64 简单使用 java.util.Base64 package com.mozq.sb.jwt01.config; import java.nio.charset.Charset; impo ...

  5. golang和python互相调用

    http://blog.yuanzhaoyi.cn/2018/06/27/golang_python.html python3-ctypes: https://docs.python.org/3.5/ ...

  6. 高效Redis工具类

    一.引言 本篇博客以redis缓存为主.至于什么是redis缓存?还有没有其它的缓存?哪个缓存的性能会更好?这里就不一一做介绍了!(有兴趣的可以自己去百度一下) 在日常的开发中,我们或多或少(必须)的 ...

  7. Win10 Mactype 字体优化

    1.下载安装 Mactype :http://www.mactype.net/ 2. 打开MacType Tray.exe,右键其在任务栏图标就能选择配置文件. 分享一个配置文件: [General] ...

  8. Python Django项目部署 Linux 服务器

    项目依赖: Linux Centos7 (阿里云轻量级服务器) + Python 3.7.2 + Django 2.2.1 + restframework 3.9.4 + mysql 5.7 1 安装 ...

  9. Linux性能优化实战学习笔记:第四讲

    一.怎么查看系统上下文切换情况 通过前面学习我么你知道,过多的上下文切换,会把CPU时间消耗在寄存器.内核栈以及虚拟内存等数据的保存和回复上,缩短进程真正运行的时间,成了系统性能大幅下降的一个元凶 既 ...

  10. [LeetCode] 152. Maximum Product Subarray 求最大子数组乘积

    Given an integer array nums, find the contiguous subarray within an array (containing at least one n ...