KaTeX.js渲染数学公式

4 篇文章 0 订阅

什么是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

 

KaTeX 是一款基于 TeXJavaScript 引擎,用于在 Web 中渲染数学公式和数学符号。KaTeX 能够快速渲染数学公式,而且渲染出来的公式非常漂亮。本文将详细介绍 KaTeX 的使用方法。 ## 安装 KaTeX KaTeX 可以通过 npm 包管理工具进行安装,也可以通过 CDN 引入。本文将介绍两种安装方式。 ### 通过 npm 安装 KaTeX 可以通过以下命令在项目中安装 KaTeX: ``` npm install katex ``` ### 通过 CDN 引入 KaTeX 可以通过以下方式引入 KaTeX: ```html <head> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex/dist/katex.min.css" /> <script src="https://cdn.jsdelivr.net/npm/katex/dist/katex.min.js"></script> </head> ``` ## 渲染数学公式 ### 使用 KaTeX 渲染数学公式 在 HTML 中使用 KaTeX 渲染数学公式非常简单。只需要在需要渲染数学公式所在的标签中添加 `katex` 类名,然后在标签内部添加 TeX 语法的数学公式即可。 ```html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>KaTeX Demo</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex/dist/katex.min.css" /> <script src="https://cdn.jsdelivr.net/npm/katex/dist/katex.min.js"></script> </head> <body> <p class="katex">$$\sum_{i=1}^n i = \frac{n(n+1)}{2}$$</p> <p class="katex">\[\int_{-\infty}^{+\infty} e^{-x^2} dx = \sqrt{\pi}\]</p> </body> </html> ``` 在上面的代码中,我们在两个不同的段落中使用了 `katex` 类名,并在标签内部添加了 TeX 语法的数学公式。 ### 使用 KaTeX API 渲染数学公式 KaTeX 提供了一组 API,可以在 JavaScript渲染数学公式。 ```html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>KaTeX Demo</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex/dist/katex.min.css" /> <script src="https://cdn.jsdelivr.net/npm/katex/dist/katex.min.js"></script> </head> <body> <p id="formula1"></p> <p id="formula2"></p> <script> const formula1 = document.getElementById("formula1"); katex.render("\\sum_{i=1}^n i = \\frac{n(n+1)}{2}", formula1); const formula2 = document.getElementById("formula2"); katex.render("\\int_{-\\infty}^{+\\infty} e^{-x^2} dx = \\sqrt{\\pi}", formula2); </script> </body> </html> ``` 在上面的代码中,我们在两个不同的段落中使用了 `id` 属性,并在 JavaScript 中使用 `katex.render` 方法渲染数学公式。 ## KaTeX TeX 语法 KaTeX 使用 TeX 语法渲染数学公式,因此熟悉 TeX 语法可以帮助我们更好地使用 KaTeX。下面是一些常用的 TeX 语法: ### 希腊字母 ``` \alpha, \beta, \gamma, \delta, \epsilon, \varepsilon, \zeta, \eta, \theta, \vartheta, \iota, \kappa, \lambda, \mu, \nu, \xi, \pi, \varpi, \rho, \varrho, \sigma, \varsigma, \tau, \upsilon, \phi, \varphi, \chi, \psi, \omega ``` ### 上标和下标 ``` x^2, x_{1}, x_{i+1}, x^{2}_{i+1} ``` ### 分数 ``` \frac{a}{b} ``` ### 开平方 ``` \sqrt{2}, \sqrt[n]{a} ``` ### 求和、积分、极限 ``` \sum_{i=1}^n i, \int_{a}^{b} f(x) dx, \lim_{x\to\infty} f(x) ``` ### 矩阵 ``` \begin{matrix}a & b \\ c & d\end{matrix} ``` ### 其他符号 ``` \infty, \pm, \times, \div, \neq, \leq, \geq, \approx, \equiv, \subset, \subseteq, \cup, \cap, \forall, \exists, \in, \notin, \rightarrow, \leftarrow ``` ## 总结 本文介绍了 KaTeX 的安装和使用方法,并介绍了一些常用的 TeX 语法。KaTeX 是一款非常强大的 JavaScript 引擎,可以帮助我们在 Web 中快速渲染数学公式和数学符号,非常适合用于科技类网站和博客。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值