如何让MathJax再次排版? MathJax.Hub.Queue([ “排版”,MathJax.Hub]);似乎不起作用。

时间:2017-08-12 23:52:25

标签: html ajax mathjax

我在使用MathJax时遇到了麻烦。在Ajax调用之后,它不会呈现内容。我试着打电话

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

但似乎没有用。我究竟做错了什么? 此外,如果我尝试将未弃用的src url包含在他们网站上给出的mathjax中,mathjax对我来说并不完全有效。

  <!DOCTYPE html>
    <html>
      <head>
        <title>MathJax AsciiMath Test Page</title>
        <script type="text/x-mathjax-config">
          MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']],
                               displayMath: [['\\[','\\]'], ['$$','$$']]}});
        </script>
        <script type="text/javascript"
          src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
        </script>
        <script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
      </head>
      <body>

        <button type="button">Math</button>
        <div class='math'>
          <p>\[x(n+1)=x(n)+dt*v(n)\]</p>
        </div>

        <script>
          $(function(){
            $('button').on('click', function(){
              console.log('click');
              var myCustomEvent = new Event('ReloadMath');
              document.dispatchEvent(myCustomEvent);
            });
            $.get('/text', function(text){
               $('.math').append("<p>Hi</p>");
               $('.math').append("<p>\[x(n+1)=x(n)+dt*v(n)\]</p>");
               MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
            });
          });

          document.addEventListener('ReloadMath', function () {
            console.log('reload math');
            MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
          });
        </script>

      </body>
    </html>

1 个答案:

答案 0 :(得分:0)

反斜杠(\)是JavaScript中的转义字符,当Javascript在字符串中找到反斜杠时,它将尝试在其后转义该字符。要在字符串中显示反斜杠,您需要在其前面加上一个反斜杠来进行转义,这意味着您将需要两个反斜杠来显示一个反斜杠,即\\

您需要进行更改

$('.math').append("<p>\[x(n+1)=x(n)+dt*v(n)\]</p>");

收件人

$('.math').append("<p>\\[x(n+1)=x(n)+dt*v(n)\\]</p>");