MathJax JS API:如何发送带有文本的var并从中获取html?

时间:2011-10-28 01:49:49

标签: javascript jquery html var mathjax

从某些外部来源(例如Flash应用程序)我得到文本(混合了简单的html,wiki markdown和TeX / LaTeX)。目前我有:(我使用jQuery)

      function render(text)
     {
         $("#wikiContent").html(text);
         MathJax.Hub.Typeset()
         $("#wikiContent").html(Markdown_Showdown_Converter.makeHtml( $("#wikiContent").html()));
     }

这导致了下一个问题 - 任何复杂的数学运算,如such

$$
\begin{eqnarray*}
B_1 + z_1 M_1 &\equiv& B_2 \pmod {M_2}
\\ B_1 + z_1 M_1 + z_2 M_1M_2 &\equiv& B_3 \pmod {M_3}
\\ &\cdots&
\\ B_1 + z_1M_1 + z_2 M_1M_2 + \cdots + z_{k-1}M_1 M_2 \cdots M_{k-1} &\equiv& B_k \pmod{M_k}.
\end{eqnarray*}
$$

被打破=(

所以我想知道如何将一些var放入MathJax并从中获取html?

1 个答案:

答案 0 :(得分:2)

您不应直接调用MathJax.Hub.Typeset(),而应使用MathJax.Hub.Queue()对排版进行排队。由于排版以异步方式运行,因此您还需要对查找生成的HTML的代码进行排队。像

这样的东西
function render(text)
{
  $("#wikiContent").html(text);
  MathJax.Hub.Queue(
    ["Typeset",MathJax.Hub],
    function () {
      $("#wikiContent").html(Markdown_Showdown_Converter.makeHtml($("#wikiContent").html()));
    }
  );
}

有关详细信息,请参阅有关modifying math on the page的MathJax文档。

但请注意,您获得的HTML不是通用的(也就是说,它取决于您使用的浏览器,操作系统,已安装的字体,运行MathJax的页面上的CSS以及各种其他因素,因此您将无法将HTML复制并粘贴到另一个页面,并期望获得一致的结果。