当前位置: 首页 > article >正文

hugo文章支持数学公式

使用hugo建立了个人博客(shenlb.me)之后,在整理文章的时候,发现需要嵌入数学公式。还好,Hugo 0.122版本以后,原生支持数学公式渲染,不再像以前需要修改很多地方才可以渲染数学公式。

配置之前确保你使用的Hugo版本高于 0.122。

第一步:修改配置文件

我的Hugo配置文件采用了yaml格式,所以需要修改 config.yaml 文件。添加goldmark的扩展功能,位于markup → goldmark → extensions里的内容。我的goldmark里启用了unsafe,所以内容是这样的。

markup:
  goldmark:
    renderer:
      unsafe: true
      
    extensions:
      passthrough:
        delimiters:
          block:
          - - $$
            - $$
          inline:
          - - $
            - $
        enable: true

第二步:选择数学公式渲染引擎

Hugo支持两种渲染引擎:MathJax和KaTeX。MathJax支持的数学公式更全面,兼容性更好,但加载速度比KaTeX要慢一点。另外,KaTeX在使用内嵌符号(行内公式)$…$渲染公式的时候可能出现错误。

我已经习惯了$…$的内嵌公式(行内公式),所以我选择了MathJax。

需要在模板主题里增加一个文件,因为我使用PaperMod主题,文件名就是:

d:\slb-blog\themes\PaperMod\layouts\partials\math.html

内容如下:

"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
<script>
  MathJax = {
    tex: {
      displayMath: [['$$', '$$']],  // 多行公式
      inlineMath: [['$', '$']]   // 内嵌公式
    }
  };
</script>

第三步:修改baseof文件

需要修改的文件名是:
d:\slb-blog\themes\PaperMod\layouts_default\baseof.html
在<head> … </head>块里增加3行内容,我的文件内容是这样的:

<head>
    {{- partial "head.html" . }}
	{{ if .Param "math" }}
    {{ partialCached "math.html" . }}
    {{ end }}
</head>

第4步:在文章中添加数学公式

首先要在文件头里 front matter (头部信息)里增加一行“math = true”的信息,下面是我的费马大定理这篇文章中的头部信息内容:

+++
title = "《费马大定理》"
date = 2023-09-27T08:37:00+08:00
draft = false
author = "申龙斌"
summary = "从勾股定理,到椭圆曲线,一部辉煌壮丽的数学史诗。"
tags = ["费马"]
categories = ["读书"]
url = "/fermat"
math = true
+++

行内公式(内嵌公式)

使用单个美元符号 $...$ 来包裹公式,例如:

这是一个行内公式:$E = mc^2$

渲染结果: E = m c 2 E = mc^2 E=mc2

多行公式

使用双美元符号 $$...$$ 来包裹公式,公式将单独占一行显示。

例如:

欧拉公式:
$$ e^{i\pi} + 1 = 0 $$
柯西积分公式
$$ f(a) = \frac{1}{2\pi i} \oint_{\gamma} \frac{f(z)}{z-a} dz $$

渲染效果:
e i π + 1 = 0 e^{i\pi} + 1 = 0 e+1=0

f ( a ) = 1 2 π i ∮ γ f ( z ) z − a d z f(a) = \frac{1}{2\pi i} \oint_{\gamma} \frac{f(z)}{z-a} dz f(a)=2πi1γzaf(z)dz

渲染效果

我写的带数学公式的文章:

  • 《费马大定理》
  • LDM地震数据体存储格式分析与应用

参考来源

https://gohugo.io/content-management/mathematics/
https://www.yoghurtlee.com/hugo-math-rendering/


http://www.kler.cn/a/408523.html

相关文章:

  • 拥塞控制算法的 Utility-Function
  • 【tensorflow的安装步骤】
  • 【数据结构 | C++】部落
  • 大语言模型---梯度的简单介绍;梯度的定义;梯度计算的方法
  • (附项目源码)Java开发语言,219 ssm律师事务所业务管理系统的设计与实现,计算机毕设程序开发+文案(LW+PPT)
  • 网络爬虫——爬虫项目案例
  • 第三十章 TCP 客户端 服务器通信 - 作业服务器资源
  • 【c++篇】掌握动态内存的奥妙
  • 丑数 详解
  • 修改ffmpeg实现https-flv内容加密
  • apache、iis屏蔽限制ip访问(适用虚拟主机)
  • C语言-详细讲解-洛谷P1420 最长连号
  • 字符串-07-判断两个IP是否属于同一子网
  • 微信小程序中使用iconfont的详细教程
  • Python棉花病虫害图谱系统CNN识别+AI问答知识neo4j vue+flask深度学习神经网络可视化
  • grep/egrep正则表达式
  • Linux基本指令的使用
  • 力扣 239. 滑动窗口最大值
  • 数字化工厂 MES试点方案全解析(三)
  • 行为树详解(2)——最简单的行为树
  • LeetCode题练习与总结:棋盘上的战舰--419
  • 【Python爬虫五十个小案例】爬取豆瓣电影Top250
  • ElasticSearch7.x入门教程之索引数据类型和映射(四)
  • 11.21 小清新图论专场训练
  • 华为FusionCube 500-8.2.0SPC100 实施部署文档
  • 项目实战:Vue3开发一个购物车