跳转至

pl-code元件

显示嵌入的或基于文件的代码块,并带有语法突出显示和 行标注。

样品元素

PL 代码输入的屏幕截图

question.html
<pl-code language="python">
def square(x):
    return x * x
</pl-code>

定制

属性 类型 默认 描述
copy-code-button 布尔 是否包含一个按钮来复制此元素显示的代码。
directory 字符串 查看描述 包含现有代码的源文件所在的目录。仅当使用 source-file-name 时才有用。如果它包含特殊名称 "clientFilesCourse""serverFilesCourse" 之一,则从课程的特殊目录中读取源文件名,否则该目录应位于问题自己的目录中。如果未提供,则应在问题的主目录中找到源文件名。
highlight-lines 字符串 应用独特的背景突出显示指定的代码行。接受 41-3,5-101,2-5,20 等输入。
highlight-lines-color 字符串 查看描述 指定突出显示的代码行的颜色。如果未设置,则使用由所选 Pygments 样式定义的突出显示颜色,如果该样式未定义,则回退到 "#b3d7ff"
language 字符串 要使用的编程语言语法突出显示。请参阅下文了解选项。
normalize-whitespace 布尔 是否去除尾随空白并删除内容的额外缩进。推荐用于代码内联在问题文件中的情况。
prevent-select 布尔 应用方法使源代码更难以复制,例如阻止选择或右键单击。请注意,源代码仍然可以在页面源代码中访问,学生始终可以看到该页面源代码。另请注意,阻止选择或复制文本等操作可能会损害学生的体验,因此除非绝对必要,否则应避免这样做。
show-line-numbers 布尔 是否显示此元素显示的代码中的行号。
source-file-name 字符串 具有要显示为代码块的现有代码的源文件的名称(而不是如上面的代码片段所示在元素标记之间编写现有代码)。
style-name 字符串 "xcode" 要使用的 Pygments 样式的名称。有效样式的示例可以在 Pygments 文档 中找到。

从已弃用的属性迁移

为了向后兼容,仍支持以下已弃用的属性:

旧语法 新语法
style="<name>" style-name="<name>"
no-highlight="true" 省略 language

设置 no-highlight="true" 只是禁用语法突出显示,这是省略 language 属性时的行为。

细节

pl-code 元素使用 Pygments 库进行语法突出显示。它支持 Pygments 文档 中找到的任何内置支持的语言,以及可用于显示终端输出的自定义 ansi-color 自定义语言。如果未提供语言,则不会进行语法突出显示。

常见陷阱

HTML 规范不允许在页面上插入特殊字符(即 <>&),并且将这些字符与内联代码一起使用可能会破坏渲染。要解决此问题,请转义字符(&lt;&gt;&amp;,更多使用此转义工具),或者使用 source-file-name 属性将外部文件中的代码片段加载到 pl-code 中。

无障碍

默认的 style-name"xcode",因为其令牌颜色符合 WCAG AA 与默认代码背景的对比 (4.5:1)。许多 Pygments 样式包含不包含的标记颜色;如果覆盖 style-name,请验证对比度。

示例实现

  • [元素/代码]

参见