当前位置: 首页 > news >正文

Manim如何在数学公式中完美显示中文?

很多刚开始学习 ManimCE 的同学,在兴致勃勃地想要制作中文数学动画时,都会遇到同一个“拦路虎”:一旦在公式里输入中文,程序直接报错,红一片!

比如你想写“勾股定理”,直接这样写:

# 错误示范 ❌
tex = MathTex("勾股定理:a^2+b^2=c^2")

运行后,你会得到一堆 LaTeX 编译错误。这是因为默认的 LaTeX 模板是不支持中文字符的。

别担心,今天我们就来彻底解决这个问题,教会大家如何在 MathTexTex 以及 Title 组件中优雅地显示中文。

1. 为什么会出现报错?

Manim 底层使用 LaTeX 来渲染公式。

标准的 LaTeX 环境主要针对英文和数学符号设计,如果没有加载特定的中文宏包(如 ctex),它就无法识别汉字,从而导致编译失败。

所以,核心思路就是:告诉 Manim 使用支持中文的 LaTeX 模板。

2. 三大组件的中文显示方案

ManimCE 中,常用的可以显示数学公式的三个组件是 MathTexTexTitle

它们显示中文的设置略有不同,我们逐个来看。

2.1. MathTex 组件

MathTex 主要用于数学公式。要显示中文,只需要添加一个关键参数:tex_template

  • 解决方法:设置 tex_template=TexTemplateLibrary.ctex
  • 代码示例
# 正确示范 ✅
tex02 = MathTex(r"\text{勾股定理}: a^2+b^2=c^2",tex_template=TexTemplateLibrary.ctex,  # 关键!
)

注意:中文最好包裹在 \text{} 中,这样 LaTeX 才知道这是文本而不是数学变量。

2.2. Tex 组件

Tex 组件通常用于包含更多文本内容的段落。对于中文显示,它比 MathTex 多了一个要求。

  • 解决方法:需要同时设置 tex_templatetex_environment
  • 关键参数
    1. tex_template=TexTemplateLibrary.ctex
    2. tex_environment="align*"
  • 代码示例
# 正确示范 ✅
tex01 = Tex(r"\text{勾股定理}: a^2+b^2=c^2",tex_environment="align*",              # 关键!tex_template=TexTemplateLibrary.ctex,  # 关键!
)

2.3. Title 组件

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,  # 关键!
)

3. 完整代码演示

为了让大家能够直接运行成功,我整理了一份完整的代码示例。你可以直接复制到你的编辑器中尝试。

from manim import *class Keshihua(Scene):def construct(self):# 1. Tex 组件显示中文# 需要两个参数:tex_environment 和 tex_templatetex01 = 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_templatetex02 = 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()

4. 总结与建议

为了方便记忆,我把今天的重点整理成了一个小表格:

组件类型 是否需要中文模板? 是否需要指定环境? 关键参数设置
MathTex ✅ 是 ❌ 否 tex_template=TexTemplateLibrary.ctex
Tex ✅ 是 ✅ 是 tex_template=..., tex_environment="align*"
Title ✅ 是 ✅ 是 Tex 组件

小贴士:

  1. 环境配置:确保你的电脑已经安装了 LaTeX 环境(如 TeX LiveMiKTeX),并且安装了 ctex 宏包。Manim 调用的是系统本地的 LaTeX 编译器。
  2. 转义字符:在 Python 字符串中,记得在公式前加 r(如 r"\text{...}"),防止反斜杠被转义。
  3. 文本包裹:尽量用 \text{} 包裹中文,这样排版会更规范。

希望这篇教程能帮你扫清障碍,做出更漂亮的中文数学动画!

http://www.jsqmd.com/news/666130/

相关文章:

  • 猫抓cat-catch终极资源嗅探指南:从浏览器中提取任何媒体文件的完整教程
  • Armv8-R系列之MAIR寄存器:内存属性的间接配置艺术
  • 010、暗网技术基础:Tor、I2P与Freenet架构对比
  • 用python解放右手(五) 定时任务-让代码比你先上班
  • 10分钟搞定黑苹果:智能配置工具OpCore-Simplify快速上手指南
  • 聊聊口碑不错的居住证咨询平台,哪家口碑更好 - mypinpai
  • Qwen3.5-4B-Claude-Opus多场景案例:技术博客内容生成+SEO关键词嵌入
  • SliderCaptcha:企业级Web安全验证的智能滑块解决方案
  • Gitea Enterprise 25.5.0 发布 - 本地部署的企业级 Git 服务
  • 蓝桥杯想拿省一?过来人告诉你:搞定‘搜索’和‘动态规划’的实战技巧比啥都强
  • 多模态世界模型入门:2026年AGI核心方向,一文讲透原理与应用
  • 解读EPS泡沫实力厂商的选购要点,推荐值得合作的厂家 - myqiye
  • 不用翻墙!5分钟搞定Claude 3.7 Sonnet API免费试用(附完整操作截图)
  • 别再被GOROOT和GOPATH搞晕了!GoLand 2023.3 + Go 1.21 保姆级环境搭建与避坑指南
  • 终极文档下载解决方案:如何一键下载百度文库等30+平台免费文档
  • WebAssembly实战:手把手教你用Fetch API和WebAssembly.instantiate在Vue/React项目中集成wasm模块
  • 探讨靠谱的干燥剂正规供应商怎么选择,实用攻略奉上 - 工业设备
  • 别再只会用Town01了!Carla 0.9.12 全地图特性详解与Python API切换避坑指南
  • CogVideoX-2b效果实测:连贯动态与自然画面生成案例
  • 011、暗网网关概述:连接明网与暗网的访问枢纽
  • 如何快速批量激活Adobe CC全系列软件:Adobe-GenP 3.0完整使用指南
  • SQLite4Unity3d终极教程:在Unity中快速集成SQLite数据库的完整指南
  • AGI跨域迁移失效真相全解析,深度拆解Transformer架构在非预训练分布下的3类隐性坍塌机制
  • 别再手动测接口了!用JMeter 5.6.3 + CSV文件实现批量登录测试(附实战脚本)
  • 别再手动算点了!用STM32F103的DAC硬件三角波发生器,5分钟搞定波形输出
  • 2026年靠谱的干燥剂实力厂商推荐,教你如何选到高性价比产品 - 工业推荐榜
  • 别再混淆了!一文讲透SECS/GEM协议里的‘在线’、‘离线’、‘连接’状态(含S1F17/S1F15命令解析)
  • Windows系统优化终极指南:Win11Debloat一键清理与个性化配置
  • ncmdump:解锁网易云音乐加密文件的自由播放能力
  • 凸优化避坑指南:为什么你的梯度下降总不收敛?