這次發佈的是一個“補丁版本”,距離上次的大版本發佈只有幾天。
主要修改部分是:
✅ Bug 修復(MathTex 解析、DashedLine 動畫、AnimationGroups 檢測等)
✅ 小優化(Docker 鏡像、警告靜音)
✅ 文檔補充
如果你正在使用 Manim 製作數學動畫,建議儘快升級以獲得更穩定的體驗。
以下是本次更新的核心內容整理及代碼示例。
🚀 核心亮點與代碼示例
1. MathTex 雙大括號解析修復
在之前的版本中,MathTex 在處理 LaTeX 原生的雙大括號 }} 時可能會錯誤地觸發分割邏輯,導致公式渲染失敗或顯示異常。v0.20.1 修復了這一問題,現在你可以更放心地在公式中使用集合或嵌套括號。
示例:正確使用雙大括號
from manim import *
class MathTexFixExample(Scene):
def construct(self):
# 之前版本可能會在這裏解析出錯
# 現在可以正常渲染包含 }} 的 LaTeX 公式
equation = MathTex(r"\{ x \in \mathbb{R} \mid x^2 \geq 0 \}")
self.play(Write(equation))
self.wait()
2. 零長度 DashedLine 支持
曾經,如果你嘗試創建或動畫化一個起點和終點重合(零長度)的 DashedLine,Manim 可能會拋出錯誤。新版本修復了 this 邊緣情況,使得動態調整線段長度變得更加魯棒。
示例:動態變化的虛線
from manim import *
class DashedLineZeroLength(Scene):
def construct(self):
start_point = ORIGIN
end_point = RIGHT
# 創建一個虛線
line = DashedLine(start_point, end_point)
self.add(line)
# 動畫將終點移動回起點,形成零長度線段
# v0.20.1 修復了此類動畫可能崩潰的問題
self.play(line.animate.put_start_and_end_on(start_point, start_point))
self.wait()
3. 嵌套 AnimationGroups 與 Z-Index 修復
對於複雜動畫,特別是嵌套的 AnimationGroup 中包含帶有 z_index 屬性的 mobjects 時,移動對象檢測曾存在問題。這可能導致圖層順序混亂或動畫追蹤失敗。本次更新修復了嵌套組中的對象檢測邏輯。
示例:嵌套動畫組
from manim import *
class NestedAnimationGroupFix(Scene):
def construct(self):
circle = Circle().set_fill(RED, opacity=0.5)
square = Square().set_fill(BLUE, opacity=0.5)
# 設置不同的 z_index
circle.z_index = 2
square.z_index = 1
# 嵌套 AnimationGroup
group_anim = AnimationGroup(
AnimationGroup(circle.animate.shift(RIGHT)),
AnimationGroup(square.animate.shift(LEFT)),
lag_ratio=0.5
)
self.add(square, circle)
self.play(group_anim)
self.wait()
4. LaggedStartMap 參數傳播控制
修復了 LaggedStartMap 中 kwargs 意外傳播給所有子對象的問題。現在你可以更精確地控制傳遞給每個映射對象的參數,避免不必要的屬性污染。
🛠 開發者體驗優化
除了用户可見的功能修復,v0.20.1 還在底層做了不少改進,讓開發和使用過程更順暢:
- Docker 鏡像優化:優化了 Docker 鏡像的構建流程和運行時佔用空間,對於使用容器化部署的用户來説,拉取和運行速度將更快。
- FFmpeg 警告靜音:當系統中缺少 ffmpeg CLI 時,不再彈出煩人的
pydub導入警告,控制枱輸出更乾淨。 - 類型提示增強:為
manim/_config/utils.py添加了類型註解,有助於 IDE 提供更好的代碼補全和錯誤檢查。 - TipableVMobject 清理:修復了可變默認參數問題及
assign_tip_attr的拼寫錯誤,提升了代碼內部穩定性。
📚 文檔更新
- 本地安裝指南:新增了將 Manim 作為本地包手動安裝的文檔説明,方便需要定製開發的用户。
- 可訪問性提升:為 README.md 中的所有圖片添加了替代文本(alt text),使文檔對屏幕閲讀器更友好。
📥 如何升級
你可以通過 pip 輕鬆升級到最新版本:
pip install --upgrade manim