Markdown 是一套轻量化标记语言,适用于撰写对排版不甚讲究的的文档。文档的写作者掌握 Markdown 标记的用法后,便可以使用任何一种纯文本编辑器撰写文档。这个过程不同于使用某种字处理或排版软件撰写文档。
如果暂时让时光倒退到计算机还没有参与排版印刷工作的时代,用 Markdown 标记写文章,得到的结果相当于文章的底稿,需要将其交给工人排版印刷,方能得到适合提供他人阅读的文章。如果使用某种字处理软件写文章,相当于写文章的人自己同时也肩负了排版印刷工作。虽说殊途同归,但是显然写底稿的时候不必在意排版印刷的事情,可以令人更能在写作上集中注意力 [1]。
现在是计算机参与排版印刷工作的时代,谁负责将使用 Markdown 底稿变成适合提供他人阅读的文章呢?通常是由一个程序,将 Markdown 底稿转化成 HTML 文档——网页。我们上网,看到的一切,都是网页。
我在用 Emacs 编辑 Markdown 文档时,用 C-c C-c p
命令便可将 Markdown 文档转化为 HTML 文档,并自动打开网页浏览器将后者呈现出来,这个过程可称为 Markdown 文档预览。我用的能够将 Markdown 文档转化为 HTML 文档的程序是 pandoc,我的 Emacs 调用了这个程序。
Emacs 是如何调用的 pandoc,我不怎么关心。我考虑的问题是,用 bash 语言写一个脚本,调用 pandoc,将 Markdown 文档转化为临时的 HTML 文件,方便我随时查看 Markdown 文档对应的排版结果。
这个脚本的名字叫 yue,内容很简单 [2]:
#!/bin/bash
NAME=${1%.md}
TMP_HTML=/tmp/${NAME}.html
pandoc -s --mathjax --metadata title="$NAME" $1 -o $TMP_HTML
firefox $TMP_HTML
用法也很简单。假设用 yue 处理 foo.md,只需执行
$ yue foo.md
便可调用 firefox 打开 /tmp/foo.html 文件 [3]。
yue 在调用 pandoc 时,考虑了对 Markdown 文档中的 LaTeX 数学公式的支持。
我执行
$ yue 用无.md
产生的网页如下图所示:
Markdown 预览示例后来,我在 Emacs 的配置文件里定义了一个函数,它也叫 yue
:
;; markdown 预览
(defun yue ()
(interactive)
(start-process-shell-command "" nil (concat "yue " (buffer-name)))
)
于是,每当我在 Emacs 里执行 M-x yue
时,就会调用上述的 yue 脚本。由于我能够在 yue 脚本里对 pandoc 命令按我的需要予以定制,所以我觉得我的 yue
函数要比 Emacs 的 Markdown 模式提供的预览功能好很多。
网友评论