【问题标题】:Mathjax updated rendering of Latex equationsMathjax 更新了 Latex 方程的渲染
【发布时间】:2020-03-20 14:27:48
【问题描述】:

我一直在使用这段代码来渲染 Latex。但是,当我更新我的方程式时,呈现的 HTML 不会刷新。我尝试查找 typeset()typesetPromise() 的文档,但在此处的代码示例中找不到太多帮助:

//rederMath.tsx 
import { mathjax } from 'mathjax-full/js/mathjax';
import { TeX } from 'mathjax-full/js/input/tex';
import { CHTML } from 'mathjax-full/js/output/chtml'
import { AllPackages } from 'mathjax-full/js/input/tex/AllPackages';
import { browserAdaptor } from 'mathjax-full/js/adaptors/browserAdaptor';
import { RegisterHTMLHandler } from 'mathjax-full/js/handlers/html';

RegisterHTMLHandler(browserAdaptor());

const html = mathjax.document(document, {
  InputJax: new TeX({
    inlineMath: [['$', '$'], ['\\(', '\\)']],
    packages: AllPackages
  }),
  OutputJax: new CHTML()
});

html.findMath()
  .compile()
  .getMetrics()
  .typeset()
  .updateDocument();

有没有办法在等式更改后获取更新的 HTML?

【问题讨论】:

    标签: typescript mathjax


    【解决方案1】:

    正如我在您开始的 MathJax issue tracker 中提到的,MathJax 会跟踪已经执行的步骤,以便在进程中断时不必重做它们(对于扩展的动态加载,对于例子)。但这也意味着这些步骤不会被第二次执行,除非你告诉 MathJax 你想要它们。您可以通过html.reset() 进行操作。所以

    html.findMath()
        .compile()
        .getMetrics()
        .typeset()
        .updateDocument()
        .reset();
    

    将允许您重复该过程。

    此示例是一个旧示例,并且有一个更新的 API 可以为您执行第一个修复步骤(以及注册为 renderActions 的任何其他步骤,例如添加 MahJax 上下文菜单等)。这是

    html.render()
        .reset();
    

    如果您愿意,您仍然可以像以前一样执行各个步骤。

    如果您经常更新 same 方程(即用新方程替换它),那么您可能还需要调用 html.clear() 而不是 html.reset() 以删除前一个表达式的记录(否则排版表达式的列表会增加,因为它还包括表达式的所有过去版本)。

    【讨论】:

      猜你喜欢
      • 2019-03-09
      • 2016-12-09
      • 2015-12-18
      • 2020-12-09
      • 2013-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多