Typecho数学公式插件
warning:
这篇文章距离上次修改已过787天,其中的内容可能已经有所变动。
前言
自己搭建了一个博客,需要在上面显示公式,在网上查找了很多内容,最终决定用MathJax好一些。
MathJax是一个适用于所有浏览器的用于数学公式显示的JavaScript开源项目,并支持Tex、Mathml两种语法。
历程
MathJax可以作为一个js库直接引入到网页中使用,但我更想将它作为一个插件,及时方便且无需多余更改。
最开始经过我的寻找,发现了mutoo所做的typecho-mathjax插件,但很可惜,这个插件自2013年来已经不更新了,且只支持MathJax 2,现在MathJax已经更新到了第3版了,两者的组件工作方式差别很大,于是我对这个插件进行了一些修改,给大家分享一下。
源码(Latex语法版)
MathJax.php
<?php
/**
* MathJax
*
* @package MathJax
* @author zhibi
* @version 1.0.1
* @link https://www.drawrain.com
*/
class MathJax implements Typecho_Plugin_Interface
{
/**
* 激活插件方法,如果激活失败,直接抛出异常
*
* @access public
* @return void
* @throws Typecho_Plugin_Exception
*/
public static function activate()
{
Typecho_Plugin::factory('Widget_Archive')->footer = array('MathJax', 'footer');
}
/**
* 禁用插件方法,如果禁用失败,直接抛出异常
*
* @static
* @access public
* @return void
* @throws Typecho_Plugin_Exception
*/
public static function deactivate()
{}
/**
* 获取插件配置面板
*
* @access public
* @param Typecho_Widget_Helper_Form $form 配置面板
* @return void
*/
public static function config(Typecho_Widget_Helper_Form $form){}
/**
* 个人用户的配置面板
*
* @access public
* @param Typecho_Widget_Helper_Form $form
* @return void
*/
public static function personalConfig(Typecho_Widget_Helper_Form $form){}
/**
* 输出尾部js
*
* @access public
* @param unknown $footer
* @return unknown
*/
public static function footer() {
echo '<script>
MathJax = {
tex:{
inlineMath: [["$", "$"]],
displayMath: [["$$", "$$"]],
},
svg: {
fontCache: "global",
scale: 0.8,
}
};
</script>
<script type="text/javascript" id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js">
</script>';
}
}
新特性:
- 支持MathJax 3
- 修改标识符仅支持
$
、$$
,去除了对()
、[]
的识别,避免对文章其他内容造成影响 - 修改公式默认大小为80%
- 开启全局字体缓存
使用方法
下载插件并解压,将MathJax.php
放到Typecho的usr/plugins/
目录下,在Typecho后台中启用插件。
行内公式
将latex公式包含在$
与$
之间
e.g.
欧拉公式为:$e^{i \theta} =cos{\theta}+i \cdot sin{\theta}$
欧拉公式为:$e^{i \theta} =cos{\theta}+i \cdot sin{\theta}$
段落公式
将latex公式包含在$$
与$$
之间
e.g.
欧拉公式为:
$$e^{i \theta} =cos{\theta}+i \cdot sin{\theta}$$
欧拉公式为:
$$e^{i \theta} =cos{\theta}+i \cdot sin{\theta}$$
非常棒!
请问下博主有办法让 typecho 的预览功能能支持您的这个 MathJax 插件吗?
应该是可以实现的,我目前还没试过,您可以去Github的typecho项目上咨询一下