MthJax+Vue本地离线

vue项目中展示LaTeX数学表达式,首先引入MathJax插件;

tips:MathJax在npm上是有安装包的;查看地址:https://www.npmjs.com/package/mathjax

第一步:安装MathJax

npm install mathjax  

第二步:安装后查看public/index.html是否引入了js及其相关配置,若无手动添加(我是手动添加的)

 

<script type="text/javascript"
          src="http://api.xkw.com/mathjax/MathJax.js?config=TeX-MML-AM_CHTML"></script>

<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
      jax: ["input/MathML","output/SVG"],
      extensions: ["mml2jax.js","MathEvents.js"],
      tex2jax: {
          inlineMath: [['$','$'], ['\\(','\\)']], // 行内公式选择符$..$
          displayMath: [['$$', '$$'], ['\\[', '\\]']], //段内公式选择符$$..$$
          skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code', 'a'] // 避开某些标签
      },
      'HTML-CSS': {
          availableFonts: ['STIX', 'TeX'], // 可选字体
          showMathMenu: false // 关闭右击菜单显示
      }
    });
</script>

第三步:在utils下新建MathJax.js

 

let isMathjaxConfig = false// 用于标识是否配置
const initMathjaxConfig = () => {
    if (!window.MathJax) {
        return
    }
    window.MathJax.Hub.Config({
        showProcessingMessages: false, // 关闭js加载过程信息
        messageStyle: 'none', // 不显示信息
        jax: ['input/TeX', 'output/HTML-CSS'],
        tex2jax: {
            inlineMath: [['$', '$'], ['\\(', '\\)']], // 行内公式选择符
            displayMath: [['$$', '$$'], ['\\[', '\\]']], // 段内公式选择符
            skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code', 'a'] // 避开某些标签
        },
        'HTML-CSS': {
            availableFonts: ['STIX', 'TeX'], // 可选字体
            showMathMenu: false // 关闭右击菜单显示
        }
    })
    isMathjaxConfig = true // 配置完成,改为true
}

const MathQueue = function (elementId) {
    if (!window.MathJax) {
        return
    }
    window.MathJax.Hub.Queue(['Typeset', window.MathJax.Hub, document.getElementById('app')])
}

export default {
    isMathjaxConfig,
    initMathjaxConfig,
    MathQueue
}

第四步:在main.js中引用mathjax,全局可用this.MathJax

import MathJax from './utils/MathJax'
Vue.prototype.MathJax = MathJax

 第五步:在.vue页面中展示,完整代码

<template>
    <div id="hello">
        {{text1}}
        {{text2}}
    </div>
</template>
<script>
    export default {
        name: "app",
        data() {
            return {
                text1:'$$\\Gamma(z) = \\int_0^\\infty t^{z-1}e^{-t}dt\\,.$$',//块级居中
                text2:'$\\sum_{i=0}^N\\int_{a}^{b}g(t,i)\\text{d}t$',//行内显示
                text3:'$$求和:\\sum_{i=1}^n{a_i}$$',
                text4:'$$求积分:\\\\int_0^\\infty{fxdx}$$',
                text5:'$$求积:\\prod_{i=0}^n \\frac{1}{i^2}$$',
                text6 : '$$借款本金=\\sum _{nT}^{i=1}\\frac{第i期支付金额}{1+年化综合成本}$$'
        },
        mounted() {
            
        },
        updated() {
            this.formatMath();
        },
        methods: {
            formatMath() {
                setTimeout(()=>{
                    this.$nextTick(()=>{
                        //判断是否初始配置,若无则配置。
                        if(this.MathJax.isMathjaxConfig){
                            this.MathJax.initMathjaxConfig();
                        }
                        //传入组件id,让组件被MathJax渲染
                        this.MathJax.MathQueue("hello");
                    })
                },500);
            }
        }
}
</script>

效果图:

  

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值