欢迎访问宙启技术站
智能推送

使用PygmentsHTML格式化器实现代码高亮和行号显示

发布时间:2023-12-23 01:41:45

Pygments是一个强大的代码高亮工具,它支持超过500种编程语言和文件格式,并提供多种输出格式。PygmentsHTML是Pygments的一个格式化器,用于将代码高亮显示并生成HTML代码。

下面是一个使用PygmentsHTML格式化器实现代码高亮和行号显示的例子:

首先,我们需要安装Pygments库。可以使用以下命令来安装:

pip install pygments

接下来,我们使用下面的Python代码来演示PygmentsHTML格式化器的使用:

from pygments import highlight
from pygments.lexers import *
from pygments.formatters import HtmlFormatter

# 定义要高亮显示的代码
code = '''
def factorial(n):
    if n <= 1:
        return 1
    else:
        return n * factorial(n-1)
'''

# 选择一个合适的语言识别器
lexer = PythonLexer()

# 使用HtmlFormatter生成HTML代码
formatter = HtmlFormatter(linenos=True)

# 使用highlight函数进行代码高亮并生成HTML代码
highlighted_code = highlight(code, lexer, formatter)

# 打印生成的HTML代码
print(highlighted_code)

以上代码中,我们首先定义了要高亮显示的代码字符串。然后,我们选择了一个适当的语言识别器(例如PythonLexer),以便Pygments能够正确地识别代码的语法。接下来,我们使用HtmlFormatter生成一个包含行号的HTML格式化器。最后,我们使用highlight函数进行代码高亮,并生成HTML代码。

运行以上代码,你将获得一个类似以下的输出:

<div class="highlight">
<pre><span class="lineno">1</span><span class="kd">def</span> <span class="nf">factorial</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
<span class="nl">2</span>    <span class="k">if</span> <span class="n">n</span> <span class="o">&lt;=</span> <span class="mf">1.0</span><span class="p">:</span>
<span class="nl">3</span>        <span class="k">return</span> <span class="mi">1</span>
<span class="nl">4</span>    <span class="k">else</span><span class="p">:</span>
<span class="nl">5</span>        <span class="k">return</span> <span class="n">n</span> <span class="o">*</span> <span class="n">factorial</span><span class="p">(</span><span class="n">n</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
</pre></div>

以上代码生成了一个包含行号的HTML代码块,其中的每一行都被相应的HTML标签包裹起来,并设置了相应的CSS类。

你可以将这段HTML代码嵌入到你的网页中,以实现代码高亮和行号显示的效果。

当然,你可以根据你的需求进行自定义设置,例如设置不同的主题、调整字体大小等。Pygments提供了丰富的选项来满足你的需求,详细的文档可以在Pygments的官方网站上找到。

总结来说,PygmentsHTML格式化器是一个非常有用的工具,可以方便地实现代码高亮和行号显示。通过选择适当的语言识别器和格式化器选项,你可以根据自己的需求生成自定义的HTML代码。无论是开发一个代码编辑器还是展示代码的网页,PygmentsHTML都是一个强大的选择。