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给单机游戏里的舍不得吃药写个终局过剩惩罚模型
奇思妙想 探讨单机RPG中常见的省药综合征,利用物品边际效用衰减与终局过剩惩罚设计一个动态吃药决策小脚本。
2
用Python给Steam吃灰游戏库写个随机轮换救赎启动器
奇思妙想 治好大促买完就供着的电子囤积症,让库存里躺平的打折神作重见天日。
3
用Python模拟猫咪踩键盘触发快捷键的灾难等级
趣味编程 为什么猫爪子随便在键盘上一踩,总能精准命中关闭窗口或者全屏置顶的神秘组合键?
4
用Python给桌面杂物堆写个虚拟热力学熵增估算器
趣味编程 明明刚花两小时整理干净的桌面,四十八小时后又会自动长出一堆奇奇怪怪的零食袋和闲置转接头。
5
用Python给Steam打折通知写个冲动消费冷静期加权器
瞎折腾 每次大促销看到绿油油的-80%就管不住手,干脆用几行脚本给入库冲动加上时间衰减和游玩概率权重。





