/ / Mathjaxはページがリロードされない限り方程式をレンダリングしません - ruby​​-on-rails、mathjax

ページがリロードされない限り、Mathjaxは方程式をレンダリングしません - ruby​​-on-rails、mathjax

私のアプリでそれをホストしている問題のためにCDNを介して私のrailsプロジェクトでmathjaxを使っています。

私はmathjaxを次のように使っています

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

パーシャルをレンダリングするdiv要素が1つあります。ユーザーがページ上でクリックしたボタンによって異なります。部分的な "その他"は他のものを持ち、部分的な "数学"は数学の方程式を持ちます。対応する部分音のためのボタンがあります。

ユーザーが初めて「数学」をクリックしたとき数学部分方程式は正しくレンダリングされます。ユーザーが[その他]をクリックしてから[数学]をもう一度クリックすると、数式が正しくレンダリングされません。生の数学の構文だけを示しています。

それは、MathJaxがページの読み込み時にのみ組版されているためかもしれないと読んでいましたが、レンダリングされた部分が変更されたときにフォーマットが変更される理由を理解できません。

だから私はそれが私の問題を解決するかどうかテストするために私がオンラインで見つけた次のものを加えた:

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

今それは私が望んでいたように動作します。ユーザーは、ページを再ロードせずに "Math"または "Other"パーシャルのボタンを任意の順序でクリックすることができ、方程式は正しくレンダリングされます。

問題は私がjsエラーを抱えていることです。

Uncaught ReferenceError: MathJax is not defined

上記のコード(MathJax.Hub.Queue ...をどのように使用しますか...)MathJaxが私のローカルサーバーではなくCDNを介して参照される場合また、MathJaxが定義されていないときに上記のコードを追加して問題が解決した理由もわかりません。

私は私が読んだものに基づいて問題を回避するためにローカル設定ファイルを設定する必要があると思います ドキュメント しかし、私はそれらを理解していません。誰かが助けることができますか?

これは数学の方程式の偏項です

<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

私はうまくいった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はあとでロードしてあなたの数学をOKにします(そしてしません) これ以上のエラーはありません)。

私はどちらかを試してみることをお勧めします:

(1) "resetEquationNumbers、Typeset"ビットを削除します。 必要であり、あなたのエラーを引き起こす

そして

初めての場合(MathJaxが起動していないとき))、 電話がかけられていない(そして最初のパスでは必要とされていない) を指摘しますが、呼び出しは2回目以降に行われます あなたが彼らが必要とされるところであなたが「パート1」ボタンを押す時。ご了承ください resetEquationNumbers呼び出しは、使用している場合にのみ必要です。 自動方程式番号またはラベルマクロを使用します。しかし、それはしません」 あなたがそれを使用するならば、何かを傷つけます。 - デビッド

これを手伝ってくれたmathjax google usersグループのDavide CervoneとMurrayに感謝します。