vue配置mathjax3

1.index.html⾥引⼊mathjax
HTML
去网上找 tex-mml-chtml.js   找不到私信我发你
2.新建globalVariable.js⽂件,写⼊操作mathjax的配置和渲染函数
let isMathjaxConfig = false // ⽤于标识是否配置
const initMathjaxConfig = () => {
    if (!window.MathJax) {
        return
    }
    window.MathJax = {
        tex: {
            inlineMath: [
                ['$', '$'],
                ['\\(', '\\)']
            ], // ⾏内公式选择符
            displayMath: [
                ['$$', '$$'],
                ['\\[', '\\]']
            ] // 段内公式选择符
        },
        options: {
            skipHtmlTags: ['script', 'noscript','style', 'textarea', 'pre', 'code',
            'a'], // 避开某些标签
            ignoreHtmlClass: 'tex2jax_ignore',
            processHtmlClass: 'tex2jax_process'
        }
    }
    isMathjaxConfig = true // 配置完成,改为true
}
const TypeSet = async function (elementId) {
    if (!window.MathJax) {
        return
    }
    window.MathJax.startup.promise = window.MathJax.startup.promise
    .then(() => {
        return window.MathJax.typesetPromise()
    })
    .catch((err) => console.log('Typeset failed: ' + err.message))
    return window.MathJax.startup.promise
}
export default {
    isMathjaxConfig,
    initMathjaxConfig,
    TypeSet
}

其中typeset函数⾥Mathjax.typesetPromise()是异步调⽤。如果是⽤同步调⽤排版函数
MathJax.typeset(),可能会出现某些扩展(⽐如/boldsymbol)⽆法加载的问题。
参考:
3.在main.js⾥⾯引⼊globalVariable.js
import globalVariable from './util/globalVariable.js' 
Vue.prototype.globalVariable = globalVariable 
4.在需要渲染数学公式的vue⻚⾯的mounted后期和updated周期,调⽤渲染⽅法
mounted() {
    window.addEventListener('scroll', this.handleScroll)
    if (this.globalVariable.isMathjaxConfig) {
      // 判断是否初始配置,若⽆则配置。
      this.globalVariable.initMathjaxConfig()
    }
    this.globalVariable.TypeSet()
  },
  updated() {
    if (this.globalVariable.isMathjaxConfig) {
      // 判断是否初始配置,若⽆则配置。
      this.globalVariable.initMathjaxConfig()
    }
    this.globalVariable.TypeSet()
  },

### 集成 MathJaxVue3 项目 为了在 Vue3 中使用 MathJax 渲染 Markdown 文件内的数学公式,需完成几个关键步骤来确保正确配置环境。 #### 安装必要的依赖包 首先,在项目根目录下安装 `mathjax` 和用于解析 Markdown 的工具链: ```bash npm install mathjax markdown-it markdown-it-texmath ``` 这组命令会引入 MathJax 库以及强大的 Markdown 解析器和 TeX 数学表达式处理器[^1]。 #### 创建全局插件或组合 API 组件 创建一个新的文件夹 `/plugins/mathjax.js` 或者直接在一个组合式 API 组件里定义如下逻辑: ```javascript import { onMounted } from &#39;vue&#39;; import * as MathJax from &#39;mathjax&#39;; export default function useMathRenderer() { const renderMath = () => { window.MathJax.typeset(); }; onMounted(() => { renderMath(); }); } ``` 该函数会在组件挂载完成后调用 MathJax 来重新排版页面上的所有 LaTeX 表达式。 #### 修改公共 HTML 模板 编辑位于项目的 `public/index.html` 文件,加入指向 MathJax CDN 资源链接的 `<script>` 标签: ```html <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> ``` 这些脚本标签应该放置在文档头部以便尽早加载资源并准备就绪。 #### 处理 Markdown 内容 对于要显示的内容部分,先利用 `markdown-it` 及其扩展 `markdown-it-texmath` 将原始字符串转化为带有适当标记的语言片段。可以在单文件组件 (SFC) 中实现这一点: ```vue <template> <div v-html="compiledMarkdown"></div> </template> <script setup> import { ref, computed } from &#39;vue&#39;; import MarkdownIt from &#39;markdown-it&#39;; import mdTexMath from &#39;markdown-it-texmath&#39;; const rawContent = &#39;# Example\n$$E=mc^2$$&#39;; // 这里替换为实际获取到的文章内容 const mdParser = new MarkdownIt().use(mdTexMath); const compiledMarkdown = computed(() => mdParser.render(rawContent)); </script> <script> // 导入自定义 hook 并应用它 import useMathRenderer from &#39;@/plugins/mathjax&#39;; useMathRenderer(); </script> ``` 这样做的好处是可以灵活控制何时何地触发渲染过程,并且保持良好的分离关注点原则。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端程序猿i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值