# @datalayer/jupyter-lexical 中文文档

规范地址：https://npmcn.com/package/%40datalayer/jupyter-lexical/

版本：2\.0\.21
npm 元数据更新时间：2026-10-21T18:41:21.380Z
中文译文更新时间：2026-11-11T14:53:33.003Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40datalayer/jupyter-lexical
原文对照：https://npmcn.com/package/%40datalayer/jupyter-lexical/?lang=original
项目主页：https://github.com/datalayer/jupyter-ui#readme
源码仓库：https://github.com/datalayer/jupyter-ui

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：3.4 MB，906 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：52 个
- 首次发布：2024-01-09T09:56:15.091Z
- 最新版本发布：2026-10-21T18:41:20.976Z
- 近 30 天下载量：8147（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：39（近 12 个月 24 个）

## 中文简介

Lexical 的 Jupyter 用户界面

## 安装

```sh
npm install @datalayer/jupyter-lexical
```

也可以使用：`pnpm add @datalayer/jupyter-lexical`、`yarn add @datalayer/jupyter-lexical`、`bun add @datalayer/jupyter-lexical`

## README

[![Datalayer](https://images.datalayer.io/legacy/datalayer-25.svg)](https://datalayer.ai/)

[![Become a Sponsor](https://img.shields.io/static/v1?label=Become%20a%20Sponsor&message=%E2%9D%A4&logo=GitHub&style=flat&color=1ABC9C)](https://github.com/sponsors/datalayer)

# 朱比特语法

> 识字的Jupyter,用于可获取和可再生的数据分析.

![Jupyter UI Slate](https://datalayer-jupyter-examples.s3.amazonaws.com/jupyter-react-slate.gif)

## 扩展

编辑器与 [语法扩展](https://lexical.dev/docs/extensions/intro)数字 : 此软件包的每个行为都是在 `src/extensions`,以及 `JupyterLexicalExtension` 把他们都捆起来 主机取决于捆绑从 名称空间、主题、初始 状态, 将焦点放在挂载上—— 并使内容可以编辑到它想要的地方 :

```tsx
import { AutoFocusExtension } from '@lexical/extension';
import { LexicalExtensionComposer } from '@lexical/react/LexicalExtensionComposer';
import { ContentEditable } from '@lexical/react/LexicalContentEditable';
import {
  JupyterLexicalExtension,
  commentTheme,
} from '@datalayer/jupyter-lexical';
import { defineExtension } from 'lexical';

// Module scope: the composer rebuilds the editor whenever this reference changes.
const extension = defineExtension({
  name: 'my-app/Document',
  namespace: 'my-document',
  theme: commentTheme,
  dependencies: [JupyterLexicalExtension, AutoFocusExtension],
});

export const Document = () => (
  <LexicalExtensionComposer extension={extension} contentEditable={null}>
    <ContentEditable className="editor-input" />
  </LexicalExtensionComposer>
);
```

从根部将捆绑的行为重新配置为 `configExtension`,用于 实例 `configExtension(HistoryExtension, { disabled: true })` (单位:千美元) 协作文档,或 `configExtension(ListMaxIndentLevelExtension, { maxDepth: 3 })`。 。 。 . 其中一些暴露了输出中的信号 这样一个活编辑器就可以了 未重建而重新配置——列表天花板,或 `lexicalId` 财务报告和审定财务报表 `serviceManager` 联 合 国 `LexicalStateExtension` 将编辑器注册到 用于代理工具的共享存储 .

两种行为需要主机:只有主机有的(内核, 完成提供者)和挂出主机DOM(浮动菜单)的东西. 第一个是产出组成部分—— `JupyterInputOutputExtension`, (中文(简体) ), `ComponentPickerMenuExtension` 财务报告和审定财务报表 `InlineCompletionExtension` 设置在 `useExtensionComponent` 或者说 `<ExtensionComponent lexical:extension={…} />`· ; 作曲家儿女的第二站 执行插头 工具栏、注释面板和协作提供者.

每个扩展保留一个同名的回声插件 `src/plugins` 用于 编辑器仍然使用 `LexicalComposer`; 插件是一个薄薄的包件结束 扩展名 `register…` 函数,因此两个路径共享一个执行.

## 视频、地板和甲板块

3个街区类型与捆绑 `/` 在编辑器中:

-   **视频** (单位:千美元)`VideoExtension`, (中文(简体) ), `VideoNode`: 记录屏幕或相机 与浏览器自己的 `MediaRecorder` ——没有帐户,没有钥匙,没有上传. 这个 文件留在页面内存中 : **重装页面时丢失**,以及 没有人会看到该文件。 下载保存副本 。 之后a 重新装入该块 说它的视频已经消失 而不是假装它从来没有.
-   **Loom 视频** (单位:千美元)`LoomExtension`, (中文(简体) ), `LoomNode`: 记录 a [闲置](https://www.loom.com/) 作者在Loom上签名 账号,保存录像的地方,或取一个地址,然后 显示它。 粘贴一个Loom地址 提议嵌入它.
-   **底片幻灯片** (单位:千美元)`DeckExtension`, (中文(简体) ), `DeckNode`: 由 `@datalayer/decks` 从其 `DeckSpec`,首先使用一个标题幻灯片. 双击以编辑规格为JSON; 用它保存检查 `validateDeckSpec` 并且只在没有错误的时候保留它.

用 Loom 录音需要一个 Loom **公共应用代码**。本软件包不保留;主机 从自己的配置中给出 :

```ts
configExtension(LoomExtension, { publicAppId: process.env.LOOM_PUBLIC_APP_ID });
```

(单位:千美元)`<Editor extensions={[…]} />` 拿着那张名单,和 `<LoomPlugin publicAppId={…} />` 对搭建在 `LexicalComposer`.) 无一出,禄姆 块仍然显示并嵌入了视频;只关闭了记录。 实例如下: `LOOM_PUBLIC_APP_ID` 从外壳,或从 `.env.local` 在这个包, 被忽略的 `.env` 它不——不让那一个id:

```sh
npm run install:react18                           # once, see below
echo 'LOOM_PUBLIC_APP_ID=…' >> .env.local         # once
npm run start:vite                                # or start:webpack
```

记录者, `@loomhq/record-sdk`, (中文(简体) ), **运行于 React 18**: 它导入反应 从页面起起并挂起 `ReactDOM.render`,该反应19删除。 下 JupyterLab,它分享回放18,不需要什么。 反应 19 页必须给出 记录器本身的回放 18 —— SDK 只有在有人时才会被导入 按下记录, 所以没有记录, 只有记录失败, 和块 这么说的 此软件包的 Dev 服务器以双向显示 `npm run install:react18` 装入 `vendor/react18`数字 :

-   **网络软件包** (单位:千美元)`webpack.config.js`: SDK 及其导入的全部加入一个模块 层, `loom18`时 `react` 财务报告和审定财务报表 `react-dom` 下定决心;
-   **维特** (单位:千美元)`vite.config.ts`:一个插件将SDK与Esbuild捆绑在一起, 每个 `react` 导入指向该对,并服务于任何结果 源导入 SDK.

## 格式

文档通过其他格式进出 `src/convert`数字 :

-   **标记** —— 说 `$convertToMarkdownString` 编号 : `$convertFromMarkdownString` 与包件的变压器(表、图像、等式、规则和 作为可执行的Jupyter输入的栅栏码).
    
-   **无格式** —— 说 `lexicalToNbformat(nodes)` 每个Jupyter写一个代码单元格 输入其产出和每跑一跑一马克倒数单元格; `nbformatToLexical(notebook, editor)` 将笔记本读回 输入/输出插件必须安装在代码单元格上.
    
-   **拉特克语Name** —— 说 `$convertToLatexString(transformers?, { document, documentClass, classOptions, title, author, date })` 财务报告和审定财务报表 `$convertFromLatexString(latex, transformers?)`,建在以后形状的变压器上 `@lexical/markdown`是因为 (单位:千美元)`LATEX_TRANSFORMERS`: 标题块 (`\title`, (中文(简体) ), `\author`, (中文(简体) ), `\date`, (中文(简体) ), `\maketitle`页:1 `\part` 改为 `\subparagraph`,段落和 文本格式、引文和摘要、定理环境和证明, 清单、核对清单和说明清单、清单`lstlisting`, (中文(简体) ), `minted`, (中文(简体) ), `verbatim`),算法,表格(`tabular` 朋友们, `\multicolumn` 、数字、规则、内线和显示 数学(包括AMS环境),链接,YouTube嵌入,脚注, 引用和 `thebibliography`,TeX破折出并引用. `\newcommand` 序言中的宏有所扩展。 列被读入布局 节点 : `multicols` (单位:千美元) `\columnbreak`或均匀地) `columns`, (中文(简体) ), 并肩作战 `minipage`s,以及 `twocolumn` 类选项; 它们是 回写为 `multicols`。光标框变成区域及其 `block`a. 可折叠箱; `moderncv` 条目和 `letter` 类 (单位:千美元)`\opening`, (中文(简体) ), `\closing`, (中文(简体) ), `\signature`, (中文(简体) ), `\ps`)读作道. 一个主机添加 增加变压器的节点. `$importLatex` 还返回什么 序言说(`LatexDocumentInfo`) (中文(简体) ).
    
-   **LaTeX 模板** —— 说 `LATEX_TEMPLATES` 每页各保存一个文件 模板类别(期刊文章、书目、书籍、日历、简历、, 信件、任务、通讯、海报、演讲、论文) 类最出名模板的idiom.
    
-   **专题报告** - 4个路线,每个一个扩展,全部在浏览器和所有 类型脚本( T)`PdfExportExtension` 捆绑它们; 命令和函数在 `src/extensions/PdfExportExtension.ts`:
    
    1.  `PdfPrintExtension` 编号 : `PRINT_PDF_COMMAND` - 提供的文件, 复制到隐藏的 iframe 中, 包含页面样式表和打印 样式表,由浏览器打印(JupyterLab的工作)。 最高 忠诚; 阅读器从对话框中保存为 PDF .
    2.  `PdfDocumentExtension` 编号 : `EXPORT_PDF_DOCUMENT_COMMAND` ——向量 PDF 从文件模式中列出的`src/convert/pdf`: 一个 PDF 小作家 超过标准 14 字体,用于标题、段落的布局引擎, 列表、代码、表格、列、引文、框。 文本保留文本; 图片 通过 KaTeX 绘制的等式、图像、图画、丰富的产出——由 浏览器并定位为 JPEG 。 无头运行 `pictures: false`。 。 。 .
    3.  `PdfSnapshotExtension` 编号 : `EXPORT_PDF_SNAPSHOT_COMMAND` - 编辑 绘制到有 html2 canvas 的画布上, 并切入页面图像 每个切口附近最白的一行. 一切如来,无所可选.
    4.  `PdfTypesetExtension` 编号 : `EXPORT_PDF_TYPESET_COMMAND` - 文件为: Typst 标记( $`src/convert/typst`),由 Typst 引擎编译于 Web Assembly, 首次使用时从 CDN 获取(`loadTypstEngine`; 两者 URLs可配置). 真正的类型设置; LaTeX 数学通过 `mitex` typst 注册的软件包.

这个 `LexicalFormats` 示例在一个文档上显示全部: Markdown 和 LaTeX 源, 您可以编辑和应用程序, 一个活的笔记本, nbformat JSON,和LaTeX通过将它读回只读编辑器而得到. 这个 `LexicalLatex` 示例(“LaTeX模板”)将每个模板读入一个 可编辑编辑器的源头旁边, 各自在离开时写给对方 . 这个 `LexicalPdf` 示例 (“ PDF 导出 ”) 运行 文档样本并存, 并预览每个结果; 两者 示例带有“Export PDF”菜单.

## 常见问题

### @datalayer/jupyter-lexical 是什么？

Lexical 的 Jupyter 用户界面

### 如何安装 @datalayer/jupyter-lexical？

在项目目录运行 npm install @datalayer/jupyter-lexical，或使用 pnpm add / yarn add / bun add。

### @datalayer/jupyter-lexical 支持 TypeScript 吗？

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

### @datalayer/jupyter-lexical 支持 ESM 还是 CommonJS？

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

### @datalayer/jupyter-lexical 可以商用吗？

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

### @datalayer/jupyter-lexical 的下载量有多少？

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

### @datalayer/jupyter-lexical 还在维护吗？

最新版本 2\.0\.21 发布于 2026/10/22（20 天前）；至今共发布 39 个版本，其中过去 12 个月发布了 24 个；首次发布于 2024/01/09。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

