MathJax 元素属性在启动时指定,但仍然适用于所有内容

MathJax elements attribute specified on startup, but still applys to everything

我只想将 MathJax 应用于 <span class="math-tex"></span>

中的文本

documentation 的基础上,我添加了以下内容。

  <script> 
    MathJax = {
        startup: {
            elements: "span.math-tex",
        },
        tex: {
            inlineMath: [['$', '$'], ['\(', '\)']],
            displayMath: [['$$','$$'],['\[','\]']],
            processEscapes: true
        }
    }
  </script> 
  <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3.0.1/es5/tex-mml-chtml.js"></script>

但是,MathJax 仍然会排版整个页面。我知道作为最后的手段,我可​​以在 window 负载上执行 MathJax.typeset(document.querySelectorAll('span.math-tex')),但如果可能的话,我宁愿按照预期的方式执行。有没有其他人遇到过类似的问题?

您的代码有两个问题。首先,根据您 link 的文档,elements 应该是一个 数组 元素或元素选择器,而不仅仅是一个字符串。所以你应该使用

            elements: ["span.math-tex"]

其次,在当前版本(3.0.5)中修复了 3.0.1 版本(参见 issue report)中对 elements 数组的处理,因此你需要更新到那个版本。

例如,

<script> 
    MathJax = {
        startup: {
            elements: ["span.math-tex"]
        },
        tex: {
            inlineMath: [['$', '$'], ['\(', '\)']],
            displayMath: [['$$','$$'],['\[','\]']],
            processEscapes: true
        }
    }
  </script> 
  <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3.0.5/es5/tex-mml-chtml.js"></script>
  
$$\text{not processed}$$

<span class="math-tex">
$$\text{processed}$$
</span>