编号列表中的代码块混乱了编号 python-markdown/mkdocs

yo7*_*6yo 2 read-the-docs mkdocs python-markdown

我正在为 mkdocs 中的一个项目创建一个指令列表,我相信该项目使用 python-markdown 作为其 markdown 引擎。但是,当我尝试在列表中的数字之间放置围栏代码块时,它会导致编号错误。

一个让我失望的例子(我还尝试在每个反引号栅栏和实际单词之间添加换行符,但它仍然弄乱了编号):


1. Click this
```
some code
```
2. Click that
Run Code Online (Sandbox Code Playgroud)

呈现出这样的效果:


1. Click this

some code

1. Click that
Run Code Online (Sandbox Code Playgroud)

然后,当我尝试缩进它时,它只会弄乱渲染:


1. Click this
    ```
    some code
    ```
2. Click that
Run Code Online (Sandbox Code Playgroud)


1. Click this ``` some code ```
2. Click that
Run Code Online (Sandbox Code Playgroud)

是的,制表符可以工作,但是如果我想用 ```language. 有没有办法既保留受隔离的代码块,又保留列表编号。

Way*_*lan 7

Pyhton-Markdown 的文档特别指出(在红色警告框中):

警告:受保护的代码块仅在文档根级别受支持。因此,它们不能嵌套在列表或块引用内。

因此,必须使用缩进代码块。当然,要将其保留为代码块并嵌套,您需要缩进两次:

1. Click this

        some code

2. Click that
Run Code Online (Sandbox Code Playgroud)

如果要为代码块定义语言,则需要使用配置文件中的markdown_extensions配置选项启用CodeHilite扩展:mkdocs.yml

markdown_extensions:
    codehilite:
        use_pygments: False
Run Code Online (Sandbox Code Playgroud)

通过将该use_pygments选项设置为False,CodeHilite 将输出与受防护的代码块相同的 HTML,然后由 MkDocs 主题提供的 JS 库突出显示这些代码块。

然后你需要使用CodeHilite的语法来定义语言:

1. Click this

        :::language    
        some code

2. Click that
Run Code Online (Sandbox Code Playgroud)