仓库源文站点原文


layout: post title: 我使用的markdown工具 categories:


2015-01-13 11:30:42

我在几篇博文中都介绍了markdown, 自己使用它来做工作记录也已经有一段时间了. 现在就将我所用到的工具介绍一下, 供需要的人参考.

markdown基础

可参考我以前的几篇博文.

markdown使用流程

我使用的流程如下:

Fig. 1

使用时, 需要编辑文本文件File.md(文件名只能使用英文字符), 因此需要一个文本编辑器. 我使用的是EmEditor, 它的优点很多, 和markdown相关的主要有以下几个:

由于我对markdown的功能进行了很多扩展, 所以编辑完文件File.md之后, 需要利用脚本MDawk对File.md进行处理, 生成makrdown格式的中间文件File_git.md. MDawk脚本是基于bash开发的, 所以使用时需要系统中安装有bash运行环境.

得到中间文件File_git.md后, 就可以利用MultiMarkdown程序将其转换为HTML文件File.html进行查看了. 建议使用谷歌的Chrome浏览器进行查看, 因为它的浏览速度快, 而且对HTML和JavaScript的支持比较好. 此外, Chrome支持直接查看pdf文件, 还支持将HTML文件直接打印成pdf文件. 这样如果你可以很方便地将markdown文件转换为pdf文件. 当然, 大多数时候我们都不需要将markdown文本保存为pdf文件.

虽然上面的整个流程看起来比较复杂, 手动做起来也稍嫌麻烦, 但我们可以将操作过程写在一个批处理文件MMD.bat中, 并利用EmEditor的自定义外部命令功能实现一键运行MMD.bat并查看HTML文件. 这和编程中常见的一键编译运行差不多, 使用起来很方便.

markdown扩展功能

markdown只是一种文本格式的名称, 写出来的文本相当于程序的源代码. 如果想看到更好的效果, 或是让它支持更强大的功能, 你可以自己写代码对文本进行处理. 我自己在使用过程中就写了一些脚本扩展markdown的功能, 以满足自己的需要. 这些扩展是通过MDawk脚本和一些JavaScript脚本完成的. 主要的扩展功能如下:

程序下载及设置

点击这里下载与markdown相关的脚本和程序, 还有测试文档.

解压后, 编辑主文件夹下的MMD.bat文件, 将下面这几行的路径改为相应的安装路径(注意路径中不能含有空格或中文, 并将路径中的反斜线\改为斜线/)

set Pmark="markdown文件夹的路径"
set Pmath="MathJax文件夹的路径"
set MDawk="MDawk文件的路径"
set Gpth="gnuplot.exe文件的路径"
set Gini="gpl.ini文件的路径"

可以直接到EmEditor官网或网上的其他地方下载, 但下载后需要自己配置, 稍嫌麻烦. 更简单的是直接在这里下载我已经打包的好的EmEditor程序, 版本为11.0.5, 稍微有点老, 但不影响使用. 此外, 我还在其中打包了许多常用的插件和一份配置文件.

下载后, 直接解压, 双击主文件夹下的!EmE.reg导入设置.

为了利用MMD.bat直接将文件编译成HTML, 你还需要在EmEditor中指定MMD.bat的路径. 依次点击

工具 --> 外部工具 --> 自定义工具 --> Markdown --> 属性

外部工具的属性选项卡下的命令中指定MMD.bat文件的位置.

运行MDawk脚本需要bash环境, 如果你已经安装了bash运行环境(CygWin或MinGW), 就不需要再安装了.

如果你还没有安装bash环境, 那么你可以在这里下载我已经打包好的一个非常小的bash运行环境mBash. 它是基于CygWin 2.0制作的, 只包含了最常用的一些工具.

为了能在命令行中使用bash工具, 你需要将CygWin的bin目录(如果你使用CygWin), 或mBash目录(如果你使用我打包的mBash)添加到环境变量path中去. 具体的方法可参考善用佳软的介绍最绿色最高效,用win+r启动常用程序和文档.

建议使用谷歌的Chrome浏览器查看HTML文件, 它速度快, 兼容性好, 而且支持阅读和输出pdf文件. 当然你也可以使用你喜欢的浏览器.

如果你希望使用ditaa程序将ASCII图转换为png图片, 那你需要安装Java运行环境. 如果你还没有安装Java, 直接到Java官网下载安装即可.

如果你像我一样, 经常需要在文档中插入LaTex数学公式, 那么你可以安装使用MathJax. 它可以将网页中的LaTex代码转换为漂亮的数学公式.

你可以到MathJax官网下载并安装, 或直接点击这里下载我已经打包好的2.4版本, 下载后直接解压就可以使用了.

如果你想在文档中插入gnuplot代码, 并希望能自动绘图, 那你需要安装gnuplot.

你可以到gnuplot官网下载并安装, 或是直接点击这里下载我已经打包好的5.0版本的gnuplot, 下载后直接解压就可以使用了.

如果你使用我打包的gnuplot, 解压后你会发现主目录下会有下面几个文件:

  1. gpl.ini: 我最常用的gnuplot设置, 作图效果比默认的美观
  2. HelveticaNeueLTPro-Hv.otf: 一种Helvitica字体, 安装后即可使用, 标注效果更漂亮
  3. SymbolPi-Normal.ttf: 一种用于希腊字母的字体, 用于在gnuplot标注中使用希腊字母. 如果Windows系统默认的Symbol字体在你的系统上无法使用, 你可以使用这个字体.
  4. moreland.pal: 一种颜色映射图的调色板文件, 效果比常用的彩虹调色板更好

使用简介

将上面的程序下载并设置好以后, 使用EmEditor打开Markdown目录下的_PaperTest.md文件, 你应该看到类似下面的效果

依次点击工具-->外部工具-->Markdown 或直接Ctrl+F5, 即可运行MMD.bat将文档编译成HTML文件. 如果运行正常, 完成后会出现如下的CMD窗口

直接回车即可看到编译好的HTML文件. 其效果应该类似下面的网页

PaperTest网页

以同样的方式运行_SlideTest.md, 你应该得到一个可以播放的网页幻灯片, 其效果类似下面的网页

SlideTest网页

进阶使用

如果你对那些扩展功能很感兴趣, 建议你仔细看看测试文件_PaperTest.md_SlideTest.md. 如果你想自己增加一些扩展功能, 你可以参考MDawk脚本. 如果遇到困难或是有什么疑问可以联系我.

欢迎大家试用并给出反馈.

附记

像我在以前的博文中所说, 这种代码和文档放在一起的做法, 越来越为大家认可. 很多程序都支持这种做法. 目前使用较多主要有两个, 一个是基于R的knitr, 另一个是基于Python的IPython Notebook, Nature中有篇文章还专门介绍了IPython Notebook, 科学网的新闻中也编译了这篇文章. 我曾花了一些时间去查阅相关资料, 发现IPython Notebook虽然有优点, 却并没有介绍的那样好. 它基于Pyhton的各种库, 保存的文档虽然是文本格式, 但是格式很复杂, 文件也很大, 不借助IPython的界面基本没有办法直接查看编辑. 这种做法不适合直接阅读和修改, 因此就放弃了文本格式的最大优点, 变得和其他程序没有什么区别了. 我目前的做法是尽量保证源文档的可读性与处理的便捷性. 这个理念我在前面的博文中已有论述, 不再重复.