JQuery中的MathJax

我有许多不同的MathJax公式,它们将在网页上的不同列表中动态移动。 我试图用JQuery和append属性来控制它。

在我的脚本文件中,我有各种公式数组,然后是一个函数,它使用.append列出指定div内部数组中的公式。 这是代码:

function listArray(array,div){ for(var i=0; i<array.length; i++){ $('#'+div).append('
  • '+array[i]); } };
  • 我遇到MathJax在此脚本运行之前对数学进行排版的问题,因此附加的公式不会显示在TeX中。 这是一个小提琴的例子:

    http://jsfiddle.net/T8m64/92/

    有谁知道这方面有一个很好的解决方案? 我曾尝试阅读有关重新排版MathJax的一些文档,但我并没有真正遵循它。

    你的小提琴例子有两个问题。 首先,数学表达式数组会丢失反斜杠,因为它们在javascript字符串中用作转义字符。 你需要加倍他们:

     var jax = ['\\(\\mathbb{Q}\\)','\\(\\mathbb{Z}\\)']; 

    其次,在将数学添加到页面后,您需要告诉MathJax处理数学。 使用

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

    在附加数学后才能这样做。

    你小提琴的第120版显示了一个工作版本。

    我作为你的小提琴的更新/ 93,/ 94,/ 95运行了一些测试,并发现渲染的公式可以移动但整个事情是脆弱的。 有时简单的更改或只是页面刷新会导致显示未呈现的公式,每个公式都加倍,我无法解释。

    正如您将看到的,我认为setTimeout会解决问题,但现在我不认为是这种情况。

    我认为这个bug只是在jsFiddle中运行代码的一个function。 在我自己的计算机上在file:// protocol下本地提供的测试页面中运行代码并在Opera中查看时,我无法引发错误。

    这是我的测试页面:

         Test kineticJS lib - jsFiddle demo          \(\mathbb{Q}\) \(\mathbb{Z}\)