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

使用PygmentsHTML格式化器生成带有语法高亮效果的HTML文档

发布时间:2023-12-23 01:43:13

Pygments是一个强大的用于语法高亮的Python库,可以帮助我们生成带有语法高亮效果的HTML文档。以下是一个使用Pygments生成带有语法高亮效果的HTML文档的示例:

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


def generate_html_code(code):
    lexer = PythonLexer()
    formatter = HtmlFormatter(linenos=True, full=True)
    highlighted_code = highlight(code, lexer, formatter)
    return highlighted_code


def generate_html_document(title, code):
    html_code = generate_html_code(code)

    html_template = f'''
    <!DOCTYPE html>
    <html>
    <head>
        <title>{title}</title>
        <style>
            {HtmlFormatter().get_style_defs('.highlight')}
        </style>
    </head>
    <body>
        <pre class="highlight">{html_code}</pre>
    </body>
    </html>
    '''

    return html_template


if __name__ == '__main__':
    title = "Syntax Highlighting Example"
    code = '''
    def hello_world():
        print("Hello, World!")
    '''

    html_document = generate_html_document(title, code)

    with open("highlighted_code.html", "w") as f:
        f.write(html_document)

在上面的示例代码中,首先我们引入了Pygments库的必要模块Lexer、Formatter和highlight。

然后,我们定义了一个generate_html_code函数,它接收一段代码作为参数,在函数中我们使用了PythonLexer来对代码进行词法分析,然后使用HtmlFormatter来设置代码的格式,最后使用highlight函数生成带有语法高亮效果的代码。

接下来,我们定义了一个generate_html_document函数,它接收一个标题和一段代码。在函数内部,我们调用了generate_html_code函数来生成带有语法高亮效果的代码。我们使用了一个简单的HTML模板,并将代码插入到pre标签中。我们还添加了一些CSS样式,以便更好地显示高亮效果。最后,我们返回完整的HTML文档。

在主程序中,我们定义了一个标题和一段代码,并调用generate_html_document函数生成HTML文档。我们将生成的HTML代码写入名为highlighted_code.html的文件中。

你可以将上述代码保存到一个Python文件中并运行。运行后,你将得到一个名为highlighted_code.html的文件,其中包含了带有语法高亮效果的代码。

这是一个简单的使用Pygments生成带有语法高亮效果的HTML文档的示例。你可以根据自己的需求对生成的HTML文档进行扩展和自定义,以满足更复杂的需求。