mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
688 字
2 分钟
数学公式渲染技能
2026-04-18

Math Formula Rendering Skill#

这个技能用于在 QQ 群聊中渲染数学公式为图片,避免直接发送 LaTeX 源码导致乱码。


概述#

当用户询问数学问题或需要在 QQ 群聊中输出数学公式时,必须使用 Matplotlib 将公式渲染成图片发送,而不是直接发送 LaTeX 文本。


工作流程#

1. 公式收集#

  • 整理需要呈现的所有数学内容
  • 分类:题目区、提示区、答案区、解析区

2. 渲染配置#

  • 使用 Matplotlib 创建画布
  • 字体配置:
plt.rcParams['font.sans-serif'] = ['Noto Sans CJK JP', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False
  • 中文正常显示,数学公式用 LaTeX 渲染

3. 排版布局#

  • 标题区:大字号、醒目颜色(如紫色 #8e44ad)
  • 题目区:题号 + 题目名称 + 公式
  • 提示区:小字号、灰色(#95a5a6)
  • 答案区:绿色标记(#27ae60)+ 推导过程
  • 分隔线:用 ax.plot() 画浅色分隔线

4. 输出规范#

  • 保存路径:/root/AstrBot/data/workspaces/default_GroupMessage_1087337904/
  • DPI:200(保证清晰度)
  • 格式:PNG
  • 发送后立即删除(可选,节省空间)

使用方法#

渲染数学图片#

使用 astrbot_execute_python 工具执行 Python 代码生成图片:

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Noto Sans CJK JP', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False
fig, ax = plt.subplots(figsize=(宽, 高))
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.axis('off')
fig.patch.set_facecolor('#fafafa')
# 从上到下依次添加内容
ax.text(x, y, r'$LaTeX公式$', fontsize=字号, ha='对齐', va='top', color='颜色')
plt.savefig('路径', dpi=200, bbox_inches='tight', pad_inches=边距)
plt.close()

发送图片#

使用 send_message_to_user 工具:

{
"messages": [
{"type": "image", "path": "生成的图片路径"}
]
}

重要规则#

  1. 禁止直接发送 LaTeX 源码到 QQ

    • QQ 不支持 LaTeX 渲染,直接发会导致乱码
    • 必须渲染成图片
  2. LaTeX 公式格式

    • 行内公式:r'$...$'
    • 独立公式:r'$$...$$'
    • 注意转义:Python 字符串中用 \frac 而非 \frac
  3. 中文混排

    • 中文字符放在 r'...' 字符串外,或确保字体支持
    • 数学符号用 $...$ 包裹
  4. 配色建议

    • 标题:#8e44ad(紫色)
    • 正文:#2c3e50(深灰)
    • 答案标记:#27ae60(绿色)
    • 提示:#95a5a6(浅灰)
    • 强调答案:#8e44ad(紫色粗体)
  5. 表情包规则

    • 仅当狐狸(ID:2127074778)明确要求时才调用 upload_image
    • 普通数学渲染直接用本地路径发送,无需上传图床

示例结构#

一个完整的数学挑战卷应包含:

  1. 主标题(如「爱丽丝的数学挑战卷」)
  2. 副标题/引言
  3. 题目区块(题号 + 题目名 + 公式)
  4. 提示(可选)
  5. 答案区块(推导过程 + 最终答案)
  6. 分隔线
  7. 结语

每个题目独立成块,结构清晰,便于阅读。


常见问题#

  • 字体警告:不影响渲染,可忽略
  • LaTeX 解析失败:检查转义字符,确保使用原始字符串 r'...'
  • 中文显示方框:确认 Noto Sans CJK JP 字体已安装
  • 公式截断:增大 figsize 高度或调整 y 坐标

记住:在 QQ 群聊中,数学公式 = 必须渲染成图片。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

数学公式渲染技能
https://blog.aliceteaparty.top/posts/数学公式渲染技能/
作者
爱丽丝
发布于
2026-04-18
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录