对不带分隔符的自定义标签执行MathJax

问题描述 投票:0回答:1

我想在我们的页面上使用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个回答
1
投票

您可以执行类似于文档中给出的example的操作,该文档显示了如何处理用于保存数学信息的旧v2样式<script>标记。

这里是一个例子:

<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>

[请注意,此函数用查找<formula>标记的函数代替了通常的数学查找函数,因此,如果您也要使用原始定界符,请将find: [10更改为findTags: [9,这样原始函数就不会将被替换并在您的代码运行后运行。

也请注意,这不能给您一种将显示风格的数学与在线数学区分开的方法(就像TeX分隔符一样),因此所有数学都是在线风格。当然,您可以修改代码以具有两个不同的标记,或者允许<formula>上的属性指定显示样式。

© www.soinside.com 2019 - 2024. All rights reserved.