You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MathJax 3.2.0无法显示带有TeX注解的MathML公式问题排查

MathJax 3.2.0 "this.variant[t] is undefined" Error When Adding TeX Semantic Annotation to MathML

Let's break down what's happening here and why your fix works:

The Problem Recap

You had a valid MathML formula (generated from TeX via MathJax's Node.js module) that rendered fine with MathJax 3.2.0. But when you added a <semantics> block with a TeX annotation at the end of the <math> tag, you started getting a "Math output error" with the underlying message "this.variant[t] is undefined" (where t was either empty or undefined).

Why the Error Happened

MathML's <semantics> element has a strict structure requirement: it must be the direct child of the <math> tag, and it needs to wrap both the visual presentation MathML and your semantic annotations.

In your original problematic code, you had the <mrow> (the visual content) and <semantics> as two sibling elements under <math>. This isn't valid MathML semantics structure—MathJax expects <semantics> to contain the presentation content first, followed by one or more annotations. When it encountered this invalid structure, the parser got confused during font variant processing (hence the this.variant[t] undefined error), since it couldn't properly map the semantic annotation to the presentation content.

The Fix That Worked

Moving the <semantics> tag to wrap both the presentation MathML and the TeX annotation is exactly the correct approach. The valid structure should look like this:

<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <semantics>
    <mrow data-mjx-texclass="INNER">
      <mo data-mjx-texclass="OPEN">{</mo>
      <mtable columnspacing="1em" rowspacing="4pt">
        <mtr>
          <mtd><mi>x</mi></mtd>
          <mtd><mi>y</mi></mtd>
        </mtr>
        <mtr>
          <mtd><mi>z</mi></mtd>
          <mtd><mi>v</mi></mtd>
        </mtr>
      </mtable>
      <mo data-mjx-texclass="CLOSE">}</mo>
    </mrow>
    <annotation encoding="application/x-tex">\begin{Bmatrix} x &amp; y \\ z &amp; v \end{Bmatrix}</annotation>
  </semantics>
</math>

Your MathJax configuration already has menuOptions.settings.semantics: true enabled, which tells MathJax to process semantic annotations—but this only works when the MathML follows the correct semantics structure. With the wrapped <semantics> element, MathJax can properly associate the TeX annotation with the visual formula, avoiding the parsing error entirely.

内容的提问来源于stack exchange,提问作者Alexander Mashin

火山引擎 最新活动