如果按照 Hexo添加KaTeX插件 仍未生效,可能是某些环节配置错误或冲突导致
1. 检查关键依赖安装
确保以下依赖已正确安装:
1 | # 确保渲染器和插件存在 |
2. 确认 Hexo 全局配置
在 Hexo 根目录的 _config.yml
中,检查 markdown-it
的配置:
1 | markdown: |
3. 检查 Next 主题配置
在 themes/next/_config.yml
中,确保以下配置:
1 | # 关闭 MathJax 和默认的数学公式渲染 |
4. 验证资源加载路径
(1) 检查 CSS 和 JS 是否引入
-
CSS 位置:
打开生成的网页,按F12
进入开发者工具 →Network
标签 → 刷新页面,检查是否有katex.min.css
的请求。若未加载,说明主题模板未正确插入 CSS。 -
JS 位置:
同样检查katex.min.js
和auto-render.min.js
是否加载。如果未加载,检查主题模板文件的修改是否正确。
(2) 修复资源路径
-
如果使用的是旧版 Next 主题,模板文件路径可能是
.swig
或.njk
,确保修改了正确的文件:- CSS:
themes/next/layout/_partials/head/head.njk
(或.swig
) - JS:
themes/next/layout/_partials/footer.njk
(或.swig
)
- CSS:
-
手动指定最新版本 CDN(避免缓存问题):
1
2
3
4
5
6
7<!-- CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css" integrity="sha384-n8MVd4RsNIU0tAv4ct0nTaAbDJwPJzDEaqSD1odI+WdtXRGWt2kTvGFasHpSy3SV" crossorigin="anonymous">
<!-- JS -->
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js" integrity="sha384-XjKyOOzGykjIg/xn6ACkxIRv6gm2t6/E2lbLU5ZqH7sBE4k1pL5qfhMcJcH4dZnF" crossorigin="anonymous"></script>
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js" integrity="sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCkM5qKq6gYVvokzNvAQu3fT8KX4l" crossorigin="anonymous"
onload="renderMathInElement(document.body, { delimiters: [{left: '$$', right: '$$', display: true}, {left: '$', right: '$', display: false}] });"></script>
5. 检查文章 Front-matter
在需要渲染公式的文章头部,确保已添加 katex: true
:
1 |
|
6. 处理特殊符号转义
如果公式中的 _
或 *
被错误转义,需调整渲染器配置:
1 | # Hexo 根目录的 _config.yml |
7. 清理缓存并重新生成
Hexo 的缓存可能导致修改未生效:
1 | hexo clean && hexo generate --debug |
生成后,检查 public
目录下对应文章的 HTML 文件:
- 搜索
katex.min.css
和katex.min.js
,确认资源已插入。 - 检查公式是否被包裹在
<span class="katex">...</span>
中。
8. 常见问题排查
(1) 公式被渲染为纯文本
- 原因:KaTeX 资源未加载或初始化失败。
- 解决:按
F12
打开控制台,查看是否有ReferenceError
或资源加载错误。如果发现renderMathInElement is not defined
,说明auto-render.min.js
未正确加载。
(2) 公式显示错乱
-
原因:
$
或$$
定界符被其他插件干扰。 -
解决:在
markdown-it
配置中强制指定定界符:1
2
3
4
5
6
7
8# Hexo 的 _config.yml
markdown:
plugins:
- name: "@traptitech/markdown-it-katex"
options:
delimiters:
left: '$', right: '$', display: false
left: '$$', right: '$$', display: true
(3) 与代码高亮冲突
- 原因:某些代码块语法与 KaTeX 冲突。
- 解决:在公式前后添加空行,避免与其他内容粘连。
9. 终极测试
创建一个最简单的测试文章,内容如下:
1 | --- |
如果仍不生效,可能是主题兼容性问题。尝试:
- 更新 Next 主题到最新版。
- 换用其他 KaTeX 集成方案(如 hexo-filter-mathjax)。
按以上步骤逐一排查,可解决 99% 的 KaTeX 未生效问题。如果问题依旧,请提供以下信息:
- 浏览器控制台截图(Network 和 Console 标签)。
- 测试文章的生成后的 HTML 片段。
- Hexo 和 Next 主题的版本号。