Mathjax обновил рендеринг латексных уравнений - PullRequest
0 голосов
/ 20 марта 2020

Я использовал этот код для рендеринга латекса. Тем не менее, когда я обновляю свое уравнение, визуализированный HTML не обновляет sh. Я попытался найти документацию для 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 после изменения уравнения?

1 Ответ

0 голосов
/ 21 марта 2020

Как я упомянул в запущенном вами MathJax-трекере , MathJax отслеживает шаги, которые уже были выполнены, так что ему не нужно повторять их, если процесс прерывается (для c загрузка расширения, например). Но это также означает, что эти шаги не будут выполнены во второй раз, если вы не скажете MathJax, что хотите, чтобы они были. Вы делаете это через html.reset(). Так что

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

позволит вам повторить процесс.

Этот пример старый, и есть более новый API, который делает первые шаги по исправлению для вас (плюс любые дополнительные шаги которые зарегистрированы как renderActions (например, добавление контекстного меню MahJax и т. д.). Это

html.render()
    .reset();

, хотя вы все равно можете выполнять отдельные шаги, как если бы вы выполняли sh.

Если вы обновляете то же самое уравнение часто (т. е. заменяя его новым уравнением), тогда вы, вероятно, также захотите вызвать html.clear(), а не html.reset(), чтобы удалить запись предыдущего выражения (в противном случае список выражений наборов будет расти, так как включая все предыдущие версии выражения).

...