@diplodoc/latex-extension

中文文档
2.0.2发布于 2026/08/06MITTypeScriptCommonJS零依赖构建来源已验证近 30 天下载 2.3万

用于 Diplodoc 平台的扩展, 它使用 Katex 添加了 Latex 语法的支持

中文使用文档
文档目录6 节
  1. 快速启动
  2. 编写 Katex 运行时间
  3. 运行选项
  4. 警卫
  5. 它变换插件
  6. 用于智能控制 Katex 的反应钩和组件

英语 | русский


NPM version Quality Gate Status Coverage Maintainability Rating Reliability Rating Security Rating

Diplodoc Latex 扩展名

这是用于 Diplodoc 平台的扩展, 它使用 Latex 语法添加支持 凯特克 图书馆.

扩展部分包括:

快速启动

安装软件包

npm install --save @diplodoc/latex-extension

在变压器上附加插件

import latex from '@diplodoc/latex-extension';
import transform from '@diplodoc/transform';

const {result} = await transform(
  `
### Inline latex

Some text $c = \pm\sqrt{a^2 + b^2}$

### Block latex

$$
c = \pm\sqrt{a^2 + b^2}
$$
`,
  {
    plugins: [latex.transform()],
  },
);

将 latex 运行时间添加到您的最后一页

<html>
  <head>
    <link rel="stylesheet" href="_assets/latex-extension.css" />
    <!-- Read more about '_assets/latex-extension.js' in 'MarkdownIt transform plugin' section -->
    <script src="_assets/latex-extension.js" async />
    <script>
      // Read more about 'latexJsonp' in 'Prepared Katex runtime' section
      window.latexJsonp = window.latexJsonp || [];
      window.latexJsonp.push((latex) => {
        window.addEventListener('load', function () {
          latex.run();
        });
      });
    </script>
  </head>
  <body style="background: #000">
    ${result.html}
  </body>
</html>

编写 Katex 运行时间

Katex - 是渲染tex/latex公式最受欢迎和最快的执行.

Katex的问题在于它的大小很大. 最预期的行为是同步装入.

编写 Katex 运行时间 旨在解决这个问题. 我们添加 latexJsonp 处理 Katex 装入的全局调用 .

此外,我们通过以下方法限制已曝光的Katex API:

用法示例:

window.latexJsonp = window.latexJsonp || [];

// This callback will be called when runtime is loaded
window.latexJsonp.push((latex) => {
  latex.run();
});

// You can configure more that one callback
window.latexJsonp.push((latex) => {
  console.log('Render diagrams');
});

运行选项

  • querySelector - 查找要渲染的元素时使用的查询选择器.
    (默认 : .yfm-latex(中文(简体) )

  • nodes - 要制造的节点。 如果这是设定的, querySelector 将被忽略.

  • sanitize - 从最后html中删除危险内容的功能.
    (默认 : identity(中文(简体) )

警卫

默认运行时间使用 Katex 安保建议。 。 。 .
但还有延长消毒时间的额外选择。 你可以随意使用自己的消毒器:

import dompurify from 'dompurify';
import domready from 'domready';

window.latexJsonp = window.latexJsonp || [];
window.latexJsonp.push((latex) => {
  domready(() =>
    latex.run({
      sanitize: dompurify.sanitize,
    }),
  );
});

它变换插件

插件用于 @ diplodoc/ 变形 软件包.

配置 :

  • runtime - 显示结果的运行时脚本名称 script 财务报告和审定财务报表 style 节.
    若为 bundle 选项已禁用,则可以是普通字符串。 否则应该是字符串记录.
    默认数字 :

    {
      "script": "_assets/latex-extension.js",
      "style": "_assets/latex-extension.css"
    }
    
  • bundle - 布尔旗以启用/无法复制捆绑的运行时间到目标目录.
    目标目录所在 <transformer output option>/<plugin runtime option>
    为客户端使用而禁用
    默认: 真实

  • validate - 布尔旗以启用/失效建筑验证.
    用于服务器侧预建工具 校对:soup 为客户端使用而禁用
    默认: 真实

  • classes - 将添加到Latex公式容器中的其他类别.
    (例: my-own-class and-other-class(中文(简体) )

  • katexOptions - 说吧 凯特克 渲染选项

用于智能控制 Katex 的反应钩和组件

用反应来简化 Katex 控制

import React from 'react';
import {transform} from '@diplodoc/transform';
import latex from '@diplodoc/latex-extension/plugin';
import {LatexRuntime} from '@diplodoc/latex-extension/react';

const LATEX_RUNTIME = 'extension:latex';

const Doc: React.FC = ({content}) => {
  const result = transform(content, {
    plugins: [
      // Initialize plugin for client/server rendering
      latex.transform({
        // Do not touch file system
        bundle: false,
        // Set custom runtime name for searching in result scripts
        runtime: LATEX_RUNTIME,
      }),
    ],
  });

  // Load katex only if one or more formulas should be rendered
  if (result.script.includes(LATEX_RUNTIME)) {
    import('@diplodoc/latex-extension/runtime');
  }

  if (result.style.includes(LATEX_RUNTIME)) {
    import('@diplodoc/latex-extension/runtime/styles');
  }

  return <div dangerouslySetInnerHTML={{__html: result.html}} />;
};

export const App: React.FC = ({theme}) => {
  return (
    <>
      <Doc
        content={`
            $$
            c = \pm\sqrt{a^2 + b^2}
            $$
        `}
      />
      <KatexRuntime />
    </>
  );
};

版本与发布记录

@diplodoc/latex-extension 共发布 16 个版本,首次发布于 2023/12/18;过去 12 个月发布了 4 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.0.2latest2026/08/063 个月前
2.0.12026/07/213 个月前
2.0.02026/05/285 个月前
1.4.12025/11/2411 个月前
1.4.02025/07/101.3 年前
1.3.42025/03/051.7 年前

关于 @diplodoc/latex-extension 的常见问题

@diplodoc/latex-extension 是什么?

用于 Diplodoc 平台的扩展, 它使用 Katex 添加了 Latex 语法的支持

如何安装 @diplodoc/latex-extension?

在项目目录运行 npm install @diplodoc/latex-extension,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:katex(^0.16.9)、markdown-it(^13.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@diplodoc/latex-extension 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@diplodoc/latex-extension 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@diplodoc/latex-extension 可以商用吗?

@diplodoc/latex-extension 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@diplodoc/latex-extension 的下载量有多少?

根据 npm 官方下载统计,@diplodoc/latex-extension 在 2026/10/13 – 2026/11/11 这 30 天内被下载 22,855 次,日均约 762 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@diplodoc/latex-extension 还在维护吗?

最新版本 2.0.2 发布于 2026/08/06(3 个月前);至今共发布 16 个版本,其中过去 12 个月发布了 4 个;首次发布于 2023/12/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。