关于 Python Markdown 代码高亮


!!!使用 mistune 而非 markdown

mistune 的使用方式较之 markdown 更加方便,渲染速度也更快,而且他可以很方便的和 highlightjs https://highlightjs.org/ 合并使用,非常方便,建议使用这个,而非 markdown.

mistune 的具体使用,可以参考,https://pypi.org/project/mistune/

安装与使用

GitHub 项目目录:https://github.com/Python-Markdown/markdown

代码高亮相关文档:https://python-markdown.github.io/extensions/code_hilite/

完成代码高亮的步骤:

  1. 安装 Pygments

    ...The CodeHilite extension will produce HTML output without Pygments, but it won’t highlight anything... 所以说 CodeHilits 只是起到一个对 Code 内进行识别标记的过程,而渲染高亮,由前端完成,但是可以通过 Pygments 来生成样式。

  2. 生成样式

pygmentize -S default -f html -a .codehilite > styles.css

此处相当于生成默认样式。

注:查看 pygmentize 样式,pygmentize -L style

语法

CodeHilite扩展遵循与常规Markdown代码块相同的语法,但是有一点不同的是,CodeHilite 标识语言的方式和 Markdown 的常规方式略有不同。

例如:

  • 使用冒号

如果第一行以三个或三个以上的冒号开头,则冒号后的文本标识该语言,在不使用处理和行号之前,从代码块中删除第一行

:::python
print('Hello world.')
  • 带有行号

使用例如 #!/usr/bin/python 在开头,会使结果带有行号。

#!/usr/bin/python
    # Code goes here ...

关于为什么 markdown 和 highlight.js 不兼容的问题

python-markdown,对于代码段,默认使用的 markdown.extensions.codehilite 对于代码段的包裹,采用的是 div / pre 的形式,而不是 pre / code 的形式,所以 highlight.js 无法自动识别。