在hugo中通过使用mathjax来显示公式

hugo显示数学公式有两种方式:katex和mathjax。两种方式都很难成功。

先说结果,只有mathjax成功了,方法见Hugo 静态博客中迄今为止最佳数学公式支持-利用 MathJax & MMark,如果你使用的时候发现并没有完全生效(主要就是_&\\会被html渲染)。请查看你采用的主题中是否在其他地方加载了mathjax或者katex,找到它并删掉它就行。

解决方案:假设你的主题名为hyde,那么你要在themes/hyde/layouts/partials下的head.html或者header.html或者footer.html(我觉得用head.html比较好)中添加一行代码:<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.6/MathJax.js?config=TeX-MML-AM_SVG"></script>。添加位置为倒数第二行,即在</head>或者</header>或者</footer>的前面一行就行。

当然你也可以用其他的cdn,我觉得cloudflare的速度还算可以,另外MathJax3好像更改了很多东西,不确定是否可用。

另外由于我的主页会集成其他文章的内容,我遇到了一个问题,我的某篇文章中为我用latex生成的一个线路图提供了latex代码,本来这个代码是使用了markdown的代码标记的,但是被集成了之后,通过查看网页源代码发现,由于主页只显示内容,没有代码标记,因此该代码也被mathjax识别了,但是并没有展示成latex公式,造成的显示效果很差,因此我又加入了以下代码:

	<script type="text/x-mathjax-config">
		MathJax.Hub.Config({
			tex2jax: {
				processEscapes: true,
				processEnvironments: false,
				skipTags: ['script', 'noscript', 'style', 'textarea', 'pre']
			}
		});
	</script>

主要是processEnvironments使得我文本区的元素不会被检查为mathjax公式,具体原因参考mathjax文档

关于katex,我找到了以下资料:

关于mathjax,我找到了以下资料:

最后,我衷心地希望我们可以自由地在各个平台上使用markdown,并且用$inline style$来表示行内公式,用$$display style$$来表示块级公式,用\$来表示$符号,而不用担心能否完美支持。我相信,这一天一定会到来的。