您好,欢迎来到爱够旅游网。
搜索
您的当前位置:首页Js latex数学公式 转 markdown

Js latex数学公式 转 markdown

来源:爱够旅游网
const latexToMarkdownMath = (text) => {
  if (!text) return '';

  const latexRegex = /\\\[([\s\S]*?)\\\]|\\\(([\s\S]*?)\\\)/g;

  function replaceLatex(match, p1, p2) {
    let formula = p1 || p2;

    // 处理嵌套的大括号
    const processBraces = (str) => {
      let depth = 0;
      let result = '';
      for (let i = 0; i < str.length; i++) {
        if (str[i] === '{') depth++;
        if (str[i] === '}') depth--;
        if (depth === 0 && str[i] === ' ') result += '\\;';
        else result += str[i];
      }
      return result;
    };
    formula = processBraces(formula);

    // 更多的替换规则
    const replacements = [
      [/\\sum/g, "∑"],
      [/\\prod/g, "∏"],
      [/\\infty/g, "∞"],
      [/\\frac\{([^{}]+)\}\{([^{}]+)\}/g, "\\frac{$1}{$2}"], // 保留 \frac 命令
      [/\\sqrt\{([^{}]+)\}/g, "\\sqrt{$1}"], // 保留 \sqrt 命令
      [/\\left/g, ""],
      [/\\right/g, ""],
      [/\\arctan/g, "arctan"],
      [/\\ldots/g, "..."],
      [/\\cdot/g, "·"],
      [/\\times/g, "×"],
      [/\\pi/g, "π"],
      [/\\{/g, "{"],
      [/\\}/g, "}"],
      [/\\in/g, "∈"],
      [/\\subset/g, "⊂"],
      [/\\supset/g, "⊃"],
      [/\\cup/g, "∪"],
      [/\\cap/g, "∩"],
      [/\\equiv/g, "≡"],
      [/\\approx/g, "≈"],
      [/\\neq/g, "≠"],
      [/\\geq/g, "≥"],
      [/\\leq/g, "≤"],
      [/\\pm/g, "±"],
      [/\\partial/g, "∂"],
      [/\\nabla/g, "∇"],
      [/\\forall/g, "∀"],
      [/\\exists/g, "∃"],
      [/\\neg/g, "¬"],
      [/\\wedge/g, "∧"],
      [/\\vee/g, "∨"],
      [/\\to/g, "→"],
      [/\\mapsto/g, "↦"],
      [/\\int/g, "∫"],
      [/\\oint/g, "∮"],
      [/\\infty/g, "∞"],
      [/\\therefore/g, "∴"],
      [/\\because/g, "∵"],
    ];

    replacements.forEach(([regex, replacement]) => {
      formula = formula.replace(regex, replacement);
    });

    // 处理上标和下标
    formula = formula.replace(/_{([^{}]+)}/g, "_{$1}");
    formula = formula.replace(/\^{([^{}]+)}/g, "^{$1}");

    // 处理 \text 命令
    formula = formula.replace(/\\text\{([^{}]+)\}/g, "\\text{$1}");

    return p1 ? `$$${formula}$$` : `$${formula}$`;
  }

  return text.replace(latexRegex, replaceLatex);
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igbc.cn 版权所有 湘ICP备2023023988号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务