在blogdown的Rmd博客文章中LaTeX公式无法正常显示的问题
解决blogdown博客中LaTeX公式不渲染的问题
这种情况我碰到过好多次,主要原因通常和Hugo的渲染配置、主题的数学支持或者R Markdown的输出设置有关,下面逐个给你排查解决:
1. 先检查Hugo的Markdown解析器(Goldmark)配置
Hugo默认用Goldmark作为Markdown解析器,它默认可能没有开启对单美元符号$...$内联公式的支持,导致公式被当成普通文本转义。
你需要在博客根目录的config.toml(或config.yaml)里添加以下配置:
如果你用config.toml:
[markup.goldmark] [markup.goldmark.parser] [markup.goldmark.parser.inline] rawHTML = true # 允许主题加载MathJax/KaTeX的HTML脚本 [markup.goldmark.parser.inline.math] enabled = true singleDollar = true # 启用单$作为内联公式的分隔符
如果你用config.yaml:
markup: goldmark: parser: inline: rawHTML: true math: enabled: true singleDollar: true
保存配置后重新构建博客(blogdown::build_site()),这一步通常能解决大部分公式转义的问题。
2. 确保主题加载了数学渲染库(MathJax/KaTeX)
有些Hugo主题默认没有集成MathJax或KaTeX,即使你写对了公式语法,也没有引擎来渲染它。你可以手动在主题的头部或尾部添加渲染脚本:
选项1:添加MathJax(支持完整LaTeX语法)
找到主题的layouts/partials/header.html或footer.html,加入这段代码:
<script src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
选项2:添加KaTeX(轻量,渲染更快)
同样在header/footer里加入:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.8/dist/katex.min.css"> <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.8/dist/katex.min.js"></script> <script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.8/dist/contrib/auto-render.min.js" onload="renderMathInElement(document.body, {delimiters: [{left: '$', right: '$', display: false}, {left: '$$', right: '$$', display: true}]});"></script>
3. 确认R Markdown的输出设置
在你的Rmd文件开头的YAML部分,确保blogdown::html_page输出启用了mathjax:
--- title: "你的文章标题" output: blogdown::html_page: mathjax: true ---
不过注意:如果主题已经手动加载了MathJax/KaTeX,这里的mathjax: true可能会导致重复加载,反而出问题。如果添加了主题的脚本后公式还是有问题,可以试试把这个选项设为false。
4. 测试公式写法
确保你的公式语法正确:
- 内联公式用
$BDP = \sum S + \sum K + \sum D + \sum R + \sum A + \sum P$ - 块级公式(单独占一行)用
$$BDP = \sum S + \sum K + \sum D + \sum R + \sum A + \sum P$$
另外,避免公式里有多余的空格或转义字符,比如不要写成\(BDP = ...\)(这是原生HTML的公式写法,需要MathJax支持,但单$更通用)。
按上面的步骤逐一排查,应该就能解决公式不渲染的问题了。
内容的提问来源于stack exchange,提问作者Mislav
相关产品推荐
相关产品推荐

