python语法高亮使用Pygments程序

Posted

技术标签:

【中文标题】python语法高亮使用Pygments程序【英文标题】:python syntax hilighting using Pygment program 【发布时间】:2014-06-12 17:56:22 【问题描述】:

所以,我有这个测试mardown文档,我用python生成了这样的html文档:

python -m markdown -x codehilite mydoc.md > mydoc.html

然后,我使用 Pygment 生成了 CSS 文件,如下所示:

pygmentize -S default -f html > codehilite.css

然后,我将此 CSS 文件的链接添加到 mydoc.html 中,但是,生成的 HTML 文档仍然没有完全突出显示 python 代码。 "" 中嵌入的字符串是高亮的,而 import 和 print 函数则不是,如图:

这是我的 mardown 文件:(mydoc.md)

This is a test

    import numpy
    print ("Hello world!")

这是我的 HTML 文档:

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="./codehilite.css">
</head>

<body>

<p>This is a test</p>
<div class="codehilite"><pre><span class="n">import</span> <span class="n">numpy</span>
<span class="n">print</span> <span class="p">(</span><span class="s">&quot;Hello world!&quot;</span><span class="p">)</span>
</pre></div>

</body>
</html>

并且 codehilite.css 包含:

.hll  background-color: #ffffcc 
.c  color: #408080; font-style: italic  /* Comment */
.err  border: 1px solid #FF0000  /* Error */
.k  color: #008000; font-weight: bold  /* Keyword */
.o  color: #666666  /* Operator */
.cm  color: #408080; font-style: italic  /* Comment.Multiline */
.cp  color: #BC7A00  /* Comment.Preproc */
.c1  color: #408080; font-style: italic  /* Comment.Single */
.cs  color: #408080; font-style: italic  /* Comment.Special */
.gd  color: #A00000  /* Generic.Deleted */
.ge  font-style: italic  /* Generic.Emph */
.gr  color: #FF0000  /* Generic.Error */
.gh  color: #000080; font-weight: bold  /* Generic.Heading */
.gi  color: #00A000  /* Generic.Inserted */
.go  color: #808080  /* Generic.Output */
.gp  color: #000080; font-weight: bold  /* Generic.Prompt */
.gs  font-weight: bold  /* Generic.Strong */
.gu  color: #800080; font-weight: bold  /* Generic.Subheading */
.gt  color: #0040D0  /* Generic.Traceback */
.kc  color: #008000; font-weight: bold  /* Keyword.Constant */
.kd  color: #008000; font-weight: bold  /* Keyword.Declaration */
.kn  color: #008000; font-weight: bold  /* Keyword.Namespace */
.kp  color: #008000  /* Keyword.Pseudo */
.kr  color: #008000; font-weight: bold  /* Keyword.Reserved */
.kt  color: #B00040  /* Keyword.Type */
.m  color: #666666  /* Literal.Number */
.s  color: #BA2121  /* Literal.String */
.na  color: #7D9029  /* Name.Attribute */
.nb  color: #008000  /* Name.Builtin */
.nc  color: #0000FF; font-weight: bold  /* Name.Class */
.no  color: #880000  /* Name.Constant */
.nd  color: #AA22FF  /* Name.Decorator */
.ni  color: #999999; font-weight: bold  /* Name.Entity */
.ne  color: #D2413A; font-weight: bold  /* Name.Exception */
.nf  color: #0000FF  /* Name.Function */
.nl  color: #A0A000  /* Name.Label */
.nn  color: #0000FF; font-weight: bold  /* Name.Namespace */
.nt  color: #008000; font-weight: bold  /* Name.Tag */
.nv  color: #19177C  /* Name.Variable */
.ow  color: #AA22FF; font-weight: bold  /* Operator.Word */
.w  color: #bbbbbb  /* Text.Whitespace */
.mf  color: #666666  /* Literal.Number.Float */
.mh  color: #666666  /* Literal.Number.Hex */
.mi  color: #666666  /* Literal.Number.Integer */
.mo  color: #666666  /* Literal.Number.Oct */
.sb  color: #BA2121  /* Literal.String.Backtick */
.sc  color: #BA2121  /* Literal.String.Char */
.sd  color: #BA2121; font-style: italic  /* Literal.String.Doc */
.s2  color: #BA2121  /* Literal.String.Double */
.se  color: #BB6622; font-weight: bold  /* Literal.String.Escape */
.sh  color: #BA2121  /* Literal.String.Heredoc */
.si  color: #BB6688; font-weight: bold  /* Literal.String.Interpol */
.sx  color: #008000  /* Literal.String.Other */
.sr  color: #BB6688  /* Literal.String.Regex */
.s1  color: #BA2121  /* Literal.String.Single */
.ss  color: #19177C  /* Literal.String.Symbol */
.bp  color: #008000  /* Name.Builtin.Pseudo */
.vc  color: #19177C  /* Name.Variable.Class */
.vg  color: #19177C  /* Name.Variable.Global */
.vi  color: #19177C  /* Name.Variable.Instance */
.il  color: #666666  /* Literal.Number.Integer.Long */

【问题讨论】:

codehilite.css 包含什么内容? 【参考方案1】:

我会明确添加语言,因为自动猜测并不总是可靠的,例如,

:::python
    print("Hello, World")
    a = 1 + 2

这应该可以解决您的问题;)

【讨论】:

以上是关于python语法高亮使用Pygments程序的主要内容,如果未能解决你的问题,请参考以下文章

Python中的动态语法高亮

sh 使用cat时shell的语法高亮显示。需要http://pygments.org/

Django 语法高亮导致字符转义问题

如何在PyCharm中获取.enaml文件的语法高亮?

如何在 Heroku 上使用 Pygments.rb?

Markdown 中的语法高亮显示,但选择了行号