微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在python-markdown中的<pre>标记中添加“ lang”属性?

如何解决如何在python-markdown中的<pre>标记中添加“ lang”属性?

我正在使用django-pygmentes来突出显示我的代码块。我正在用markdown编写内容,然后在视图部分将其转换为HTML。一切都好。现在,我要实现突出显示方面。 Pygmentes软件包需要这样的东西才能应用颜色:

<pre lang="python">...</pre>

但是,这就是我在帖子中编写代码块时得到的:

<pre><code clas="language-python">...</code></pre>

这是我的降价促销

```python
print('hey')

因此,Pygments无法找到该元素。有什么方法可以覆盖任何方法并应用更改吗?

更新:现在,我已经安装了pygments并将此扩展添加到markdown扩展中。这是我的降价及其产生的结果:

```{lang="python"}
print('Hello World')

输出

<pre><code lang="python">
print('Hello World')
</code></pre>

哪个很棒,但是还没有高亮显示.. :( 在运行styles.css后,我还链接了经典的pygmentize -S default -f html -a .codehilite > styles.css文件,并且链接正确。

这是我的自定义markdown过滤器。问题可能来自此模块:

from django import template
from django.template.defaultfilters import stringfilter

import markdown as md

register = template.Library()


@register.filter()
@stringfilter
def markdown(value):
    return md.markdown(value,extensions=['markdown.extensions.fenced_code','markdown.extensions.attr_list'])

解决方法

您始终可以恢复为原始HTML。只需将HTML直接插入文档中即可:

<pre lang="python">...</pre>

您可以启用CodeHilite Markdown扩展,该扩展使用Pygments突出显示代码块。 Python-Markdown将采用在受保护代码块上设置的语言,并将其传递给pygments。无需使用Django应用。

只要您使用的是Python-Markdown版本3.3+并且启用了attr_list扩展名,就可以直接将任意key/value pairs分配给受防护的代码块(一定要包括花括号)

``` { lang=python }

但是,这仍然会将属性分配给code标签,而不是pre标签。像这样:

<pre><code lang="python">...

此外,请注意,生成<pre><code clas="language-python">的默认行为是在HTML spec中指定代码块语言的推荐方式(请参见第二个“示例”)。可能有人认为工具无法识别为代码块指定语言的方法是一种错误。

,

我忘记在自定义过滤器模块中添加highlit扩展名。现在,一切正常。谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。