Vue 渲染 LaTeX 公式 Markdown 库
🌟 前言
欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍
🤖 洛可可白:个人主页
🔥 个人专栏:✅前端技术 ✅后端技术
🏠 个人博客:洛可可白博客
🐱 代码获取:bestwishes0203
📷 封面壁纸:洛可可白wallpaper
Vue 渲染 LaTeX 公式 Markdown 库
- 1. 使用 `MathJax` 渲染 LaTeX 公式
- 安装依赖
- 配置 MathJax
- 创建 Vue 组件
- 使用组件
- 2. 使用 `KaTeX` 渲染 LaTeX 公式
- 安装依赖
- 创建 KaTeX 组件
- 使用组件
- 3. 结合 Markdown 渲染
- 安装依赖
- 创建 Markdown 组件
- 使用组件
- 总结
在 Vue 项目中渲染包含 LaTeX 公式的 Markdown 内容,推荐使用
markdown-it 结合
markdown-it-katex。
markdown-it 是一个高性能的 Markdown 解析器,而
markdown-it-katex 是其插件,用于渲染 LaTeX 数学公式。通过这种方式,你可以轻松地在 Vue 中展示复杂的数学公式,同时保持代码的简洁性和可维护性。这种组合不仅支持行内公式(如
$E=mc^2$),还支持块级公式(如
$$\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}$$),非常适合学术和技术文档的展示。
1. 使用 MathJax 渲染 LaTeX 公式
安装依赖
npm install mathjax
配置 MathJax
在 public/index.html 中引入 MathJax 的 CDN 链接并进行配置:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Vue LaTeX Project</title><script>MathJax = {tex: {inlineMath: [['$', '$'], ['\\(', '\\)']],displayMath: [['$$', '$$'], ['\\[', '\\]']]},svg: { fontCache: 'global' }};</script><script async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js"></script>
</head>
<body><div id="app"></div>
</body>
</html>
创建 Vue 组件
创建一个 MarkdownRenderer.vue 组件,用于渲染 Markdown 内容并支持 LaTeX 公式:
<template><div v-html="renderedContent"></div>
</template><script>
export default {props: {content: String},computed: {renderedContent() {// 使用 MathJax 自动解析 LaTeX 公式return this.content;}},mounted() {// 确保 MathJax 渲染公式MathJax.typesetPromise([this.$el]);},watch: {content() {// 当内容更新时重新渲染公式MathJax.typesetPromise([this.$el]);}}
};
</script>
使用组件
在父组件中使用 MarkdownRenderer 组件:
<template><div><markdown-renderer :content="markdownContent" /></div>
</template><script>
import MarkdownRenderer from './components/MarkdownRenderer.vue';export default {components: {MarkdownRenderer},data() {return {markdownContent: `
# Markdown with LaTeX Formulas$$
\\begin{align*}
e^x & = 1 + x + \\frac{x^2}{2!} + \\frac{x^3}{3!} + \\frac{x^4}{4!} + \\cdots \\\\& = \\sum_{n=0}^{\\infty} \\frac{x^n}{n!}
\\end{align*}
$$\\[ \\text{均值} (\\bar{x}) = \\frac{1}{N}\\sum_{i=1}^{N} x_i \\]`};}
};
</script>
2. 使用 KaTeX 渲染 LaTeX 公式
安装依赖
npm install katex
创建 KaTeX 组件
创建一个 KatexRenderer.vue 组件,用于渲染 LaTeX 公式:
<template><div v-html="renderedFormula"></div>
</template><script>
import katex from 'katex';
import 'katex/dist/katex.min.css';export default {props: {formula: String},computed: {renderedFormula() {return katex.renderToString(this.formula, { throwOnError: false });}}
};
</script>
使用组件
在父组件中使用 KatexRenderer 组件:
<template><div><katex-renderer :formula="formula" /></div>
</template><script>
import KatexRenderer from './components/KatexRenderer.vue';export default {components: {KatexRenderer},data() {return {formula: `
\\begin{align*}
e^x & = 1 + x + \\frac{x^2}{2!} + \\frac{x^3}{3!} + \\frac{x^4}{4!} + \\cdots \\\\& = \\sum_{n=0}^{\\infty} \\frac{x^n}{n!}
\\end{align*}
`};}
};
</script>
3. 结合 Markdown 渲染
如果你需要结合 Markdown 渲染并支持 LaTeX 公式,可以使用 markdown-it 和 markdown-it-katex。
安装依赖
npm install markdown-it markdown-it-katex
创建 Markdown 组件
创建一个 MarkdownRenderer.vue 组件:
<template><div v-html="renderedMarkdown"></div>
</template><script>
import MarkdownIt from 'markdown-it';
import katex from 'markdown-it-katex';export default {props: {content: String},computed: {renderedMarkdown() {const md = new MarkdownIt();md.use(katex);return md.render(this.content);}}
};
</script>
使用组件
在父组件中使用 MarkdownRenderer 组件:
<template><div><markdown-renderer :content="markdownContent" /></div>
</template><script>
import MarkdownRenderer from './components/MarkdownRenderer.vue';export default {components: {MarkdownRenderer},data() {return {markdownContent: `
# Markdown with LaTeX Formulas$$
\\begin{align*}
e^x & = 1 + x + \\frac{x^2}{2!} + \\frac{x^3}{3!} + \\frac{x^4}{4!} + \\cdots \\\\& = \\sum_{n=0}^{\\infty} \\frac{x^n}{n!}
\\end{align*}
$$\\[ \\text{均值} (\\bar{x}) = \\frac{1}{N}\\sum_{i=1}^{N} x_i \\]`};}
};
</script>
总结
- 如果你需要强大的公式渲染能力,推荐使用
MathJax。 - 如果你需要更快的渲染速度,推荐使用
KaTeX。 - 如果你需要结合 Markdown 渲染,可以使用
markdown-it和markdown-it-katex。
通过以上方法,你可以灵活地在 Vue 项目中渲染 Markdown 内容并支持复杂的 LaTeX 公式块。
如果对你有帮助,点赞👍、收藏💖、关注🔔是我更新的动力!👋🌟🚀
相关文章:
Vue 渲染 LaTeX 公式 Markdown 库
🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…...
KMP-子串匹配算法-关键点理解
1.理解next[]数组的使用与来历 2.求解next[]数组 一、kmp算法的原理 首先观察暴力解法:假设主串为:abdxxabc,模式串为abxxabd。 暴力解法,就是对主串每个字符作为第一个字符,开始和模式串比较。 比如:从…...
网络原理之网络层、数据链路层
1. 网络层 1.1 IP协议 1.1.1 基本概念 主机: 配有IP地址,但是不进⾏路由控制的设备路由器: 即配有IP地址,⼜能进⾏路由控制节点: 主机和路由器的统称 1.1.2 协议头格式 说明: 4位版本号(version): 指定IP协议的版本,对于IPv4来说,就是4,对于IPv6来说,就是6 4位头…...
ssh 多重验证的好处:降低密钥长度,动态密码
ssh 多重验证的好处: 多重验证:可能要比单纯提高密钥长度,或密码的长度更好,可以获得更好的保证服务器安全的效果。降低密钥长度:可以提高 CPU运行时的有效速度,特别是在传输大文件、或传输低比特率视频时…...
版本控制器Git ,Gitee如何连接Linux Gitee和Github区别
📖 示例场景 假设你和朋友在开发一个「在线笔记网站」,代码需要频繁修改和协作: 只用本地文件管理 每次修改后手动复制文件,命名为 v1.html、v2.html 问题:无法追踪具体改动内容;多人修改易冲突࿱…...
网站测速:提升用户体验的关键
在互联网飞速发展的今天,网站已成为企业展示形象、提供服务以及用户获取信息的重要平台。而网站的速度,如同高速公路的路况,直接影响着用户的访问体验和满意度。因此,网站测速成为了网站运营和维护中不可或缺的关键环节。 网站速…...
【动态规划篇】91. 解码方法
91. 解码方法 题目链接: 91. 解码方法 题目叙述: 一条包含字母 A-Z 的消息通过以下映射进行了 编码 : “1” -> ‘A’ “2” -> ‘B’ … “25” -> ‘Y’ “26” -> ‘Z’ 然而,在解码已编码的消息时,你…...
Python高级——类的知识
一、知识梳理: 二、货币场景搭建: 1)代码展示: class RMB:count 0def __init__(self,yuan0,jiao0,fen0):self.__yuan yuanself.__jiao jiaoself.__fen fenRMB.count 1def __add__(self, other):temp RMB()temp.__yuan se…...
Python 编程题 第十一节:选择排序、插入排序、删除字符、目标移动、尾部的0
选择排序 假定第一个为最小的为已排序序列,与后面的比较,找到未排序序列中最小的后,交换位置,获得最小元素,依次往后 lst[1,14,25,31,21,13,6,8,14,9,7] def selection_sort(lst):for i in range(len(lst)):min_inde…...
resnet与densenet的比较
一、 ResNet(残差网络)和 DenseNet(密集连接网络) ResNet(残差网络)和 DenseNet(密集连接网络)都是深度学习中非常经典的卷积神经网络架构,它们在图像分类、目标检测等诸…...
Linux 运维工作中,掌握一系列基础命令与积累丰富经验至关重要
基础命令 文件与目录操作 ls:用于查看目录内容。例如ls -l能以长格式显示文件和目录的详细信息,ls -a则可显示包括隐藏文件在内的所有文件。cd:用于切换工作目录。像cd /home/user可切换到/home/user目录,cd ..能返回上一级目录…...
【算法day16】电话号码的字母组合
电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 https://leetcode.cn/problems/letter-combinations…...
软件工程之软件验证计划Software Verification Plan
个人主页:云纳星辰怀自在 座右铭:“所谓坚持,就是觉得还有希望!” 本文为基于ISO26262软件验证计划模板,仅供参考。 软件验证计划,包括: 1. 软件需求验证计划 2. 软件架构设计验证计划 3. 软件单…...
软考系统架构设计师之计算机组成与体系结构笔记
一、计算机硬件组成 1. 冯诺依曼结构与哈佛结构 冯诺依曼结构:以存储器为中心,指令和数据统一存储,通过总线连接运算器、控制器、输入输出设备。其核心思想是“存储程序控制”,但存在存储器访问瓶颈问题。哈佛结构:指…...
「JavaScript深入」Socket.IO:基于 WebSocket 的实时通信库
Socket.IO Socket.IO 的核心特性Socket.IO 的架构解析Socket.IO 的工作流程Socket.IO 示例:使用 Node.js 搭建实时聊天服务器1. 安装 Socket.IO2. 服务器端代码(Node.js)3. 客户端代码(HTML JavaScript)4. 房间功能 高…...
redis分布式锁实现Redisson+redlock中watch dog是如何判断当前线程是否持有锁进行续租的呢?
在 Redis 中,Watch Dog(看门狗)机制主要用于实现分布式锁的自动续期(如 Redisson 的 RedLock 实现)。其核心目的是确保当业务逻辑执行时间超过锁的初始过期时间(leaseTime)时,锁不会…...
Spring Cloud之负载均衡之LoadBalance
目录 负载均衡 问题 步骤 现象 什么是负载均衡? 负载均衡的一些实现 服务端负载均衡 客户端负载均衡 使用Spring Cloud LoadBalance实现负载均衡 负载均衡策略 编辑 编辑LoadBalancer原理 服务部署 准备环境和数据 服务构建打包 启动服务 上传J…...
一份1000元机器人开发资金计划表
一、硬件采购(约850元) 类别项目数量单价(元)总价(元)说明主控板Arduino Uno R3120~5050入门首选,开源生态完善,适合学习基础控制逻辑。传感器HC-SR04超声波模块21020用于避障或测距…...
分布式任务调度
今天我们讲讲分布式定时任务调度—ElasticJob。 一、概述 1、什么是分布式任务调度 我们可以思考⼀下下⾯业务场景的解决⽅案: 某电商平台需要每天上午10点,下午3点,晚上8点发放⼀批优惠券 某银⾏系统需要在信⽤卡到期还款⽇的前三天进⾏短信提醒 某…...
嵌入式面经(2)——央企篇
前文得知我只投央企,不投国企,有面试的央企大致有三类:感兴趣的同学可以和我私聊 军工央企相关(航空航天,兵器兵工) 制造央企相关(三桶油,装备制造) 金融运维相关(信通集团,国有银行) 接下来我将对我有的面试中询问的面经进行总结 一.军工央企相关(航空航天,…...
第7章 类与面向对象
6-1 二维平面上的点操作(Python3) 题目描述 设计一个表示二维平面上点的类 Point。该类应该包含以下功能: 两个私有属性 _x 和 _y,分别表示点的横坐标和纵坐标。 一个构造函数 __init__,用于初始化点的坐标。 一个…...
架构设计的灵魂交响曲:系统设计各维度的深度解析与实战指南
引言: 系统设计的背景与重要性 在快速变化的技术环境中,数字化转型成为企业生存与发展的核心驱动力。系统设计能力不仅是技术团队的核心竞争力,也是推动业务创新和提升整体效率的关键因素。根据Gartner的研究,超过70%的数字化转型项目未能实…...
[贪心算法]买卖股票的最佳时机 买卖股票的最佳时机Ⅱ K次取反后最大化的数组和 按身高排序 优势洗牌(田忌赛马)
1.买卖股票的最佳时机 暴力解法就是两层循环,找出两个差值最大的即可。 优化:在找最小的时候不用每次都循环一遍,只要在i向后走的时候,每次记录一下最小的值即可 class Solution { public:int maxProfit(vector<int>& p…...
【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring MVC 的核心组件:DispatcherServlet 的工作原理
<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、Dispat…...
第J3周:DenseNet121算法实现01(Pytorch版)
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目标 具体实现 (一)环境 语言环境:Python 3.10 编 译 器: PyCharm 框 架: Pytorch (二)具体步骤…...
webrtc3A算法
使用ubuntu18.04 选择webrtc_audio_processing v0.3 下载地址 https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/-/tree/master git clone 完 编译 # Initialise into the build/ directory, for a prefixed install into the # install/ directory meson …...
让“树和二叉树”埋在记忆土壤中--性质和概念
Nice to meet your! 目录 树的介绍: 树的创建: 二叉树的概念和结构: 二叉树的存储结构: 树的介绍: 概念和结构: 不知你们是否在现实中看见过分为两个叉的枯树,大概长这样: 那…...
git clone项目报错fatal: fetch-pack: invalid index-pack output问题
前情回顾:git项目放在公司服务器上面,克隆等操作需要连接VPN才能操作。由于项目比较大,网速比较慢,克隆项目经常出现fetch-pack: invalid index-pack output。在网上查找各种解决方法。也就这一种有点效果。仅供参考,不…...
Spring Boot整合SSE实现消息推送:跨域问题解决与前后端联调实战
摘要 本文记录了一次完整的Spring Boot整合Server-Sent Events(SSE)实现实时消息推送的开发过程,重点分析前后端联调时遇到的跨域问题及解决方案。通过CrossOrigin注解的实际应用案例,帮助开发者快速定位和解决类似问题。 一、项…...
【工具分享】vscode+deepseek的接入与使用
目录 第一章 前言 第二章 获取Deepseek APIKEY 2.1 登录与充值 2.2 创建API key 第三章 vscode接入deepseek并使用 3.1 vscode接入deepseek 3.2 vscode使用deepseek 第一章 前言 deepseek刚出来时有一段时间余额无法充值,导致小编没法给大家发完整的流程&…...
