Mathjaxをバージョン4にアップグレードする

以下は、この開発バージョンでのAIによる数式校正の例です。

ProofreadMathAI

ユーザーは、マークダウンエディタ内の特定の数式を選択し、校正をリクエストすることができます。新しい数式エディタにも、そのオプションがあると良いでしょう。

「いいね!」 1

@sam 新しいプラグインで KaTeX がうまく動作していないようです。確認してみると、明らかにフォントが見つからない問題であり、コンソールも多数のフォント (Woff-v2) ファイルが見つからないことを示しています。

フォントは実際には正しい場所に存在しており、スタイルシートに隣接する「fonts」という名前のフォルダー内にあるはずです。例えば、私の開発バージョンでは、次の 2 つのファイルが存在します。
http://localhost:4200/plugins/discourse-math/katex/katex.min.css
および
http://localhost:4200/plugins/discourse-math/katex/fonts/KaTeX_Size2-Regular.woff2

コンソールのネットワークタブを見ると、次のようなものをダウンロードしようとしているようです。
http://localhost:4200/t/my-topic/fonts/KaTeX_Size2-Regular.woff2

したがって、ブラウザはトピックの URL に隣接する「fonts」フォルダーを探しており、これは明らかに間違っています。

これはすべて、katex-bundle で定義されている loadKaTeX 関数に関係していると思われます。これは KaTeX を標準的ではない方法で読み込んでいるため、KaTeX が CSS ファイルがどこにあるのかを実際には認識できていないのだと思います。しかし、修正方法がわかりません。

「いいね!」 2

マークさん、本当にありがとうございます。コミットをマージしました。Katexの件は今日確認します。

これは校正者のペルソナのためのカスタムプロンプトによるものだけですか?

ご心配なく、マークと私で対応します。

「いいね!」 3

どちらの件も素晴らしいです!

その通りです、まさにそれです。「校正 (Proofread)」が私が望む動作に十分近い説明であることは、明らかに幸運です。

「いいね!」 3

KaTeX の修正をプッシュしました。動作するか教えてください。CSS ファイル内の相対リンクが、スタイルシートを埋め込んでいるために互換性がないため、@david に確認してもらう必要があります。

「いいね!」 2

注、元の数学トピックでは少し紛れて騒がしくなってきたため、これを新しい専用のトピックに移動しました。このアップグレードを非常に楽しみにしています。私たちは非常に近づいていると感じています。

「いいね!」 5

最新のコミットで KaTeX は問題なく動作しているようです!

いくつかのテストが合格していないように見えますが、機能はすべて備わっているという点には同意します。

私もワクワクしています!:rocket:

「いいね!」 4

この新しいバージョンを試したくてうずうずしている人、または(私のように)数日後にそれを使用するクラスがあるので待ちきれない人は、こちらのスタンドアロンバージョンをインストールできます。

私はこれをこのコミットに基づいており、MathJaxを内部からではなくCDNから描画するように変更したと思います。

私のDiscourseサイトのこちらの投稿で動作を確認できます。

「いいね!」 1

このアップグレードは、MathJax のアップグレードを大幅に超えるものであることを指摘しておく価値があると思います。また、次のことも含まれます。

「いいね!」 2

@sam@david

このプルリクエストがマージされたのを確認しました。また、お二人ともこの件を完了させるためにかなりの労力を費やしてくださったことにも気づきました。本当にありがとうございます!

私はまだこのバージョンをインストールするつもりはありません。なぜなら、私のDiscourseサイトではすでに十分に機能しているからです。しかし、いくつか質問があります。

  1. リリーススケジュールについて:コードはすでにGitHubのmainブランチにあります。今日、Discourseの新規インスタンスをインストールした場合、自動的にこの最新バージョンのmathプラグインが適用されることになると思います。これは正しいでしょうか?
  2. ローダーについて:コードから判断する限り、コアで loadMathjax および loadKatex 関数を定義するというアイデアは放棄されたようです。最新バージョンは loadScript に戻っているように見えますが、そのスクリプトがどこから来ているのかが私には不明です。これは正しいでしょうか?もしそうなら、その理由はなぜでしょうか?

重ねて感謝いたします!

「いいね!」 3

現在、数式が多用されている本番環境のインスタンスで、latest-release +17 を使用しています。

[grid] が Meta 上で正常に動作するようになったのは本当に嬉しいです。これは数式密度の高い投稿にとって大きなQoL(クオリティ・オブ・ライフ)の改善です。[center] は必要に応じて妥協するつもりです。

参考までに、以前 [grid] / [details] 内のインライン数式に関していくつかのエッジケースに遭遇したことがあり、ここに文書化しました(まだ役立つ場合に備えて):

MathJax 4 アップグレードに取り組んでいるすべての方々に改めて感謝します。このレベルの洗練が実現しているのを見るのは素晴らしいことです。

「いいね!」 2

$$\dots$$ の中で \begin{align}...\end{align} を使用すると、MathJax の「数式構造の誤ったネスト」というエラーが表示されます。これは、v4 アップグレード作業中に MathJax が「数式環境をネストしない」というルールをより厳密に適用しているようです。

実際には、信頼できる Discourse のパターンは $$ ラッパー内で aligned を使用することです。

$$\n{\large\n\begin{aligned}\na \u0026= b \\\\\n  \u0026= c\n\\end{aligned}\n}\n$$\n```

これにより、別の表示ラッパー (`$$...$$`) の中に表示数式構造 (align) をネストすることが回避され、エラーがトリガーされなくなります。
「いいね!」 1

@Ethsim2 さんの分析に同意します。

この動作は MathJaxV4 および純粋な LaTeX と一致しているため、ここに「バグ」はないと思われます。ただし、align よりも aligned の使用が推奨されることは間違いなく指摘する価値があります!

「いいね!」 1