离散数学

||||
-|-|
:discourse2: | 摘要 | Discourse Math 使用 MathJax(默认)或 KaTeX 在您的 Discourse 论坛中渲染数学公式。
:open_book: | 安装指南 | 此插件已捆绑在 Discourse 核心代码中。无需单独安装该插件。

启用数学公式

可以通过其设置启用数学公式插件,访问路径为您的 admin/plugins 页面:

Math settings

功能

启用后,您可以使用单个 $ 包裹来渲染行内数学公式,例如:$E=mc^2$

您可以使用 $$ 包裹来渲染块级数学公式:

$$
\sqrt{(-1)} \; 2^3 \; \sum \; \pi
$$

Discourse Math 使用启发式算法来确保诸如 “I spent 20$ and another 100$” 这样的句子不会被转换。

LaTeX 定界符

通过站点设置启用后,您还可以使用标准的 LaTeX 定界符:

  • 行内: \(...\) - 示例:\(E=mc^2\)
  • 块级: \[...\] - 示例:
    \[
    \frac{1}{2}
    \]
    

AsciiMath(仅限 MathJax)

使用 MathJax 时,您可以启用 asciimath 处理,它使用 % 作为定界符:%E=mc^2%

编辑器集成

编辑器工具栏中包含一个 插入数学公式 按钮,快捷键为 Shift+M。这将打开一个模态窗口,您可以在其中:

  • 在行内模式和块级模式之间切换
  • 编写您的 LaTeX 表达式
  • 预览并插入到您的帖子中

在富文本编辑器中,数学公式显示为可编辑节点,并带有编辑按钮以修改表达式。

聊天支持

数学公式也会在 Discourse Chat 消息中使用相同的设置和渲染引擎进行渲染。

渲染引擎

MathJax(默认)

  • 版本: 4.1
  • 输出格式: HTML(默认)或 SVG
  • 功能:
    • 上下文菜单(右键点击数学公式)
    • 屏幕阅读器的无障碍增强
    • 按住 Alt 点击缩放(175% 缩放)
    • 支持 AsciiMath

KaTeX(替代方案)

  • 功能:
    • 快速渲染
    • 用于化学方程式的 Mhchem 扩展
    • CopyTex 扩展 - 点击数学公式可将 LaTeX 源代码复制到剪贴板
    • 支持使用 \label\ref\eqref 宏进行交叉引用

站点设置

通过在管理员设置中搜索 “math” 查看所有相关站点设置。

| 名称 | 描述 |
|-|
| discourse math enabled | 启用 Discourse Math 插件(为 $ 和 $$ 块添加特殊处理) |
| discourse math provider | 数学渲染提供程序:mathjax(默认)或 katex |
| discourse math enable latex delimiters | 启用 LaTeX 风格定界符:行内数学使用 \(...\),块级数学使用 \[...\] |
| discourse math mathjax output | MathJax 输出格式:html(默认)或 svg(仅限 MathJax) |
| discourse math enable menu | 启用数学公式的上下文菜单(仅限 MathJax) |
| discourse math enable accessibility | 启用无障碍功能,如文本增强(仅限 MathJax 且启用菜单时) |
| discourse math zoom on click | 按住 Alt 点击时缩放 175%(仅限 MathJax 且启用菜单时) |
| discourse math enable asciimath | 启用 asciimath 处理,使用 % 定界符(仅限 MathJax) |

:discourse2: 由我们托管?此插件在我们所有的托管套餐中均可用 Math | Discourse - Civilized Discussion

70 个赞

2 个帖子已拆分到新主题:添加对 MathJax 电子邮件格式的支持

2 个帖子被拆分到新主题:Can Mathjax be upgraded to Version 3?

6 个帖子被拆分到新主题:为数学公式的 LaTeX 风格块和内联添加支持

一篇帖子被拆分到新主题:块中公式无法正确渲染

一个帖子被拆分到了新主题:预览中数学公式无法渲染

15 个帖子已拆分到新主题:数学和人工智能的变通方法

26 个帖子已拆分到新主题:将 Mathjax 升级到 4.0 版本

在 Discourse Math 中迁移到较新的 MathJax (v4.1) 集成后,我有一个快速的(积极的)现实世界的反馈。

我注意到的一项生活质量改进是,当输入无效或宏未定义时,MathJax 现在会提供非常具体、局部的反馈

  • 它仍然正确地渲染周围有效的结构(例如 \frac{...}{...}、括号等)
  • 但它会字面意义上将未识别的命令显示为可见(例如,将 \sinc 显示为文本),而不是使整个表达式失败或产生令人困惑的部分错误。

在实践中,这使得需要修复的内容一目了然,而不会掩盖已经正确的部分——这在教学环境和迭代包含大量数学内容的帖子时尤其有帮助。

例如,与其依赖定义了 \sinc,不如采用稳健的方法将其明确编写为运算符:

\frac{\Delta}{T}\operatorname{sinc}\! \left(\frac{\omega_r\Delta}{2}\right)

其中:

\operatorname{sinc}(x)=\frac{\sin x}{x}

总的来说,与旧的/不那么透明的失败模式相比,这种“渲染你能渲染的,清晰地显示其余部分”的行为感觉是可用性上的一个巨大胜利。感谢所有参与 MathJax 升级工作的人员。

3 个赞

只是想提醒所有通过 Google 来到这里的用户:此插件不适用于免费托管套餐。:expressionless_face:

您好,我理解您的沮丧。很抱歉您有这种感觉。对于未来的情况,您可以在此查看各计划对应的插件目录:此处

数学插件在该页面上被列为专业版/商业版/企业版插件。因此,有人可能会误以为它适用于免费计划。我并非建议您应免费提供该插件,只是认为应该将其说明得更加清晰一些。

1 个赞

没错。Discourse pricing | Discourse - Civilized Discussion 页面列出了所有套餐及其限制,包括插件,您可以快速查看哪些插件被允许使用。

1 个赞

我发现了一个新工具 RaTeX,
它用 Rust 编写,与 Katex 100% 兼容。

GitHub - erweixin/RaTeX: >99.5% KaTeX syntax coverage. LaTeX math renderer in pure Rust. No JavaScript, no WebView, no DOM. One Rust core → iOS, Android, Flutter, Web, PNG. C ABI · WASM · Server-side PNG/SVG. · GitHub

它可能是一个不错的替代品。