Discourse Math

もちろんです、コードがあれば非常に役立ちます。おそらくDiscourseをフォークして、変更をブランチにプッシュしてもらい、それから私があなたのブランチからPRに変更を取り込むことができます。

この問題の診断に取り組んでいて、進捗があったことを大変嬉しく思います。

最新版もプルしていただけますか?クリーンアップを行いました。

「いいね!」 1

OK、こちらがコードです。

ただし、最新のコミットから直接作業したわけではないことに注意してください。Discourseのメインから直接開始し、そこから変更を加えました。したがって、あなたの作業からかなりのことを学びましたが、全体的な構造は異なります。

主な違いは次のように要約できると思います。あなたが(当然ながら)読み込みや組版に関連するタイミングを調整するためにEmberから継承したDiscourseの機能を使用しているのに対し、私はMathJaxの機能を使用しています。そのため、私のload-mathjaxmathjaxバンドル(SVG用とchtml用)はあなたのものよりもはるかに単純です。読み込みはすべてdiscourse-math-mathjax内のwindow.MathJaxオブジェクトを介して調整されます。

以前説明したのと同じ問題がまだあります。つまり、このコメントアウトされたローダーが機能せず、代わりにこのCDNバージョンを使用しなければならないということです。なぜなのか本当にわかりません。

あなたのコードも同じ問題を抱えていると思います。それがAsciiMathが機能しない理由でしょう。

「いいね!」 1

最新のコミットを確認してもらえますか?Ember用のファネルを追加したので、Emberビルドがすべてのファイルを正しい場所に配置するはずだと思います。

「いいね!」 2

OK、非常に良いニュースと、少々厄介なニュースがあります。

まず、funnelを追加することで、それらのファイルが正しい場所に配置されるというのは、全くその通りです。私のブランチにfunnelを追加したところ、CDNへの依存なしで素晴らしい動作をするようになりました。 :tada:

残念ながら、現時点ではあなたのコードを実行することができません。数式のあるページに移動するたびに、数式が組版されず、コンソールに次のエラーメッセージが表示されます。
Uncaught (in promise) Error: State EXPLORER already exists

以前はあなたのコードが動作していたことは確かですので、何か私がしたことなのだろうと思います。はっきりさせておきますが、Install Discourse on macOS for developmentで説明されている手順を使って、完全に新しいディレクトリを使い始めました。

git clone https://github.com/discourse/discourse.git ./discourse
cd ./discourse
bundle install
pnpm install
bundle exec rake db:create
bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate

# 1つ目のターミナルで
bundle exec rails server

# 2つ目のターミナルで
bin/ember-cli

その後、次のようにあなたのコードを取得しました。

git checkout 71ad0305f812311f2a4570edf7c33f97de46c457
git switch -c mathjax-sam

そのクリーンなセットアップからでさえ、エラーが発生します。


この時点で、自分のバージョンのコードにはかなり満足していますが、あなたのコードで何が起こっているのかについてはまだ興味があります。しかし、休暇のためにこれからは休憩する必要があります。数日後にまた確認できれば幸いです。

最後に一点だけ:私の知る限りでは、

await import("tex-mml-chtml.js") // その後に
await import("input/asciimath.js")

は動作しないはずですが、これはあなたのコードがやっていることと実質的に同じだと私は思っています。

パスについては不正確かもしれませんが、私の言いたいのは、importへの連続した動的な呼び出しが正しいMathJax構造につながるかどうかはわからないということです。MathJaxコンポーネントの読み込みは非常に複雑で、だからこそMathJaxオブジェクトなどを使った非常に詳細な読み込みプロセスがあるのだと思います。

手伝ってくれて、そして辛抱強く付き合ってくれて本当にありがとう、@sam!

「いいね!」 1