vitepress解析展示LaTeX数学公式

前言

vitepress默认的md解析器markdown-it不支持LaTeX数学公式的解析展示,需要安装扩展插件,此处笔者介绍markdown-it-katexmarkdown-it-mathjax3两种插件的配置方法

注:笔者当前使用最新vitepress及插件版本如下,随版本更新配置方法可能有改动,仅供参考

vitepressmarkdown-it-katexmarkdown-it-mathjax3
1.0.0-alpha.192.0.34.3.2

一、markdown-it-katex

一个支持 KaTeX 语法的数学公式渲染器

1.安装库
npm install markdown-it-katex -D
2.配置插件

修改.vitepress/config.js配置文件
由于vitepress编译生成静态html文件时,无法识别插件生成的特殊标签,故需在编译时进行处理,将特殊标签标记为自定义标签,防止编译报错

import { defineConfig } from 'vitepress'
import markdownItKatex from 'markdown-it-katex'

const customElements = [
  'math',
  'maction',
  'maligngroup',
  'malignmark',
  'menclose',
  'merror',
  'mfenced',
  'mfrac',
  'mi',
  'mlongdiv',
  'mmultiscripts',
  'mn',
  'mo',
  'mover',
  'mpadded',
  'mphantom',
  'mroot',
  'mrow',
  'ms',
  'mscarries',
  'mscarry',
  'mscarries',
  'msgroup',
  'mstack',
  'mlongdiv',
  'msline',
  'mstack',
  'mspace',
  'msqrt',
  'msrow',
  'mstack',
  'mstack',
  'mstyle',
  'msub',
  'msup',
  'msubsup',
  'mtable',
  'mtd',
  'mtext',
  'mtr',
  'munder',
  'munderover',
  'semantics',
  'math',
  'mi',
  'mn',
  'mo',
  'ms',
  'mspace',
  'mtext',
  'menclose',
  'merror',
  'mfenced',
  'mfrac',
  'mpadded',
  'mphantom',
  'mroot',
  'mrow',
  'msqrt',
  'mstyle',
  'mmultiscripts',
  'mover',
  'mprescripts',
  'msub',
  'msubsup',
  'msup',
  'munder',
  'munderover',
  'none',
  'maligngroup',
  'malignmark',
  'mtable',
  'mtd',
  'mtr',
  'mlongdiv',
  'mscarries',
  'mscarry',
  'msgroup',
  'msline',
  'msrow',
  'mstack',
  'maction',
  'semantics',
  'annotation',
  'annotation-xml'
]

export default defineConfig({
  markdown: {
    config: (md) => {
      md.use(markdownItKatex)
    }
  },
  // 由于vitepress编译生成静态html文件时,无法识别插件生成的特殊标签,故需在编译时进行处理,将特殊标签定位自定义标签,防止编译报错
  vue: {
    template: {
      compilerOptions: {
        isCustomElement: (tag) => customElements.includes(tag)
      }
    }
  }
})
3.引入样式

前两步已经可以将数学公式转译成HTML标签,但此时样式是错乱的,需要引入插件附带的样式,可修改.vitepress/config.js配置文件,在head中添加需要的外置css文件,也可以下载css文件后放入项目内。

head: [
  ['link', { rel: 'stylesheet', href: 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.css', crossorigin: '' }]
]

此时,md文件中的数学公式就可以正常编译和显示了。

二、markdown-it-mathjax3

一个从 markdown-it-katex 改造而来、额外增加了 MathJax v3 和 SVG 渲染支持的插件

1.安装库
npm install markdown-it-mathjax3 -D
2.配置插件

修改.vitepress/config.js配置文件
markdown-it-mathjax3的配置与markdown-it-katex基本相同,但由于markdown-it-mathjax3使用svg渲染,增加了一些自定义标签,配置时同样需要将这些标签标记为自定义标签,防止编译出错

import mathjax3 from 'markdown-it-mathjax3';

const customElements = [
  'math',
  'maction',
  'maligngroup',
  'malignmark',
  'menclose',
  'merror',
  'mfenced',
  'mfrac',
  'mi',
  'mlongdiv',
  'mmultiscripts',
  'mn',
  'mo',
  'mover',
  'mpadded',
  'mphantom',
  'mroot',
  'mrow',
  'ms',
  'mscarries',
  'mscarry',
  'mscarries',
  'msgroup',
  'mstack',
  'mlongdiv',
  'msline',
  'mstack',
  'mspace',
  'msqrt',
  'msrow',
  'mstack',
  'mstack',
  'mstyle',
  'msub',
  'msup',
  'msubsup',
  'mtable',
  'mtd',
  'mtext',
  'mtr',
  'munder',
  'munderover',
  'semantics',
  'math',
  'mi',
  'mn',
  'mo',
  'ms',
  'mspace',
  'mtext',
  'menclose',
  'merror',
  'mfenced',
  'mfrac',
  'mpadded',
  'mphantom',
  'mroot',
  'mrow',
  'msqrt',
  'mstyle',
  'mmultiscripts',
  'mover',
  'mprescripts',
  'msub',
  'msubsup',
  'msup',
  'munder',
  'munderover',
  'none',
  'maligngroup',
  'malignmark',
  'mtable',
  'mtd',
  'mtr',
  'mlongdiv',
  'mscarries',
  'mscarry',
  'msgroup',
  'msline',
  'msrow',
  'mstack',
  'maction',
  'semantics',
  'annotation',
  'annotation-xml',
  'mjx-container',
  'mjx-assistive-mml',
];

export default {
  markdown: {
    config: (md) => {
      md.use(mathjax3);
    },
  },
  vue: {
    template: {
      compilerOptions: {
        isCustomElement: (tag) => customElements.includes(tag),
      },
    },
  },
};

由于markdown-it-mathjax3使用svg渲染,不需要引入额外css文件。


总结

本文章主要为记录一下为vitepress配置数学公式解析插件的过程,其中主要踩坑是由于插件生成的特殊标签不支持导致的编译报错,可通过修改vitepress配置对自定义标签进行单独配置进行解决。

此处附上githubvitepress博客地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
LaTeX数学公式是一种排版数学表达式的标记语言。为了在LaTeX编译器中编写数学公式,你需要在导言区引用数学公式的宏包,代码为\usepackage{amsmath};如果你想修改公式的字体,还需要引用宏包\usepackage{amsfonts}。 在LaTeX中,你可以使用一系列的语法和符号来插入各种类型的数学公式,包括上下标、分式、开方、对数、极限、导数与偏导、矩阵等等。你可以参考官方文档来了解更多的数学公式语法和用法。 如果你使用的是Markdown编写LaTeX数学公式,CSDN支持LaTeX数学公式的显示,但一些本地编辑器可能不直接支持LaTeX数学公式的输入。你可以通过设置Typroa或通过在VS Code安装扩展来支持LaTeX数学公式的输入。 总结起来,LaTeX数学公式可以通过使用特定的语法和符号来编写,并借助相应的宏包进行排版和修改字体。在Markdown编辑器中,你可能需要做一些设置或安装扩展来支持LaTeX数学公式的输入。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [LaTeX数学公式-详细教程](https://blog.csdn.net/NSJim/article/details/109045914)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值