论markdown

2018年3月21日

markdown是近几年来非常火的一门轻量级标记语言,主打易读性。这里的易读性,说的是在源代码层面易读。但是我觉得markdown被过于吹捧,以至于有人记笔记用markdown、写书也用makrdown,不一定是最好的选择。

Github支持用markdown、asciidoc、mediawiki等写readme文件。我想过,为什么GitHub不支持HTML或者Latex语法的Readme呢。原因可能是两个。

第一,markdown文件可以在文本编辑器里保持可读性,程序员克隆仓库后,用记事本就能看Readme,阅读体验比把markdown渲染成HTML差得不太多。如果Readme是HTML,要用浏览器看。对于没有图像等非文本的Readme显得不太方便。

第二,markdown不需要编译。如果Readme是Latex,程序员要装Latex编译器。

不需要编译是优点也是缺点。一个著名的例子是,markdown不能自动生成目录。私以为,markdown不会支持自动生成目录,因为即使添加了如{{toc}}之类的语法支持,这个标记也不具源代码可读性。用户用记事本打开这个markdown,看到{{toc}},不能一目了然地知道全文结构,而这正是目录的根本作用。

撇开目录,不能编译还有其他重大缺陷。LaTeX写书时,如果一页的剩余空间不足以容纳一幅图片时,Latex会把下面的文本提前,把图像显示在下一页。这是我使用Latex写作的重要原因之一。如果用Markdown写书,就会出现一页下半部分有很大空白的情况。LaTeX还可以定义变量,然后再下文引用这个变量,甚至用于画统计图。这个功能在数学论文里很有用。Markdown也不可能有这样的功能。

总的来说,markdown为文本编辑器优化,浏览器渲染只是副产品;HTML为浏览器优化;Latex为pdf优化。定位好目标读者,然后选择相应的语言和工具。