
AI 应用前端【免费下载链接】voyagerEnhancement suite for Gemini, AI Studio, Claude ChatGPT — plus a prompt manager for any websites, DeepSeek Harness included. / 面向 Gemini、AI Studio、Claude 与 ChatGPT 的增强套件其中的提示词管理器可用于任意网站如 DeepSeek Harness。项目地址https://gitcode.com/gh_mirrors/ge/voyager点击查看免费下载导读本文讲解 Voyager 增强套件中面向 Gemini™ 的「用户消息 LaTeX 渲染」功能当你在 Gemini 聊天输入框中发送包含 LaTeX 语法的消息时Voyager 会借助 KaTeX 引擎自动将$...$行内公式与$$...$$块级公式渲染为规范的数学符号排版。读完本文你将掌握该功能的支持语法、使用步骤、边界行为以及其背后的源码级实现原理文本切分算法、货币歧义规避、惰性加载与防竞态设计并了解它如何与导出、时间线、通知等功能协作。功能概览该功能在 Voyager 1.3.7 及更高版本中提供参见 1.3.7 变更日志 中「用户消息 LaTeX 渲染你发送的消息中的数学公式现在会通过 KaTeX 渲染」的条目。核心能力是在 Gemini 聊天中对用户自己发送的消息文本进行自动检测与公式排版行内公式用$...$包裹例如$x^2 y^2 r^2$公式嵌在文字流中显示块级公式用$$...$$包裹例如$$\int_0^1 x^2 dx$$公式居中显示在独立行自动检测页面中已存在的历史消息与新发送的消息都会被处理无需手动触发KaTeX 引擎底层使用 KaTeXpackage.json中声明依赖katex: ^0.16提供高质量的数学排版输出。支持的语法示例输入说明$Emc^2$行内公式$$\sum_{i1}^{n} i \frac{n(n1)}{2}$$块级公式$\alpha, \beta, \gamma$希腊字母$\sqrt{x^2 y^2}$平方根使用方法在 Gemini 聊天输入框中输入包含 LaTeX 语法的消息如请解方程 $x^2-5x60$发送消息后公式部分会被自动渲染为数学符号行内公式$...$会在文本流内联显示块级公式$$...$$会居中显示在独立一行。无需任何开关或额外设置——只要 Voyager 在gemini.google.com上正常运行即可。从源码可见扩展在 Gemini 页面初始化时调用startUserLatex()见 src/pages/content/index.tsx该初始化仅限定于 Gemini 域名。源码级实现原理目标 DOM 与消息定位实现文件 src/pages/content/userLatex/index.ts 注释中标注了 Gemini 用户消息气泡的目标 DOM 结构span.user-query-bubble-with-background └─ span.horizontal-container └─ div.query-text.gds-body-l ├─ span.cdk-visually-hidden (你说 / You said) └─ p.query-text-line ← 在这里处理Voyager 通过选择器p.query-text-line源码中USER_MSG_SELECTOR精确锁定每个用户消息段落避免误伤 Gemini 的回复文本或其他页面元素。文本切分算法与货币歧义规避parseSegments()函数把一段原始文本切分为「普通文本」与「数学公式」两类片段规则为$$...$$块级优先于$...$行内匹配只有闭合定界符配对成功才会被视为公式遇到孤立$则当作普通文本处理不中断扫描空内容如$ $会被跳过避免渲染空公式。一个关键的工程细节是tryCurrencySkip()货币检测日常聊天中$5、$3.50、$1,000、$100K这类货币金额同样以$开头若不加区分会被误判为未闭合的 LaTeX。该函数通过向前扫描数字可含逗号/小数点并检查后续字符是否为空格、标点、行尾或闭合$来判断是否为货币而$2x1$、$10^2$这类以数字开头的真实公式因数字序列后紧跟字母或运算符非边界字符会被正确识别为数学表达式。KaTeX 惰性加载与失败回退KaTeX 体积较大因此采用惰性加载只有当某条消息确实包含$且切分后存在数学片段时才会通过动态import(katex)加载引擎源码注释明确说明其设计目的——避免把 KaTeX 塞进同步加载的 content script 主包与loadMermaid()的加载策略一致。加载成功后调用katex.renderToString(seg.value, { displayMode: seg.display, // true 为块级false 为行内 throwOnError: false, // 渲染失败不抛异常 output: html, })渲染成功时公式被包裹在span.gv-user-latex-display块级或span.gv-user-latex-inline行内中渲染失败如 LaTeX 语法无效时会在catch分支回退为带原始定界符的纯文本$$...$$或$...$保证用户始终能看到原始输入绝不静默丢失内容。这与官方文档中「如果 LaTeX 语法无效将显示原始文本」的说明完全一致。增量处理与防竞态设计startUserLatex()启动时会先调用processAll()立即处理页面上已有的消息随后注册一个MutationObserver监听document.body的子树变化并以 300ms 防抖批量处理新插入的消息段落对应「自动检测处理现有和新建消息」的能力。针对异步场景实现做了两层防竞态保护每个处理过的段落会打上data-user-latex-processed标记防止防抖的 observer 在 KaTeX 异步加载期间重复进入同一元素若 KaTeX 加载期间 Gemini 恰好重绘了该节点导致捕获的原始文本已过期则删除 processed 标记并放弃本次渲染等待下一轮 observer 处理新内容——对应的测试用例「不覆盖加载期间被重绘的节点」覆盖了这一场景见 src/pages/content/userLatex/tests/userLatexRender.test.ts。测试套件还验证了两个关键行为含 LaTeX 的消息会触发惰性加载并渲染见 userLatexRender.test.ts不含数学内容的消息如「just a $ sign, no closing delimiter」则不会加载 KaTeX 引擎见 userLatexRender.test.ts。原始文本保留与导出、时间线、通知的协作渲染会改变 DOM 文本内容为避免破坏下游功能processElement()在替换节点内容前会把原始文本存入data-user-latex-original属性。该属性被多处复用Gemini 导出适配器在导出时优先读取dataset.userLatexOriginal作为真实消息文本见 src/pages/content/export/adapter/platform/gemini.ts时间线Timeline展示时恢复原始文本见 src/pages/content/timeline/TimelineTurns.ts消息通知生成时同样取回原始文本见 src/pages/content/responseNotification/index.ts。这使得「屏幕上渲染公式、数据层保留 LaTeX 源文本」成为可能保证导出、时间线和通知的内容与用户输入一致。KaTeX 严格模式警告抑制由于公式中可能出现中文字符等 Unicode 文本KaTeX 在严格模式下会输出unicodeTextInMathMode等控制台警告。Voyager 通过 src/pages/content/katexConfig/index.ts 在页面加载早期注入 public/katex-config.js后者以 monkey-patchconsole.warn的方式静默拦截特定 KaTeX 警告含unicodeTextInMathMode、LaTeX-incompatible input and strict mode等其余警告原样透传。需要注意的是Safari 构建由 manifest 以 MAIN world 原生注入该脚本因此configureKaTeX()会直接跳过 DOM 注入Gemini 页面的 CSP 会阻止此类注入。注意事项仅作用于用户发送的消息Gemini 回复中的公式由 Gemini 自己负责渲染Voyager 不做干预无效 LaTeX 回退原文语法无法解析时显示原始$...$/$$...$$文本货币金额不误伤$5、$3.50、$1,000、$100K等金额写法不会被当作公式处理无需配置功能随 Voyager 在 Gemini 页面自动生效支持版本为 1.3.7 及以上。延伸阅读功能实现主文件src/pages/content/userLatex/index.ts单元测试src/pages/content/userLatex/tests/userLatexRender.test.tsKaTeX 配置注入src/pages/content/katexConfig/index.ts、public/katex-config.js功能引入版本说明1.3.7 变更日志公式复制相关能力Notion 兼容复制src/features/formulaCopy/FormulaCopyService.ts赞分享AI 应用前端【免费下载链接】voyagerEnhancement suite for Gemini, AI Studio, Claude ChatGPT — plus a prompt manager for any websites, DeepSeek Harness included. / 面向 Gemini、AI Studio、Claude 与 ChatGPT 的增强套件其中的提示词管理器可用于任意网站如 DeepSeek Harness。项目地址https://gitcode.com/gh_mirrors/ge/voyager点击查看免费下载相关推荐Math 块在 Gutenberg 中使用 LaTeX 渲染数学公式的完整指南Math 块在 Gutenberg 中使用 LaTeX 渲染数学公式的完整指南 Math 块 core/math 是 Gutenberg 编辑器中用于展示后端前端fast_double_parser在Go标准库中的应用strconv.ParseFloat背后的秘密fast_double_parser在Go标准库中的应用strconv.ParseFloat背后的秘密 你是否想过Go语言中 strconv.ParseFloHugo 中的数学公式渲染在 Markdown 中使用 LaTeX 标记的完整指南Hugo 中的数学公式渲染在 Markdown 中使用 LaTeX 标记的完整指南 导读 本指南面向使用 Hugo 构建学术、科学类网站的开发者讲解如何在开发工具前端CLI上一篇tiktoken BPE 分词器3 步跑通算准 OpenAI 模型的 token批量处理快 3-6 倍下一篇零代码实现Llama 2对话llama2.c聊天模式实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考