Подтвердить что ты не робот

Как напомнить или перезапустить MathJax?

Мне нужно, чтобы MathJax снова проверила всю мою страницу.

Я имею в виду, когда страница создается, она делает все отлично. Но мне нужно вызвать его после window.onload для повторной обработки страницы, так как ее содержимое изменилось за это время.

Как я могу это сделать?

4b9b3361

Ответ 1

См. http://docs.mathjax.org/en/latest/typeset.html:

Если вы пишете динамическую веб-страницу где содержание, содержащее математику может появиться после того, как MathJax уже набирает остальную часть страницы, тогда вы нужно будет сказать MathJax для поиска математика на странице снова, когда что создается новый контент. Делать что вам необходимо использовать MathJax.Hub.Typeset(). Эта приведет к препроцессорам (если есть были загружены), чтобы запустить страницу снова, а затем MathJax будет искать необработанная математика на странице и набирает его, оставляя неизменным математика, которая уже была набрана.

Однако вы не должны просто просто называть этот метод. [Вы должны] поставить очередь на действие набора, [используя эту команду]:

MathJax.Hub.Queue(["Typeset",MathJax.Hub]);

Демо здесь: http://cdn.mathjax.org/mathjax/latest/test/sample-dynamic.html

Ответ 2

Я нашел самый простой способ делать динамические обновления с помощью MathML, чтобы позволить MathJax изменять содержимое (вместо функции jQuery.html(s), например). Затем он обрабатывает математику при изменении содержимого.

<script type="text/javascript">
   function updateMathContent(s) {
       var math = MathJax.Hub.getAllJax("mathdiv")[0];
       MathJax.Hub.Queue(["Text", math, s]);
   }
</script>

...

<div id="mathdiv">
   <math xmlns="http://www.w3.org/1998/Math/MathML">
      <msup>
         <mi>x</mi>
         <mn>2</mn>
       </msup> 
   </math>
</div>

Так что просто используйте эту функцию для замены всего содержимого div новым MathML, и он будет работать. (script идет в голову.)

Примечание. Если у вас есть пустой математический div и добавьте MathML позже, вы получите ошибку script. Но если математические теги присутствуют ни с чем внутри вызова updateMathContent, это сработает.