このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

はてなブログでもXyJaxが使える、のか?

はてなブログでもXyJaxが使える」で、自前で設定をすることによってXyJaxが使える、と書きました。確かに使えるのですが、問題もありますね。

XyJaxの使用は、「はてなブログ」がサポートしているものではないので、「はてなブログ」オリジナルのMathJax機能と競合することになります。カスタム設定のMathJaxと「はてなブログ」オリジナルのMathJaxが、どのように相互作用するかは不明です。お互いに悪さをして不具合が発生する可能性があります。

実際、複数記事をまとめて表示したときは、TeXコードの一部または全部が生で表示されます。レンダリングの一部または全部が欠けることになります。単一記事なら、今のところうまく表示されています。[追記]これはブラウザ依存の現象のようです。[/追記]

はてなブログ」オリジナルのTeXブロックの構文 [​tex: ‥‥ ] とカスタム設定のTeXブロックの構文 $​` ‥‥ `​$(インライン数式)、$​$ ‥‥ $​$(ディスプレイ数式)は共存できません。一箇所でも [​tex: ‥‥ ] を使うと、カスタム設定の構文は使えなくなります。

そこで、XyJaxを使う記事内ではカスタム設定の構文で書けばいいと思いました。が、「はてなブログ」の仕様変更があって、カスタム設定やその構文が無効になるリスクがあります。一時期「はてなブログ」で、インラインTeXブロックを \​( ‥‥ \​) と書けたのですが、今はダメです。正式にサポートされている構文は [​tex: ‥‥ ] だけです*1

カスタム設定をして、[​tex: ‥‥ ] 内にXyJaxコード(構文はXyPic)を書くと、これはレンダリングされるようです。この方法だと、仮に仕様変更でカスタム設定が無効になっても、表示されなくなるのはXyJaxコードだけなので、リスクが少ないと言えるでしょう。

以下は、[​tex: ‥‥ ] 内にXyJaxコードを書いています。


\xymatrix{
  U \ar@/_/[ddr]_y \ar@/^/[drr]^x\ar@{.>}[dr]|-{(x,y)} \\
  & X \times_Z Y \ar[d]^q \ar[r]_p & X \ar[d]_f \\
  & Y \ar[r]^g & Z
}

この方法にも嫌な問題があります。「はてなブログ」構文だと、閉じブラケット ']' がTeXブロックの終端なので、TeXコード内の閉じブラケットはエスケープする('\]' と書く)必要があります。XyJaxはブラケットを多用するので、エスケープはけっこうシンドイです。

以下に、もとのXyJaxコードとブラケットをエスケープしたコードを並べます。

\xymatrix{
  U \ar@/_/[ddr]_y \ar@/^/[drr]^x\ar@{.>}[dr]|-{(x,y)} \\
  & X \times_Z Y \ar[d]^q \ar[r]_p & X \ar[d]_f \\
  & Y \ar[r]^g & Z
}
\xymatrix{
  U \ar@/_/[ddr\]_y \ar@/^/[drr\]^x\ar@{.>}[dr\]|-{(x,y)} \\
  & X \times_Z Y \ar[d\]^q \ar[r\]_p & X \ar[d\]_f \\
  & Y \ar[r\]^g & Z
}

はてなブログ」オリジナルでは、https​://cdn.blog.st-hatena.com/js/external/mathjax からMathJaxをロードします。カスタム設定では、https​://cdn.jsdelivr.net/npm/mathjax@2/ と https​://cdn.mathjax.org/mathjax/contrib/ からロードします。これらは重複してロードされている可能性があります。いずれにしても xyjax/xypic.js は余分にロード(と初期化)が必要です。

このため、Webページが遅くなるかも知れません。僕の環境では体感で分かるほどではないですが、影響が出る環境もあるでしょう。

というわけで、「はてなブログでもXyJaxが使える」と言っても一筋縄ではいかないですね。