5

現在、squarespace を使用して新しい Web サイトを作成しようとしています。MathJaxを使用して数学をタイプセットしたいと考えています。これは、SE が物理学で数学をレンダリングするために使用するのと同じエンジンです。たとえば、SE です。

MathJax を使用する標準的な方法は、MathJax を使用したいページのヘッダーに特定のコード スニペットを配置することです。Squarespace サイトのすべてのページのヘッダーに目的のコードを挿入できる「コード インジェクション」機能を使用して、Squarespace でこれを実行しようとしましたが、数学がレンダリングされていないようです。

この人は、私が上で概説した手順を実行したと主張していますが、彼が示唆するように目的の数式を HTML コード ブロックに入力した後、MathJax は機能していないようです。以下はコードサンプルです。

JavaScript:

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

HTML:

When \(a \ne 0\), there are two solutions to \(ax^2 + bx + c = 0\) and they are
$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$

アップデート。MathJax は上記の手順 (つまり、html コード ブロックに入力した場合) を使用して実際に適切にレンダリングされるように見えますが、squarespace アカウントにログインしているときではなく、訪問者としてサイトを表示している場合に限ります。

4

2 に答える 2

1

上記の答えは、競合状態のためにうまくいきませんでした。Squarespace が Markdown ブロックをレンダリングする方法は、実行時にそれらを処理し、出力 HTML をオンザフライで DOM に挿入することです。MathJax API を呼び出してページをタイプセットした後にこれが発生した場合、新しく挿入された要素はタイプセット出力ではなく生の LaTeX を表示します。

これに対処するために、代わりにこれをフッターに入れました。

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

<script>
document.addEventListener("DOMNodeInserted", function(event){
  var element=event.target;
  MathJax.Hub.Queue(["Typeset",MathJax.Hub,element.parent]);
});

MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
</script>

このコードを使用する場合、無限ループを回避するために、HTML 要素の Markdown ブロック内で LaTeX をラップしないように十分注意する必要があります。

更新: MathJax CDN がシャットダウンしたため (および、Markdown ブロック内の LaTeX が上記で示唆した問題を修正できるようにするため)、現在使用しているコードは次のとおりです。

<script type="text/javascript" async
src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<script>
document.addEventListener("DOMNodeInserted", function(event){
  var element=event.target;
  if (element.tagName.toLowerCase()!= 'script') {
    MathJax.Hub.Queue(["Typeset",MathJax.Hub,element.parent]);
  }
});

MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
</script>
于 2016-09-08T14:22:47.093 に答える