前言
前些时候打算写一下题解,突然发现有些地方需要写数学公式,因为一直用的印象笔记能直接根据LaTeX语法渲染生成公式,所以当时就直接敲对应的语法上去了,但后来想起这是个博客,Typecho的前端大概率没有内置渲染,发布后发现果然没生成。但我本人并不想截图放公式,所以就用markdown,LaTeX,Typecho,数学公式作为关键词进行搜索,最后就选定了「MathJax」。
一、什么是MathJax
「MathJax」是一个开源JavaScript库,支持LaTeX、MathML、AsciiMath符号,可以运行于所有流行浏览器上。对大部分用户而言它不需要安装,即没有插件需要下载也没有软件需要安装,所以博客作者可以轻松的用LeTeX等语法编写数学公式,并让浏览器渲染生成公式。我们只需要在页面中包含MathJax脚本和一些数学公式,其他的事情交给MathJax来处理吧。
二、如何部署
官网文档给了两种部署方式,一种是直接使用MathJax的CDN,另一种是在自己的服务器上部署源代码。因为mathjax的代码量比较大,我懒得直接上源码,而且这玩意并没有被墙,CDN速度ok,所以就直接用CDN了,如果想源码部署可以参考入门指南。
首先,我们把下面的代码复制到主题目录的 header.php
的 <head>标签
中(handsome主题的header.php在component文件夹中,其他主题自己找),第一段是用http的,第二段是用https的,看自己喜欢选就好。
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js? config=TeX-AMS-MML_HTMLorMML">
</script>
<script type="text/javascript"
src="https://d3eoax9i5htok0.cloudfront.net/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
因为MathJax默认的公式分隔符是 $$...$$
和 \[...\]
,可能会存在符号冲突,如果想用 $...$
和 \(...\)
符号,可以在上文的代码前面加上下面的代码。
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX", "output/HTML-CSS"],
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
processEscapes: true
},
"HTML-CSS": { availableFonts: ["TeX"] }
});
</script>
可以注意到每次我们刷新页面,Mathjax.js 在加载的时候,在网页左下角会显示加载情况,如果不想它每次都显示可以直接在MathJax.Hub.Config() 里配置去掉,如下:
MathJax.Hub.Config({
showProcessingMessages: false,
messageStyle: "none"
});
三、公式效果
LaTeX是一种排版语言,与markdown类似,他有自己独特的编写方式。由于规则比较多,这里不展开来讲,具体语法可以看看这两个链接:LaTeX入门,LaTex数学公式大全
行间(inline)模式:将数学公式写在
$ $
之间,代表的是插入行内数学公式。
独立(display)模式:将数学公式写在$$ $$
之间,会使公式独立成一行并强制居中。
下面的代码只展示一些常用的写法,显示效果在下面的文本可以看到(如果卡了就刷新一下页面)
//块级公式:
$$ 块级公式内容 $$
$$ x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} $$
$$ \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N $$
// 行内公式:
$ 行内公式内容 $
$ \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N $
$ x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} $
块级公式:
$$ 块级公式内容 $$
$$ x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} $$
$$ \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N $$
行内公式:
$ 行内公式内容 $
$ \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N $
$ x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} $
四、结语
在最后折腾了一波后,我才发现handsome主题已经内置了mathjax支持,只不过之前我没有打开而已,所以说在做优化之前,要确定好自己的博客是否真的没有这个功能,否则那就是白折腾一波。不过这次也不算白折腾,至少我搞清楚了博客的公式渲染跟印象笔记等软件不一样,是要靠浏览器去实时渲染的,如果没有JavaScript支持,那就没法显示。同时以后如果我要从零开始自己搭个博客,那么「MathJax」这东西的搭建实操就不用担心了。
参考资料
版权属于:PCsky
本文链接:http://hyouka.club/index.php/archives/62/
转载时须注明出处及本声明
感谢!
找到了,谢谢
这个主题挺好看的,有深色模式,是自己写的吗还是在哪里可以找到?