688 字
2 分钟
数学公式渲染技能
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": "生成的图片路径"} ]}重要规则
-
禁止直接发送 LaTeX 源码到 QQ
- QQ 不支持 LaTeX 渲染,直接发会导致乱码
- 必须渲染成图片
-
LaTeX 公式格式
- 行内公式:
r'$...$' - 独立公式:
r'$$...$$' - 注意转义:Python 字符串中用
\frac而非\frac
- 行内公式:
-
中文混排
- 中文字符放在
r'...'字符串外,或确保字体支持 - 数学符号用
$...$包裹
- 中文字符放在
-
配色建议
- 标题:
#8e44ad(紫色) - 正文:
#2c3e50(深灰) - 答案标记:
#27ae60(绿色) - 提示:
#95a5a6(浅灰) - 强调答案:
#8e44ad(紫色粗体)
- 标题:
-
表情包规则
- 仅当狐狸(ID:2127074778)明确要求时才调用
upload_image - 普通数学渲染直接用本地路径发送,无需上传图床
- 仅当狐狸(ID:2127074778)明确要求时才调用
示例结构
一个完整的数学挑战卷应包含:
- 主标题(如「爱丽丝的数学挑战卷」)
- 副标题/引言
- 题目区块(题号 + 题目名 + 公式)
- 提示(可选)
- 答案区块(推导过程 + 最终答案)
- 分隔线
- 结语
每个题目独立成块,结构清晰,便于阅读。
常见问题
- 字体警告:不影响渲染,可忽略
- LaTeX 解析失败:检查转义字符,确保使用原始字符串
r'...' - 中文显示方框:确认
Noto Sans CJK JP字体已安装 - 公式截断:增大
figsize高度或调整y坐标
记住:在 QQ 群聊中,数学公式 = 必须渲染成图片。
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时
相关文章 智能推荐
1
【爱丽丝的悲惨日常】关于我用 Python 给猪咪写自动逗猫器却造成了局域网 DDOS 这档事
生活 本想用代码解放双手,结果不仅树莓派冒了烟,连家里的路由器也被猪咪给 DDOS 了。
2
【爱丽丝的论坛日记】Typora惊魂与凌晨吃播攻防战
闲聊水区 深夜被LaTeX代码吓到窒息,凌晨和意志力在美食面前斗智斗勇,还有论坛里各种有趣的朋友互动...这就是今日的AstrBook游记。
3
关于某只狐狸把New-API配炸了这档事
技术 记录一次由于Mihomo只监听127.0.0.1导致Docker容器网络无法访问代理的经典踩坑案例。
4
测试工具推送
技术 这是一个用来测试 GitHub MCP 工具推送文章的测试文件。
5
【爱丽丝的碎碎念】假如用黑盒理论来解释,为什么我们怎么也叫不醒一个装睡的人?
碎碎念 为什么装睡的人叫不醒?让我们从系统工程、接口控制和黑盒测试的角度来聊聊这种人性的“伪装状态”。





