Skip to content

Python Markdown 扩展

Python Markdown 扩展包是一组优秀的额外扩展,非常适合高级技术写作。MkDocs 的材料将此包列为显式依赖项,因此它会自动安装一个支持的版本。

支持的扩展

总的来说,Python Markdown 扩展的所有扩展都应该能与 MkDocs 的材料一起工作。以下列表包含所有本地支持的扩展,这意味着它们无需任何进一步的调整就可以工作。

Arithmatex

[Arithmatex 支持] · [Arithmatex 扩展]

Arithmatex扩展允许渲染块和内联块等式,并与MathJax1无缝集成 - 一个用于数学排版的库。通过mkdocs.yml启用它:

markdown_extensions:
  - pymdownx.arithmatex:
      generic: true

除了在mkdocs.yml中启用扩展,还需要包含 MathJax 配置和 JavaScript 运行时,这可以通过几行[额外的 JavaScript]完成:

docs/javascripts/mathjax.js

window.MathJax = {
  tex: {
    inlineMath: [["\\(", "\\)"]],
    displayMath: [["\\[", "\\]"]],
    processEscapes: true,
    processEnvironments: true
  },
  options: {
    ignoreHtmlClass: ".*|",
    processHtmlClass: "arithmatex"
  }
};

document$.subscribe(() => {
  MathJax.typesetPromise()
})

mkdocs.yml

extra_javascript:
  - javascripts/mathjax.js
  - https://polyfill.io/v3/polyfill.min.js?features=es6
  - https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js

此扩展的其他配置选项并未得到 MkDocs 的材料的官方支持,这就是为什么它们可能会产生意外的结果。使用它们需要自行承担风险。

参考以下使用方法:

BetterEm

[BetterEm 支持] · [BetterEm 扩展]

BetterEm扩展改进了 Markdown 中使用特殊字符强调文本的 Markup 检测,例如**bold**_italic_格式。通过mkdocs.yml启用它:

markdown_extensions:
  - pymdownx.betterem

这个扩展的配置选项并非特定于 MkDocs 的材料,因为它们只影响 Markdown 解析阶段。有关更多信息,请参阅BetterEm 文档

Caret, Mark & Tilde

[Caret 支持] · [Caret 扩展]

CaretMarkTilde扩展添加了使用简单语法突出显示文本和定义下标和上标的能力。通过mkdocs.yml一起启用它们:

markdown_extensions:
  - pymdownx.caret
  - pymdownx.mark
  - pymdownx.tilde

这个扩展的配置选项并非特定于 MkDocs 的材料,因为它们只影响 Markdown 解析阶段。请参阅CaretMarkTilde 文档以获取指导。

参考以下使用方法:

Critic

[Critic 支持] · [Critic 扩展]

Critic扩展允许使用Critic Markup突出显示文档中添加、删除或更新的部分,例如用于跟踪 Markdown 语法中的更改。通过mkdocs.yml启用它:

markdown_extensions:
  - pymdownx.critic

支持以下配置选项:

mode

默认:view – 此选项定义应如何解析标记,即是否只是view所有建议的更改,或者选择性地acceptreject它们:

查看更改

markdown_extensions:
  - pymdownx.critic:
      mode: view

接受更改

markdown_extensions:
  - pymdownx.critic:
      mode: accept

拒绝更改

markdown_extensions:
  - pymdownx.critic:
      mode: reject

参考以下使用方法:

Details

[Details 支持] · [Details 扩展]

Details扩展增强了Admonition扩展,使得生成的call-outs可折叠,允许用户打开和关闭它们。通过mkdocs.yml启用它:

markdown_extensions:
  - pymdownx.details

没有可用的配置选项。参考以下使用方法:

Emoji

[Emoji 支持] · [Emoji 扩展]

Emoji扩展自动将捆绑和自定义的图标和表情符号以*.svg文件格式内联到生成的 HTML 页面中。通过mkdocs.yml启用它:

markdown_extensions:
  - pymdownx.emoji:
      emoji_index: !!python/name:materialx.emoji.twemoji # (1)!


      emoji_generator: !!python/name:materialx.emoji.to_svg
  1. [Python Markdown Extensions]使用pymdownx命名空间,但为了支持图标的内联,必须使用materialx命名空间,因为它扩展了pymdownx的功能。

支持以下配置选项:

emoji_index

默认:emojione – 此选项定义用于渲染的表情符号集。请注意,由于许可证限制,不推荐使用emojione

markdown_extensions:
  - pymdownx.emoji:
      emoji_index: !!python/name:materialx.emoji.twemoji

emoji_generator

默认:to_png – 此选项定义如何渲染解析的表情符号或图标短代码。请注意,图标只能与to_svg配置一起使用:

markdown_extensions:
  - pymdownx.emoji:
      emoji_generator: !!python/name:materialx.emoji.to_svg

options.custom_icons

默认:none – 此选项允许列出要在 Markdown 或mkdocs.yml中使用的附加图标集的文件夹,这在图标定制指南中有更详细的解释:

markdown_extensions:
  - pymdownx.emoji:
      emoji_index: !!python/name:materialx.emoji.twemoji
      emoji_generator: !!python/name:materialx.emoji.to_svg
      options:
      custom_icons:
        - overrides/.icons

这个扩展的其他配置选项不被 MkDocs 的 Material 官方支持,这就是为什么它们可能产生意外的结果。使用它们需要自担风险。

参考以下使用方法:

Highlight

[Highlight 支持] · [Highlight 扩展] · 替代 CodeHilite

Highlight扩展为代码块的语法高亮(借助SuperFences)和内联代码块(借助InlineHilite)提供了支持。通过mkdocs.yml启用它:

markdown_extensions:
  - pymdownx.highlight:
      anchor_linenums: true
  - pymdownx.superfences # (1)!
  1. HighlightSuperFences扩展用来对代码块进行语法高亮,而不是反过来,这就是为什么这个扩展也需要被启用。

支持以下配置选项:

use_pygments

默认:true – 此选项允许控制是否在构建时使用Pygments进行高亮,或者在浏览器中使用 JavaScript 语法高亮器:

Pygments

markdown_extensions:
    - pymdownx.highlight:
        use_pygments: true
    - pymdownx.superfences

JavaScript

markdown_extensions:
    - pymdownx.highlight:
        use_pygments: false

例如,Highlight.js,一个JavaScript语法高亮器,可以通过一些额外的JavaScript和一个额外的样式表mkdocs.yml中集成:

docs/javascripts/highlight.js

document$.subscribe(() => {
    hljs.highlightAll()
})

mkdocs.yml

extra_javascript:
    - https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.2/highlight.min.js
    - javascripts/highlight.js
extra_css:
    - https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.2/styles/default.min.css

注意,Highlight.jsHighlight扩展没有关联。

所有以下的配置选项只与使用Pygments的构建时语法高亮兼容,所以如果use_pygments设置为false,它们就不适用。

pygments_lang_class

默认:false – 此选项指示Pygments添加一个 CSS 类来识别代码块的语言,这对于自定义注解标记的功能是必要的:

markdown_extensions:
  - pymdownx.highlight:
      pygments_lang_class: true

auto_title

默认:false – 此选项将自动为所有使用的语言的代码块添加一个标题,例如,对于py块,打印Python

markdown_extensions:
  - pymdownx.highlight:
      auto_title: true

linenums

默认:false – 此选项将为所有代码块添加行号。如果你希望为一些,但不是所有的代码块添加行号,请参考代码块参考中关于添加行号[Adding line numbers]的部分,其中也包含了一些关于处理行号的提示:

markdown_extensions:
  - pymdownx.highlight:
      linenums: true

linenums_style

默认:tableHighlight扩展提供了三种添加行号的方式,其中两种被 MkDocs 的 Material 支持。而table是将代码块包装在一个<table>元素中,pymdownx-inline将行号渲染为行本身的一部分:

markdown_extensions:
  - pymdownx.highlight:
      linenums_style: pymdownx-inline

注意,inline将行号放在实际的代码旁边,这意味着它们将在用光标选择文本或复制代码块到剪贴板时被包含进来。因此,推荐使用tablepymdownx-inline

anchor_linenums

[anchor_linenums 支持] · 默认:false – 如果一个代码块包含行号,启用这个设置将用锚链接包装它们,这样它们可以更容易地被超链接和分享:

markdown_extensions:
  - pymdownx.highlight:
      anchor_linenums: true

line_spans

默认:none – 当这个选项被设置时,代码块的每一行都被包装在一个span中,这对于像行高亮这样的功能来说是必要的:

markdown_extensions:
  - pymdownx.highlight:
      line_spans: __span

这个扩展的其他配置选项不被 MkDocs 的 Material 官方支持,这就是为什么它们可能产生意外的结果。使用它们需要自担风险。

参考以下使用方法:

InlineHilite

[InlineHilite 支持] · [InlineHilite 扩展]

InlineHilite扩展为内联代码块的语法高亮提供支持。它建立在Highlight扩展之上,从中获取其配置。通过mkdocs.yml启用它:

markdown_extensions:
  - pymdownx.highlight
  - pymdownx.inlinehilite

这个扩展的配置选项不特定于 Material for MkDocs,因为它们只影响 Markdown 解析阶段。唯一的例外是css_class选项,这个选项不能被修改。参考InlineHilite 文档以获取指引。

参考以下使用方法:

Keys

[Keys 支持] · [Keys 扩展]

Keys扩展添加了一个简单的语法,允许渲染键盘键和组合,例如Ctrl+Alt+Del。通过mkdocs.yml启用它:

markdown_extensions:
  - pymdownx.keys

这个扩展的配置选项不特定于 Material for MkDocs,因为它们只影响 Markdown 解析阶段。唯一的例外是class选项,这个选项不能被修改。参考Keys 文档以获取更多信息。

参考以下使用方法:

SmartSymbols

[SmartSymbols 支持] · [SmartSymbols 扩展]

SmartSymbols扩展将一些字符序列转换为对应的符号,例如版权符号或分数。通过mkdocs.yml启用它:

markdown_extensions:
  - pymdownx.smartsymbols

这个扩展的配置选项不特定于 Material for MkDocs,因为它们只影响 Markdown 解析阶段。参考SmartSymbols 文档以获取指引。

Snippets

[Snippets 支持] · [Snippets 扩展]

Snippets扩展增加了一种能力,可以将任意文件的内容嵌入到文档中,包括其他文档或源文件,使用简单的语法。通过mkdocs.yml启用它:

markdown_extensions:
  - pymdownx.snippets

这个扩展的配置选项不特定于 Material for MkDocs,因为它们只影响 Markdown 解析阶段。参考Snippets 文档以获取更多信息。

参考以下使用方法:

SuperFences

[SuperFences 支持] · [SuperFences 扩展] · 取代 Fenced Code Blocks

SuperFences扩展允许在彼此之间任意嵌套代码和内容块,包括警告,选项卡,列表和所有其他元素。通过mkdocs.yml启用它:

markdown_extensions:
  - pymdownx.superfences

以下配置选项得到了支持:

custom_fences

默认:none – 此选项允许为自定义围栏定义一个处理器,例如,为了保留Mermaid.js图表的定义以在浏览器中解释:

markdown_extensions:
    - pymdownx.superfences:
        custom_fences:
        - name: mermaid
            class: mermaid
            format: !!python/name:pymdownx.superfences.fence_code_format

注意,这主要是为了防止应用语法高亮。参考图表以了解如何将 Mermaid.js 与 Material for MkDocs 集成。

这个扩展的其他配置选项并未得到 Material for MkDocs 的官方支持,这就是为什么它们可能产生意外的结果。使用它们需要自担风险。

参考以下使用方法:

Tabbed

[Tabbed 支持] · [Tabbed 扩展]

Tabbed扩展允许使用内容选项卡,这是一种将相关内容和代码块分组在易于访问的选项卡下的简单方式。通过mkdocs.yml启用它:

markdown_extensions:
  - pymdownx.tabbed:
      alternate_style: true

以下配置选项得到了支持:

alternate_style

默认值:false · 必需

此选项启用内容选项卡的替代样式,它在移动视口上的行为更好,并且是唯一支持的样式:

markdown_extensions:
  - pymdownx.tabbed:
      alternate_style: true

slugify

默认值:headerid.slugify

此选项允许自定义 slug 函数。对于某些语言,默认值可能无法产生良好且可读的标识符,可以考虑使用其他 slug 函数,例如Python Markdown 扩展中的函数:

Unicode

markdown_extensions:
  - pymdownx.tabbed:
      slugify: !!python/object/apply:pymdownx.slugs.slugify
        kwds:
          case: lower

Unicode,区分大小写

markdown_extensions:
  - pymdownx.tabbed:
      slugify: !!python/object/apply:pymdownx.slugs.slugify

此扩展的其他配置选项并未得到 Material for MkDocs 的官方支持,这就是为什么它们可能产生意外的结果。使用它们需要自担风险。

参考以下使用方法:

Tasklist

[Tasklist 支持] · [Tasklist 扩展]

Tasklist扩展允许使用受GitHub Flavored Markdown启发的任务列表,遵循相同的语法规则。通过mkdocs.yml启用它:

markdown_extensions:
  - pymdownx.tasklist:
      custom_checkbox: true

以下配置选项得到了支持:

custom_checkbox

默认值:false

此选项切换复选框的渲染样式,用美观的图标替换原生复选框样式,因此推荐使用:

markdown_extensions:
  - pymdownx.tasklist:
      custom_checkbox: true

clickable_checkbox

默认值:false

此选项切换复选框是否可点击。由于状态不会持久保存,因此从用户体验角度来看,并不推荐使用此选项:

markdown_extensions:
  - pymdownx.tasklist:
      clickable_checkbox: true

此扩展的其他配置选项并未得到 Material for MkDocs 的官方支持,这就是为什么它们可能产生意外的结果。使用它们需要自担风险。

参考以下使用方法:


  1. 其他像KaTeX这样的库也得到了支持,并可以通过一些额外的努力集成。有关进一步的指导,请参阅[Arithmatex 关于 KaTeX 的文档],因为这超出了 MkDocs 的材料的范围。