用 MathJax 让 WordPress 排版出漂亮的公式

从2014年下半年开始 MathJax CDN 在国内访问越来越不顺畅,因此我改为将 MathJax 直接部署在服务器上而不再连接其 CDN,这样对访问速度和渲染速度都有明显的提升。具体做法请访问官网

打算过几天写一篇学术性一点的文章,因此可能会用到不少的公式。搜了一下 WordPress 下公式输出的解决方案,发现了这个 MathJax。其实如果只是偶尔用到几个公式需要显示的话,图省事完全可以用图片来解决,不过如果用到的公式数量比较多的话,一张张图片粘贴就显得太弱了,而且如果日后需要修改的话也是一件很麻烦的事。

MathJax 跟其他基于 LaTeX 的许多显示方案一样,不需要网页浏览者安装任何插件或者脚本,而且不管是 IE6+,Firefox3.0+,chrome,Safari,还是其他任何千奇百怪的浏览器,都能够很好地渲染公式样式。而且我觉得 MathJax 算是字体较为美观的一个了。关于 MathJax 的使用,要得益于 Maxfan 的耐心指导。本来我以为部署 MathJax 是一件很复杂的事,后来才发现如此简单…

下面一段话从别处复制的:

MathJax 是一个开源的基于 Ajax 的数学公式显示的解决方案,其最大的优势在于可以以基于文本的方式显示页面中的数学公式。结合多种先进的 Web 技术,支持几乎所有的主流浏览器。MathJax 可以在 HTML 页面中,为 LaTex 数据和 MathML 数学公式提供了一个切实可行的的解决方案,支持 Tex 和 LaTex、MathML、ASCIIMathML 语言,拥有丰富的API接口。根据页面中定义的 LaTex 数据,便可生成对应的数学公式。

MathJax 的官网在这里,如果需要阅读相关开发文档的话戳这里(英文)以及这里(PDF)。目前 MathJax 好像只提供三种使用途径,一个是官方推荐的直接使用 MathJax 的 CDN ( 内容分发网络 ) 进行调用,另一个是使用针对不同平台开发的 MathJax 插件,再一种是本地安装 MathJax 的内容然后调用。我觉得吧,除非处于没有网络连接的状况下,否则完全没必要使用第三种方法。直接用 CDN 是最省事的办法,操作简单,不往 WordPress 文件夹下加入任何内容,不占本地存储空间。其实不光在 WordPress 下适用,理论上任何平台都允许调用 MathJax 的代码,最近知乎好像也支持公式直接输出了。以 WordPress 为例,只需要在主题的 header.php 文件中的 <head></head> 之间加入代码

<script type="text/javascript" 
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>

然后在后台编辑器直接输入 LaTeX 公式,前台就能显示了。超级简单的有没有。来试试两个公式 ( 如果是显示代码的话稍等一下,浏览器渲染需要一些时间 ):

\[{a_n} = \frac{1}{\pi }\int_{ – \pi }^\pi {f(x)} \cos nx \mathrm{d} x\]

以及

\[\left\{ \begin{array}{l}\nabla \cdot B = 0\\ \nabla \cdot D = \rho \\ \nabla \times H = – \frac{{\partial D}}{{\partial t}} + j\\ \nabla \times E = – \frac{{\partial B}}{{\partial t}} \end{array} \right.\]

再来试试行内公式:$\underset{D_{1}}{\iint}\left (\frac{{\partial Q}}{{\partial x}} – \frac{{\partial P}}{{\partial y}} \right )dxdy = \oint_{AB} {Pdx + Qdy}$ 我是格林公式~ 显示效果还是挺棒的,而且在 Firefox 下很明显要比 chrome 更清晰更圆润,不知道为什么。如果像我这种之前没用过 LaTeX 语法的人,只能求助于 MathType 之类的公式编辑器了……不过输入效率大大降低了。MathType 可以设置为复制公式直接转换为 LaTeX 语言。

About the author

Jueqin

本作品以 CC BY-NC-ND 许可协议进行发布。

如果您认为文章对您有用的话,不妨请我喝一杯咖啡?

28 comments

Leave a Reply to 吴老师数学家教 Cancel reply