You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Python Rich库中Markdown文本高亮的配色方案适配浅色终端

如何修改rich.Markdown在浅色终端下的配色方案?

我在使用rich模块实现终端Markdown支持时,遇到了浅色主题终端下默认配色几乎无法阅读的问题(如图所示,代码高亮部分可读性极差)。

浅色终端下rich Markdown的糟糕可读性

当前使用的rich代码示例如下:

导入模块:

from rich.console import Console
from rich.markdown import Markdown

打印Markdown内容:

console.print(Markdown(msg))

注:深色主题终端下默认配色显示正常。

我查阅了rich的Styles、Highlights和Markdown相关文档,但没找到适配浅色主题修改Markdown自定义配色的方法。尝试创建自定义主题,但发现这类主题似乎只适用于手动控制台打印,对Markdown渲染不起作用。

现在需要解决的是如何修改rich.Markdown渲染时使用的配色方案,适配浅色终端。


解决方案:自定义Markdown样式映射

rich的Markdown类支持通过style参数传入自定义样式映射,直接覆盖默认的Markdown元素配色。你可以针对不同的Markdown元素(比如代码块、标题、链接等)单独设置适合浅色终端的颜色。

方法一:局部自定义样式(仅针对单个Markdown对象)

  1. 定义样式字典,键为Markdown元素名称,值为rich支持的样式字符串:
# 适配浅色终端的Markdown样式
light_markdown_styles = {
    "code": "black on white",          # 行内代码:黑字白底
    "code_block": "black on white",    # 代码块:黑字白底
    "heading": "bold dark_blue",       # 标题:加粗深蓝色
    "link": "blue underline",          # 链接:蓝色下划线
    "list": "dark_green",              # 列表项:深绿色
    "quote": "dark_red italic",        # 引用:深红色斜体
}
  1. 创建Markdown对象时传入该字典:
from rich.console import Console
from rich.markdown import Markdown

console = Console()
test_msg = """
# 测试标题
这是一段普通文本,包含[示例链接](https://example.com)。

```python
print("Hello, World!")

这是一段引用文本
"""

应用自定义样式渲染Markdown

md = Markdown(test_msg, style=light_markdown_styles)
console.print(md)

### 方法二:全局自定义主题(所有Markdown渲染生效)
如果想让终端内所有Markdown渲染都使用浅色样式,可以通过自定义主题并绑定到Console实例:
1. 定义带`markdown.`前缀的主题样式:
```python
from rich.theme import Theme

light_theme = Theme({
    "markdown.code": "black on white",
    "markdown.code_block": "black on white",
    "markdown.heading": "bold dark_blue",
    "markdown.link": "blue underline",
    "markdown.list": "dark_green",
    "markdown.quote": "dark_red italic",
})
  1. 创建Console时指定主题:
console = Console(theme=light_theme)
console.print(Markdown(test_msg))

常用Markdown元素样式键参考

你可以根据需求精细调整每个元素的样式,常用键包括:

  • markdown.heading/markdown.heading1~markdown.heading6(控制各级标题)
  • markdown.code/markdown.code_block(行内代码与代码块)
  • markdown.link/markdown.link_url(链接文本与URL部分)
  • markdown.bullet(列表项目符号)
  • markdown.table/markdown.table.header(表格与表头)

样式值支持rich的所有格式语法,比如bold(加粗)、italic(斜体)、underline(下划线),颜色可以用内置名称(如dark_blue)或十六进制值(如#000080)。

内容的提问来源于stack exchange,提问作者Racid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 18:59:56