优化代码高亮和段落格式,调整关键字颜色和背景色,确保更好的可读性

This commit is contained in:
Jeff fu
2025-12-30 15:04:06 +08:00
parent 7f43e45049
commit d06b27fbb8
2 changed files with 42 additions and 40 deletions

View File

@@ -469,6 +469,7 @@ class Action:
for run in heading.runs:
run.font.name = "Times New Roman"
run._element.rPr.rFonts.set(qn("w:eastAsia"), "SimHei")
run.font.color.rgb = RGBColor(0, 0, 0)
def add_paragraph(self, doc: Document, text: str):
"""Add paragraph with inline formatting support"""
@@ -583,25 +584,25 @@ class Action:
"""Add code block with syntax highlighting"""
# Token color mapping (based on common IDE themes)
TOKEN_COLORS = {
Token.Keyword: RGBColor(0, 0, 255), # Blue - keywords
Token.Keyword.Constant: RGBColor(0, 0, 255),
Token.Keyword.Declaration: RGBColor(0, 0, 255),
Token.Keyword.Namespace: RGBColor(0, 0, 255),
Token.Keyword.Type: RGBColor(0, 0, 255),
Token.Name.Function: RGBColor(136, 18, 128), # Purple - function names
Token.Name.Class: RGBColor(38, 127, 153), # Cyan - class names
Token.Name.Decorator: RGBColor(255, 128, 0), # Orange - decorators
Token.Name.Builtin: RGBColor(0, 112, 32), # Green - builtins
Token.String: RGBColor(163, 21, 21), # Red - strings
Token.String.Doc: RGBColor(128, 128, 128), # Gray - docstrings
Token.Comment: RGBColor(128, 128, 128), # Gray - comments
Token.Comment.Single: RGBColor(128, 128, 128),
Token.Comment.Multiline: RGBColor(128, 128, 128),
Token.Number: RGBColor(9, 134, 88), # Green - numbers
Token.Number.Integer: RGBColor(9, 134, 88),
Token.Number.Float: RGBColor(9, 134, 88),
Token.Operator: RGBColor(104, 118, 135), # Gray-blue - operators
Token.Punctuation: RGBColor(64, 64, 64), # Dark gray - punctuation
Token.Keyword: RGBColor(0, 92, 197), # macOS blue - keywords
Token.Keyword.Constant: RGBColor(0, 92, 197),
Token.Keyword.Declaration: RGBColor(0, 92, 197),
Token.Keyword.Namespace: RGBColor(0, 92, 197),
Token.Keyword.Type: RGBColor(0, 92, 197),
Token.Name.Function: RGBColor(0, 0, 0), # Functions stay black
Token.Name.Class: RGBColor(38, 82, 120), # Deep cyan-blue - classes
Token.Name.Decorator: RGBColor(170, 51, 0), # Warm orange - decorators
Token.Name.Builtin: RGBColor(0, 110, 71), # Deep green - builtins
Token.String: RGBColor(196, 26, 22), # Red - strings
Token.String.Doc: RGBColor(109, 120, 133), # Gray - docstrings
Token.Comment: RGBColor(109, 120, 133), # Gray - comments
Token.Comment.Single: RGBColor(109, 120, 133),
Token.Comment.Multiline: RGBColor(109, 120, 133),
Token.Number: RGBColor(28, 0, 207), # Indigo - numbers
Token.Number.Integer: RGBColor(28, 0, 207),
Token.Number.Float: RGBColor(28, 0, 207),
Token.Operator: RGBColor(90, 99, 120), # Gray-blue - operators
Token.Punctuation: RGBColor(0, 0, 0), # Black - punctuation
}
def get_token_color(token_type):
@@ -632,7 +633,7 @@ class Action:
# Add light gray background
shading = OxmlElement("w:shd")
shading.set(qn("w:fill"), "F5F5F5")
shading.set(qn("w:fill"), "F7F7F7")
paragraph._element.pPr.append(shading)
# Try to use Pygments for syntax highlighting

View File

@@ -464,6 +464,7 @@ class Action:
for run in heading.runs:
run.font.name = "Times New Roman"
run._element.rPr.rFonts.set(qn("w:eastAsia"), "黑体")
run.font.color.rgb = RGBColor(0, 0, 0)
def add_paragraph(self, doc: Document, text: str):
"""添加段落,支持内联格式"""
@@ -582,25 +583,25 @@ class Action:
"""添加代码块,支持语法高亮"""
# 语法高亮颜色映射 (基于常见的 IDE 配色)
TOKEN_COLORS = {
Token.Keyword: RGBColor(0, 0, 255), # 蓝 - 关键字
Token.Keyword.Constant: RGBColor(0, 0, 255),
Token.Keyword.Declaration: RGBColor(0, 0, 255),
Token.Keyword.Namespace: RGBColor(0, 0, 255),
Token.Keyword.Type: RGBColor(0, 0, 255),
Token.Name.Function: RGBColor(136, 18, 128), # 紫色 - 函数名
Token.Name.Class: RGBColor(38, 127, 153), # 青色 - 类名
Token.Name.Decorator: RGBColor(255, 128, 0), # 橙 - 装饰器
Token.Name.Builtin: RGBColor(0, 112, 32), # 绿 - 内置函数
Token.String: RGBColor(163, 21, 21), # 红色 - 字符串
Token.String.Doc: RGBColor(128, 128, 128), # 灰 - 文档字符串
Token.Comment: RGBColor(128, 128, 128), # 灰 - 注释
Token.Comment.Single: RGBColor(128, 128, 128),
Token.Comment.Multiline: RGBColor(128, 128, 128),
Token.Number: RGBColor(9, 134, 88), # 绿色 - 数字
Token.Number.Integer: RGBColor(9, 134, 88),
Token.Number.Float: RGBColor(9, 134, 88),
Token.Operator: RGBColor(104, 118, 135), # 灰蓝 - 运算符
Token.Punctuation: RGBColor(64, 64, 64), # 深灰 - 标点
Token.Keyword: RGBColor(0, 92, 197), # macOS 风格蓝 - 关键字
Token.Keyword.Constant: RGBColor(0, 92, 197),
Token.Keyword.Declaration: RGBColor(0, 92, 197),
Token.Keyword.Namespace: RGBColor(0, 92, 197),
Token.Keyword.Type: RGBColor(0, 92, 197),
Token.Name.Function: RGBColor(0, 0, 0), # 函数名保持黑色
Token.Name.Class: RGBColor(38, 82, 120), # 深青蓝 - 类名
Token.Name.Decorator: RGBColor(170, 51, 0), # 橙 - 装饰器
Token.Name.Builtin: RGBColor(0, 110, 71), # 绿 - 内置
Token.String: RGBColor(196, 26, 22), # 红色 - 字符串
Token.String.Doc: RGBColor(109, 120, 133), # 灰 - 文档字符串
Token.Comment: RGBColor(109, 120, 133), # 灰 - 注释
Token.Comment.Single: RGBColor(109, 120, 133),
Token.Comment.Multiline: RGBColor(109, 120, 133),
Token.Number: RGBColor(28, 0, 207), # 靛蓝 - 数字
Token.Number.Integer: RGBColor(28, 0, 207),
Token.Number.Float: RGBColor(28, 0, 207),
Token.Operator: RGBColor(90, 99, 120), # 灰蓝 - 运算符
Token.Punctuation: RGBColor(0, 0, 0), # 黑色 - 标点
}
def get_token_color(token_type):
@@ -631,7 +632,7 @@ class Action:
# 添加浅灰色背景
shading = OxmlElement("w:shd")
shading.set(qn("w:fill"), "F5F5F5")
shading.set(qn("w:fill"), "F7F7F7")
paragraph._element.pPr.append(shading)
# 尝试使用 Pygments 进行语法高亮