Markdown浅析

本文重点

  1. Markdown是一种语法。
  2. Markdown的优点是简单、可迁移、不过时。
  3. Markdown的缺点是排版能力差,块引用实现复杂。
  4. 介绍了在obsidian中如何使用Markdown的个人心得。

缩写:md=Markdown,ob=obsidian

Markdown是一种语法而不是文件格式

obsidian所用的Markdown其实是一种语法而不是文件格式。不是所有的文件后缀都代表着一种新的文件格式。

Markdown是一种纯文本格式,即txt,其他的一些.org、.csv其实也是纯文本,不是一种文件格式。一种新文件格式通常要用一种新的软件去打开。例如,你无法用记事本去正常打开word、ppt、excel、jpeg、png、rar。相对于纯文本格式而言,这些格式就属于一种新的文件格式。

Markdown作为纯文本格式,同样具有很好的兼容性,可以用几乎所有的文本工具打开,例如系统自带的记事本、Word、vim等等。Markdown的应用非常广泛,在日常的软件(例如简书)到专业软件(Rstudio、GitHub)都有使用。最为重要的一点,md的文件迁移性特别好,几乎不受编写软件的限制,这是一款可以在各个操作系统中使用的文件格式。

Markdown的优点

  1. 简单。一个#就可以体现一级标题,##就是二级标题。
  2. 可迁移性强。win、mac、linux、ios、安卓都 可以轻松打开。
  3. 不过时。因为纯文本是非常基础的文件格式,只要有操作系统在都会支持(想想这几年从32位转64位,和苹果马上要从intel转arm,软件变化太快)。

Markdown的缺点

  1. 排版能力差。因为是纯文本的原因,大部分的排版功能在md上都是失效的。Word中常见的行间距、段间距、首行缩进在md上很难实现(如果你要实现可能需要学习html和css,不推荐)。

  2. md语法在不同的软件中存在一些差异。根据群友的反馈,ob和Typora在图片插入和超链接的语句存在差异。其实这很容易理解,假想md是一种语言,不同的软件就像不同的方言区,都存在一些变体。当然,我目前见过最强的变体还是tiddlywiki自身的格式,大家有兴趣可以去尝试看看。

  3. 基于md的obsidian目前难以实现块引用。我理解块引用还是基于数据库层面的应用,md是纯文本而非数据库,以为的编程认识,似乎在ob上实现块引用是很难的。

值得高兴的是对于纯文本上的块引用问题,有2个国产软件做出了创造性的解决方法:

  1. logseq(http://logseq.com/)使用了纯文本上的另一种语法(org-mode)使得在纯文本上也能实现块引用。
  2. 链滴笔记(内测QQ群:724713327)似乎是基于md上实现了块引用的问题,软件开发者还专门撰文论述了这个问题(https://hacpai.com/article/1597226949061?tdsourcetag=s_pctim_aiomsg)。

在obsidian中如何去使用Markdown

ob中的md使用有两大类方法:

  1. 把md当成纯文本的txt文件,不掺杂任何的md语法。这不会减少ob作为思考工具的属性。
  2. 有限度使用md语法。如果你选择这条就继续往下看。

如果你选择使用md语法,首先,你应该先去了解md的相关语句,可以自行查询相关的参考资料,例如菜鸟教程(https://www.runoob.com/markdown/md-tutorial.html)。

其次,考虑到md软件之间的迁移性,减少使用一些带有歧义的语法。我经常使用的语法主要:

  1. #:体现不同级别的标题
  2. :超链接,链接到一个特定的网页。
  3. 有序和无序列表(这可能是有歧义的)

其他可能无误的语法:

  1. 斜体
  2. 加粗

md中高级语法(不必要就不用,掌握难度高)

  1. latex:数学公式
  2. yaml:具体参见https://www.runoob.com/w3cnote/yaml-intro.html
  3. mermaid:流程图

图片的插入是目前讨论比较多的问题,因为涉及到不同软件中md语法差异、文件相对位置和绝对位置的概念,我建议使用图床来解决(但这会丧失ob的本地化特性)。