KaTeXが日本語WordPressでうまく動かない!? 「¥問題」を完全解決する方法

webの仕組み
スポンサーリンク

🧩 はじめに

WordPressでKaTeXを使って数式を表示しようとしたとき、
なぜか式が分解されたり、まったく表示されなかったりしたことはありませんか?

実はそれ、日本語環境特有の「¥(円記号)問題」が原因です。
この記事では、なぜKaTeXが日本語WordPressで崩れるのか、そしてどうすれば直るのか
を実例つきで解説します。


💡 現象:数式が「バラバラ」または「無反応」

WordPressの投稿ブロックに次のような数式を書いた場合:

\( E_{\mathrm{pub}}(K_s) \to D_{\mathrm{priv}}(K_s) \)

エディタ上では「¥( E…」のように見えるのに、
プレビューでは ただのテキストとして表示されてしまう


⚙️ 原因:「¥」はバックスラッシュじゃない!

日本語IMEやWP Multibyte Patchは、内部で
U+005C(バックスラッシュ)U+00A5(円記号)
に変換することがあります。

KaTeXはバックスラッシュ(\)を構文の始まりと認識しますが、
円記号()はまったく別の文字なので、結果的に式を認識できません。


🧱 解決法:HTMLエンティティ \ を使う

HTMLでは、\ を安全に表すためのエンティティとして
\ が使えます。これをKaTeXの構文内に使えば確実に動作します。


✅ 正しい書き方(例)

- 鍵交換:\( E_{\mathrm{pub}}(K_{session}) \to D_{\mathrm{priv}}(K_{session}) \)
- \( E_{\mathrm{pub}}() \):公開鍵で暗号化
- \( D_{\mathrm{priv}}() \):秘密鍵で復号
- \( K_{session} \):セッション鍵(以降の通信を高速に暗号化)

見た目上は「¥( … )」と表示されますが、内部的には正しく \ として認識されます。


🧠 実際のレンダリング結果(KaTeX有効時)

  • 鍵交換:\( E_{\mathrm{pub}}(K_{session}) \to D_{\mathrm{priv}}(K_{session}) \)
  • \( E_{\mathrm{pub}}() \):公開鍵で暗号化
  • \( D_{\mathrm{priv}}() \):秘密鍵で復号
  • \( K_{session} \):セッション鍵(以降の通信を高速に暗号化)

💬 メモ帳経由で貼ると確実に動く理由

WordPressエディタ(特にGutenberg)は、
直接入力された \ をHTMLエスケープしてしまうことがあります。
ところが、メモ帳でUTF-8保存したテキストをコピペすると、
WordPressは「これはHTMLエンティティ」と認識し、変換をスキップします。

そのため、

見た目は「¥」でも中身は \ で保存される
という裏ワザ的な解決が可能です。


🧩 WP Multibyte Patch との関係

確かに一部関係しています。
WP Multibyte Patch は、日本語入力時に文字コード処理や全角⇔半角変換を調整するプラグインです。
しかしその過程で、投稿保存時にU+005CをU+00A5へ置換する副作用が起こるケースがあります。

対策:

  • WP Multibyte Patch は削除不要(必須プラグインです)
  • ただし KaTeX構文をHTMLエンティティ化する(\にする)
    ことで、WP Multibyte Patch の変換を安全に回避できます。

💬 まとめ

項目内容
原因 日本語環境では \ に置換される
影響KaTeX数式が無視・崩壊する
対策\ に置き換える(メモ帳経由で貼るのが確実)
関連WP Multibyte Patch が内部で置換に関与する可能性あり
結論日本語WordPressでは \ を使うのがベスト

🧩 次回予告

次回は「KaTeXをWordPressで使うための最適設定」
– MUプラグイン版 KaTeX Force Loader の仕組みとカスタマイズを解説します。