【问题标题】:How can I customize the output from pygments?如何自定义 pygments 的输出?
【发布时间】:2010-10-12 01:56:07
【问题描述】:

如果我通过 pygments 运行 python 源文件,它会输出 html 代码,其元素类属于 pygments 正在使用的某些 CSS 文件。是否可以将样式属性包含在输出的 html 中,这样我就不必提供 CSS 文件了?

【问题讨论】:

    标签: python html css pygments


    【解决方案1】:

    通常,您的代码只是网页上众多内容之一。您经常希望代码看起来与其他内容不同。通常,您希望将代码的样式控制为整体页面样式的一部分。 CSS 是您的首选,最好的选择。

    但是,如果看起来更好,您可以将样式嵌入 HTML 中。这是一个在<head> 标记中显示<style> 标记的示例。

    http://www.w3schools.com/TAGS/tag_style.asp

    【讨论】:

    • Scott,我想以编程方式执行此操作。
    • 在这种情况下“以编程方式”是什么意思?您将获得一份文档,其中引用了您可以提供的样式。你还想要什么?
    • @S.Lott pygments 为您提供了不同的文本格式设置方法。默认方法是将代码包装在跨度周围,跨度表示编程语言中的不同标记,您希望在其中添加语法突出显示。然后通过 CSS 应用样式。但是 pygments 可以让您将样式输出为单独的 CSS 文件或嵌入。您的回答非常笼统,表明您对问题或问题知之甚少。
    【解决方案2】:

    通过将 noclasses 属性设置为 True,只会生成内联样式。这是一个可以很好地完成工作的 sn-p:

    
    formatter = HtmlFormatter(style=MyStyle)
    formatter.noclasses = True
    print highlight(content,PythonLexer(),formatter)
    

    【讨论】:

      【解决方案3】:

      将 full=True 传递给 HtmlFormatter 构造函数。

      【讨论】:

        【解决方案4】:

        @Ignacio:恰恰相反:

        from pygments import highlight
        from pygments.lexers import PythonLexer
        from pygments.formatters import HtmlFormatter
        
        code = 'print "Hello World"'
        print highlight(code, PythonLexer(), HtmlFormatter(noclasses=True))
        

        [参考:http://pygments.org/docs/formatters/,见 HtmlFormatter]

        (基本上和Tempus的回答一样,我只是觉得一个完整的代码sn-p可能会节省几秒钟))

        PS。那些认为原始问题不合适的人可能会想象,例如将突出显示的代码粘贴到由第三方服务托管的博客条目中的任务。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-04-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多