如何将 "lang" 属性添加到 python-markdown 中的 <pre> 标签?
How to Add "lang" Attribute to a <pre> Tag in python-markdown?
我正在使用 django-pygmentes
来突出显示我的代码块。我正在用 markdown 编写内容,并在视图部分将其转换为 HTML 。一切都好。现在,我想实现突出显示的一面。 Pygmentes 包需要这样的东西才能应用颜色:
<pre lang="python">...</pre>
但是,这就是我在 post:
中编写代码块时得到的结果
<pre><code clas="language-python">...</code></pre>
这是我的降价:
```python
print('Hey')
所以,Pygments 找不到元素。有什么方法可以覆盖任何方法并应用更改吗?
更新: 现在,我已经安装了 pygments
并将此扩展添加到降价扩展中。这是我的降价及其生成的内容:
```{lang="python"}
print('Hello World')
输出:
<pre><code lang="python">
print('Hello World')
</code></pre>
很棒,但是还没有突出显示.. :(
我还在 运行 pygmentize -S default -f html -a .codehilite > styles.css
之后链接了经典 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
扩展。现在,一切正常。谢谢
我正在使用 django-pygmentes
来突出显示我的代码块。我正在用 markdown 编写内容,并在视图部分将其转换为 HTML 。一切都好。现在,我想实现突出显示的一面。 Pygmentes 包需要这样的东西才能应用颜色:
<pre lang="python">...</pre>
但是,这就是我在 post:
中编写代码块时得到的结果<pre><code clas="language-python">...</code></pre>
这是我的降价:
```python
print('Hey')
所以,Pygments 找不到元素。有什么方法可以覆盖任何方法并应用更改吗?
更新: 现在,我已经安装了 pygments
并将此扩展添加到降价扩展中。这是我的降价及其生成的内容:
```{lang="python"}
print('Hello World')
输出:
<pre><code lang="python">
print('Hello World')
</code></pre>
很棒,但是还没有突出显示.. :(
我还在 运行 pygmentize -S default -f html -a .codehilite > styles.css
之后链接了经典 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
扩展。现在,一切正常。谢谢