[英]How to Add "lang" Attribute to a <pre> Tag in python-markdown?
我正在使用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>
这是伟大的,但没有highliting尚未.. :(我也挂了经典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
扩展,您就可以将任意键/值对直接分配给受保护的代码块(确保包含花括号)。
``` { lang=python }
但是,这仍会将属性分配给code
标记,而不是pre
标记。 像这样:
<pre><code lang="python">...
另请注意,生成<pre><code clas="language-python">
的默认行为是在HTML 规范中指定代码块语言的推荐方式(参见第二个“示例”)。 人们可能认为这是一个错误,因为工具无法识别为代码块指定语言的方法。
我忘了在自定义过滤器模块中添加highlit
扩展。 现在,一切正常。 谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.