【vue+mathjax】mathjax的使用

news2024/11/16 10:26:30

方法一、引用外网的地址

但是使用这个方法,会报跨域,所以需要注意

第一步:在public/index.html中引入地址

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
    />
    <link rel="icon" href="<%= BASE_URL %>favicon.ico" />

    <!-- 这个是线上的地址,但是会报跨域 -->
    <script
    type="text/javascript"
    src="http://cdn.bootcss.com/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML"
  ></script>

    <title><%= webpackConfig.name %></title>
  </head>
  <body>
    <noscript>
      <strong
        >We're sorry but <%= webpackConfig.name %> doesn't work properly without
        JavaScript enabled. Please enable it to continue.</strong
      >
    </noscript>
    <div id="app"></div>
  </body>
</html>

第二步:在utils下创建配置文件Mathjax.js

// 这个是使用这个地址的配置写法http://cdn.bootcss.com/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML
let isMathjaxConfig = false; //用于标识是否配置
const initMathjaxConfig = () => {
  if (!window.MathJax) {
    return;
  }
  window.MathJax.Hub.Config({
showProcessingMessages: false, // 关闭js加载过程信息
messageStyle: "none", // 不显示信息
    extensions: ["tex2jax.js"],
    jax: ["input/TeX", "output/HTML-CSS"],
    showMathMenu: false,
    tex2jax: {
      inlineMath: [
        ["$", "$"],
        ["\\(", "\\)"],
      ],
      displayMath: [
        ["$$", "$$"],
        ["\\[", "\\]"],
      ],
      processEscapes: true,
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]); //整个dom下渲染
  // window.MathJax.Hub.Queue(["Typeset", window.MathJax.Hub, document.getElementById(elementId)]); //固定id元素渲染,
};

export default {
  isMathjaxConfig,
  initMathjaxConfig,
  MathQueue,
};

第三步:main.js中全局引入

import mathJax from "@/utils/MathJax";
Vue.prototype.mathJax = mathJax;

第四步:页面使用

<template>
  <div id="Mindopt" class="Mindopt">
    <div v-html="val"></div>
  </div>
</template>

<script>
export default {
  data () {
    return {
      val: `$$\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.$$`,
    }
  },
  created () {
    this.getmathJax();
  },
  methods: {
    getmathJax () {
      this.$nextTick(function () {
        if (this.mathJax.isMathjaxConfig) {//判断是否初始配置,若无则配置。
          this.mathJax.initMathjaxConfig();
        }
        this.mathJax.MathQueue("Mindopt");//传入组件id,让组件被MathJax渲染
      });
    },
  }
}
</script>


<style lang="scss">
</style>

方法二、下载到本地使用

我原先想放入src/assets中,然后在页面中引入import '@/assets/mathjax/es5/tex-mml-chtml',但是会报以下错,不知道啥原因。

所以我只能放入到public下,在index.html中引入文件。

第一步:下载

npm i mathjax@3

第二步:将下载到node_modules/mathjax整个文件放置到public下

第三步:index.html中引入js文件

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
    />
    <link rel="icon" href="<%= BASE_URL %>favicon.ico" />
    <!-- mathjax.js -->
    <script
      src="./js/mathjax/es5/tex-mml-chtml.js"
      id="MathJax-script"
      async
    ></script>

    <title><%= webpackConfig.name %></title>
  </head>
  <body>
    <noscript>
      <strong
        >We're sorry but <%= webpackConfig.name %> doesn't work properly without
        JavaScript enabled. Please enable it to continue.</strong
      >
    </noscript>
    <div id="app"></div>
  </body>
</html>

第四步:在utils下创建配置文件Mathjax.js

// 这个是使用这个地址的配置写法(包括本地)https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js
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,
};

第五步:main.js中全局引入

import mathJax from "@/utils/MathJax";
Vue.prototype.mathJax = mathJax;

第六步:页面使用

<template>
  <div id="Mindopt" class="Mindopt">
    <div v-html="val"></div>
  </div>
</template>

<script>
export default {
  data () {
    return {
      val: `$$\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.$$`,
    }
  },
  created () {
    this.getmathJax();
  },
  methods: {
    getmathJax () {
      this.$nextTick(function () {
        if (this.mathJax.isMathjaxConfig) {
          // 判断是否初始配置,若⽆则配置。
          this.mathJax.initMathjaxConfig()
        }
        this.mathJax.TypeSet()
      });
    },
  }
}
</script>


<style lang="scss">
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1993623.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【uniapp】uniapp+vue2微信小程序实现分享功能

uniappvue2做的微信小程序实现分享功能 问题描述 uniappvue2做的微信小程序&#xff0c;发布以后点击右上角三个点&#xff0c;分享小程序的时候&#xff0c;转发和分享按钮都是灰色 解决方案 转发、分享、复制链接这几个功能需要自己来手动写方法&#xff0c;考虑到每个页…

文件上传漏洞(二,靶场搭建及漏洞利用)

前言&#xff1a; 本文基于github上的upload-labs&#xff0c;PHP study以及bp抓包软件进行操作。 一&#xff0c;靶场搭建。 靶场链接 1&#xff0c;下载zip文件到PHP study下的www文件夹内&#xff0c;并解压。 2&#xff0c;创建网站。 此处php版本应选择较老版本&…

记两次非常规文件上传Getshell

常规绕过前端和后端的任意文件上传已经没意思了&#xff0c;本文记录下之前和最近遇到的2个不太常规的任意文件上传Getshell的案例。 路径穿越文件上传Get Shell Nmap快速全端口扫描发现开放22&#xff0c;80和3306端口。访问目标&#xff0c;使用hfinger扫描发现Web应用使用…

【GD32 MCU入门教程】七、分散加载说明

分散加载说明以GD32F103ZE为例&#xff0c;分别用Keil、IAR和Embedded Builder工具实现&#xff1a;将函数放置某个地址、将常量放置某个地址、将函数放在RAM中运行的三种效果。 1、将led_toggle()函数放在0x08040000地址后。 2、将tempbuf[1024]常量放在0x08020000地址后。 …

JavaWeb中的前端工程化

本笔记基于【尚硅谷全新JavaWeb教程&#xff0c;企业主流javaweb技术栈】https://www.bilibili.com/video/BV1UN411x7xe?vd_sourcea91dafe0f846ad7bd19625e392cf76d8总结 第七章 前端工程化 一、前端工程化开篇 1.1 什么是前端工程化 前端工程化是使用软件工程的方法来单独…

借用BI系统又快又灵活地完成财务数据分析

和其他BI软件相比&#xff0c;奥威BI软件在财务分析上的表现十分突出&#xff0c;不仅能快速对接金蝶ERP&#xff0c;完成科目多变的财务指标计算分析&#xff0c;把复杂财务数据变得通俗易懂&#xff0c;还支持自助分析。从奥威BI软件的表现上看&#xff0c;说它是一款BI财务分…

[MIT6.5840]Lab3A leader election

文章目录 Part 3A: leader election大致框架详细过程数据结构初始化选举计时器选举过程心跳机制 LeaderRPC其他函数 测试结果完整代码 Part 3A: leader election 实验地址 https://pdos.csail.mit.edu/6.824/labs/lab-raft.html 论文地址 https://pdos.csail.mit.edu/6.824/pa…

【乐吾乐2D可视化组态编辑器】后端API接口文档

后端API接口文档 乐吾乐2D可视化组态编辑器demo&#xff1a;https://2d.le5le.com/ 采用前后端分离架构&#xff0c;乐吾乐后端服务提供一整套完整的web组态编辑器的所有数据接口&#xff0c;包含2D/3D图纸接口服务、文件接口服务和用户接口服务等&#xff0c;安装包版本提…

Linux 文件系统、动静态库

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a; Linux 目录 一、文件系统 1、了解磁盘的存储结构 1.基本知识 2.磁盘中盘片为什么高速旋转&#xff1f; 3.磁头为什么要左右摇摆&#xff1f; 4.如何找到一个指定位置的扇区&#xff1f; 5.文件在磁盘…

英语口语成人英语生活英语口语表达四六级英语培训柯桥小语种学习

全红婵向外国人展示金牌夺冠后&#xff0c;全红婵向外国友人展示金牌。视频中&#xff0c;一位外国男子对全红婵说&#xff1a;“How are you&#xff1f;”全红婵回应&#xff1a;“Good&#xff01;Good&#xff01;全红婵比出“拿捏”手势对方说全红婵是奥运冠军&#xff0c…

使用es-hadoop同步hive和es之间数据

&#x1f4bb;近期在华为云连接es时的时候发现不能输入账号密码&#xff0c;后面联系华为工程师了解到&#xff0c;华为云默认是非安全模式&#xff0c;即不需要输入账号密码。 如果对你有所帮助&#xff0c;欢迎点赞收藏关注不迷路哦&#x1f493; 目录 使用es-hadoop同步h…

CentOS7.6 服务器负载均衡——LVS-DR实战案例

目录 1、前期环境准备 1.准备两台主机 1. 设置主机名 2. 设置IP地址然后重启网卡 3. 关闭防火墙和selinux 二、配置LVS服务器 1. LVS准备VIP和路由 2. 设置路由转发 3. LVS设置负载均衡条目/规则 1. 设置IPVSADM 4. LVS让配置永久生效&#xff1a; 三、设置WEB集群 …

spring操作数据库

xml版 程序结构 配置文件 dbUtil-阿帕奇提供操作数据库的插件 核心类&#xff1a;QueryRunner .query() 查询 .update() 增删改 <dependencies><!-- spring --><dependency><groupId>org.springframework</groupId><artifactId>spri…

【Unity编辑器】EditorWindow的使用

文章目录 前言创建一个Editor窗口Unity引擎目前中焦的窗口Editor窗口鼠标悬停Editor窗口场景编辑更改监听主窗口停靠下最大化窗口设置窗口的小图标获取中焦窗口Window.ShowNotificationWindow.SendEventEditorWindow.OnHierarchyChange()EditorWindow.OnProjectChange() 前言 …

谷歌搜索垄断案:历史是否会重演微软的宿命?

美国法官在本周一作出裁决&#xff0c;确认Google在搜索市场拥有垄断地位&#xff0c;并援引了二十多年前的微软案作为参考。卡多佐法学院的法学教授Sam Weinstein&#xff0c;也曾是司法部反垄断律师&#xff0c;他指出政府始终在明示或暗示地将本案建立在微软案的基础上。面对…

Unity效果优化之抗锯齿

Unityde 基于HDRP渲染管线的抗锯齿处理的设置参考图&#xff1a; 前提&#xff1a;需要导入HDRP的插件包才行&#xff0c; 该参数设置能保证在PC版上抗锯齿效果非常好&#xff0c; 英文版&#xff1a;

《向量数据库指南》——向量搜索:从简单到复杂,生产级部署的挑战与策略

向量搜索并非轻而易举! 向量搜索,也称为向量相似性搜索或最近邻搜索,是一种常见于 RAG 应用和信息检索系统中的数据检索技术,用于查找与给定查询向量相似或密切相关的数据。业内通常会宣传该技术在处理大型数据集时非常直观且简单易用。一般来说,您只需将数据输入到 Embed…

k8s—Prometheus+Grafana+Altermaneger构建监控平台

目录 一、安装node-exporter 1.下载所需镜像 2.编写node-export.yaml文件并应用 3.测试node-exporter并获取数据 二、Prometheus server安装和配置 1.创建sa(serviceaccount)账号&#xff0c;对sa做rabc授权 1&#xff09;创建一个 sa 账号 monitor 2&#xff09;把 sa …

C++ | Leetcode C++题解之第330题按要求补齐数组

题目&#xff1a; 题解&#xff1a; class Solution { public:int minPatches(vector<int>& nums, int n) {int patches 0;long long x 1;int length nums.size(), index 0;while (x < n) {if (index < length && nums[index] < x) {x nums[i…

系统时间的获取 | 文件操作相关函数 |报错函数 | makefile

系统uid/gid的获取 1.getpwuid 功能:根据用户id到/etc/passwd文件下解析获得结构体信息 参数:uid:用户id 返回值:成功返回id对应用户的信息 ;失败返回NULL 2.getgrgid 功能:根据gid到/etc/group文件中解析组信息 参数:gid:组id 返回值:成功返回组信息;失败返回NULL 系统时间的…