在LayaAirIDE3中如何使用mathjax显示数学符号

安装mathjax

在LayaAirIDE的项目目录,运行npm init -y来创建环境

npm init -y

修改入口文件

在node_modules/mathjax/ 下面建立一个index.js文件

// @ts-nocheck
// mathJax全局配置文件
globalThis.MathJax = {
  tex: {
    inlineMath: [
      ["$", "$"],
      ["\\(", "\\)"],
    ], // 行内公式选择符
    displayMath: [
      ["$$", "$$"],
      ["\\[", "\\]"],
    ], // 段内公式选择符
  },
  startup: {
    ready() {
      MathJax.startup.defaultReady();
    },
  },
  SVG: {
    scale: 120
  },
};

创建工具文件latexTool.ts

import "mathjax/index.js"; // 必须在引入mathjax前引入mathjax的配置文件
import "mathjax/es5/tex-svg"; // 使用 tex-svg

export default class MjTools {
  static div: HTMLDivElement;

  static AddLatexInSprite(sprite: Laya.Sprite, latex: string) {
    if (!MjTools.div) {
      let doc: Document = Laya.Browser.document;
      MjTools.div = doc.createElement("div");
      doc.body.appendChild(MjTools.div);
    }

    let options = Laya.Browser.window.MathJax.getMetricsFor(MjTools.div, true);
    let html: HTMLElement = Laya.Browser.window.MathJax.tex2svg(latex, options);
    
    // Laya.Browser.window.MathJax.typeset();
   

    var data: string =
      "data:image/svg+xml," +
      html.firstElementChild.outerHTML
        .replace(/"/g, "'")
        .replace(/%/g, "%25")
        .replace(/#/g, "%23")
        .replace(/{/g, "%7B")
        .replace(/}/g, "%7D")
        .replace(/</g, "%3C")
        .replace(/>/g, "%3E");

    // var sp: Laya.Sprite = new Laya.Sprite();
    sprite.loadImage(data);
    // Laya.stage.addChild(sp);
    return sprite;
  }
}

测试案例



import MjTools from "./mjTool";



const { regClass, property } = Laya;

@regClass()
export class mathjax_test extends Laya.Script {
   

    @property(String)
    public text: string = "";

    //组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次
    onAwake(): void {
        let latex:string=String.raw`
        \sqrt{x^2+1-y^3}
        `;
        let sprite:Laya.Sprite=new Laya.Sprite();
        sprite=MjTools.AddLatexInSprite(sprite,latex);
        this.owner.addChild(sprite);
        

    }


   
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值