博客里需要插入数学公式,比较好的选择是用 LaTeX 写数学公式,但是 Octopress 默认不支持,需要修改一下 Octopress 配置,加入 MathJax。以下是配置过程:

rdiscount 换成 kramdown

1.1 首先安装 kramdown :

1
gem install kramdown

1.2 修改 _config.yml,把 markdown: rdiscount 改成 markdown: kramdown

1.3 修改 Gemfile, 把 gem 'rdiscount' 改成 gem 'kramdown', '~> 1.5.0',kramdown 版本可以在 gem list 中看到

添加 MathJax 配置

  在 source/_includes/custom/head.html 文件中添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!-- MathJax Configuration -->
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
jax: ["input/TeX", "output/HTML-CSS"],
tex2jax: {
inlineMath: [ ['$', '$'] ],
displayMath: [ ['$$', '$$']],
processEscapes: true,
skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
},
messageStyle: "none",
"HTML-CSS": { preferredFont: "TeX", availableFonts: ["STIX","TeX"] }
});
</script>
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML" type="text/javascript"></script>

修复页面右击公式全屏空白 bug

  修改 sass/base/_theme.scss,把

1
2
body {
> div {

改成

1
2
body {
> div#main {

测试

4.1 整段公式:

1
2
3
4
5
6
7
$$
\begin{align}
\mbox{Union: } & A\cup B = \{x\mid x\in A \mbox{ or } x\in B\} \\
\mbox{Concatenation: } & A\circ B = \{xy\mid x\in A \mbox{ and } y\in B\} \\
\mbox{Star: } & A^\star = \{x_1x_2\ldots x_k \mid k\geq 0 \mbox{ and each } x_i\in A\} \\
\end{align}
$$

4.2 行内公式:

1
2
If $a^2=b$ and $b=2$, then the solution must be
either $a=+\sqrt{2}$ or $a=-\sqrt{2}$.

If $a^2=b$ and $b=2$, then the solution must be either $a=+\sqrt{2}$ or $a=-\sqrt{2}$.

附:参考文章

Mathjax, Kramdown and Octopress

Octopress 中使用 Latex 写数学公式