Получите доступ к MathJax.Hub с помощью MathJax, загружаемого динамически как скрипт в React. - PullRequest
0 голосов
/ 18 апреля 2020

Я импортировал MathJax динамически в React, адаптировав принятый (обновленный) ответ от Добавление тега скрипта в React / JSX , то есть:

const MathJaxScript =() => {
  const script = document.createElement('script');
  script.type = "text/javascript";
  script.src = 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js';
  script.async = true;

  var config = 'MathJax.Hub.Config({' +
                 'extensions: ["tex2jax.js","TeX/AMSmath.js","TeX/AMSsymbols.js"],' +
                 'jax: ["input/TeX","output/HTML-CSS"],' +
               'tex2jax: {inlineMath: [ ["$","$"], ["\\(","\\)"] ],displayMath: [ ["$$","$$""], ["\\[","\\]"] ],processEscapes: true}});'
               +
               'MathJax.Hub.Startup.onload();'
               ;
      document.body.appendChild(script);
    return () => {
      document.body.removeChild(script)
    }
};
export default MathJaxScript;

LaTex теперь хорошо отображается на моем страниц, но когда я обновляю содержимое, новое содержимое LaTex не анализируется MathJax. Мне нужно было бы позвонить MathJax.Hub.Queue(["Typeset",MathJax.Hub]);, чтобы сделать это. Каков наилучший способ доступа к MathJax.Hub с использованием моей текущей настройки?

1 Ответ

0 голосов
/ 18 апреля 2020

Используя комментарий Питера, я смог загрузить MathJax просто так:

const MathJaxScript =() => {
  const script = document.createElement('script');
  script.type = "text/javascript";
  script.src = 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js';
  script.async = true;
};
export default MathJaxScript;

Затем, после вызова скрипта,

window.MathJax={tex: {inlineMath: [["$", "$"], ["\\(", "\\)"]],packages: ["base", "newcommand", "configMacros"]},svg: {fontCache: "global"}};

Чтобы изменить конфигурацию.

Я понял, что на самом деле это последняя выпущенная версия c: https://docs.mathjax.org/_/downloads/en/v3.0-latest/pdf/

...