Manim 公式动画完全指南:基于 video-use 仓库的 LaTeX 方程编排实战
AI 技能/插件音视频视频处理人工智能【免费下载链接】video-useEdit videos with coding agents项目地址https://gitcode.com/GitHub_Trending/vid/video-use点击查看免费下载在 video-use 项目的 Manim 视频生产管线中数学公式动画是「方程推导Equation derivation」模式的核心能力用户给出数学表达式Agent 生成逐步骤的动画证明。本指南以 equations.md 为骨架结合仓库内 SKILL.md 的创作规范与 mobjects.md、troubleshooting.md 等配套参考系统讲解如何在 Manim Community Edition 中使用MathTex渲染、配色、高亮、注释并编排公式推导动画。读完你将掌握从一行 LaTeX 到完整推导场景的整套实战方案。前置条件先跑通 LaTeX 环境公式渲染依赖 Manim 对 LaTeX 的调用。按 SKILL.md 的要求需要Python 3.10 与 Manim Community Edition v0.20pip install manim本仓库参考文档基于 Manim CE v0.20.1 验证LaTeX 发行版Linux 上安装texlive-fullmacOS 安装mactexWindows 可用 MiKTeXffmpeg视频输出与合成。仓库提供了环境自检脚本 scripts/setup.sh它会依次检查python3、Manim、pdflatex、ffmpeg是否就绪并在缺失时给出安装提示例如 macOS 上brew install --cask mactex-no-gui。渲染前先确认pdflatex --version可执行——公式无法显示的最常见原因就是 LaTeX 未安装。基本 LaTeX从一行公式开始MathTex是 Manim 中渲染数学公式的核心 mobject所有内容按 LaTeX 语法书写eq MathTex(rE mc^2) eq MathTex(rf(x) x^2 2x 1 \\ (x 1)^2) # multi-line aligned第一守则凡含反斜杠的字符串必须使用原始字符串r。这几乎是公式场景的头号错误来源troubleshooting.md 专门指出MathTex(\\frac{1}{2})中的\\f会被 Python 解释为换页符而MathTex(r\frac{1}{2})才能把\frac原样交给 LaTeX。这一原则同样适用于 mobjects.md 中提到的Tex混排文本t Tex(rThe area is $\pi r^2$, font_size36) # 文本中内联数学选择性配色让公式的不同部分各司其职方法一拆分参数索引子对象把公式拆成多个参数传入每个参数成为独立的子对象随后可按索引单独上色eq MathTex(ra^2, r, rb^2, r, rc^2) eq[0].set_color(RED) eq[4].set_color(GREEN)这里eq[0]对应a^2eq[4]对应c^2。索引定位是后续一切高亮、注释、增量动画的基础decorations.md 中称之为“索引到子对象”的第三种配色法。方法二set_color_by_tex按子串批量上色对于无法或不值得手工拆分的公式用set_color_by_tex直接按 LaTeX 子串匹配着色eq MathTex(rE mc^2) eq.set_color_by_tex(E, BLUE) eq.set_color_by_tex(m, RED) eq.set_color_by_tex(c, GREEN)eq MathTex(r\nabla L -\frac{\partial L}{\partial w}) eq.set_color_by_tex(r\nabla, BLUE) eq.set_color_by_tex(r\partial, RED)方法三创建时用 t2c 指定针对普通文本非数学场景mobjects.md 还提供了创建期的t2ctext-to-color字典语法与公式场景互补text Text(The gradient is negative here, t2c{gradient: BLUE, negative: RED})逐步推导动画用 Write 与 TransformMatchingTex 讲故事方程推导视频的本质是“一步步改写公式”。基础节奏是写入一步 → 停顿让观众消化 → 变形到下一步step1 MathTex(ra^2 b^2 c^2) step2 MathTex(ra^2 c^2 - b^2) self.play(Write(step1), run_time1.5) self.wait(1.5) self.play(TransformMatchingTex(step1, step2), run_time1.5)Write模拟手写笔迹适合Text/MathTex的首次出现见 animations.mdTransformMatchingTex智能匹配源公式与目标公式的公共子串让相同部分原地保留、差异部分平滑变形是“公式变形”的首选动画run_time控制动画时长秒self.wait()提供“呼吸空间”。这正对应 SKILL.md 的动画节奏表关键公式揭示run_time2.0s后接wait(2.0s)变换/形变run_time1.5s后接wait(1.5s)——“Aha 时刻”揭示后应等待 3.0 秒。切勿在揭示后立刻播放下一个动画。增量构建让复杂公式逐块生长把公式拆成多个参数后可以用切片分批写入实现“公式逐块出现”的层次感parts MathTex(rf(x), r, r\sum_{n0}^{\infty}, r\frac{f^{(n)}(a)}{n!}, r(x-a)^n) self.play(Write(parts[0:2])) self.wait(0.5) self.play(Write(parts[2])) self.wait(0.5) self.play(Write(parts[3:]))parts[0:2]代表子对象切片的组合Write会同时书写切片内的所有部分。这种模式在讲解级数、积分展开等长公式时尤其有效——先给出等号左侧再逐项揭示右侧观众的注意力始终被引导。高亮与注释把注意力钉在关键项上公式出现之后需要用装饰类 mobject 强调重点仓库在 decorations.md 中系统整理了整套“注释生命周期”工具。外框高亮 指示highlight SurroundingRectangle(eq[2], colorYELLOW, buff0.1) self.play(Create(highlight)) self.play(Indicate(eq[4], colorYELLOW))SurroundingRectangle在目标外围绘制矩形边框可用buff控制内边距、corner_radius控制圆角Indicate则让目标短暂放大闪烁默认黄色闪光见 animations.md两者分别适合“持续框住”与“瞬时强调”。花括号注释Bracebrace Brace(eq, DOWN, colorYELLOW) label brace.get_text(Fundamental Theorem, font_size24) self.play(GrowFromCenter(brace), Write(label))Brace(eq, DOWN)在公式下方生成花括号brace.get_text()返回自动放置的文本标签。Brace支持UP/DOWN/LEFT/RIGHT四个方向也可以用BraceBetweenPoints(point_a, point_b)在任意两点之间绘制。注释生命周期decorations.md 强调注释应遵循“出现Create/GrowFromCenter→ 停留wait→ 消失FadeOut”的节奏目的达成后必须移除否则会退化为视觉噪音。常用 LaTeX 结构速查日常视频中最常出现的数学结构直接复制使用MathTex(r\frac{a}{b}) # 分数 MathTex(r\alpha, \beta, \gamma) # 希腊字母 MathTex(r\sum_{i1}^{n} x_i) # 求和 MathTex(r\int_{0}^{\infty} e^{-x} dx) # 积分 MathTex(r\vec{v}) # 向量 MathTex(r\lim_{x \to \infty} f(x)) # 极限矩阵从 MathTex 环境到专用矩阵对象MathTex默认加载amsmath因此标准矩阵环境可直接书写# 方括号矩阵 MathTex(r\begin{bmatrix} 1 0 \\ 0 1 \end{bmatrix}) # 圆括号矩阵 MathTex(r\begin{pmatrix} a b \\ c d \end{pmatrix}) # 行列式竖线 MathTex(r\begin{vmatrix} a b \\ c d \end{vmatrix}) # 无括号矩阵 MathTex(r\begin{matrix} x_1 \\ x_2 \\ x_3 \end{matrix})如果需要逐元素动画或单独给某个条目上色equations.md 明确建议改用专用矩阵 mobject——详见 mobjects.md# 整数矩阵 m IntegerMatrix([[1, 2], [3, 4]]) # 小数矩阵控制小数位数 m DecimalMatrix([[1.5, 2.7], [3.1, 4.9]], element_to_mobject_config{num_decimal_places: 2}) # 任意 mobject 矩阵每个单元格放一个 MathTex m MobjectMatrix([ [MathTex(r\pi), MathTex(re)], [MathTex(r\phi), MathTex(r\tau)] ]) # 括号类型( [ | 或 \\{ m IntegerMatrix([[1, 0], [0, 1]], left_bracket[, right_bracket])分段函数casesMathTex(r f(x) \begin{cases} x^2 \text{if } x \geq 0 \\ -x^2 \text{if } x 0 \end{cases} )多行字符串配合\begin{cases}即可注意字符串内部的反斜杠同样要求原始字符串前缀。对齐环境麦克斯韦方程组式多行推导多行推导需要对齐等号使用aligned环境标记对齐点\\换行MathTex(r \begin{aligned} \nabla \cdot \mathbf{E} \frac{\rho}{\epsilon_0} \\ \nabla \cdot \mathbf{B} 0 \\ \nabla \times \mathbf{E} -\frac{\partial \mathbf{B}}{\partial t} \\ \nabla \times \mathbf{B} \mu_0 \mathbf{J} \mu_0 \epsilon_0 \frac{\partial \mathbf{E}}{\partial t} \end{aligned} )注意MathTex默认会把内容包裹在align*环境中这正是与\\生效的原因。如需更换外层环境用tex_environment覆盖MathTex(r..., tex_environmentgather*)复杂公式三件套substrings_to_isolate、多行参数与 set_color_by_texsubstrings_to_isolate为稠密公式打“锚点”对于拉格朗日密度这类密集表达式手工拆分成参数不现实。此时用substrings_to_isolate告诉 Manim 把哪些子串当作独立子对象跟踪# 不隔离——整个表达式是一个整体 lagrangian MathTex( r\mathcal{L} \bar{\psi}(i \gamma^\mu D_\mu - m)\psi - \tfrac{1}{4}F_{\mu\nu}F^{\mu\nu} ) # 隔离后——每个命名字串都是独立子对象 lagrangian MathTex( r\mathcal{L} \bar{\psi}(i \gamma^\mu D_\mu - m)\psi - \tfrac{1}{4}F_{\mu\nu}F^{\mu\nu}, substrings_to_isolate[r\psi, rD_\mu, r\gamma^\mu, rF_{\mu\nu}] ) # 现在可以对单项着色 lagrangian.set_color_by_tex(r\psi, BLUE) lagrangian.set_color_by_tex(rF_{\mu\nu}, YELLOW)equations.md 特别强调这在TransformMatchingTex变换复杂公式时是必需的——不隔离时Manim 只能把整个表达式当作一个整体逐子串匹配会失败。多行复杂公式每行一个参数需要多行独立动画时把每行作为单独参数传入再arrange(DOWN)排布。每一行是独立子对象可分别动画maxwell MathTex( r\nabla \cdot \mathbf{E} \frac{\rho}{\epsilon_0}, r\nabla \times \mathbf{B} \mu_0\mathbf{J} \mu_0\epsilon_0\frac{\partial \mathbf{E}}{\partial t} ).arrange(DOWN) # 每行是独立的子对象——可独立动画 self.play(Write(maxwell[0])) self.wait(1) self.play(Write(maxwell[1]))TransformMatchingTex 进阶key_map 与 matched_keyskey_map映射源与目标间的符号替换当变形过程中符号发生替换如变-时用key_map显式声明对应关系避免匹配错乱path_arcPI/2让元素沿弧线飞入位置视觉上更精致eq1 MathTex(rA^2 B^2 C^2) eq2 MathTex(rA^2 C^2 - B^2) self.play(TransformMatchingTex( eq1, eq2, key_map{: -}, # 把源中的 映射为目标中的 - path_arcPI / 2, # 元素沿弧线移动到位 ))matched_keys显式指定匹配子串当公共子串存在歧义时Manim 默认匹配“最长公共子串”在复杂公式上可能产生意外结果例如^2 C^2跨项乱配。此时用matched_keys显式指定要对齐的子串kw dict(font_size72, t2c{A: BLUE, B: TEAL, C: GREEN}) lines [ MathTex(rA^2 B^2 C^2, **kw), MathTex(rA^2 C^2 - B^2, **kw), MathTex(rA^2 (C B)(C - B), **kw), MathTex(rA \sqrt{(C B)(C - B)}, **kw), ] self.play(TransformMatchingTex( lines[0].copy(), lines[1], matched_keys[A^2, B^2, C^2], # 显式匹配这些子串 key_map{: -}, # 映射 到 - path_arcPI / 2, # 弧线移动 ))注意lines[0].copy()传入副本以保留原始公式在屏幕上Transform系列会原地修改源对象详见 animations.md 中Transform与ReplacementTransform的区别。完整推导场景二次方程配方演示把上述技巧组装成一个真实可运行的推导场景源自 equations.md 的 Derivation Pattern并叠加仓库创作规范class DerivationScene(Scene): def construct(self): self.camera.background_color BG # SKILL.md每个场景都必须设置背景色 s1 MathTex(rax^2 bx c 0) self.play(Write(s1)) self.wait(1.5) s2 MathTex(rx^2 \frac{b}{a}x \frac{c}{a} 0) s2.next_to(s1, DOWN, buff0.8) self.play(s1.animate.set_opacity(0.4), TransformMatchingTex(s1.copy(), s2))这里综合运用了 SKILL.md 的三条创作规范设置背景色、旧公式降为 0.4 透明度做“层次铺垫”opacity layering、每次动画后wait留出呼吸空间。s1.copy()传入副本确保变形过程中原式仍可被set_opacity控制。常见错误与排查公式动画的报错大多集中在这几类详见 troubleshooting.md错误原因修复公式显示为乱码/消失缺少r原始字符串MathTex(r\frac{1}{2})Missing } inserted类 LaTeX 错误括号不配对检查\frac{1}{2这类缺右花括号的写法公式空白/报pdflatex不存在LaTeX 未安装安装texlive-fullLinux或mactexmacOS\mathscr等命令无法编译缺少宏包在 preamble 中加载宏包tex_template TexTemplate() tex_template.add_to_preamble(r\usepackage{mathrsfs}) MathTex(r\mathscr{L}, tex_templatetex_template)另外注意MathTex是VMobject可以放进VGroup而Text()不是VMobject混排时必须用GroupManim CE v0.20 会直接抛TypeError。清理场景时统一用self.play(FadeOut(Group(*self.mobjects)))这对混合类型最安全。渲染与迭代把公式动画变成成片按 SKILL.md 的管线PLAN → CODE → RENDER → STITCH → AUDIO → REVIEW公式场景同样遵循“先低清迭代、后高清出片”的节奏详见 rendering.mdmanim -ql script.py DerivationScene # 草稿480p/15fps5-15s/场景 manim -qm script.py DerivationScene # 预览720p/30fps文字多时务必用此档检查 manim -qh script.py DerivationScene # 成片1080p/60fps manim -ql --formatpng -s script.py DerivationScene # 单帧预览即时检查排版由于-ql下文字的字距与可读性明显劣化公式尤甚文字密集的场景应在-qm下预览静态帧避免 480p 下发现不了的排版问题流入成片。也可在项目根目录创建manim.cfg固化默认参数如[renderer] background_color、[tex] tex_template_file省去重复的 CLI 参数与每个场景里的背景色设置。调试公式动画时troubleshooting.md 推荐的策略是先用-s渲染末帧检查布局、只渲染出问题的单个场景、把self.play()临时替换为self.add()查看终态、必要时--disable_caching清除缓存。公式是数学视频的“台词”逐帧打磨后才能保证最终成片的每一帧都在传授结构。赞分享AI 技能/插件音视频视频处理人工智能【免费下载链接】video-useEdit videos with coding agents项目地址https://gitcode.com/GitHub_Trending/vid/video-use点击查看免费下载相关推荐5步搞定Manim LaTeX数学公式动画制作完全指南5步搞定Manim LaTeX数学公式动画制作完全指南 还在为静态的数学公式感到无趣吗 想要让你的数学内容动起来吗今天我要带你走进Manim La图形学教育告别公式排版烦恼Manim让LaTeX数学动画如此简单告别公式排版烦恼Manim让LaTeX数学动画如此简单 你是否还在为制作数学教学视频时的公式排版而头疼是否希望用简洁代码实现专业级数学动画本文将带你掌握M图形学音视频RuFlo 跨仓库 Swarm 编排实战基于 claude-flow 的多仓库协同自动化指南RuFlo 跨仓库 Swarm 编排实战基于 claude flow 的多仓库协同自动化指南 导读 multi repo swarm 是 RuFloclau人工智能AI Agent多智能体Agent 编排Agent 记忆工具调用代码智能体MCP 服务AI 评测创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

3个源码细节破解校园修神最佳实践面试不再卡壳

3个源码细节破解校园修神最佳实践面试不再卡壳

3个源码细节破解校园修神最佳实践面试不再卡壳 面试被问原理答不上来,这种尴尬谁没经历过? 别急着背八股文,那是治标不治本。真正的最佳实践,是你能盯着代码说清楚它为什么这么写,而不是只知道它做了什么。…

2026/9/23 15:19:56 阅读更多 →
3个面试坑:手写实现内存条作用逻辑

3个面试坑:手写实现内存条作用逻辑

3个面试坑:手写实现内存条作用逻辑 很多刚毕业或转行的兄弟,在培训班里把 Python、Java 的语法背得滚瓜烂熟,LeetCode…

2026/9/23 15:19:55 阅读更多 →
猫抓:免费的网页视频下载与资源嗅探扩展,把页面里正在播的视频存到本地

猫抓:免费的网页视频下载与资源嗅探扩展,把页面里正在播的视频存到本地

猫抓:免费的网页视频下载与资源嗅探扩展,把页面里正在播的视频存到本地 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 想存…

2026/9/23 15:19:55 阅读更多 →

最新新闻

PLM不是网盘:构建研发项目状态驱动型执行体系

PLM不是网盘:构建研发项目状态驱动型执行体系

简介:本资源是一份面向制造业研发管理者、PLM实施顾问及技术型项目经理的实战型管理课件,聚焦如何依托PLM平台构建结构化、协同化、市场驱动的研发项目管理体系,系统应对需求多变、周期缩短、跨学科协作与团队规模化等核心挑战。课件为单文件…

2026/9/23 15:59:37 阅读更多 →
文化衫设计模板源码解析:3步搞定前端排版报错

文化衫设计模板源码解析:3步搞定前端排版报错

文化衫设计模板源码解析:3步搞定前端排版报错 刚接手公司年会文化衫定制项目,打开 Figma 导出代码,页面直接崩了。控制台里飘着红彤彤的报错,一堆 TypeError: Cannot read properties of…

2026/9/23 15:59:37 阅读更多 →
DeepSeek跨框架迁移实战:PyTorch到TensorFlow对齐指南

DeepSeek跨框架迁移实战:PyTorch到TensorFlow对齐指南

简介:本资源是一份面向深度学习工程师与大模型研发人员的实战型技术指南,系统解决DeepSeek开源模型在PyTorch与TensorFlow双框架间迁移训练的核心难题。全书197页、48章,覆盖环境配置、代码模块拆解、网络结构重构、算子映射对照、动态图转静…

2026/9/23 15:59:37 阅读更多 →
劳务班组长看这篇,一文搞懂当铺逻辑,3个代码示例搞定项目落地

劳务班组长看这篇,一文搞懂当铺逻辑,3个代码示例搞定项目落地

劳务班组长看这篇,一文搞懂当铺逻辑,3个代码示例搞定项目落地 看了一堆教程还是不会写项目?别急,问题不在你笨,而在没人把业务逻辑翻译成代码。今天咱们不聊虚的,直接以 当铺…

2026/9/23 15:59:37 阅读更多 →
@svgr/babel-plugin-add-jsx-attribute 完全指南:为 SVG 转换产物注入 JSX 属性

@svgr/babel-plugin-add-jsx-attribute 完全指南:为 SVG 转换产物注入 JSX 属性

前端开发工具 【免费下载链接】svgr Transform SVGs into React components 🦁 项目地址: https://gitcode.com/gh_mirrors/sv/svgr 点击查看 免费下载 本指南以 SVGR 仓库中 svgr/babel-plugin-add-jsx-attribute 插件的官方文档为主体,结合…

2026/9/23 15:59:36 阅读更多 →
Publishing Your Vibe-Coded App: A Cross-Platform Release Guide from Release Build to Store Review

Publishing Your Vibe-Coded App: A Cross-Platform Release Guide from Release Build to Store Review

教程文档 【免费下载链接】easy-vibe 从 0 到 1 学会 vibe coding,项目制学习 项目地址: https://gitcode.com/datawhalechina/easy-vibe 点击查看 免费下载 一个能在你电脑和手机上运行的程序,和真正发布给用户使用的产品,是两回…

2026/9/23 15:58:36 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →