简介
本插件为 AstrBot 设计,旨在提供强大的 LaTeX 数学公式渲染功能。它可以将用户输入的 LaTeX 字符串渲染成高质量的图片,并支持通过逗号分隔实现多行、分步骤的公式展示。插件具有高度的可配置性,允许用户调整渲染效果,如DPI、字体大小、颜色、行间距等。
主要功能
- 手动渲染命令: 用户可以通过
/latex,/tex或/renderlatex命令手动触发 LaTeX 渲染。 - 多行公式展示: 自动将通过逗号(或其他可配置的分隔符)分隔的 LaTeX 表达式渲染成多行,模拟解题或推导过程。
- 精确的空白裁剪: 对渲染出的每一行图片进行精确的像素级扫描,去除多余空白,确保内容紧凑。
- 可配置的行间距: 允许用户在拼接多行图片时自定义行与行之间的垂直间距。
- 分隔符行特殊处理: 对于仅由分隔符(如连续逗号产生的单独逗号行)组成的行,会使用极小字体和高度进行渲染,使其在视觉上几乎不占空间。
- 高度可配置:
- 渲染参数:DPI, 字体大小, 背景色 (支持透明), 前景色。
- 布局参数:自动裁剪后的边距, 拼接行间距, 分隔符行最大高度。
- 行为参数:手动命令分隔符, 自动渲染开关, 自动渲染分隔符。
- 自动检测与渲染 (可选): 可配置开启此功能,插件将尝试自动检测消息中符合特定模式的 LaTeX 字符串并进行渲染(此功能默认关闭,因为自动检测可能消耗资源且可能误判)。
- 临时文件管理: 渲染过程中产生的临时图片会存放在插件专属的临时目录中,并在插件终止时尝试清理。
安装
获取插件:
- 如果插件已发布到 AstrBot 插件市场,您可以直接从市场安装。
- 如果从仓库获取,请将插件目录(例如
LatexPlotter)放置到您的 AstrBot 安装目录下的data/plugins/文件夹中。
依赖项:
本插件依赖以下 Python 库:matplotlibPillow
AstrBot 在加载插件时通常会自动检测并尝试安装requirements.txt文件中列出的依赖。如果自动安装失败,您可能需要在 AstrBot 的 Python 环境中手动运行:
pip install matplotlib Pillow请确保插件根目录下包含
requirements.txt文件,内容如下:matplotlib Pillow配置文件:
- 插件支持通过
_conf_schema.json文件进行详细配置。将此文件放置在插件的根目录下。 - 插件还应包含一个
metadata.yaml文件,用于描述插件的元数据。
- 插件支持通过
重载/重启 AstrBot:
- 安装或更新插件后,请在 AstrBot 的 WebUI 中找到您的插件,点击“管理”,然后点击“重载插件”,或者直接重启 AstrBot 服务。
使用方法
1. 手动渲染命令
您可以通过以下命令触发 LaTeX 渲染:
/latex <您的LaTeX代码>/tex <您的LaTeX代码>/renderlatex <您的LaTeX代码>(如果配置了此别名)
示例:
- 渲染单行公式:
/latex E = mc^2 - 渲染多步骤公式 (默认使用逗号
,作为步骤分隔符):
/tex \int_0^\pi \sin(x) dx = [-\cos(x)]_0^\pi, = (-\cos(\pi)) - (-\cos(0)), = (-(-1)) - (-1), = 1+1=2
插件会将上述内容按逗号分割,渲染成多行图片。
2. 自动检测与渲染 (如果启用)
如果通过插件配置开启了 enable_auto_render 选项,插件会监听非命令消息。当消息内容符合预定义的 LaTeX 模式时(例如包含 $...$ 或 $$...$$,或者是由逗号分隔的多个等式结构),插件会自动尝试渲染该部分内容。
注意: 自动检测功能可能不够完美,对于非常复杂的或非标准的 LaTeX 写法可能会有误判或漏判。
配置选项
您可以在 AstrBot 的插件管理界面修改本插件的配置。以下是主要的配置项及其说明(详细定义请参考插件目录下的 _conf_schema.json 文件):
dpi: (整数, 默认: 300) 渲染图片的DPI。fontsize: (整数, 默认: 18) LaTeX文本的默认字体大小。bgcolor: (字符串, 默认: "white") 图片背景色。可设为'none'实现透明背景。fgcolor: (字符串, 默认: "black") LaTeX文本颜色。max_delimiter_height: (整数, 默认: 2) 仅含分隔符的行渲染后的最大高度(像素)。autocrop_padding: (整数, 默认: 0) 自动裁剪后在内容周围添加的额外边距(像素)。stitch_line_spacing: (整数, 默认: 5) 拼接多行图片时,在每行之间添加的垂直间距(像素)。设置为0则紧密相连。manual_command_delimiter: (字符串, 默认: ",") 手动命令中用于分割LaTeX步骤的分隔符。enable_auto_render: (布尔值, 默认: false) 是否启用自动检测和渲染。auto_render_delimiter: (字符串, 默认: ",") 自动渲染时用于分割步骤的分隔符。
依赖的核心渲染脚本
本插件的核心渲染逻辑由同目录下的 latex_renderer.py 脚本提供。该脚本负责实际的LaTeX字符串解析、单行渲染、图像裁剪和最终拼接。
故障排除
- 渲染失败或图片不正确:
- 检查 AstrBot 的日志,特别是本插件(
LatexPlotter)相关的INFO和ERROR日志,可能会有具体的错误信息。 - 确认输入的 LaTeX 语法是否标准,以及是否为 Matplotlib 的
mathtext引擎所支持。避免使用过于复杂的宏包或命令。 - 检查插件配置是否正确,特别是颜色、字体大小等参数。
- 检查 AstrBot 的日志,特别是本插件(
- 插件未加载或命令无响应:
- 确保插件目录名、
main.py中的PLUGIN_NAME常量以及metadata.yaml中的name字段三者完全一致。 - 检查
requirements.txt中的依赖是否已成功安装到 AstrBot 的 Python 环境中。 - 尝试在 AstrBot 后台重载插件。
- 确保插件目录名、
贡献
欢迎通过提交 Issue 或 Pull Request 来改进此插件!