文本方案对比¶
板块三介绍了五套文本方案:Text(Pango 纯文本)、MarkupText(Pango 富文本)、Tex/MathTex(LaTeX)、Typst/MathTypst(v0.21.0 新增)。本节把它们放在同一张表里正面对比,并给出选型决策树。
总对比表¶
Text |
MarkupText |
Tex / MathTex |
Typst / MathTypst |
|
|---|---|---|---|---|
渲染引擎 |
Pango → SVG |
Pango → SVG |
LaTeX → DVI/SVG |
typst (Rust) → SVG |
外部依赖 |
ManimPango |
ManimPango |
TeX Live / MiKTeX |
Python |
安装成本 |
零 |
零 |
数 GB |
一条 pip 命令 |
文本语法 |
纯文本 |
Pango 标记 |
LaTeX 文本/数学模式 |
Typst 标记/数学模式 |
中文支持 |
直接支持 |
直接支持 |
需 ctex 模板 + XeLaTeX |
直接支持 |
数学公式 |
不支持 |
仅上下标 |
完整(amsmath) |
完整(Typst math) |
逐字/逐组动画 |
字符级子对象 |
字符级子对象 |
|
|
富文本(粗斜体/颜色/字号) |
|
内联标签 |
|
Typst |
首次渲染耗时 |
快 |
快 |
慢(秒级编译) |
中等(毫秒级编译) |
缓存 |
SVG 缓存可选 |
SVG 缓存可选 |
部分视频缓存 |
SVG 缓存可选 |
排版质量 |
良 |
良 |
最优 |
优 |
适用场景 |
中文标注、简单文字 |
富文本混排 |
正式数学公式 |
轻量公式、免 TeX 环境 |
几点补充说明:
性能:
Text/MarkupText只做一次 Pango 排版,最快;Tex/MathTex每次都要调起 LaTeX 编译,几十个公式场景会明显拖慢迭代;Typst编译在毫秒级,介于两者之间。颜色机制:
Text系与Tex系都是 SVG 导入,Manim 颜色对象直接可用;MarkupText的<span foreground>与 Typst 内联颜色则用各自语法(十六进制 / Typst 颜色函数),Typst(color=...)会整体覆盖 Typst 内部 fill。子对象粒度:
Text按字符拆分,做逐字动画最自然;MathTex默认整式一个子对象,需要substrings_to_isolate或{{ }}主动拆分;MathTypst的{{ }}+select是三者中最接近“按语义分组”的。
选型决策树¶
要渲染的内容是什么?
├─ 数学公式
│ ├─ 已装 LaTeX,追求最高排版质量 ──→ MathTex(中文混排用 Tex + ctex 模板)
│ ├─ 不想装 TeX / CI 环境受限 ────→ MathTypst
│ └─ 只有简单上下标 ──────────────→ MarkupText(<sup>/<sub>)
└─ 普通文字
├─ 含中文 ──────────────────────→ Text(无需任何额外依赖)
├─ 需要粗斜体、多字号混排 ────────→ MarkupText
├─ 需要整段文档式排版(标题/列表/强调)→ Typst
└─ 需要 LaTeX 文本排版质量 ───────→ Tex
再叠加两条约束:
逐字/逐组动画需求强 → 优先
Text(字符天然是子对象)或MathTypst({{ }}语义分组);MathTex要先规划隔离子串。渲染环境不可控(观众复现、CI、插件分发)→ 优先 Pango 系或 Typst,避免把数 GB 的 LaTeX 作为隐形依赖。
常见坑¶
常见错误
不要在中途换引擎:同一个场景里 Text 和 MathTex 的字体、基线、笔画宽度体系完全不同,Transform 跨引擎变形会得到难看的中间帧。跨方案切换用 FadeOut/FadeIn 或 ReplacementTransform。
提示
混排公式 + 中文标注的最省心组合是:MathTex 出公式、Text 出中文注释,用 next_to/arrange 手工对齐。两者都是成熟路径,CI 与本地行为一致。
自测¶
✏️ 练习
目标:渲染中文标题“牛顿-莱布尼茨公式”和公式 ∫_a^b f(x)dx = F(b)-F(a),机器没装 LaTeX。选哪套方案?写出关键代码。
✅ 参考答案
公式用 MathTypst(免 TeX),标题用 Text:
title = Text("牛顿-莱布尼茨公式")
formula = MathTypst(r"integral_a^b f(x) dif x = F(b) - F(a)")
formula.next_to(title, DOWN)
✏️ 练习
为什么大量公式场景推荐预渲染或缓存策略?Tex/MathTex 与其他方案比瓶颈在哪?
✅ 参考答案
Tex/MathTex 每个(或每组)公式都要启动一次外部 LaTeX 进程编译,秒级耗时且进程启动开销固定;Pango 与 Typst 都在进程内完成排版,毫秒级。公式多时 LaTeX 路径成为主要瓶颈,可利用 Manim 的部分视频缓存(默认开启)跳过未修改片段,或把静态公式预渲染为 SVG/图片。
下一步¶
对比完引擎,回到具体对象:下一节看数字相关类 DecimalNumber、Integer 与 Variable——它们让数值本身成为可动画的对象。