除非页面重新加载,否则Mathjax不会渲染等式

时间:2015-10-03 22:50:24

标签: ruby-on-rails mathjax

我在我的rails项目中通过CDN使用mathjax,因为在我的应用程序中托管它的问题。

我使用mathjax和以下

<script type="text/javascript" src="http://www.hostmath.com/Math/MathJax.js?config=OK"></script>

有一个div元素根据用户在页面上点击的按钮呈现部分。部分&#34;其他&#34;有其他东西和部分&#34;数学&#34;有数学方程式。对应的部分有一个按钮。

用户第一次点击&#34;数学&#34;数学中的所有方程式正确渲染。如果用户点击&#34;其他&#34;然后点击&#34;数学&#34;再次,数学方程式没有正确呈现。只显示原始数学语法。

我在读它可能是因为MathJax只在页面加载时进行排版,但我不明白为什么格式会在渲染的部分更改时发生变化。

所以我添加了我在网上找到的以下内容,以测试它是否可以解决我的问题:

<script type="text/javascript">
  MathJax.Hub.Queue(
  ["resetEquationNumbers",MathJax.InputJax.TeX],
  ["Typeset",MathJax.Hub]
);
</script>

现在它像我想要的那样工作。用户可以单击&#34;数学&#34;的按钮。或&#34;其他&#34;在没有重新加载页面的情况下以任何顺序显示部分并且方程式正确呈现。

问题是我有一个js错误:

Uncaught ReferenceError: MathJax is not defined

当通过CDN而不是本地服务器引用MathJax时,如何使用上面的代码(MathJax.Hub.Queue ...)?我也不明白为什么在&#34; MathJax&#34;时添加上面的代码解决了这个问题。未定义。

我认为我需要根据docs中的内容配置本地配置文件以解决问题,但我不了解它们。有人可以帮忙吗?

这是数学方程的部分

<div class="custom-in-page-pages-view">
  <div class="text-center">
    <h1>Part 1</h1>
    <h4>General 3d Motion Equation</h4><br><br>
  </div>

<math>
  <mrow>
    <mtext selected="true">r</mtext>
    <mo>=</mo>
    <mtext>r</mtext>
    <mtext mathvariant="italic">(t)</mtext>
    <mo>=</mo>
    <mtext mathvariant="italic">r</mtext>
    <msub>
      <mtext>&ecirc;</mtext>
      <mtext mathvariant="italic">r</mtext>
    </msub>
  </mrow>
</math>

<br>
<br>

<math>
  <mrow>
    <mtext>v</mtext>
    <mo>=</mo>
    <mtext mathvariant="italic">v</mtext>
    <msub>
      <mtext>&ecirc;</mtext>
      <mtext>r</mtext>
    </msub>
    <mo>+</mo>
    <mtext mathvariant="italic">r</mtext>
    <mfrac>
      <mtext mathvariant="italic">d&theta;</mtext>
      <mtext mathvariant="italic">dt</mtext>
    </mfrac>
    <msub>
      <mtext>&ecirc;</mtext>
      <mtext selected="true" mathvariant="italic">&theta;</mtext>
    </msub>
    <mo>+</mo>
    <mtext mathvariant="italic">r</mtext>
    <mfrac>
      <mtext mathvariant="italic">d&phiv;</mtext>
      <mtext mathvariant="italic">dt</mtext>
    </mfrac>
    <mtext mathvariant="normal">sin</mtext>
    <mtext mathvariant="italic">&theta;</mtext>
    <msub>
      <mtext>&ecirc;</mtext>
      <mtext mathvariant="italic">&phiv;</mtext>
    </msub>
  </mrow>
</math>

<br>
<br>

<math>
  <mrow>
    <mtext selected="true">a</mtext>
    <mo>=</mo>
    <mfenced open="(" close=")">
      <mrow>
        <mtext mathvariant="italic">a</mtext>
        <mo>-</mo>
        <mtext mathvariant="italic">r</mtext>
        <mo>&nbsp;</mo>
        <msup>
          <mfenced open="(" close=")">
            <mfrac>
              <mtext mathvariant="italic">d&theta;</mtext>
              <mtext mathvariant="italic">dt</mtext>
            </mfrac>
          </mfenced>
          <mn>2</mn>
        </msup>
        <mo>-</mo>
        <mtext mathvariant="italic">r</mtext>
        <mo>&nbsp;</mo>
        <msup>
          <mfenced open="(" close=")">
            <mfrac>
              <mtext mathvariant="italic">d&phiv;</mtext>
              <mtext mathvariant="italic">dt</mtext>
            </mfrac>
          </mfenced>
          <mn>2</mn>
        </msup>
        <mo>&nbsp;</mo>
        <msup>
          <mtext mathvariant="normal">sin</mtext>
          <mn>2</mn>
        </msup>
        <mtext mathvariant="italic">&theta;</mtext>
      </mrow>
    </mfenced>
    <mo>&nbsp;</mo>
    <msub>
      <mtext>&ecirc;</mtext>
      <mtext>r</mtext>
    </msub>
  </mrow>
</math>

<br>
<br>

<math>
  <mrow>
    <mo>+</mo>
    <mfenced open="(" close=")">
      <mrow>
        <mtext>r</mtext>
        <mfrac>
          <mrow>
            <msup>
              <mtext mathvariant="italic">d</mtext>
              <mn>2</mn>
            </msup>
            <mtext mathvariant="italic">&theta;</mtext>
          </mrow>
          <mrow>
            <mtext mathvariant="italic">d</mtext>
            <msup>
              <mtext mathvariant="italic">t</mtext>
              <mn>2</mn>
            </msup>
          </mrow>
        </mfrac>
        <mo>+</mo>
        <mtext mathvariant="italic">2v</mtext>
        <mfrac>
          <mtext mathvariant="italic">d&theta;</mtext>
          <mtext mathvariant="italic">dt</mtext>
        </mfrac>
        <mo>-</mo>
        <mtext mathvariant="italic">r</mtext>
        <mo>&nbsp;</mo>
        <msup>
          <mfenced open="(" close=")">
            <mfrac>
              <mtext mathvariant="italic">d&phiv;</mtext>
              <mtext mathvariant="italic">dt</mtext>
            </mfrac>
          </mfenced>
          <mn>2</mn>
        </msup>
        <mo>&nbsp;</mo>
        <mtext mathvariant="normal">sin</mtext>
        <mtext mathvariant="italic">&theta;</mtext>
        <mtext mathvariant="normal">cos</mtext>
        <mtext mathvariant="italic">&theta;</mtext>
      </mrow>
    </mfenced>
    <mo>&nbsp;</mo>
    <msub>
      <mtext>&ecirc;</mtext>
      <mtext selected="true" mathvariant="italic">&theta;</mtext>
    </msub>
  </mrow>
</math>

<br>
<br>

<math>
  <mrow>
    <mo mathvariant="italic">+</mo>
    <mfenced open="(" close=")">
      <mrow>
        <mtext mathvariant="italic">r</mtext>
        <mfrac>
          <mrow>
            <msup>
              <mtext mathvariant="italic">d</mtext>
              <mn>2</mn>
            </msup>
            <mtext mathvariant="italic">&phiv;</mtext>
          </mrow>
          <mrow>
            <mtext mathvariant="italic">d</mtext>
            <msup>
              <mtext mathvariant="italic">t</mtext>
              <mn>2</mn>
            </msup>
          </mrow>
        </mfrac>
        <mtext mathvariant="normal">sin</mtext>
        <mtext mathvariant="italic">&theta;</mtext>
        <mo>+</mo>
        <mtext>2</mtext>
        <mtext mathvariant="italic">v</mtext>
        <mfrac>
          <mtext mathvariant="italic">d&phiv;</mtext>
          <mtext mathvariant="italic">dt</mtext>
        </mfrac>
        <mtext mathvariant="normal">sin</mtext>
        <mtext mathvariant="italic">&theta;</mtext>
        <mo>+</mo>
        <mtext>2</mtext>
        <mtext mathvariant="italic">r</mtext>
        <mfrac>
          <mtext mathvariant="italic">d&theta;</mtext>
          <mtext mathvariant="italic">dt</mtext>
        </mfrac>
        <mfrac>
          <mtext mathvariant="italic">d&phiv;</mtext>
          <mtext mathvariant="italic">dt</mtext>
        </mfrac>
        <mtext mathvariant="normal">cos</mtext>
        <mtext mathvariant="italic">&theta;</mtext>
      </mrow>
    </mfenced>
    <mo>&nbsp;</mo>
    <msub>
      <mtext>&ecirc;</mtext>
      <mtext selected="true" mathvariant="italic">&phiv;</mtext>
    </msub>
  </mrow>
</math>

<br>


</div>




<script type="text/javascript"
  src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>

<script type="text/javascript">
  MathJax.Hub.Queue(
  ["resetEquationNumbers",MathJax.InputJax.TeX],
  ["Typeset",MathJax.Hub]
);
</script>

这是为了解决我在Chrome中测试时才会看到的问题。在Firefox和Safari中查看代码时,我没有看到需要使用MathJax.Hub.Queue的问题。

1 个答案:

答案 0 :(得分:1)

我通过有效的mathjax用户组得到了答案。这是为了群众。

替换

<script type="text/javascript">
  MathJax.Hub.Queue(
  ["resetEquationNumbers",MathJax.InputJax.TeX],
  ["Typeset",MathJax.Hub]
);
</script>

<script type="text/javascript">
if (window.MathJax) {
  MathJax.Hub.Queue(
    ["resetEquationNumbers",MathJax.InputJax.TeX],
    ["Typeset",MathJax.Hub]
  );
}
</script>

或只是

<script type="text/javascript">
if (window.MathJax) {
  MathJax.Hub.Queue(
    ["Typeset",MathJax.Hub]
  );
}
</script>
  

它在MathJax加载之前到达第一位。

     

MathJax会在之后加载并使您的数学运算正常(而不是   需要上述内容,没有进一步的错误。

     

我建议尝试:

     

(1)删除“resetEquationNumbers,Typeset”位,因为它不是   必要并导致你的错误-Murray

  

第一次通过(当没有加载MathJax时),   没有打电话(第一遍就不需要电话,正如默里   指出),但会在第二次及以后进行   次按“第1部分”按钮,需要它们。注意   只有在使用时才需要resetEquationNumbers调用   自动方程式数字或使用\标签宏。但事实并非如此   如果你使用它会伤害任何东西。 -David

特别感谢mathjax谷歌用户组的Davide Cervone和Murray帮助我解决这个问题。