【问题标题】:Run MathJax at specific point or re-run it somewhere in code在特定点运行 MathJax 或在代码中的某处重新运行它
【发布时间】:2022-12-04 05:09:53
【问题描述】:

让我简化脚本:

  1. 获取用户输入

  2. 计算东西

  3. 使用 MathJax 将计算的内容添加到 HTML

    问题是,MathJax 在开始时运行,当时还没有计算这些东西。它在方程式中显示“未定义”。后来,当它被计算时,方程看起来像这样$ l_D = 3m $

    有什么方法可以在特定点运行 MathJax 吗?还是在计算完这些东西后重新运行它?

【问题讨论】:

    标签: javascript mathjax


    【解决方案1】:

    是的,有一种方法可以在代码中的特定位置运行 MathJax。 MathJax 提供了一种排版方法,您可以使用该方法在特定时间排版页面的一部分。在计算出方程的值后,您可以使用此方法排版方程。这是您如何执行此操作的示例:

    // Calculate your values
    let l_D = 3m;
    
    // Add the calculated value to the page using MathJax
    let math = document.createElement('math');
    math.innerHTML = '$l_D = ' + l_D + '$';
    document.body.appendChild(math);
    
    // Typeset the math element using MathJax
    MathJax.typeset(math);
    

    这段代码会将l_D的计算值作为MathJax方程添加到页面中,然后使用排版方法对方程进行排版,使其能够被MathJax正确渲染。

    或者,如果您有大量需要排版的方程式,您可以使用 typesetPromise 方法一次排版页面上的所有方程式。此方法返回一个承诺,该承诺将在排版所有方程式后得到解决,因此您可以使用它来确保在代码继续之前正确呈现方程式。这是您如何执行此操作的示例:

    // Calculate your values
    let l_D = 3m;
    
    // Add the calculated value to the page using MathJax
    let math = document.createElement('math');
    math.innerHTML = '$l_D = ' + l_D + '$';
    document.body.appendChild(math);
    
    // Typeset all of the equations on the page using MathJax
    MathJax.typesetPromise().then(function () {
      // Your code here, to be executed after all of the equations have been typeset
    });
    

    这段代码会将 l_D 的计算值作为 MathJax 方程添加到页面,然后使用 typesetPromise 方法排版页面上的所有方程。 then 方法中的代码将在排版完所有方程式后执行,因此您可以确保当您的代码继续时,您的方程式将被正确呈现。

    【讨论】:

      猜你喜欢
      • 2020-01-26
      • 1970-01-01
      • 2017-01-10
      • 2014-03-09
      • 1970-01-01
      • 2018-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多