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

KaTeX.js渲染数学公式

什么是KaTeX.js ?

KaTeX 是一个集成速度快且功能丰富的数学公式渲染库,专为 Web 设计。它由 Khan Academy 开发,提供接近印刷品质的数学公式展示,同时保持与浏览器的高效互动性。KaTeX 特点包括快速渲染速度、高质量的输出、独立运行、跨平台兼容以及丰富的功能集。它支持服务器端渲染,可以预渲染公式并作为纯 HTML 发送,减轻客户端负担。

入门示例

作为入门演示示例,下载源码到本地方式引入 KaTex

<!-- 引入样式和库文件 -->
<link rel="stylesheet" href="../libs/katex.css" />
<script src="../libs/katex.js"></script>

创建容器 DOM 元素,绑定 equation ID 选择器

<div id="equation">$`x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}`$</div>
<script type="text/javascript" defer>// 使用KaTeX渲染指定元素中的公式katex.render(`x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}`, document.getElementById('equation'))
</script>

效果

图片

 高级示范


<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>使用KaTeX显示数学公式</title><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/katex.min.css"><script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/katex.min.js"></script><script defer src="https://cdn.jsdelivr.net/npm/katex@0.15.1/dist/contrib/auto-render.min.js"onload="renderMathInElement(document.body);"></script><script>function change() {var textarea = document.getElementById('xxx');console.log(textarea)//textarea.value = textarea.value.replace(/(\$|\n)E = mc^2(\$|\n)/g, '$\\text{E} = mc^2$');textarea.textContent="解:已知$$a-b=2$$,$$\therefore   \dfrac{{(1-a)}^{2}}{b}-\dfrac{{(1+b)}^{2}}{a}=\dfrac{a{(1-a)}^{2}-b{(1+b)}^{2}}{ab}=\dfrac{a-{a}^{3}-b+{b}^{3}}{ab}$$ 即$$10ab=2-4ab$$,解得$$ab=\dfrac{1}{7}$$,$$\therefore   {a}^{3}-{b}^{3}=2-4ab=2-4\times \dfrac{1}{7}=\dfrac{10}{7}.$$";//textarea.setAttribute('text', "$$E = mc^2$$");renderMathInElement(textarea);}</script>
</head>
<body><h1>使用KaTeX显示数学公式</h1><p>下面是一些数学公式的示例:</p><p>by https://zhengkai.blog.csdn.net/</p><p>下面是一些数学公式的示例:</p><p>行内公式示例:这是一个行内公式 $$E = mc^2$$。</p><p>块级公式示例:</p><p>$$\int_a^b f(x) \, dx = F(b) - F(a)$$</p><a id="xxx"></a><textarea cols="80" id="2"></textarea><a onclick="change()">change</a>
</body>
</html>

附加:document.getElementById如何改变a标签的文本

在JavaScript中,如果你想通过document.getElementById来改变一个<a>标签的文本,你可以这样做:

  1. 首先,确保你的<a>标签有一个id属性,这样你才能通过document.getElementById来选中它。
<a id="myLink" href="https://example.com">原始文本</a>
  1. 然后,使用document.getElementById来获取这个<a>标签的引用。

  2. 接着,你可以通过修改innerTexttextContent属性来改变它的文本内容。

// 获取<a>标签
var link = document.getElementById('myLink');// 修改文本
link.innerText = '新的文本';
// 或者
link.textContent = '新的文本';

innerTexttextContent都可以用来改变元素的文本内容,但它们之间有一些细微的差别:

  • innerText会考虑CSS的visibilitydisplay属性,如果元素是不可见的或不显示的,那么innerText不会返回文本内容。
  • textContent会返回元素及其子元素的全部文本内容,不考虑CSS样式的影响。

通常情况下,使用textContent就足够了,因为它更简单且不受CSS样式的影响。

自动渲染

使用 JavaScript 手动渲染还是稍微麻烦了一点,官方提供 auto-render 自动渲染扩展,通过简单的引入可以实现自动渲染。

// 引入 auto-render.js 
<script src="../libs/auto-render.js"></script>
<script type="text/javascript" defer>document.addEventListener('DOMContentLoaded', function () {renderMathInElement(document.body, {// 自定义选项// • auto-render 指定解析格式delimiters: [{ left: '$$', right: '$$', display: true },{ left: '$', right: '$', display: false },{ left: '\\(', right: '\\)', display: false },{ left: '\\[', right: '\\]', display: true },],// • 不抛出异样,而是渲染公式源码throwOnError: false,})})
</script>

auto-render 扩展可以在页面加载时自动查找并渲染所有使用 $...$ 和 $$...$$ 包裹的公式。意味着你不需要手动调用任何函数来渲染这些公式。

KaTeX 允许调整样式,例如修改 .katex 类的 font-size 属性来改变公式的显示大小。此外,KaTeX 提供了多个扩展,如 copy-tex 扩展允许复制 LaTeX 代码,而 mhchem 扩展简化了化学方程式的编写。

官方链接

[1] Github Star: 18.1k: https://github.com/KaTeX/KaTeX
[2] 官网: https://katex.org/
[3] 地址: https://katex.org/docs/libs

 

http://www.lryc.cn/news/453009.html

相关文章:

  • 算法训练营打卡Day19
  • H.264编解码工具 - FFmpeg
  • 60 序列到序列学习(seq2seq)_by《李沐:动手学深度学习v2》pytorch版
  • elementPlus的tree组件点击后有白色背景
  • 【Git】Git在Unity中使用时的问题记录
  • python学习记录6
  • MongoDB 的基本使用
  • 数据揭秘:分类与预测技术在商业洞察中的应用与实践
  • 学MybatisPlus
  • 如何使用工具删除 iPhone 上的图片背景
  • 软件工程-数据流图
  • 链式前向星(最通俗易懂的讲解)
  • 【C++设计模式】(四)创建型模式:简单工厂模式,工厂方法模式,抽象工厂模式
  • 浅析Golang的Context
  • 生日礼物C++代码
  • 使用python基于DeepLabv3实现对图片进行语义分割
  • 【漏洞复现】泛微OA E-Office do_excel.php 任意文件写入漏洞
  • 算法(食物链)
  • ubuntu20.04系统安装zookeeper简单教程
  • .NET Core 高性能并发编程
  • B 私域模式升级:开源技术助力传统经销体系转型
  • vue之vuex的使用及举例
  • 使用 vite 快速初始化 shadcn-vue 项目
  • 微信小程序:一个小程序跳转至另一个小程序
  • Java第二阶段---10方法带参---第二节 方法重载(Overloading)
  • Java Web 之 Session 详解
  • 63.5 注意力提示_by《李沐:动手学深度学习v2》pytorch版
  • vscode 的terminal 输出打印行数限制设置
  • 深入挖掘C++中的特性之一 — 继承
  • Linux 下 poll 详解