
























很多刚开始学习 ManimCE 的同学,在兴致勃勃地想要制作中文数学动画时,都会遇到同一个“拦路虎”:一旦在公式里输入中文,程序直接报错,红一片!
比如你想写“勾股定理”,直接这样写:
# 错误示范 ❌
tex = MathTex("勾股定理:a^2+b^2=c^2")
运行后,你会得到一堆 LaTeX 编译错误。这是因为默认的 LaTeX 模板是不支持中文字符的。
别担心,今天我们就来彻底解决这个问题,教会大家如何在 MathTex、Tex 以及 Title 组件中优雅地显示中文。
Manim 底层使用 LaTeX 来渲染公式。
标准的 LaTeX 环境主要针对英文和数学符号设计,如果没有加载特定的中文宏包(如 ctex),它就无法识别汉字,从而导致编译失败。
所以,核心思路就是:告诉 Manim 使用支持中文的 LaTeX 模板。
在 ManimCE 中,常用的可以显示数学公式的三个组件是 MathTex、Tex 和 Title。
它们显示中文的设置略有不同,我们逐个来看。
MathTex 主要用于数学公式。要显示中文,只需要添加一个关键参数:tex_template。
tex_template=TexTemplateLibrary.ctex# 正确示范 ✅
tex02 = MathTex(
r"\text{勾股定理}: a^2+b^2=c^2",
tex_template=TexTemplateLibrary.ctex, # 关键!
)
注意:中文最好包裹在 \text{} 中,这样 LaTeX 才知道这是文本而不是数学变量。
Tex 组件通常用于包含更多文本内容的段落。对于中文显示,它比 MathTex 多了一个要求。
tex_template 和 tex_environment。tex_template=TexTemplateLibrary.ctextex_environment="align*"# 正确示范 ✅
tex01 = Tex(
r"\text{勾股定理}: a^2+b^2=c^2",
tex_environment="align*", # 关键!
tex_template=TexTemplateLibrary.ctex, # 关键!
)
Title 组件用于生成标题。很多同学不知道,其实 Title 底层是继承自 Tex 组件的。
Tex,那么它显示中文的要求也与 Tex 完全一致。tex_environment="align*" 和 tex_template=TexTemplateLibrary.ctex。# 正确示范 ✅
title = Title(
r"\text{勾股定理}: a^2+b^2=c^2",
tex_environment="align*", # 关键!
tex_template=TexTemplateLibrary.ctex, # 关键!
)
为了让大家能够直接运行成功,我整理了一份完整的代码示例。你可以直接复制到你的编辑器中尝试。
from manim import *
class Keshihua(Scene):
def construct(self):
# 1. Tex 组件显示中文
# 需要两个参数:tex_environment 和 tex_template
tex01 = Tex(
r"\text{勾股定理}: a^2+b^2=c^2",
tex_environment="align*",
tex_template=TexTemplateLibrary.ctex,
).set_color_by_gradient(RED, GREEN)
self.play(Write(tex01))
# 2. MathTex 组件显示中文
# 只需要一个参数:tex_template
tex02 = MathTex(
r"\text{勾股定理}: a^2+b^2=c^2",
tex_template=TexTemplateLibrary.ctex,
).set_color_by_gradient(YELLOW, BLUE)
tex02.next_to(tex01, DOWN)
self.play(Write(tex02))
# 3. Title 组件显示中文
# 因为继承自 Tex,所以参数要求与 Tex 相同
title = Title(
r"\text{勾股定理}: a^2+b^2=c^2",
tex_environment="align*",
tex_template=TexTemplateLibrary.ctex,
)
self.play(Write(title))
self.wait()

为了方便记忆,我把今天的重点整理成了一个小表格:
| 组件类型 | 是否需要中文模板? | 是否需要指定环境? | 关键参数设置 |
|---|---|---|---|
小贴士:
LaTeX 环境(如 TeX Live 或 MiKTeX),并且安装了 ctex 宏包。Manim 调用的是系统本地的 LaTeX 编译器。Python 字符串中,记得在公式前加 r(如 r"\text{...}"),防止反斜杠被转义。\text{} 包裹中文,这样排版会更规范。希望这篇教程能帮你扫清障碍,做出更漂亮的中文数学动画!
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。