Manim MathTex - 分数分子中的多个文本片段

Manim MathTex - Multiple text fragments in numerator of fraction

我正在从事一个 Manim 项目,我在其中以代数方式处理方程式。使用许多提供的实用程序可以轻松做到这一点,但为了顺利进行,我必须将 MathTex 对象分成多个独立的“片段”。这可以通过多种方式完成,但我选择使用双括号语法:

MathTex("{{a}} + {{b}}").submobjects
# [SingleStringMathTex('a'), SingleStringMathTex(' + '), SingleStringMathTex('b')]

这适用于大多数数学方程式,包括那些在分数的分母中有片段的方程式

MathTex("\frac{ a }{ {{b}} }}").submobjects
# [SingleStringMathTex('\frac{ a }{ '), SingleStringMathTex('b'), SingleStringMathTex(' }}')]

但是,无论我使用哪种方法,似乎都无法在分子内创建片段。

MathTex("\frac{ {{a}} }{ {{b}} }}").submobjects
# ERROR    LaTeX compilation error: Missing }       tex_file_writing.py:265
#          inserted.

这似乎是 LaTeX 编译而不是 Manim 的片段系统强加的限制。我正在寻找任何可以让我在分数的分子中创建 Manim 片段的解决方法。

Manim CE 示例还提到了另一种用于复杂字符串的方法,当隔离 sub-strings 不起作用时。它涉及考虑各个子串的手动索引并直接在子串索引上设置颜色。

因此,对于 Tex 代码 \frac{a}{b},它可能看起来有点像这样:

text = MathTex(r"\frac{a}{b}", font_size=24)
self.add(index_labels(text[0]))
text[0][0:1].set_color(YELLOW)
text[0][1:2].set_color(RED)
self.add(text)

我会验证并告诉你它是否有效,但我使用 ManimGL,所以 MathTex 与我安装的 Manim 不兼容。

这会中断,因为 LaTeX 中的 frac 命令需要多个参数,并且在只给出一个参数时无法编译。这是一个可能需要在 Manim 源代码中引起注意的问题,但就我而言,我能够在 LaTeX.

中使用分数的替代符号
MathTex("{ {{a}} \over { {{b}} } }").submobjects
# [SingleStringMathTex('{ '), SingleStringMathTex('a'), SingleStringMathTex(' \over { '), SingleStringMathTex('b'), SingleStringMathTex(' } }')]