Discourse Math

当然,代码在这里会非常有帮助,也许可以 fork discourse 然后将你的更改推送到一个分支,这样我就可以从你的分支拉取更改到 PR 中。

很高兴看到你取得了进展,正在努力诊断这个问题。

你也能拉取最新的代码吗,我做了一轮清理。

1 个赞

好的,这是代码:

不过请注意,我不是直接从你的最新提交开始的。我是直接从 Discourse 主分支开始并在其上进行更改的。因此,我从你的工作中学习了不少,但整体结构有所不同。

我认为你可以将主要区别总结如下:你在协调与加载和排版相关的时间安排方面(很自然地)使用了从 Ember 继承的 Discourse 功能,而我使用了 MathJax 的功能。因此,我的 load-mathjaxmathjax 捆绑包(一个用于 svg,一个用于 chtml)比你的要简单得多。加载完全是通过 discourse-math-mathjax 中的 window.MathJax 对象协调的。

我仍然存在我之前描述的同一个问题,即 这个被注释掉的加载器 不起作用;我必须使用 这个 CDN 版本 才能工作。我真的不知道为什么。

我认为你的代码也存在同样的问题。这就是 AsciiMath 似乎不起作用的原因。

1 个赞

你能检查一下我最新的提交吗?我想我为 Ember 添加了一个漏斗(funnel),所以 Ember 构建现在会将所有文件放在正确的位置。

2 个赞

好的,我有一个非常好的消息和一个令人沮丧的消息。

首先,你说得完全正确,添加 funnel 将这些文件放在了正确的位置。我在我的分支中添加了 funnel,现在它在没有 CDN 依赖的情况下运行得非常好。:tada:

不幸的是,我目前无法运行你的代码。每当我导航到包含数学内容的页面时,数学内容都不会被排版,并且我在控制台中看到了以下错误消息:
Uncaught (in promise) Error: State EXPLORER already exists

我确信我之前让你的代码可以工作,所以我想这可能是我做错了什么。但话说清楚,我确实是使用在 macOS 上为开发安装 Discourse 中描述的技术,从一个全新的目录开始的。

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

# 在一个终端中
bundle exec rails server

# 在另一个终端中
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 个赞