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}$$

资源分享

插件下载
MathJax中文文档
Latex公式手册

最后修改于:2021年04月02日 08:40

已有 2 条评论

  1. wa007 wa007

    非常棒!

    请问下博主有办法让 typecho 的预览功能能支持您的这个 MathJax 插件吗?

    1. 雨中执笔 雨中执笔

      应该是可以实现的,我目前还没试过,您可以去Github的typecho项目上咨询一下

添加新评论