粗体、斜体、下划线、删除线

Beta

这些是应用于文本运行的内联标记。在 Word 中,它们来自运行属性(<w:rPr>)。在 Tiptap 中,它们是文本节点上的 mark。所有四种都已由 ConvertKit 开箱即用地注册。

你需要什么

  • 扩展: ConvertKit — 打包了 Bold、Italic、Underline 和 Strike。
  • 配置: 无需配置。四种 mark 都可直接开箱即用。

支持概览

Mark导入编辑器导出备注
Bold支持支持(ConvertKit)支持完整往返
Italic支持支持(ConvertKit)支持完整往返
Underline支持(仅 val="single"支持(ConvertKit)支持不会转换其他下划线样式
Strikethrough支持(存在已知的跨段落泄漏问题,见下文)支持(ConvertKit)支持完整往返
Double strikethrough不支持不支持不支持不会转换

导入

使用 编辑器扩展REST API 导入这些 mark。两者会产生相同的输出。

转换服务会读取 Word 的运行属性,并生成相应的 Tiptap mark:

Word 元素Tiptap mark
<w:b/>bold
<w:i/>italic
<w:u val="single"/>underline(其他 val 值不会转换)
<w:strike/>strike
<w:dstrike/>不处理

对于包含这些标记的文本运行,Bold、Italic 和 Strikethrough 都能干净地导入。Underline 仅在 Word 元素具有 val="single" 时才会被导入。其他下划线样式(double、wavy、dotted、dash)不会转换。组合标记(同一段文本上的 bold + italic)会被完整保留。已知有一个问题:导入时 strikethrough 可能会从一个段落泄漏到下一个段落;见下方的 Strikethrough

编辑器渲染

所有四种 mark 都包含在 ConvertKit 中。无需单独安装。

Mark扩展渲染为键盘快捷键
boldBold<strong>Cmd+B
italicItalic<em>Cmd+I
underlineUnderline<u>Cmd+U
strikeStrike<s>Cmd+Shift+S

所有四种 mark 都可以同时作用于同一段文本。

导出

使用 编辑器扩展REST API 导出这些 mark。两者对它们的处理方式完全相同。

每个 mark 都映射到一个 DOCX 运行属性:

Tiptap markDOCX 运行属性
boldbold = true
italicitalics = true
underlineUnderlineType.SINGLE
strikestrike = true

Strikethrough 能正确往返。导入会生成正确的 strike mark 名称,因此不会丢失任何格式。

Strikethrough

已知问题:strikethrough 会跨段落泄漏

导入带有 strikethrough 格式的段落时,可能会导致后续段落也被渲染为 strikethrough,即使源 DOCX 并没有对第二个段落应用删除线。导入后的 JSON 看起来会将 strike mark 带到原始段落边界之外。如果遇到这种情况,请在将内容加载到编辑器之前,在 onImport 回调中检查 context.content,并在适当的位置清理多余的 strike mark。

不支持双删除线

双删除线(<w:dstrike/>)不受处理。导入时不会转换。

只导入单下划线

Word 支持多种下划线样式(double、wavy、dotted、dash 等)。在导入时,只有 val="single" 会生成 underline mark。其他所有样式都不会转换,也不会降级为普通下划线。在导出时,所有下划线都会变成 UnderlineType.SINGLE。文本内容会被保留,但非 single 样式的下划线格式会丢失。