manim 中的连续分数

问题描述 投票:0回答:1

我是使用 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
会产生一个比原始分数小的文本分数,使其看起来很尴尬。有可能避免这种情况吗?

我发现视频中连分数展开保持相同的大小,所以它必须是可能的。不幸的是,我无法找到解决这个特定问题的指南。如有帮助,我们将不胜感激。

编辑:这是情况图片

如您所见,分母中的分数更小。我希望它的大小与原始分数相同。

python animation fractions manim
1个回答
0
投票

总的来说,这更像是一个“LaTeX”问题,而不是一个“manim/python”问题。 Manim 只是将 LaTeX 方程渲染为 *.svg 文件并将该文件添加到场景中。所以真正的问题是,如何按照您想要的方式渲染 LaTeX 方程。 在这里您可以找到可能的解决方案。

将第一个应用到您的示例中可能会导致以下结果:

f4=MathTex(
r"{2+}",r"\begin{array}{@{\,}c@{\,}} 1\\ \hline 33\\ \hline 9\end{array}"
)
...

看起来像这样:

© www.soinside.com 2019 - 2024. All rights reserved.