列表

Beta

项目符号列表和有序列表在 DOCX 和 Tiptap 之间转换时会保留嵌套结构。DOCX 中的编号格式和起始值在导入过程中不会被保留。

你需要了解的内容

  • 扩展: ConvertKit — 打包了 BulletListOrderedListListItemListKeymap
  • 配置: 无需配置。嵌套在所有流水线阶段都能开箱即用。

支持概览

导入编辑器导出
项目符号列表支持支持(ConvertKit)支持
有序列表支持支持(ConvertKit)部分支持
编号格式(a/A/i/I/1)内部读取用于区分有序列表与项目符号列表,然后丢弃OrderedList 扩展的 type 属性接受这些值,但导入器不会设置它不保留
起始编号未从 DOCX 编号中的 w:start 提取OrderedList 扩展的 start 属性受支持,但导入器不会设置它不保留
嵌套列表支持支持支持
任务列表不支持支持(需要 TaskList 扩展)不支持

导入

使用 编辑器扩展REST API 导入列表。两者产生的输出完全相同。

转换服务会将所有连续的 DOCX 列表段落分组为列表结构,而不考虑它们的编号 ID。缩进级别(ilvl)控制嵌套。导入器只读取 numFmt 值来将每个段落分类为项目符号或有序列表项。项目符号样式的编号会生成 bulletList 节点。十进制、字母和罗马数字编号都会生成 orderedList 节点,但不会进一步区分:在 Word 中以 A, B, C 编写的列表和以 1, 2, 3 编写的列表,在编辑器中都会作为没有任何属性的相同 orderedList 节点进入。Tiptap 的 OrderedList 扩展的 type 属性(它会渲染为 <ol type="a">)在导入时不会被填充。若想如今端到端保留自定义编号样式,可在内容加载后于编辑器端设置 type 属性。

DOCX 编号定义中的 w:start 值不会被解析,因此起始编号不会被导入。

编辑器渲染

BulletListOrderedListListItemListKeymap 扩展由 ConvertKit 注册。无需单独安装。

列表使用标准 HTML 元素渲染:项目符号列表使用 <ul>,有序列表使用 <ol>,列表项使用 <li>。如果在 orderedList 节点上设置了 starttype 属性,编辑器会将它们渲染为 HTML 属性(例如,<ol start="5" type="a">),但 DOCX 导入器不会设置这些属性。

嵌套通过 listItem 内容模型实现,它允许在列表项中包含块级内容,包括其他列表。任务列表需要单独的 TaskListTaskItem 扩展。

导出

使用 编辑器扩展REST API 导出列表。两者对列表的处理完全相同。

项目符号列表和有序列表都会以正确的结构导出为 DOCX。嵌套通过递归增加 DOCX 缩进级别来保留。每个有序列表实例都会获得一个唯一的编号 ID,因此同一文档中的多个列表会独立编号。

编号格式和起始值不会被导出

导出转换器不会读取有序列表节点中的 typestart 属性。所有有序列表都会导出为默认的十进制编号(1, 2, 3),而不管编辑器中设置了什么格式。在编辑器中 type: "a"start: 5 的列表,在 Word 中会导出为标准的 1, 2, 3 列表。

任务列表

编辑器支持带有 checked 属性的任务列表(taskListtaskItem 节点)。但是,任务列表不属于 DOCX 转换流水线。它们不能从 DOCX 导入,也不会包含在 DOCX 导出结果中。

如果你的编辑器使用任务列表,它们在编辑时会正常工作,但无法通过 DOCX 转换实现往返。