python: 用pygments给markdown文档染色
2024-09-23 06:39:58
首先你需要一个markdown解析器
比如有常见的markdown和markdown2,其他的可以参考这个网站的评价
我选择了mistune,自己继承写一个渲染的Renderer
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import mistune
import sys
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import html
class HighlightRenderer(mistune.Renderer):
def block_code(self, code, lang):
if not lang:
return '\n<pre><code>%s</code></pre>\n' % \
mistune.escape(code)
lexer = get_lexer_by_name(lang, stripall=True)
formatter = html.HtmlFormatter()
return highlight(code, lexer, formatter)
def main(argv):
name = argv[0]
md_name = '%s.md' % (name)
outfile = '%s.html' % (name)
with open(md_name) as mdfile:
md_text = mdfile.read()
rd = HighlightRenderer()
markdown = mistune.Markdown(renderer=rd)
html = markdown(md_text)
# 为了避免中文乱码 以及添加高亮样式
head_css = '<meta http-equiv="Content-Type"\
content="text/html; charset=utf-8" />\n'
css_name = "code.css"
code_css = '<link rel="stylesheet" href="' + css_name \
+ '" type="text/css"/>\n'
code_css = head_css + code_css
with open(outfile, 'w') as output:
output.write(code_css + html)
if __name__ == "__main__":
main(sys.argv[1:])
利用pygments的命令生成特定主题的css:
pygmentize -f html -a .codehilite -S monokai > code.css
之后运行这个python文件,假设markdown文件是data.md,运行 python solve.py data 即可
具体还有什么样式可以在 pygments网站看
最新文章
- 保存知乎收藏夹功能的NodeJS版本
- Strong AI Versus Weak AI
- python 练习 17
- POJ 3258
- IOS 中关于自定义Cell 上的按钮 开关等点击事件的实现方法(代理)
- C#检查foreach为null判断
- 第 9 章 MySQL数据库Schema设计的性能优化
- pstree 命令详解
- 读书笔记(chapter4)
- Linux系列:Fedora虚拟机设置固定IP上网(配置IP、网关、DNS、防止resolv.conf被重写)
- Java 多线程(四)之守护线程(Daemon)
- Python知识(1)----基础入门和进阶总结。
- java使用Redis6--sentinel单点故障主从自动切换
- 【spoj】DIVCNTK
- IOS7 隐藏状态栏 (电池栏)
- c调用 lua 栈操作
- JDK自带监控工具
- Tomcat性能调整完整教程
- NOIP Mayan游戏
- 笔记-python-调试
热门文章
- (win10)Wamp环境下php升级至PHP7.2
- .1-浅析webpack源码之webpack.cmd
- [转]DevOps解决方案-腾讯云
- RowFilter遇上特殊字符*%&#39;[]\
- NodeJS+Express开发web,为什么中文显示为乱码
- OpenGL学习笔记:Console工程下如何不显示控制台黑窗口只显示Windows窗口
- EasyUI 添加一行的时候 行号出现负数的解决方案
- 4.socket(-)之控制台
- Android-远程Service
- spring-bean实例化三种方式