这篇 Prompt 能生成什么
你将得到一个可直接运行与部署的在线工具:把用户粘贴/上传的 Markdown 文档做‘数学公式规范化’与‘KaTeX 兼容检查’,并输出一份可下载的检查报告(JSON/HTML/Markdown 三种格式)。工具不生成任何图片,不涉及出图/海报/插画类内容,专注于既有文档的解析、规范化与校验。
适用场景
论文笔记/技术文档/博客文章里常见的数学公式($...$、$$...$$、\( ... \)、\[ ... \]、\begin{equation} 等)在不同渲染器(KaTeX/MathJax/Markdown-it 插件)之间存在兼容差异。本工具用于:批量发现不兼容语法、定位行号/片段、给出可自动修复的建议,并一键输出规范化后的 Markdown。
输入与输出
输入:Markdown 文本(支持粘贴与文件上传,UTF-8)。
输出:1) 规范化后的 Markdown;2) 兼容性报告(问题列表、严重级别、定位信息、建议修复);3) 可选:仅报告模式(不改写)。
工具功能清单(必须实现)
1) 公式块识别:行内/块级/环境式(常见 equation/align/gather 等)。
2) 规范化策略:统一分隔符(可选:$...$ 与 $$...$$;或统一为 \( ... \) 与 \[ ... \])、统一换行与空白、移除多余的转义。
3) KaTeX 兼容检查:识别 KaTeX 不支持或需要宏包/扩展的命令,输出替代写法建议(例如:\tag、某些 AMS 环境差异等)。
4) 错误定位:在报告中给出问题所在行号范围、原始片段、规范化后片段(diff 可选)。
5) 导出:报告导出 JSON/HTML/Markdown;规范化后的 Markdown 可复制与下载。
6) 隐私:所有处理默认在本地/自建服务内完成,不把内容上传到第三方。
Prompt(复制到 AI 直接生成完整项目)
你是资深全栈工程师。请生成一个"Markdown 数学公式规范化与 KaTeX 兼容检查"的在线工具完整项目(可运行/可构建/可部署)。
【硬性目标】
- 产出:完整源码 + 文件树 + 一键运行命令 + Docker 部署 + 测试用例或 QA checklist。
- 形态:Web 在线工具(前端页面 + 后端 API)。
- 不允许:任何图像生成/出图/渲染图/海报/插画相关功能;不引导使用 Midjourney/Stable Diffusion 等。
- 允许:对现有文本/公式做解析、检查、转换、规范化;可生成报告;可导出文件。
【推荐技术栈】
- 前端:Next.js 14 + Type + Tailwind(或等价 React 栈)。
- 后端:Next.js Route Handlers 或独立 Node.js(Express/Fastify 皆可)。
- 解析与校验:
- Markdown 解析:unified + remark-parse + remark-math(或 markdown-it + markdown-it-katex)。
- KaTeX 校验:使用 katex.renderToString() 进行语法检测;捕获错误并输出问题。
- 规范化:对数学片段进行 token 级/字符串级重写,支持配置化策略。
- 不依赖系统级二进制(比如不强制需要安装 pandoc/latex)。
【产品交互】
1) 页面包含:
- 输入区(粘贴 Markdown / 上传 .md)
- 选项区:
- 模式:仅检查 / 检查+规范化
- 数学分隔符策略:保持原样 / 统一为 $...$ 与 $$...$$ / 统一为 \( ... \) 与 \[ ... \]
- 是否输出 diff
- 输出区:
- 规范化后的 Markdown(可复制/下载)
- 报告预览(表格或列表)
- 导出按钮(JSON / HTML / Markdown)
2) 报告字段至少包括:id、severity(info/warn/error)、message、lineStart、lineEnd、originalSnippet、normalizedSnippet、suggestedFix。
【后端 API】
- POST /api/analyze
- body: { markdown: string, options: {...} }
- resp: { normalizedMarkdown: string, report: ReportItem[], stats: {...} }
- 需要做输入大小限制(比如 2MB)与基础 XSS 安全处理(输出到页面时转义/或用 pre)。
【规范化与检查规则(至少实现这些)】
A. 分隔符与块级识别
- 识别 $...$、$$...$$、\( ... \)、\[ ... \]、
以及常见环境:\begin{equation}, align, aligned, gather, cases 等。
- 检测混用:同一文档混用多种分隔符时给出 warn 并支持一键统一。
B. KaTeX 兼容检查
- 对每个数学片段调用 katex.renderToString(tex, {throw :true, strict:'warn'})。
- 捕获错误与 warning,映射到 report。
- 对常见不兼容点给出建议:
- 未定义命令:提示使用替代写法或在 KaTeX 中启用宏(宏配置给出示例)。
- 过长公式:提示拆分或使用 align。
- 标签/编号:如果使用 \tag 或类似命令,提示 KaTeX 限制与替代策略。
C. 规范化输出
- 规范化必须可配置,默认:
- 行内公式保持 $...$
- 块级公式统一 $$...$$
- 去掉块级前后多余空行与多余空格
- 保留非数学文本原样
【测试与验收】
- 给出至少 8 个测试用例(Jest/Vitest 皆可),覆盖:
1) 行内公式识别
2) 块级公式识别
3) 环境式识别
4) 混用检测
5) KaTeX 报错捕获
6) 规范化策略生效
7) 大文本性能(至少做一个简单基准/超时保护)
8) 安全:输出转义/避免 HTML 注入
- 或者提供同等严格的 QA checklist(逐条可操作)。
【交付物格式要求】
1) 先输出项目文件树(tree),再输出关键文件完整代码。
2) 给出本地运行命令(pnpm/npm/yarn 任选一种,说明版本要求)。
3) 给出 Dockerfile + docker-compose.yml,并说明如何在 80/3000 端口跑起来。
4) 给出部署说明(例如 Vercel/自建服务器 Nginx 反代)。
现在开始生成。
交付物验收清单(建议直接复用)
1) 源码:前端+后端完整可运行项目,含必要配置文件。
2) 文件树:清晰列出目录结构与关键文件用途。
3) 运行:本地一键启动命令;生产构建命令;Docker 启动命令。
4) 测试:可执行的单元测试(或同等严格 QA checklist),覆盖识别/规范化/校验/导出。
5) 部署:给出至少一种可落地部署方案与注意事项(环境变量、反代、上传限制)。