在博客园利用 MathJax 建支持 LaTeX 的博客

Posted on 2012-08-05 23:06  ilogic  阅读(7812)  评论(61编辑  收藏  举报

终于找到了比较完美的在博客中支持 LaTeX 的方案。wordpress.com 虽然也支持 LaTeX,但是有 3 个缺点:

  1. wordpress.com 整个网站都被墙了,在上面建博客国内读者访问较为困难;
  2. wordpress.com 是利用 wordpress 的wp latex 插件支持 latex 的,必须使用 \$latex \$ 这样的格式,而不能直接使用 \$ \$ 来输入公式,这使得无法直接利用在其他地方已写好的 tex 源码;
  3. 生成的公式是图片格式的,不支持矢量缩放和拷贝。

今天发现了一个在线生成 LaTeX 的利器:MathaJax,它支持多种数学公式语言,其中也包括 LaTeX,并且生成的公式支持矢量缩放和拷贝(复杂的公式拷贝后会变形)。但要在博客上获得 MathJax 的支持,必须要求博客空间提供自定义模板的功能,而大部分比较 popular 的国内免费博客空间,如新浪、网易、百度等都不提供该功能。最后找到了博客园支持自定义模板(另外据说点点也支持)。不过在对 MathJax 进行设置时又费了一番功夫。下面是我的设置代码。当你在博客园开通博客后,在博客管理的“设置”页面的“页首Html代码”处拷入下面的代码即可:

<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
  inlineMath: [['$','$'], ['\\(','\\)']],
  processEscapes: true
  },
TeX: {
            equationNumbers: {
                autoNumber: ["AMS"],
                useLabelIds: true
            }
        },
        "HTML-CSS": {
            linebreaks: {
                automatic: true
            },
            scale: 85
        },
        SVG: {
            linebreaks: {
                automatic: true
            }
        }
});
</script>
<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>

其中的 scale: 85 是指公式大小的缩放比例,你可以根据需要进行调整。这样设置后你不但可以直接像在 LaTeX 中那样写行内公式和行间公式,而且还可以使用 LaTeX 的公式自动编号和引用的功能。

这里是一个测试页面,可以看到生成的公式还是非常漂亮的。这里是我翻译和稍作改写的阿罗不可能性定理的证明。在 Ubuntu 下的 Chrome 浏览器、Firefox 浏览器和 Windows 下的 Firefox 浏览器下测试均显示正常,但在 IE 浏览器中公式下标会有显示不完整的情况,不知是不是我的个别现象,大家也帮忙测试一下。

利用 MathJax 生成数学公式仍然有两个缺点:

  1. 生成公式的速度较慢;
  2. 在 RSS 阅读器中只能显示公式的源码,必须点击文章的原始链接才能看到公式。

本文中的代码参考了http://zhiqiang.org/blog/it/mathjax-make-mathematics-beautiful.html,特此致谢!关于更多对 MathJax 的定制,请参考 MathJax 的帮助文档。