добавление строки математической формулы в документ с использованием JavaScript и MathJax - PullRequest
0 голосов
/ 05 мая 2019

При нажатии кнопки для добавления математической формулы оператор MathJax, кажется, не интерпретируется:

const button = document.getElementById('go');
button.addEventListener('click', displayMath, true);

function displayMath() {
    const body = document.body;
    p = document.createElement('p');
    const a = 3, b = 2;
    const c = a + b;
    const math = "\\(" + a + "+ " + b + " = " + c + "\\)";
    p.innerHTML = math;
    body.appendChild(p);
}
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" async
        src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML" async>
        </script>
    </head>

    <body>
        <p>press the button to display math like this: \(a + b = c\)</p>
        <button id="go" type="button">Go!</button>
        
        <script src="test.js"></script>
    </body>
</html>

1) Могут ли операторы MathJax быть добавлены в такие события, как нажатие кнопки?

2) Если нет, есть ли лучшие альтернативы?

Я ценю любую помощь, спасибо:>

1 Ответ

1 голос
/ 05 мая 2019

Вам нужно снова запустить анализатор Mathjax, чтобы преобразовать динамически добавленное выражение в математические. Вот документация . Итак, вам нужно запустить метод MathJax.Hub.Queue(); для вашего нового выражения. Ваш код должен выглядеть так:

const button = document.getElementById('go');
button.addEventListener('click', displayMath, true);

function displayMath() {
    const body = document.body;
    p = document.createElement('p');
    const a = 3, b = 2;
    const c = a + b;
    const math = "\\(" + a + "+ " + b + " = " + c + "\\)";
    p.innerHTML = math;
    body.appendChild(p);
    MathJax.Hub.Queue(["Typeset", MathJax.Hub, p]);
}

И здесь работает скрипка

...