前言

前些时候打算写一下题解,突然发现有些地方需要写数学公式,因为一直用的印象笔记能直接根据LaTeX语法渲染生成公式,所以当时就直接敲对应的语法上去了,但后来想起这是个博客,Typecho的前端大概率没有内置渲染,发布后发现果然没生成。但我本人并不想截图放公式,所以就用markdown,LaTeX,Typecho,数学公式作为关键词进行搜索,最后就选定了「MathJax」。
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)模式:将数学公式写在 $$ $$ 之间,会使公式独立成一行并强制居中。

LaTeX命令

下面的代码只展示一些常用的写法,显示效果在下面的文本可以看到(如果卡了就刷新一下页面)

//块级公式:
$$ 块级公式内容 $$
$$ 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」这东西的搭建实操就不用担心了。
handsome主题的header.php

参考资料

最后修改:2020 年 11 月 19 日 05 : 45 PM
如果觉得我的文章对你有用,请随意赞赏