You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jekyll中无需div标签用Kramdown渲染MathJax公式?

解决Jekyll+Kramdown+MathJax的公式渲染问题

我完全懂你的无奈——过时的文档真的坑死人,明明Kramdown宣称支持MathJax,结果直接写公式就是不渲染,还得套div绕路。其实问题出在Kramdown的配置没到位,加上你用的是旧版MathJax,导致解析链断了。给你一套流畅的配置方案,一步到位解决:

1. 先在_config.yml里配置Kramdown的数学引擎

Kramdown默认虽声称支持MathJax,但默认可能没启用对应的解析规则。打开站点根目录的_config.yml,添加或修改这段配置:

kramdown:
  math_engine: mathjax  # 告诉Kramdown识别数学公式语法
  syntax_highlighter: rouge  # 可选,常用代码高亮工具,不影响数学渲染

这个配置会让Kramdown自动识别$$...$$(块级公式)和$...$(行内公式),把它们转换成MathJax能正确处理的结构,不需要再套div避开Markdown解析。

2. 更新MathJax到v3版本(替换你旧的脚本)

你用的MathJax v2已经停止维护了,v3不仅性能更好,配置也更灵活。把布局文件里的MathJax引入代码换成下面这段:

{% if page.math %}
<script>
MathJax = {
  tex: {
    inlineMath: [['$', '$'], ['\\(', '\\)']],  // 行内公式的触发标记
    displayMath: [['$$', '$$'], ['\\[', '\\]']]  // 块级公式的触发标记
  }
};
</script>
<script async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
{% endif %}

这里的配置是让MathJax和Kramdown的语法标记完全匹配,确保解析无缝衔接。

3. 正常写公式就行,不需要套div

现在你在Markdown页面里直接写公式就可以了:

# 测试数学渲染

块级公式:
$$ a + b = c $$

行内公式:这是一个简单的方程 $x = y + z$,直接嵌入文本里。

为什么之前套div能生效?

因为Kramdown不会解析<div>标签内部的Markdown内容,所以$$会原封不动传给MathJax,相当于绕开了Kramdown的解析。但这是治标不治本的办法,正确配置后完全不需要这么做。

如果还是有问题,检查这两点:

  • 页面顶部的math: true有没有加对
  • 有没有其他Markdown语法和公式冲突(比如公式前后有没有多余的空格?不过Kramdown对空格容忍度很高)

内容的提问来源于stack exchange,提问作者shevket

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 11:12:41