一款基于Latex语法和MathJax渲染的零基础公式编辑器,数学公式插件

2023-11-01

  1. 零基础即可编辑公式
  2. 支持自定义编辑器配置和风格
  3. 支持二次编辑公式
  4. 支持作为插件和富文本编辑器一起使用

介绍

基于Latex语法和MathJax渲染的公式编辑器插件,易用、可二次编辑、内容可视化。

在这里插入图片描述

标题为什么会开发该插件?

之前调研过很多开源的公式编辑插件,主要有以下几个问题:

  • 编辑好的公式最终只能通过生成图片使用
    • 意味着无法二次编辑
    • 存储不方便
  • 纯粹基于Latex语法,没有对应的基础无从下手
  • 体积大或非开源

安装和使用

// 编辑器容器
<div id="test"></div>

NPM

npm i easy-formula-editor
import formulaEditor from "easy-formula-editor";
const editor = new formulaEditor();
editor.create('#test');

CDN

<script type="text/javascript" src="../dist/formula-editor.min.js"></script>
<script type="text/javascript">
  const editor = new formulaEditor();
  editor.create('#test');
</script>

导出

// latex 公式
editor.latex.text()

// html 公式
editor.$textSvgElem.html()

在线示例

公式编辑器

配置项

editor.config

属性 类型 描述 默认值
width number 编辑器宽度 620
height number 编辑器高度 272
mathJaxUrl string MathJax的加载链接 https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/mathjax/3.2.0/es5/tex-svg.min.js
zIndex number 容器的z-index

editor.menusConfig

属性 类型 描述 默认值
presets object[] 菜单预设公式 //
operators string[] 菜单运算符 //
greekLetters string[] 菜单希腊字母 //
inequation string[] 菜单不等式 //
calculus string[] 菜单微积分 //
arrows string[] 菜单箭头符号 //
trigonometric string[] 菜单三角函数 //

修改编辑器配置

const editor = new formulaEditor();

// 例如:修改高度
editor.config.height = 400;

editor.create('#test');

配置菜单

const editor = new formulaEditor();

// 例如:增加预设公式
editor.menusConfig.presets.push({ label: "自定义", value: "x+2y=7" });

editor.create('#test');

自定义风格

:root {
  --me-theme: #bcd4e7;
  --me-theme-light: #d0e3f2;
  --me-hover: #f1f2f4;
  --me-border: #ddd;
  --me-gray: ##666;
}

编辑器颜色是通过以上的5个css变量控制,要自定义色彩搭配只需要修改对应的值,例如:

// 打开控制台,输入
var r = document.querySelector(':root');
r.style.setProperty('--me-theme', '#9b8ea9');
r.style.setProperty('--me-theme-light', '#d3ccd6');

在这里插入图片描述

公式颜色和大小

编辑器生成的公式未自带颜色和字体大小,因为这些功能有点鸡肋,你可以通过以下方式去控制:

<div style="font-size: 20px;color: red;">获取到的公式</div>

在这里插入图片描述

新增自定义菜单

如果你有这个需求,请联系邮箱:hanson247@163.com

多语言

暂未支持

与富文本编辑器一起使用

本项目的主要实现借鉴了wangeditor,所以如果与wangeditor深度集成,可以减少60%以上的代码量。
下面示范了如何作为wangeditor的菜单插件:
在这里插入图片描述

源码

https://github.com/hansonGong/formula-editor

最后:如果该插件能够帮助到你,麻烦动动小手给个 star 吧~

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

一款基于Latex语法和MathJax渲染的零基础公式编辑器,数学公式插件 的相关文章

随机推荐

  • 【机器学习】机器学习建模调参方法总结

    文章目录 一 前言 1 1 数据来源 1 2 理论简介 二 知识总结 2 1 回归分析 2 2 长尾分布 2 3 欠拟合与过拟合 2 4 正则化 2 5 调参方法 2 5 1 贪心调参 坐标下降 2 5 2 网格调参GridSearchCV
  • JavaScript高手进阶:详解Eval加密

    在JavaScript编程中 涉及到代码加密 在混淆加密时代之前 用的最多的应该是种Eval加密 加密后的特征是以 eval function p a c k e r 为代码开始 相信很多人都见过这种代码 Eval加密效果例程 这是一种非常
  • MFC 解决中文乱码问题

    新的编译工具默认的是unicode编码方式 许多在多字节下面显示中文的方法已经不再适用了按照道理说设置为unicode编码后应该会很好的支持中文 但是实际情况很悲惨 显示的都是乱码 看到网上的很多方法都是把CSTRING转来转去 很头疼 感
  • powershell 删除指定文件夹及文件

    删除指定的文件夹 Get ChildItem C ccccc Recurse Where Object PsIsContainer Where Object FullName like test Remove Item Force Recu
  • SpringBoot配置多数据源

    项目框架 SpringBoot MyBatis Mysql 项目连接两个数据库源 1 application yml配置 使用DruidDataSource 主数据库为primary 副数据库为secondary 名称可以自己定义 只要和后
  • 如何使用Git进行版本控制

    在软件开发过程中 版本控制是一个非常重要的部分 它可以让开发人员更轻松地管理代码 集成代码 以及跟踪代码的变更历史 Git是一个广泛使用的版本控制工具 它的易用性和可扩展性使得它成为了开源社区的首选 在本文中 我们将介绍如何使用Git进行版
  • 转载 -- 按位异或的性质及其妙用

    https www jianshu com p 86a7cf855e51 文章摘要 1 按位异或 可以简单理解成 不进位加法 即 1 1 0 0 0 0 1 0 1 2 任何数和自己异或结果为零 3 按位异或的自反性 两次运算操作 可以将最
  • vs code下载慢的解决方法

    1 在官网Visual Studio Code Code Editing Redefined下载 大概率会出现如下情况 2 复制以上下载的链接地址 把以上截图红框标注的部分换成vscode cdn azure cn 这样会变成采用国内的镜像
  • canvas中的save和restore方法的作用

    save方法可以理解为暂存当前画笔的状态 接下来对画笔的操作都不会被保存下来 直到restore方法被调用 讲得通俗一点 就是说 调用save方法 就是把当前的笔放笔架上 换一支笔 调用restore方法时 再把刚才放到笔架上的笔再拿下来用
  • 使用Python对图像进行不同级别量化QP,使用RLE计算压缩比,并计算对应的PSNR

    写这篇博客源于 博友的提问 1 效果图 原图 VS QP 2 VS QP 4 VS QP 8效果图如下 QP量化是指把原始图像按像素级别划分取值 如QP 2 则 lt 128 取0 gt 128取128 QP 4 则 lt 64取0 lt
  • 无线dhcp服务器静态,wifi的ip设置dhcp和静态的区别

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 以网络为例 wifi的ip设置dhcp和静态的区别如下 1 静态IP地址 又称固定IP地址 是长期分配给一台计算机或网络设备使用的 IP 地址 一般来说 一般是特殊的服务器
  • MySQL经典入门

    MySQL数据库相关知识 数据库的基本概念 数据库的英文单词 DataBase 简称 DB 什么是数据库 用于存储和管理数据的仓库 数据库的特点 持久化存储数据的 其实数据库就是一个文件管理系统 方便存储和管理数据 使用了统一的方式操作数据
  • C++:vector中的resize()函数 VS reserve()函数

    写代码的时候无意错用了这两个函数 导致测试的时候 程序运行崩溃 发现这两个函数还是有区别的 void reserve size type n reserver函数用来给vector预分配存储区大小 即capacity的值 但是没有给这段内存
  • 三款开源工具让你的演示脱颖而出

    本文转载至 http blog callmewhy com 2014 07 02 three open source tools to make your presentations pop 不论是在商业圈还是在学术界 演示都是生活中不可或
  • 共享内存 设计原理-shm

    POSIX的shm open 在 dev shm 下打开一个文件 用mmap 映射到进程自己的内存地址 System V的shmget 得到一个共享内存对象的id 用shmat 映射到进程自己的内存地址 目前这里主要看 System V的设
  • VS无法打开 源 文件 "xxx.h" 问题

    项目属性 gt 配置属性 gt C C gt 常规 gt 附加包含目录 gt ProjectDir 即可
  • Qt QFrame

    QFrame类是带有边框部件的基类 lineWidth调整边框边界线的宽度 midLineWidth是在边框中插入一条线的宽度 用于营造3D效果 此效果只有在Box HlineVline凸起或者凹陷时有效 QFrame NoFrame 不绘
  • 【手拉手 带你准备电赛】解答小课堂——为什么要使能时钟

    大家在代码编写过程中也发现了 当我们涉及到外设时 总是需要使能其对应的时钟 那么为什么要使能时钟呢 直接用不是更简单 确实 直接使用IO 代码量可以小那么一丢丢 你可能会说 代码量算什么 这是老师少考我们一个考点 是我们可能不挂科的问题 手
  • Java数组排序:Java sort()方法

    在 Java 中实现数组排序的方式很多 除了利用 Arrays 类的 sort 方法外 还可以编写自定义方法来实现自己的排序算法 本文介绍如何使用 Arrays 类提供的 sort 方法来对数组进行排序 使用 java util Array
  • 一款基于Latex语法和MathJax渲染的零基础公式编辑器,数学公式插件

    零基础即可编辑公式 支持自定义编辑器配置和风格 支持二次编辑公式 支持作为插件和富文本编辑器一起使用 介绍 基于Latex语法和MathJax渲染的公式编辑器插件 易用 可二次编辑 内容可视化 标题为什么会开发该插件 之前调研过很多开源的公