在 Hexo 中修改 KaTeX 的界定符(定界符)
主要涉及 两个位置:主题模板文件和 KaTeX 初始化脚本。
以下是详细操作步骤:
1. 修改位置:主题的 footer 模板文件
KaTeX 的界定符配置在初始化脚本中,通常位于 Next 主题的 footer 模板文件中。
文件路径:
1  | themes/next/layout/_partials/footer.njk  | 
操作步骤:
- 
打开对应的
footer文件(根据你的主题模板引擎,可能是.njk或.swig)。 - 
找到引入
auto-render.min.js的脚本,修改delimiters参数:1
2
3
4
5
6
7
8
9
10
11
12<script>
document.addEventListener("DOMContentLoaded", function() {
renderMathInElement(document.body, {
delimiters: [
// 修改这里的 left 和 right 值
{left: '$$', right: '$$', display: true}, // 块级公式
{left: '$', right: '$', display: false} // 行内公式
],
throwOnError: false // 忽略公式错误
});
});
</script> - 
将
left和right的值改为你想要的界定符。例如:- 
改用
\(...\)和\[...\](LaTeX 标准风格):1
2
3
4delimiters: [
{left: '\\[', right: '\\]', display: true}, // 块级公式
{left: '\\(', right: '\\)', display: false} // 行内公式
] - 
改用自定义符号(如
@...@):1
2
3
4delimiters: [
{left: '@@', right: '@@', display: true}, // 块级公式
{left: '@', right: '@', display: false} // 行内公式
] 
 - 
 
2. 同步修改 Markdown 中的公式写法
修改界定符后,需在文章的 Markdown 中使用新的定界符。例如:
- 
原写法:
$E = mc^2$和$$\sum_{i=1}^n i$$ - 
修改后(使用
\(...\)和\[...\]):1
2
3
4
5
6行内公式:\\(E = mc^2\\)
块级公式:
\\[
\sum_{i=1}^n i
\\] 
3. 处理转义问题
如果界定符包含特殊字符(如 \ 或 @),需确保 Markdown 渲染器不会转义它们:
(1) 在 Hexo 的 _config.yml 中配置
1  | markdown:  | 
(2) 转义反斜杠(仅限 \( 和 \[ 场景)
在 Markdown 中,如果使用 \(...\) 或 \[...\],需在公式中写双反斜杠:
1  | \\[  | 
4. 测试修改结果
- 
清理缓存并生成:
1
hexo clean && hexo g
 - 
启动本地服务器预览:
1
hexo s
 - 
检查公式是否按新界定符渲染,打开浏览器控制台(F12):
- 确保无 JS 报错。
 - 检查公式是否被正确包裹(如 
<span class="katex">)。 
 
5. 常见问题
问题1:修改后公式未渲染
- 原因:界定符修改未同步到所有位置(如文章中的公式未改用新符号)。
 - 解决:全局搜索旧界定符(如 
$),替换为新的。 
问题2:\ 被转义为 \\
- 
原因:Markdown 渲染器自动转义了反斜杠。
 - 
解决:在 Hexo 配置中关闭转义:
1
2
3markdown:
html: true
typographer: false # 关闭智能符号转换 
问题3:与代码高亮冲突
- 现象:
@或\被代码语法高亮干扰。 - 解决:避免使用与代码语法冲突的界定符(如 
`或*)。 
示例配置
目标界定符
- 行内公式:
\\(...\\) - 块级公式:
\\[...\\] 
修改后的 footer 模板脚本
1  | <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js"  | 
对应的 Markdown 公式写法
1  | 行内公式:\\( \sqrt{2} \approx 1.414 \\)  | 
通过以上步骤,即可自定义 KaTeX 的界定符,解决与其他语法(如 Markdown 表格、代码块)的冲突问题。