JavaScript公式编辑器实现指南:从MathLive选型到LaTeX双向绑定与踩坑
简介这是一款基于JavaScript与HTML5实现的网页版公式编辑器面向需要在网页中创建、编辑数学公式的开发者、教师与科研人员主要解决在线输入复杂数学表达式、实时预览、函数编辑与图像绘制等需求。压缩包共2个文件含1个js脚本与1个html页面整体仅9KB结构极简便于直接打开运行也适合二次修改与学习。已有1310人学习下载。资源虽小却完整呈现了公式解析渲染、DOM交互、事件监听、函数计算与图形绘制等核心逻辑适合前端学习者对照研读快速理解轻量级在线公式编辑器的实现思路也可作为在线教学、课件演示或自研工具的原型参考。1. javascript公式编辑器从符号录入到LaTeX输出这条链路上最难的是什么「javascript公式编辑器」这个需求第一眼看上去像是一个输入框加一排符号按钮真正落到题库系统、论文协作平台里才会发现难点根本不在一排加减乘除符号而在光标行为、模板嵌套和输入法冲突。数学公式是二维结构分数套根式、根式套矩阵用户要在前后端只认 LaTeX 字符串的体系里完成可视化录入编辑器和渲染器必须配合严密。本文面向需要在业务系统里落地公式录入的开发者从选型、最小实现到参数调优和踩坑排查讲清一条可复现的路径。无论你做在线作业、论文工具还是低代码表单这条路都适用。2. 先选型再看代码主流公式编辑器方案与适用边界2.1 为什么所见即所得是刚需题库录入与论文写作的场景差异业务场景决定技术路线。在线题库里录题的是编辑人员他们不写 LaTeX只认识数学课本上的排版样式看到\frac就想关页面。论文写作场景里作者可能懂 LaTeX但写作过程中要求边写边看到公式排版纯语法输入加预览来回切换会频繁打断心流。这两个场景的共同点是录入界面必须所见即所得而且光标要落在公式内部的准确位置比如分数线的分子里、根式的被开方式里。还有一种场景是给开发者自己用的配置面板比如低代码平台里让用户配置一条计算公式。这类用户有 LaTeX 基础对录入效率要求不高纯文本输入加即时预览就够。很多团队在这里图省事直接复用论文场景的完整编辑器方案结果输入层和存储格式绑死后面要加自定义函数时改动成本翻倍。我一般会把用户先分成「会 LaTeX」和「不会 LaTeX」两批这两批对应的方案是不同量级的取舍。2.2 三条路线对比MathLive、MathQuill 与轻量自研业内常见做法是直接引入公式编辑器内核目前主流有三条路线。一条是以 MathLive 为代表的新内核底层用 canvas 做排版测量上层用 DOM 管光标和选区所以复杂公式重排不卡这也是它敢做矩阵、分段函数这类完整模板的原因。一条是以 MathQuill 为代表的老牌方案用 DOM 标签模拟数学排版简单分式没问题嵌套到第三层的根式加矩阵时光标错位是常见的翻车现场。第三条是轻量自研录入端只处理纯文本 LaTeX渲染交给 KaTeX 或 MathJax。路线渲染机制输入体验接入成本典型场景MathLive 类内核canvas 测量 DOM 光标所见即所得模板占位符完善中自带虚拟键盘与国际化论文、题库、富文本公式域MathQuill 类内核DOM 模拟数学排版所见即所得复杂嵌套有局限中低依赖旧式 DOM 操作老项目维护、简单公式录入轻量自研输入框 KaTeX/MathJax 即时预览偏代码录入无模板体验低但交互开发量大开发者工具、配置面板选型的时候我建议直接看「公式里最复杂的那个用例」。如果业务里会出现四阶矩阵、分段函数、多行对齐公式MathQuill 这类 DOM 模拟排版的内核会越改越痛苦因为光标位置全部靠手工维护。MathLive 这类用 canvas 做测量、DOM 做光标的新方案复杂嵌套的体验会顺很多缺点是内核体积偏大首次加载会慢一点。轻量自研看着成本最低但符号面板、快捷键、括号自动配对、光标嵌入预览串这些交互全要自己补加起来工作量不比集成一个成熟内核小。2.3 富文本编辑器公式插件路线什么场景才值得选如果产品本身是文档编辑器公式要和正文混排、可以拖动、可以出现在列表里那就应该走富文本内核加公式节点的方式比如在 ProseMirror 或 Quill 里嵌公式节点节点内部仍然交给公式编辑器内核。但如果业务只是表单里的一个独立公式录入域比如考试系统里录入一道题的答案公式或者低代码平台里配置一条计算表达式不要为它引入整个富文本编辑器。公式值的读取会变成节点遍历校验和回显都得额外写插件 API 适配前后端契约也从一个字符串变成一个复杂文档结构项目刚起步时看不出来越往后越被动。3. 用 MathLive 在本地跑通最小公式编辑器核心配置与双向绑定3.1 引入内核与最小 HTML 结构MathLive 的接入方式是把它的构建产物放到本地静态目录然后用一个自定义元素math-field承载编辑区域。我一般不用公共 CDN一是公式编辑器在内网管理系统里经常需要离线可用二是 CDN 加载失败时页面会静默坏掉排查起来很绕。最小页面长这样!DOCTYPE html html langzh-CN head meta charsetUTF-8 link relstylesheet href./mathlive/mathlive.min.css script src./mathlive/mathlive.min.js/script /head body math-field idformula virtual-keyboard-modeonfocus localezh \frac{x1}{2} /math-field /body /html这里的math-field是内核注册的自定义元素页面加载脚本之后它才会被浏览器正确解析成编辑器。virtual-keyboard-modeonfocus表示点击公式域时弹出虚拟键盘适合没有物理键盘的平板录入场景。localezh把虚拟键盘上的功能提示切成中文比如「分数」「根式」这类按钮名称。公式域的初始内容直接写在标签内部用 LaTeX 语法这一步能让页面刷新后直接看到上一次保存的公式。3.2 核心配置项virtualKeyboardMode、smartFence 与 locale在业务系统里我不会只依赖 HTML 属性而是把配置统一写在一个 JavaScript 函数返回的对象里这样不同页面可以复用同一套默认配置。常见的配置参数如下const mathfieldOptions { virtualKeyboardMode: onfocus, smartFence: auto, locale: zh, readOnly: false, onInput: () { // 每次用户编辑后触发的回调 } }; const mf new MathLive.MathfieldElement(mathfieldOptions);配置项可选值作用virtualKeyboardModeonfocus/manual/off何时弹出虚拟键盘manual适合页面里自己放唤起按钮smartFenceauto/true/false是否自动补全括号和命令边界auto会在确定用户意图后补全localezh/en/fr等虚拟键盘按钮文案与函数名的本地化readOnlytrue/false回显模式只展示公式不可编辑smartFence是这类编辑器里最影响手感的一项。开启后用户输入sin(x时编辑器会自动补右括号输入\frac时会自动生成分数模板并等待分子输入。这个配置对不会 LaTeX 的用户是刚需但对熟练用户反而会干扰快速连续输入我一般根据用户分组来开录题人员打开开发者配置面板里关掉。3.3 双向绑定getValue、setValue 与 LaTeX 回填公式编辑器在页面里本质上是一个自定义输入组件对外只暴露两个核心方法取值和赋值。取值的格式建议统一用 LaTeX 字符串因为它是前后端契约里最通用的格式数据库里存它渲染端用 KaTeX 或 MathJax 展示移动端也能拿到它做原生排版。const mf document.getElementById(formula); // 用户编辑时实时取值 mf.addEventListener(input, () { const latex mf.getValue(latex); document.getElementById(preview).textContent latex; }); // 编辑完成后从外部回填公式比如点击历史记录 function loadFormula(latex) { mf.setValue(latex, { format: latex }); }getValue(latex)的返回值是经过编辑器规范化后的 LaTeX比如用户用虚拟键盘选的分数输出是\frac{...}{...}而不是\over。setValue的第二个参数{ format: latex }告诉解析器输入串的格式避免按 MathML 去解析而报错。这里有个细节回填时如果字符串来自后端 JSON反斜杠经常被转义层吃掉我一般会在存储前检查一遍原始串里\frac是否以两个字符\和f的形式存在避免回填后公式被打散成纯文本。提示存储统一用 LaTeX展示层按需渲染。不要直接存 MathML后面所有渲染端都会被它绑架。4. 论文公式编辑器场景符号面板、模板按钮与中文输入法兼容4.1 按学科组织符号面板的数据结构论文公式编辑器比题库系统更依赖符号面板因为论文里的公式符号覆盖高等数学、线性代数、概率统计多个分支一个平铺的符号列表没法用。我习惯把面板数据组织成两级结构分组和条目每个条目只保存展示用的 label 和要插入的 LaTeX 模板这样前端渲染面板和后端动态下发符号都可以共用同一套数据格式。const symbolGroups [ { group: 分数与根式, items: [ { label: 分数, insert: \\frac{?}{?}, desc: 插入分数模板 }, { label: 平方根, insert: \\sqrt{?}, desc: 插入根式模板 }, { label: n次根, insert: \\sqrt[?]{?}, desc: 插入n次根式模板 } ] }, { group: 大型运算符, items: [ { label: 求和, insert: \\sum_{?}^{?}, desc: 上下限求和 }, { label: 积分, insert: \\int_{?}^{?}, desc: 定积分模板 }, { label: 极限, insert: \\lim_{? \\to ?}, desc: 极限模板 } ] } ];这里的关键设计是insert字段里的?占位符。用户点击符号时编辑器会把?替换成可填充的光标位置用户敲键盘直接进入第一个空位按 Tab 跳到下一个空位。这样录入\sum_{i1}^{n}这类结构时手指不用离开键盘去点鼠标效率比在文本输入框里手敲整个命令高很多。4.2 插入模板用占位符实现分数、根式、矩阵的快速录入符号面板的点击事件要调用编辑器内核的指令接口而不是直接修改输入框的值。MathLive 这类内核提供了executeCommand(insert, { latex })这样的指令它在编辑器内部经过选区替换、光标计算、自动补全后落位比直接拼接字符串可靠。function insertTemplate(entry) { // 把模板里的 ? 替换成编辑器可识别的占位符 const latex entry.insert.replace(/\?/g, \\placeholder{}); mf.executeCommand(insert, { latex }); } // 矩阵模板单独组装带行列参数 function insertMatrix(rows, cols) { const row Array(cols).fill(\\placeholder{}).join( ); const body Array(rows).fill(row).join( \\\\ ); const latex \\begin{pmatrix} ${body} \\end{pmatrix}; mf.executeCommand(insert, { latex }); }\placeholder{}是这类编辑器内核约定的可编辑空位插入后光标自动定位到第一个空位。矩阵模板里\\是换行符是列分隔符这两个字符在 JavaScript 模板字符串里要特别注意转义写模板字符串时\\会原样落成 LaTeX 里的\\。insertMatrix(3, 3)就能直接插入一个三阶矩阵用户逐个填数字即可。4.3 中文输入法兼容composition 事件与焦点控制论文场景下用户经常要一边写中文正文一边录公式中文输入法和公式编辑器的冲突在这个场景里会被放大。最典型的问题是用户在拼音输入过程中按下空格选词公式编辑器把拼音串当成 LaTeX 命令尝试解析导致视图闪烁甚至光标乱跳。let composing false; document.getElementById(editorContainer).addEventListener(compositionstart, () { composing true; }); document.getElementById(editorContainer).addEventListener(compositionend, () { composing false; }); mf.addEventListener(input, () { if (composing) return; // 中文组词期间的 input 事件不处理 syncPreview(mf.getValue(latex)); });compositionstart和compositionend是中文输入法组词过程的起止信号。组词期间的input事件携带的是中间拼音状态不是用户最终选择的结果这时候同步 LaTeX 会在预览区留下半截拼音碎片。加一个composing锁或者干脆在组词期间暂停虚拟键盘的唤起都能有效改善录入体验。5. 公式编辑器避坑指南光标、渲染与回显的4个常见问题5.1 中文输入法导致光标乱跳现象用户用拼音输入法在公式前打中文选词瞬间光标跳到了公式末尾之前选中的位置丢失。原因中文组词期间的input事件触发编辑器内部重新排版编辑器拿到的 value 与实际光标位置不一致重排后光标被强制刷新到末尾。解决在compositionstart和compositionend期间拦截所有针对编辑器值变化的处理同时把虚拟键盘策略调成manual避免组词过程中虚拟键盘抢焦点。代码见 4.3 节核心是composing标记位所有对getValue结果的同步操作都绕过它。5.2 公式字体与正文不统一现象公式渲染出来的数字和正文的字体明显不是一个风格尤其中文论文里公式的变量斜体和正文宋体混排视觉上很突兀。原因公式编辑器内核默认的数学字体和页面正文 CSS 字体没有继承关系数学字体是单独定义的字体族。解决在全局 CSS 里覆盖编辑器暴露的字体变量把数学字体族显式声明成正文的字族同时确保字体文件加载顺序在公式编辑器脚本之前否则浏览器会先用回退字体渲染一遍再闪跳。math-field { --ML_FONT_FAMILY: Times New Roman, STIX Two Math, serif; font-size: 1.05em; }5.3 LaTeX 保存后反斜杠丢失现象前端把\frac保存到接口刷新页面回显时公式变成了纯文本frac{1}{2}整个公式显示成一行普通文字。原因绝大多数情况下是反斜杠被 JavaScript 字符串转义层吃掉了。比如后端返回的 JSON 里反斜杠会变成\\frac前端如果直接用这个串构造字符串字面量再经过一次模板拼接反斜杠就没了。解决取值后不要做任何正则替换或字符串拼接直接把原始串写进数据库回填时用JSON.parse还原一次不要手动转义。// 错误写法又包了一层字符串字面量 const bad ${latex}; // 正确写法存储和传输全程保持原始串 fetch(/api/formula, { method: POST, body: JSON.stringify({ latex }) });5.4 JavaScript 运行时报错MathfieldElement 未定义现象页面加载后控制台报MathfieldElement is not defined公式区域直接渲染成一片空白或者变成一个普通可输入的空白标签。原因公式编辑器脚本没有在自定义元素使用前加载完成常见于脚本放在head里同步加载被阻塞或者在现代浏览器里 script 标签被加了defer导致执行顺序错乱。解决先确认构建产物的引入路径没错然后在初始化代码里做一次能力检测不要默认内核一定可用。if (window.MathLive window.MathLive.MathfieldElement) { const mf new window.MathLive.MathfieldElement(options); mf.addEventListener(input, ...); }6. 进阶技巧把公式编辑器接上计算引擎与移动端桥接6.1 用白名单解析器对 LaTeX 做数值验算题库系统里录完了公式往往还要验算一遍结果对不对。常见做法是把 LaTeX 里的数学命令转成 JavaScript 表达式再交给一个白名单解析器求值。不要用eval直接处理用户输入公式串里若混入恶意代码会直接执行。可以用内置函数替换命令比如\frac换成除法、\sqrt换成Math.sqrt然后交给支持白名单函数和常量校验的表达式解析器。function latexToExpr(latex) { return latex .replace(/\\frac\{([^}])\}\{([^}])\}/g, ($1)/($2)) .replace(/\\sqrt\{([^}])\}/g, Math.sqrt($1)) .replace(/\\pi/g, Math.PI); }6.2 数值输出格式化保留两位小数与浮点尾差公式验算结果是浮点数比如计算1/3得到0.3333333333333333业务里通常只需要两位小数。直接toFixed(2)会有浮点尾差问题比如1.005.toFixed(2)在部分浏览器里得到1.00。实际项目中我会先加一个极小量再进位保证四舍五入符合直觉。function roundTo2(n) { const value Math.round((n Number.EPSILON) * 100) / 100; return value.toFixed(2); }6.3 移动端 WebView 公式传递oc 和 javascript 互相调用的落地写法移动端 App 内嵌这个公式编辑器时规律是JavaScript 侧把 LaTeX 字符串传给原生层保存原生层展示历史公式时再调用 JavaScript 回填。在 iOS 的 WebView 里JavaScript 传值给原生用window.webkit.messageHandlers原生调用 JavaScript 用evaluateJavaScript。公式串里含反斜杠和引号直接拼字符串进原生代码会被转义破坏我的做法是先用encodeURIComponent包一层。// 传给原生层保存 button.addEventListener(click, () { const payload encodeURIComponent(mf.getValue(latex)); window.webkit.messageHandlers.formulaHandler.postMessage(payload); }); // 接收原生层回填 window.onUpdateLatex (payload) { const latex decodeURIComponent(payload); mf.setValue(latex, { format: latex }); };编码和解码必须成对。原生调用evaluateJavaScript时也要记得把参数包进单引号避免 LaTeX 串里的双引号炸掉整个 JS 语句。我自己做过一次题库项目当初图省事直接把 MathML 存进了数据库后来所有渲染端都被它牵着走Web、原生小程序、PDF 导出各有各的适配问题。那次之后我统一只存 LaTeX界面显示、存储格式、移动端桥接彻底解耦。这个方向值得投入但投入之前先想清楚存储契约比选哪个编辑器库重要得多。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

DH2URDF:用JavaScript将DH参数表自动生成MoveIt可用URDF

DH2URDF:用JavaScript将DH参数表自动生成MoveIt可用URDF

简介:DH2URDF是一款面向机器人开发者和ROS学习者的JavaScript工具,用于将Denavit-Hartenberg参数表自动转换为统一机器人描述格式(URDF),省去手工编写机器人模型的繁琐过程。压缩包共9个文件,以JavaScript脚…

2026/10/16 1:32:33 阅读更多 →
Kotlin客户端+Java服务端外卖App实战:从课程设计到可运行项目

Kotlin客户端+Java服务端外卖App实战:从课程设计到可运行项目

简介:这是一套基于Kotlin开发的Android外卖应用完整项目,包含客户端与服务端,服务端采用Java搭配MySQL实现,适合作为Android课程设计、毕业设计、大作业或工程实训的参考方案,也适合希望从客户端到后端完整走通一遍外卖…

2026/10/15 7:34:22 阅读更多 →
动态组件与异步组件加载优化:从原理到实战

动态组件与异步组件加载优化:从原理到实战

1. 动态组件的适用场景与异步组件的核心价值1.1 动态组件加载&#xff1a;什么时候真正需要它&#xff1f;先明确一个容易被误用的概念&#xff1a;动态组件和异步组件并不完全是一回事。动态组件指的是“在运行期间根据状态切换渲染哪个组件”&#xff0c;Vue 里的<compone…

2026/10/15 13:10:01 阅读更多 →

最新新闻

ComfyUI 在 Python 3.13 下报 No module named ‘insightface‘ 装不上?手把手完整修复教程

ComfyUI 在 Python 3.13 下报 No module named ‘insightface‘ 装不上?手把手完整修复教程

ComfyUI 在 Python 3.13 下报 No module named insightface 装不上&#xff1f;手把手完整修复教程 【免费下载链接】ComfyUI The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface. The fastest local inference engine in the …

2026/10/16 1:32:39 阅读更多 →
VR-reversal 实战指南:用 MPV 插件把 3D 视频转 2D 观看、环视缩放并导出 2D 视频

VR-reversal 实战指南:用 MPV 插件把 3D 视频转 2D 观看、环视缩放并导出 2D 视频

音视频VR视频 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/vr/VR-reversal 点击查看 免费下载 …

2026/10/16 1:32:39 阅读更多 →
改进QSGS四参数随机生长法构建三维多孔介质代码

改进QSGS四参数随机生长法构建三维多孔介质代码

①改进的QSGS四参数随机生长法构建三维多孔介质代码。②QSGS四参数随机生长法构建三维多孔介质代码。代码中包含26/8连通去除孤立孔隙&#xff08;可定向提取xyz方向的连通孔隙&#xff09;&#xff0c;图像平滑&#xff0c;三维展示&#xff0c;切片展示。非均匀性&#xff08…

2026/10/16 1:32:39 阅读更多 →
GetQzonehistory:基于 Python 的 QQ 空间数据备份工具,把历史说说全量导出为 Excel

GetQzonehistory:基于 Python 的 QQ 空间数据备份工具,把历史说说全量导出为 Excel

GetQzonehistory&#xff1a;基于 Python 的 QQ 空间数据备份工具&#xff0c;把历史说说全量导出为 Excel 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 翻看旧说说时&#xff0c;图片…

2026/10/16 1:32:39 阅读更多 →
pdfplumber 页面渲染与可视化调试完整指南:4 个场景配好 PageImage 不踩坑

pdfplumber 页面渲染与可视化调试完整指南:4 个场景配好 PageImage 不踩坑

pdfplumber 页面渲染与可视化调试完整指南&#xff1a;4 个场景配好 PageImage 不踩坑 【免费下载链接】pdfplumber Plumb a PDF for detailed information about each char, rectangle, line, et cetera — and easily extract text and tables. 项目地址: https://gitcode.…

2026/10/16 1:32:39 阅读更多 →
BeanDefinition 合并

BeanDefinition 合并

0 前言1.BeanDefinition有父子关系&#xff0c;有个属性parentName&#xff0c;可设置BeanDefinition的父子关系 2.为啥要设置BeanDefinition的父子关系&#xff1f;因为子类可继承父类属性&#xff0c;抽出共性 3.BeanDefinition的合并过程就是将父子关系的 BeanDefinition 属…

2026/10/16 1:31:39 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课&#xff0c;其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置&#xff0c;通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测&#xff0c;本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章&#xff0c;跟着敲完了投票应用&#xff0c;大概会有一种"我好像会了&#xff0c;又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型&#xff0c;下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →