首页 > 其他分享 >vue页面中展示markdown以及katex公式

vue页面中展示markdown以及katex公式

时间:2023-05-06 14:36:43浏览次数:37  
标签:markdown false 公式 showdown vue msgInfo katex 根号

场景

数据库中有markdown语法的字符串,需要展示为正常的页面,难点在于其中的katex数学公式

解决方式

使用showdown及其族系插件

npm i showdown

npm i showdown-katex

<template>
	<div class="msg" v-html="transformMsg(msgInfo)"></div>
</template>
<script>
import showdown from "showdown";
import showdownKatex from "showdown-katex";
  
export default {
  data() {
    return {
      msgInfo: ""  // markdown语法的字符串
    }
  },
  methods: {
    transformMsg(msgInfo = "") {
      msgInfo = msgInfo.replaceAll("<br  />", "\n");  // 一些处理
      let converter = new showdown.Converter({
        // 详细配置见:https://github.com/showdownjs/showdown#valid-options
        tables: true,  // 支持table语法
        strikethrough: true,  // 将~~strikethrough~~ 识别为 <del>strikethrough</del>
        underline: true,  // __test__中的下划线不识别为<em> 和 <strong>
        extensions: [
          showdownKatex({
            // 使用方式见:https://obedm503.github.io/showdown-katex
            // 详细配置见:https://katex.org/docs/options.html
            throwOnError: false,  // 公式有错时,是否抛出错误
            displayMode: false,  // 如果为false,公式以inline方式渲染
            delimiters: [
              { left: "$$", right: "$$", display: false },
              { left: "$", right: "$", display: false },
              { left: "~", right: "~", display: false, asciimath: true },
            ],
          }),
        ],
      });
      return converter.makeHtml(msgInfo);
    }
  }
}
</script>

一些奇奇怪怪和解决方法

如果公式中有开根号,那么这个公式会出现两次。第一次是正常根号展示,第二次是根号内公式和一个无限长的根号。解决方法是用样式把第二次的展示消除掉:

.katex-html {
  display: none;
}

标签:markdown,false,公式,showdown,vue,msgInfo,katex,根号
From: https://www.cnblogs.com/fengzzi/p/17377203.html

相关文章

  • vue-移动端开发-样式适配方案
    样式适配场景:一个项目中既包含了web端也包含了移动端的页面,web端的一些样式不能在移动端正常显示解决方式:npmipostcss-px-to-viewport项目目录下postcss.config.jsmodule.exports={plugins:{"postcss-px-to-viewport":{unitToConvert:"px",view......
  • ChatGPT 调教日记(一):Markdown 解析器
    我最近打算写个Markdown解析器来普及Makrdown的扩展标准。在自己思考之前,我打算首先问ChatGPT,然后先问它几个简单的问题来了解它是否真的知道这个标记语言。我觉得Markdown是全世界用的第二多的标记语言(仅次于HTML),它不可能不知道。ROUND0x01由于正则表达式等价于正则文......
  • 好用的markdown语法
    去掉表格边框TimeLengthSpeedMassMillisecondMillimetreKilometreperhourMilligramSecondCentimetreFootpersecondGramMinuteInchMilesperhourOuncehtmlcss文本分散对齐,两端对齐2222333444https://m.php.cn/article/525353.......
  • VUE常见问题,持续更新
    最新接触VUE3,作为新手在使用TS语法时经常会遇到一些各种各样的问题,在些做个归纳。1.直接引用.json文件最报错TS2732:Cannotfindmodule'@/data.json'.Considerusing'--resolveJsonModule'toimportmodulewith&:在tsconfig.json中添加 "resolveJsonModule":true,......
  • Vue学习
    vue第一个案例vue.js开发版本vue.min.js生产版本(压缩版)第一个案例:<!doctypehtml><htmllang="en"><head><metacharset="UTF-8"><title>Document</title><scripttype="text/javascript"src=&q......
  • java基于springboot+vue的校园新闻网站、校园新闻管理系统,附源码+数据库+文档+PPT,适合
    1、项目介绍校园新闻网站的主要使用者分为管理员和用户,实现功能包括管理员:首页、个人中心、用户管理、新闻类型管理、校园新闻管理、留言板管理、论坛交流、系统管理,用户前台:首页、校园新闻、论坛交流、留言反馈、个人中心、后台管理等功能。由于本网站的功能模块设计比较全面,所......
  • Vue进阶(七十八):Vue 定时器与 JS 定时器
    (文章目录)<hrstyle="border:solid;width:100px;height:1px;"color=#000000size=1">一、Vue定时器在vue中,有两种定时器,一是浏览器API,window对象上的;另一种就是vue/nodejs封装的,需要引入。import{setInterval,clearInterval}from'timers'建议使用window对象自带......
  • vue naive ui 前端获取日期数据传递给后端
    vuenaiveui前端获取日期数据传递给后端设置日期选择器1.使用表单输入绑定的方法把用户选定的日期传递给data中的值(检查数据是否更新的方法) 2.返回给后端的时间格式后端想要接收的格式为json,其中包括starttimeendtime和macid,并且时间格式为<class'datetime.date......
  • java基于springboot+vue的垃圾分类管理系统,附源码+文档+PPT+数据库
    1、项目介绍垃圾分类网站的主要使用者分为管理员和用户、垃圾分类管理员,实现功能包括管理员:首页、个人中心、用户管理、垃圾分类管理员管理、垃圾分类管理、垃圾类型管理、垃圾图谱管理、系统管理,垃圾分类管理员;首页、个人中心、用户管理、垃圾分类管理员管理、垃圾分类管理、垃......
  • markdown基础语法
    markdown演示内容二级标题三级标题四级标题五级标题说明内容+无序列表+无序列表+无序列表1.有序列表2.有序列表3.有序列表//代码块<div>htmltag</div>......