我最初是在Mathematics - Stack Exchange这个网站上看到MathJax的使用的.当时我偶然发现StackOverflow底部还有一大堆 Stack Exchange 站点,就随便点了几个看看,然后就看到那些漂亮的数学公式,并发现它们竟然不是像维基百科那么用的图片!
不过因为我并不搞数学,一直没需求,所以一直也没尝试玩下 MathJax.前不久看到 Garfileo 的"基于 ASCIIMathML.js 的 is-programmer 博客数学公式书写及显示"一文,昨日又和 Fermat 聊起,才折腾了下.
整个部署过程非常简单,加入以下脚本即可:
然后就是写 TeX 公式了,用\(和\)括起来的是行内公式,用$$括起来的是自成一段的公式(术语叫什么我就不知道了)行间公式.
在公式上点右键还有些选项,包括选择使用 HTML+CSS 渲染还是 MathML 渲染,缩放,显示公式源码等.不过 MathML 的显示效果比较丑,而且诸如 Chrome 这些 Webkit 内核的浏览器还不支持.它会优先使用本地字体.我当然没有,于是它尝试使用网络字体.现代浏览器都会OK的,不过在火狐里,如果是本地文件( MathJax 会使用图片代替.感觉挺智能的,而且还有各种模块和其的配置.
MathJax 还支持在公式渲染之后再修改,我于是做了个简单的公式编辑器,可实时预览公式渲染的结果.有点郁闷的是,做这个网页时,相比公式处理部分,我大部分精力花在了排版上.另外,这个网页在 Chrome 下竟然出错了,清除缓存后才正常.以前 Chrome 也出现过这个问题,但火狐基本没有(我只在火狐3.6时代意外关机后遇到过).
给公式编辑器加了新功能,可通过 URL 的 hash 部分传递公式代码(尝试点击本段的链接),修改后 URL 也会变化,以便分享.不过发现了 Opera 浏览器的一个特性:会自动将手工输入的 URL 中的\替换成/,造成公式错误(比较点击和手工输入此链接地址的区别).