typecho动态加载mathjax的思路及实现方法

0.序言

使用MathJax在网页中插入公式是非常流行的解决方案。只要使用Tex的语法就可以了,具体使用介绍可以参考:MathJax,可是我们来考虑一下这种情况,一般除非是专业的科学相关博客才会每篇文章都有公式,个人博客很少会这样,通常整个网站就那么几篇,如果每次打开网页都去加载这个脚本的话就会有点浪费,所以本文探讨一下动态加载MathJax脚本的方法。

typecho动态加载mathjax的思路及实现方法

1.判断是否需要加载

使用MathJax的网站中公式和符号是用[区块公式]或者(内联公式)方式来书写的,所以我们要做的也很简单,只要在输出的文章内容中判断有没有这种格式的文本就可以了。所以只要在 post.php 加入如下代码:

$GLOBALS['mathjax'] = strpos($this->content, '[') || strpos($this->content, '(');

这样就把文章中是否有mathjax的标记变量保存了下来,并且保存在全局变量中。

2.加载 MathJax.js

这里先推荐一个mathjax的cdn,Staticfile CDN,国内的速度超快。

在原来加载mathjax.js的代码中修改如下(PS,我是在footer.php中加载的)

<?php if($GLOBALS['mathjax']):?>
  <!--mathjax-->
  <script type="text/javascript" src="http://cdn.staticfile.org/mathjax/2.7.0/MathJax.js?config=TeX-MML-AM_CHTML"></script>
<?php endif;?>

小结

经过测试,效果还可以,不过目前不清楚的是 strpos 这个函数是否会很影响性能,另外匹配那块也不算严谨,需要的自行完善一下。

作者BLOG:LabQ


版权声明:未经书面授权禁止转载、摘编、复制或建立镜像。对既成事实本站将保留所有的权利。