用 Makefile + pandoc + markdown 写博客

更新,已经移植到了 mdbook 工具了。看这里

静态页面生成有很多工具,我用过 Jekyll, Hugo, Hexo 等等。我原来用 Jekyll 写笔记,其实也够用了。最近想画图,这个东西不能自动集成 metapost ,也是挺麻烦的。

这些静态网页工具,功能太多,有很多其实不需要,这的需要自定义一些功能,折腾这些架构又过于复杂。例如

  • 集成 metapost , dot 等画图工具。我自己读过一个别人写的 hexo plugin 支持 dot 集成,但是折腾一次很麻烦。
  • template 模式过于复杂,每个工具都有自己的一套自定义模板语言
  • 不支持 asciidoc 等混合格式。

本来我想继续使用 Jekyll 的,但是突然间需要让我升级 ruby , 然后升级 gem 然后升级 bundle ,然后升级 jekyll ,然后说有一个依赖关系找不到。 WTF

我不是 ruby 的专家。我不想折腾了。

Hexo 类似的问题,升级完 nodejs ,一大堆问题。

于是,我试着用原始的方法生成网页。类似 unix 下的哲学,每个工具完成一点点工作,然后把他们组合在一起。于是,我用到下面这些工具。

  • atom + markdown preview plus 支持编辑和预览
  • Makefile 管理生产方式
  • pandoc 处理 markdown 生产 html
  • asciidoc , 处理 asciidoc ,生产 html
  • MathJax 处理公式
  • metapost 处理画图。
  • perl 生产 index.html

需要安装

%  brew install mactex
% brew install pandoc
% apm install markdown-preview-plus

Makefile 一般 unix 系统都自带的。

first_blog.html: first_blog.md
    pandoc -s --output $@ $<

然后 make first_blog.html 就可以生成了。这下自由了,不需要安装一个编程语言环境,就可以搞定网页生成了。 而且每个模块是可以替换的。如果觉得 pandoc 不好,可以用 kramdown 等等其他命令行工具处理 markdown 。

我的 Makefile 比这个复杂一些,也是抄别人的。 感兴趣的可以

% git clone https://github.com/wcy123/wcy123.github.io
% git checkout pandoc

这里面每段代码都很简单,类似浆糊弄在一起。

css 我找了 solarized light scheme 。直接 copy paste 过去的。