Jekyll官方文档指导用户使用Liquid,再配合Pygments实现高亮,但作为 markdown 的忠实粉丝,怎么能用如此繁锁的语法。
Liquid 代码块写法:
{% highlight ruby %}
def foo
puts 'foo'
end
{% endhighlight %}
markdown GFM fenced code 代码块写法:
ruby
def foo
puts 'foo'
end
我相信你一眼就会爱上 markdown 的写法。
markdown 高亮可以用 Pygments,也可以用前台 JS 高亮,由于 Jekyll 使用 redcarpet 时定制 Pygments 高亮复杂度过高,所以我选择了简单的 JS 高亮。
需要用的到 gem 包版本
gem "jekyll", :git => 'git://github.com/chitsaou/jekyll.git', :branch => 'redcarpet-2.0'
, Jekyll 0.11.0 版本不支持 redcarpet 2.0 以上,官方还没有合并此 Pull Requestgem "redcarpet", "~> 2.1.1"
, 2.0 以上才支持 fenced code修改 Jekyll _config.yml
redcarpet:
extensions: [fenced_code_blocks]
render_options:
页面引入highlight.js,当然你也可以换成其它的 javascript 高亮库,但 highlight.js 支持自动检测语言,而且主题也多。
<link rel="stylesheet" href="http://yandex.st/highlightjs/7.1/styles/default.min.css">
<script src="http://yandex.st/highlightjs/7.1/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
最后,调用 Jekyll 需要加--redcarpet
参数,例如jekyll --redcarpet --server --auto
.
如果问题,可以参考我的 Jekyll 配置,https://github.com/mangege/mangege