You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Manim中连分数展开动画分母分数尺寸过小问题求助

解决Manim中连分数展开时分母分数尺寸过小的问题

问题背景

作为Manim新手,在实现分数的连分数展开动画时,遇到分母中生成的分数尺寸偏小的问题,视觉上不协调。原代码如下:

from manim import *

class Eq(Scene):
    def construct(self):
        f1=MathTex(
            r"{75 \over ",
            r"33",
            "}"
            )
        f2=MathTex(
            r"{66+9 \over ",
            "33",
            "}"
            )
        f3=MathTex(
            r"{2+}",r"{9 \over ",
            "33",
            "}"
            )
        f4=MathTex(
            r"{2+}",r"{1 \over ",
            r"{33 \over",
            "9",
            "}","}"
            )
        self.add(f1)
        self.wait(2)
        self.play(ReplacementTransform(f1[0],f2[0]))
        self.wait(2)
        self.play(ReplacementTransform(f1,f3))
        self.wait(2)
        self.play(ReplacementTransform(f3,f4))
        self.wait(2)

问题核心:使用\over生成的分数在分母位置时,LaTeX默认采用textstyle排版,导致分数尺寸远小于原分数,视觉不协调。

解决方案

LaTeX中,\displaystyle命令可强制内容以全局显示模式排版,让分母中的分数保持与原分数一致的尺寸;也可使用\dfrac(Manim默认支持amsmath包,直接可用)生成正常大小的分数。

方案1:使用\displaystyle修改原代码

from manim import *

class Eq(Scene):
    def construct(self):
        f1=MathTex(
            r"{75 \over ",
            r"33",
            "}"
            )
        f2=MathTex(
            r"{66+9 \over ",
            "33",
            "}"
            )
        f3=MathTex(
            r"{2+}",r"{9 \over ",
            "33",
            "}"
            )
        # 用\displaystyle强制分母中的分数以正常尺寸显示
        f4=MathTex(
            r"{2+}",r"{1 \over ",
            r"\displaystyle{33 \over",
            "9",
            "}","}"
            )
        self.add(f1)
        self.wait(2)
        self.play(ReplacementTransform(f1[0],f2[0]))
        self.wait(2)
        self.play(ReplacementTransform(f1,f3))
        self.wait(2)
        self.play(ReplacementTransform(f3,f4))
        self.wait(2)

方案2:使用\dfrac简化代码

from manim import *

class Eq(Scene):
    def construct(self):
        f1=MathTex(r"\dfrac{75}{33}")
        f2=MathTex(r"\dfrac{66+9}{33}")
        f3=MathTex(r"2+\dfrac{9}{33}")
        f4=MathTex(r"2+\dfrac{1}{\dfrac{33}{9}}")
        
        self.add(f1)
        self.wait(2)
        self.play(ReplacementTransform(f1,f2))
        self.wait(2)
        self.play(ReplacementTransform(f2,f3))
        self.wait(2)
        self.play(ReplacementTransform(f3,f4))
        self.wait(2)

说明

  • \displaystyle:忽略当前上下文(如分母、下标)的缩小规则,强制LaTeX使用全局显示模式排版,让分数保持正常大小。
  • \dfrac:amsmath包提供的命令,直接生成displaystyle模式的分数,代码更简洁易读。

内容的提问来源于stack exchange,提问作者Maik Pickl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 15:44:58