直接跳到内容

Markdown 文本

PnMarkdown 组件允许在面板中渲染任意 Markdown。它渲染包含有效 Markdown 的字符串以及具有 _repr_markdown_ 方法的对象,还可以定义自定义 CSS 样式。

底层实现为panel.pane.Markdown,参数基本一致,参考文档:https://panel.holoviz.org/reference/panes/Markdown.html

基本用法

PnMarkdown/PnMD 组件接受所有基本 Markdown 语法,包括嵌入式 HTML。它还支持大多数扩展 Markdown 语法。

要在代码块中启用代码高亮显示,需要安装 pip install pygments

还可以通过object设置内容。

动态内容

vuepy 的响应式特性可以与 Markdown 组件的无缝集成,Slider 调整时,Markdown 内容中的值会实时更新,

样式

如果您想控制从 Markdown 源生成的 HTML 的行为,通常可以通过向此组件的 style 参数传递参数来实现。例如,您可以在 Markdown 表格周围添加蓝色边框,如下所示:

但是,以这种方式指定的样式只会应用于最外层的 Div,目前没有任何方法以这种方式将样式应用于 HTML 的特定内部元素。在这种情况下,我们无法使用 style 参数来控制生成表格的行或标题的样式。

如果我们想更改生成的 HTML 的特定内部元素,我们可以通过提供 HTML/CSS <style> 部分来实现。例如,我们可以按如下方式更改标题和数据的边框厚度,但请注意,更改将应用于后续的 Markdown,包括笔记本上下文中的其他单元格:

如果您只想为特定的 Markdown 文本更改样式,您可以通过添加可以用样式表针对的 CSS 类来轻松实现这一点。这里我们添加了 special_table 类,然后表格使用红色边框:

渲染器

自 1.0 版本以来,Panel 使用 markdown-it 作为默认的 markdown 渲染器。如果您想恢复之前的默认值 'markdown' 或切换到 MyST 风格的 Markdown,可以通过 renderer 参数设置它。例如,这里我们使用 'markdown-it' 和 'markdown' 渲染一个任务列表:

LaTeX 支持

PnMarkdown 组件也支持数学渲染,方法是用 $$ 分隔符封装要渲染的字符串。要启用 LaTeX 渲染,您必须在 pn.extension 调用中显式加载 'mathjax' 扩展。

请注意使用 r 前缀创建字符串作为原始字符串。Python 原始字符串将反斜杠字符 (\) 视为文字字符。例如,这不起作用:

API

属性

属性名说明类型默认值
object包含 Markdown 的字符串,或具有 _repr_markdown_ 方法的对象str, object None
dedent是否对所有行去除共同的空白boolean True
disable_anchors是否禁用自动为标题添加锚点boolean False
disable_math是否禁用使用 $$ 分隔符转义的字符串的 MathJax 数学渲染boolean False
enable_streaming是否启用文本片段的流式传输。这将在更新时对 object 进行差异比较,只发送添加的尾部块boolean False
extensions要使用的 Python-Markdown 扩展 列表(不适用于 'markdown-it' 和 'myst' 渲染器)list None
hard_line_break简单的新行是否渲染为硬换行。默认为 False 以符合原始 Markdown 规范。'myst' 渲染器不支持boolean False
plugins要应用的其他 markdown-it-py 插件的列表function None
rendererMarkdown 渲染器实现literal: `'markdown-it'`, `'markdown'`, `'myst'` 'markdown-it'
renderer_options传递给 markdown 渲染器的选项dict None
styles指定 CSS 样式的字典dict {}
sizing_mode尺寸调整模式str 'fixed'
width宽度int, str None
height高度int, str None
min_width最小宽度int None
min_height最小高度int None
max_width最大宽度int None
max_height最大高度int None
margin外边距int, tuple 5
css_classesCSS类名列表list []

Slots

插槽名说明
defaultmarkdown内容

Controls

src/examples/panel_vuepy/panes/Markdown

Markdown 文本已经加载完毕