MathJax 3 配置和上手渲染数学公式及在Vue中的使用

2023-10-26

mathjax是一个用于latex、mathml和ascimath表示法的开源javascript显示引擎。mathjax的3.0版是对mathjax的彻底重写,实现了组件化,可以实现不同需求的定制,使用和配置与mathjax2版本有很大的不同,所以一定要注意版本。

最近在重构一个项目时,新增了一个需求支持latex数学公式渲染和编辑。在经过一番调研对比后,目前浏览器兼容性比较好的有两个,分别是KateX和MathJax。

性能对比截图

MathJax3
在这里插入图片描述

MathJax2.7
在这里插入图片描述

KaTex
在这里插入图片描述

从对比中可以看出MathJax版本2和3都是用使用 tex-chtml ,但之间的性能差距孩挺大的。Katex的渲染性能会比MathJax3好一些,但复杂公式的渲染效果不如MathJax,实际使用差别不大。最终选择了MathJax3,其中很大的主导因素是一个有项目依赖关系的兄弟部门里面已经在使用。

Vue中的使用

一般接触到一些新知识点,笔者都会先想办法借鉴一下大佬们的使用经验,上github看一下开源项目。
在这里插入图片描述
后面的内容可能对justforuse老哥不太友好,但还得感谢老哥提供的思路。所以开始之前得先强调一下,所有的开源项目和作者的努力及成果都应该得到尊重,后面的内容只是想陈述一下我看到的和为什么自己造了个轮子。

vue-mathjax的用法
在这里插入图片描述
主要代码:

export default {
  //...
  watch: {
    formula () {
      this.renderMathJax()
    }
  },
  mounted () {
    this.renderMathJax()
  },
  methods: {
    renderContent () {
      if (this.safe) {
        this.$refs.mathJaxEl.textContent = this.formula
      } else {
        this.$refs.mathJaxEl.innerHTML = this.formula
      }
    },
    renderMathJax () {
      this.renderContent()
      if (window.MathJax) {
        window.MathJax.Hub.Config({
          // ...
        })
        window.MathJax.Hub.Queue([
          'Typeset',
          // ...
        ])
      }
    }
  }
}

看完整个项目之后,产生了几个疑问

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MathJax 3 配置和上手渲染数学公式及在Vue中的使用 的相关文章

随机推荐

  • 笔记

    零散个人笔记 书籍已出版 完整版 淘宝 京东 当当有售 1 tensorflow源码完整下载方法 git clone recurse submodules https github com tensorflow tensorflow git
  • 作业 从外到内:一次完整的渗透测试!作业

    9th 一 环境准备 Windows10 1709地址 WindowsServer2016 x64 修改了密码 原密码 lonelyor org UbuntuServer2004 x64 UbuntuServer1604 x64 pfsen
  • Qt实现coturn穿透客户端,coturn服务器搭建

    目录 coturn简介 coturn服务器搭建 coturn服务验证 qt实现coturn穿透 NAT类型是否可以穿透 coturn简介 Coturn集成了stun turn协议 实现NAT检测 穿透就需要通过stun协议 NAT检测无法进
  • 渗透测试核心思路-边界突破

    概述 渗透测试的目标可以是单个主机 也可以是整个内网 在实战中 比如最近如火如荼的HW行动 更多的是对一个目标的内网进行渗透 争取获得所有有价值的资产 完整的内网渗透涉及的步骤如下图所示 我们总是先通过对外提供服务的 防守最薄弱的主机打进去
  • c++:继承(超详解)

    目录 一 什么是继承 二 继承的格式 继承的总结 二 子类和父类 基类和派生类 1 子类和父类的相互赋值 2 同名的成员变量 3 同名成员函数 三 子类中默认的成员函数 1 构造函数 2 析构函数 3 拷贝构造 4 赋值运算符重载 四 单继
  • 数组中和为0的三个数

    给你一个整数数组 nums 判断是否存在三元组 nums i nums j nums k 满足 i j i k 且 j k 同时还满足 nums i nums j nums k 0 请你返回所有和为 0 且不重复的三元组 注意 答案中不可以
  • 正六边形旋转实现

    1 行内样式 div style background none div
  • Jenkins :添加node权限获取凭据、执行命令

    拥有Jenkins agent权限的账号可以对node节点进行操作 通过添加不同的node可以让流水线项目在不同的节点上运行 安装Jenkins的主机默认作为master节点 1 Jenkins 添加node获取明文凭据 通过添加node节
  • UDF、UDAF和UDTF开发模板

    0 背景 Hive是一种构建在Hadoop上的数据仓库 Hive把SQL查询转换为一系列在Hadoop集群中运行的MapReduce作业 是MapReduce更高层次的抽象 不用编写具体的MapReduce方法 Hive将数据组织为表 这就
  • 树莓派4B系统搭建---2021-8-12

    文章目录 前言 一 系统安装 1 下载系统 2 制作系统SD卡 开启SSH 树莓派系统配置 网络配置 二 使用步骤 1 引入库 2 读入数据 总结 前言 树莓派 英语 Raspberry Pi 是基于Linux的单片机电脑 由英国树莓派基金
  • 换脸视频怎么做出来的?AI视频换脸教程【完整版手把手】免费AI换脸视频工具制作过程详解

    上期分享了wav2lip GFPGan图片说话转视频的文章 超写实虚拟数字人再升级 Wav2Lip GFPGAN完整版教程及效果视频评测 手把手 baoxueyuan的博客 CSDN博客 部分饱子好奇视频如何换脸 因为近期视频换脸太火爆了
  • vs2012远程调试(可用)

    vs2012远程调试功能的改进 分类 vs2012 vs远程调试 2014 01 22 17 49 75人阅读 评论 0 收藏 举报 vs2012 vs 不知道大家有没有遇到过这种情况 刚开发完的程序 明明在本机能够好好的运行 可是部署到服
  • 教你如何搭建一个自动化构建的博客

    前言 记得在1年之前搭建了一个个人主页的博客 但是当时功力尚浅 每次写博客 都是自己手动写html 这样会变得非常的繁琐 现在很多人用主流的wordpress hexo之类的快速搭建一个平台 那些工具确实方便 但是对于主题以及一些额外的排版
  • Fabric搭建错误

    fabric搭建错误解决 在搭建fabric环境时 byfn sh up 时遇到错误Error error getting endorser client for channel endorser client failed to conn
  • 解决:component COMDLG32.OCX or one of…和 MSCOMCTL.OCX or one of...的解决方法

    遇到的问题 在做CTF题目 使用16进制转图片工具 出现了两个报错 解决方法 第一步 下载COMDLG32 OCX 程序 可以去官网 也可也使用我的百度网盘 http 链接 https pan baidu com s 1 1KNgqrxPA
  • 走过2011

    走过2011 时间飞逝 2011不寻常的一年还剩下短短5天 三百天的生活与工作是一份平淡一份快乐 工作需要总结 生活也要总结 日子才会越来越好 2011是进入公司的第二年 公司开发人员有来有离 我没有离开 因为我不喜欢跳槽 但我不跳槽的主要
  • Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from

    程序在编译时报错 在执行合并AndroidMainfest时报Attribute application appComponentFactory value android support v4 app CoreComponentFacto
  • Property ‘xxx‘ does not exist on type ‘xxx‘报错解决

    用ts写一个组件的时候 遇到了Property increment does not exist on type Add 的红点儿报错 但神奇的是竟然还能正常运行 在参考一些正确的代码后 有两个解决方案 在export default cl
  • P1048 采药(C++)---01背包(动态规划)解题

    题目描述 辰辰是个天资聪颖的孩子 他的梦想是成为世界上最伟大的医师 为此 他想拜附近最有威望的医师为师 医师为了判断他的资质 给他出了一个难题 医师把他带到一个到处都是草药的山洞里对他说 孩子 这个山洞里有一些不同的草药 采每一株都需要一些
  • MathJax 3 配置和上手渲染数学公式及在Vue中的使用

    mathjax是一个用于latex mathml和ascimath表示法的开源javascript显示引擎 mathjax的3 0版是对mathjax的彻底重写 实现了组件化 可以实现不同需求的定制 使用和配置与mathjax2版本有很大的