嵌入式帖子中的数学无法渲染

我的网站上嵌入了部分帖子,但其中的数学公式在嵌入内容中无法渲染。

使用旧版插件时,我们可以通过修补 embed.js.erb 文件来实现数学公式的渲染。对于 discourse-math,是否有办法让它在嵌入内容中正常工作?

这里有一个示例(请滚动到底部)。

谢谢!

看起来解决方案就在你引用的 GitHub 线程的最后一条评论中:

你试过吗?

是的,这适用于旧版的第三方扩展 discourse-mathjax。不过,Discourse 已自行实现了 discourse-math 扩展,该方案在此不再适用。

我不认为问题出在插件上。新插件仍然使用数学 spans(你可以查看页面源代码来确认),因此该解决方案应该仍然有效。自那以后可能发生变化的,是 Discourse 代码嵌入帖子方式。

为明确起见,我的意思是这个补丁是否仍然有效?

@@ -70,5 +70,11 @@
   </head>
   <body>
     <%= yield %>
+    <script type="text/x-mathjax-config">
+       MathJax.Hub.Config({
+        extensions: ["jsMath2jax.js"]
+      });
+    </script>
+    <script src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
   </body>
 </html>

目前,我在您的嵌入式评论部分没有看到相关代码?
您能否确认您确实应用了该补丁?

./launcher enter app
cat app/views/layouts/embed.html.erb

那个补丁的问题可能在于它试图从 mathjax.org 加载 JavaScript,而我认为当前版本的 Discourse 默认会阻止此类请求?你可能需要将 https://cdn.mathjax.org 添加到站点设置的 cors origins 中。

2 个赞

就是这样!现在,cors origins 站点设置是在我的 Discourse 服务器上,还是在我嵌入内容的 Web 服务器上?

这是 Discourse 设置之一。

2 个赞

这对我解决了问题!非常感谢你的帮助;我从未想到过安全相关的站点设置。

非常感谢!

2 个赞

我在想我们是否可以在这里做得更好。@sam,插件是否有办法以某种方式修改 app/views/layouts/embed.html.erb?这样 Discourse 就能在嵌入的 iframe 中加载 MathJax/KaTeX 的 JS 文件。

我当然支持进行这样的更改。不过,我们可能需要在核心中添加某种钩子,例如:(也许是在 discourse/lib/discourse_plugin_registry.rb at 7829558c6d42b5f0dfbb0c2351fb332a940d651e · discourse/discourse · GitHub 中添加一个 embed_javascripts)。

4 个赞

此主题已在 1236 天后自动关闭。不允许回复。