uni-app中HBuilderX的markdown渲染,如何渲染数学公式?

uni-app中HBuilderX的markdown渲染,如何渲染数学公式?
我现在就是在md文件最顶端添加:

<script async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.2.2/es5/tex-mml-chtml.min.js"></script>

这也不是长久之计啊,有没有更好的办法啊?

2 回复

是指HBuilderX 自带的渲染不支持某些高级语法吗?

更多关于uni-app中HBuilderX的markdown渲染,如何渲染数学公式?的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在uni-app中使用HBuilderX进行markdown渲染时,原生并不直接支持数学公式的渲染。然而,可以通过一些第三方库和自定义组件来实现这一功能。一个常用的方法是结合markdown-itkatex库来实现markdown中的数学公式渲染。

以下是一个基本的实现思路,以及相关的代码案例:

  1. 安装依赖: 首先,你需要在项目中安装markdown-itkatex库。可以通过npm或yarn进行安装:

    npm install markdown-it katex
    
  2. 创建自定义组件: 创建一个自定义组件,比如MarkdownRenderer.vue,用于渲染markdown内容,并处理数学公式的渲染。

    <template>
      <div v-html="compiledMarkdown"></div>
    </template>
    
    <script>
    import MarkdownIt from 'markdown-it';
    import 'katex/dist/katex.min.css';
    import renderMathInElement from 'katex/dist/contrib/auto-render.min';
    
    export default {
      props: {
        content: {
          type: String,
          required: true
        }
      },
      data() {
        return {
          md: new MarkdownIt()
        };
      },
      computed: {
        compiledMarkdown() {
          let html = this.md.render(this.content);
          // 使用katex进行数学公式渲染
          renderMathInElement(this.$el.querySelector('div'), {
            delimiters: [
              { left: '$$', right: '$$', display: true },
              { left: '$', right: '$', display: false },
              { left: '\\(', right: '\\)', display: false },
              { left: '\\[', right: '\\]', display: true }
            ]
          });
          return html;
        }
      },
      mounted() {
        // 初次渲染时调用katex
        this.compiledMarkdown;
      }
    };
    </script>
    
    <style scoped>
    /* 可以根据需要添加样式 */
    </style>
    
  3. 使用自定义组件: 在你的页面或组件中使用这个MarkdownRenderer组件,并传入markdown内容。

    <template>
      <view>
        <MarkdownRenderer :content="markdownContent" />
      </view>
    </template>
    
    <script>
    import MarkdownRenderer from '@/components/MarkdownRenderer.vue';
    
    export default {
      components: {
        MarkdownRenderer
      },
      data() {
        return {
          markdownContent: `
            # Hello Markdown
            This is an inline math formula: $E=mc^2$.
            And here is a displayed math formula:
            $$
            \\int_0^1 x^2\\,dx
            $$
          `
        };
      }
    };
    </script>
    

通过上述步骤,你可以在uni-app中实现markdown内容的渲染,并包含数学公式的支持。注意,这种方法依赖于客户端的JavaScript执行,因此可能不适用于所有环境,特别是在对性能或安全性有严格要求的情况下。

回到顶部