Contribute to this guide

指南块引用

块引用功能允许您轻松地在内容中包含块引用或摘录。它也是吸引读者注意文本特定部分的一种有效方式。

# 演示

使用下面的编辑器中的块引用工具栏按钮 插入块引用 来查看功能的实际操作。您还可以通过在引文之前键入>,然后跟上一个空格,来使用自动格式化功能进行即时格式化。

爱因斯坦的名言,其实并不存在

您可能在过去几年中见过以下引文

每个人都是天才。但如果你以爬树的能力来评判一条鱼,它会终其一生相信自己很愚蠢。

阿尔伯特·爱因斯坦

它在 Facebook 和其他社交网络上最受欢迎,人们大量分享它。这不足为奇:它简洁、听起来很聪明,而且坦率地说,阿尔伯特是一个了不起的人物!

然而,事实并非如此简洁。盲目转发这个引文并不一定明智。这是因为爱因斯坦从未说过这句话。这句引文来自马修·凯利 2004 年出版的《生命节奏:充满激情和目标地度过每一天》一书,而这本书是在阿尔伯特 1955 年去世后近 50 年才出版的。

凯利很可能受到塔夫茨大学阿莫斯·E·多尔比尔一篇名为“教育寓言”的文章的启发,文章描述了将动物教育为在其最弱的特征而不是其最强的特征上工作的。因此,一只鹰被训练跑步,一只企鹅被迫飞行,等等。还有一些 1903 年来自伊利诺伊州报纸的“丛林学校董事会”寓言。它讲述了一个猴子、一只袋鼠和一头大象无法就他们的动物学校课程达成一致的故事——所有的小动物都应该学习爬树、跳跃或看起来很聪明吗?

在 20 世纪 40 年代后期,似乎是这两者的混合体出版了,后来在 20 世纪 60 年代被重新印刷,并在其中做了一些修改。这个想法在几十年间不断发展,并与一些其他关于成为天才的引文混杂在一起,这些引文可以追溯到 20 世纪 70 年代。最后,凯利在 2004 年的书中写道

阿尔伯特·爱因斯坦写道:“每个人都是天才。但如果你以爬树的能力来评判一条鱼,它会终其一生相信自己很愚蠢。” 我在这段旅程中要问你的问题是:“你的天才是什么?”

为什么他将这句话归功于阿尔伯特·爱因斯坦尚不清楚。事实是,这句话流行起来。但显然,并非每个人在事实核查和来源方面都是天才。

此演示展示了一组有限的功能。访问功能丰富的编辑器示例,以查看更多功能的实际操作。

# 嵌套块引用

从 27.1.0 版开始,CKEditor 5 将正确显示嵌套在另一个块引用中的块引用。这种结构在电子邮件编辑器或论坛中是必不可少的。引用先前消息并保留正确的引文结构的能力对于维护沟通流程通常至关重要。嵌套块引用也可能对科学或学术论文有用,但引用来源和引用先前写作的文章也会经常使用它。

嵌套块引用的支持是作为向后兼容性提供的,用于加载预先存在的内容,例如在 CKEditor 4 中创建的内容。此外,粘贴包含嵌套块引用的内容也受支持。您还可以使用拖放机制将块引用嵌套在另一个块引用中——只需选择一个现有块引用并将其拖放到另一个块引用中。

关于材料使用信息的回复

汤姆,

这只是一个提醒,我们需要数据才能参加周五与外部分包商的会议。你能告诉我所有报告是否都准备好了吗?

佐伊

嗨,佐伊,

报告正在陆续提交,但 Q3 的数据仍然缺失。据我所知,静冈方面在最终总结方面落后于进度,而扩张部门尚未发布其数字。我将与双方联系,并在明天中午之前随时向您通报此事。

汤姆

请务必这样做,这件事变得非常紧急。直接联系 ED 的哈里玛。另外,也与静冈方面核实一下。他会在最后时刻遗漏如此重要的事情,这很不寻常。

希望您能设法准备一份摘要并在最迟星期四早上获得完整数据,以便我们能够在下午 2 点的董事会会议上进行审查。

佐伊

如果您想阻止在编辑器中嵌套块引用,请参阅禁止嵌套块引用部分,了解如何禁用此功能。

# 安装

⚠️ 新的导入路径

42.0.0 版开始,我们更改了导入路径的格式。本指南使用新的、更短的格式。如果您使用的是旧版本的 CKEditor 5,请参考旧版设置中的包指南。

安装编辑器后,将此功能添加到插件列表和工具栏配置中

import { ClassicEditor, BlockQuote } from 'ckeditor5';

ClassicEditor
    .create( document.querySelector( '#editor' ), {
        plugins: [ BlockQuote, /* ... */ ],
        toolbar: [ 'blockQuote', /* ... */ ]
    } )
    .then( /* ... */ )
    .catch( /* ... */ );

# 配置

# 禁止嵌套引用块

默认情况下,编辑器支持将引用块插入另一个引用块中。

要禁止嵌套引用块,您需要注册一个额外的模式规则。它需要在将数据加载到编辑器之前添加,因此最好将其作为插件实现。

function DisallowNestingBlockQuotes( editor ) {
    editor.model.schema.addChildCheck( ( context, childDefinition ) => {
        if ( context.endsWith( 'blockQuote' ) && childDefinition.name == 'blockQuote' ) {
            return false;
        }
    } );
}

// Pass it via config.extraPlugins or config.plugins:

ClassicEditor
    .create( document.querySelector( '#editor' ), {
        extraPlugins: [ DisallowNestingBlockQuotes ],

        // The rest of the configuration.
        // ...
    } )
    .then( /* ... */ )
    .catch( /* ... */ );

如果您需要有关此解决方案的技术方面的更多信息,请查看分步教程

以下是一些其他 CKEditor 5 功能,您可以像引用块插件一样使用它们来更好地组织文本

  • 块缩进 – 设置文本块(如段落或列表)的缩进。
  • 代码块 – 插入更长、多行的代码列表。
  • 文本对齐 – 将您的内容左对齐、右对齐、居中或两端对齐。
  • 自动格式化 – 当您使用 Markdown 代码键入时,添加格式化元素(如引用块)。

# 常用 API

BlockQuote 插件注册

您可以使用editor.execute()方法执行命令

// Applies block quote to the selected content.
editor.execute( 'blockQuote' );

我们建议您使用官方的CKEditor 5 检查器进行开发和调试。它将为您提供有关编辑器状态的大量有用信息,例如内部数据结构、选择、命令等等。

# 贡献

该功能的源代码可在 GitHub 上获取,地址为https://github.com/ckeditor/ckeditor5/tree/master/packages/ckeditor5-block-quote