【问题标题】:Execute MathJax for custom tags without delimiters为没有分隔符的自定义标签执行 MathJax
【发布时间】:2020-06-02 00:19:21
【问题描述】:

我想在我们的页面上使用 mathjax,并且我有一个带有公式 <formula> 的自定义标签。

但是只有当我在自定义标签中使用分隔符时它才有效,是否有可能丰富分隔符?

当我设置inlineMath: [['', '']] 时,整个事情就挂了。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>title</title>
    <link rel="stylesheet" href="style.css">
	<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
	<script>
	  MathJax = {
		tex: {inlineMath: [['$', '$']]},
		startup: {
		  elements: ['formula'],
		  ready: function () {
			MathJax.startup.defaultReady();
		  }
		}
	  }
	</script>
    <script id="MathJax-script" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
  </head>
  <body>
    <p>hello world</p>
	<p>this is a <formula>x^2 + y^2 = z^2</formula> formula x^2 + y^2 = z^2</p>
	<p>this is a <formula>$x^2 + y^2 = z^2$</formula> formula x^2 + y^2 = z^2</p>
  </body>
</html>

【问题讨论】:

    标签: mathjax


    【解决方案1】:

    您可以执行类似于文档中给出的example 的操作,该文档显示了如何处理过去用于保存数学的旧 v2 样式 &lt;script&gt; 标记。

    这是一个例子:

    <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
    <script> 
    MathJax = {
      options: {
        renderActions: {
          find: [10, function (doc) {
            for (const node of document.querySelectorAll('formula')) {
              const math = new doc.options.MathItem(node.textContent, doc.inputJax[0], false);
              const text = document.createTextNode('');
              node.parentNode.replaceChild(text, node);
              math.start = {node: text, delim: '', n: 0};
              math.end = {node: text, delim: '', n: 0};
              doc.math.push(math);
            }
          }, '']
        }
      }
    };
    </script> 
    <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
    
    <p>this is a <formula>x^2 + y^2 = z^2</formula> formula x^2 + y^2 = z^2</p>

    请注意,这用查找 &lt;formula&gt; 标记的函数替换了通常的数学查找函数,因此如果您也想使用原始分隔符,请将 find: [10 更改为 findTags: [9,以便原始的不会被替换,将在您的代码运行后运行。

    还请注意,这并没有为您提供区分显示样式数学和内联数学的方法(正如 TeX 分隔符所做的那样),因此所有数学都是内联样式。当然,您可以修改代码以具有两个不同的标签,或者允许&lt;formula&gt; 上的属性指定显示样式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      • 1970-01-01
      相关资源
      最近更新 更多