Markdown的选择

我一直在思索用什么格式存储文档比较好。之前一直在用google docs,但是它的格式不公开,上传/下载的时候需要转换格式,转换的时候必然会丢失一些信息。于是后来想,那还是纯本文或者markdown吧。

选型

但是Markdown方言很多,选哪个好?我考察了以下三个。

  1. pandoc. John MacFarlane写的,万能的转换器。对我来说一个缺点是它的是Haskell语言。
  2. commonmark. 这是John MacFarlane搞的对markdown进行标准化的一场伟大尝试。他给出了C语言和js的实现,其中C语言的很容易在windows下编译过去,代码简单易懂。可惜,没人买账。
  3. GitHub Flavored Markdown. 这个大概是现在事实性的标准了。因为代码都托管在github上,所以写文档的时候自然也就顺着 github 的要求来。我没有找到它的开源实现。但是,atom.io是github公司的,而这个编辑器的markdown实现用的是marked. 我试了下还不错。
  4. Ghost markdown. 这是我现在所用的blog engine Ghost的markdown方言。它内部用的是showdownjs 这个库,然后自己写了一些扩展。语法高亮它是自己做了一些简单的字符串替换,生成Html5的code标签格式。但是html5的<code>标签目前没有浏览器去做高亮,所以还是得借助于在前端嵌入highlight.js这样的东西。

marked

marked 用起来比较简单,可以传自己的highlight函数进去。比较容易和highlight.js配合。

我用的时候比较头疼的是marked的换行功能非常有问题,请参见github上的issue 115. 2年多了,一直没人修。

数学公式

html header中再加上一行mathjax的js链接,就可以在markdown中支持数学公式了。 不过由于‘\’在markdown中是转义字符,所以写‘\’的时候要连写两个。

Others

highlight.js既可以用在服务器端,也可以用在浏览器里。但是我更倾向于在服务器上使用,让client端更瘦一点。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥