colors - 我可以覆盖 Tex 的 Manim 颜色默认值并直接使用 xcolor 吗?
问题描述
我正在试验Manim数学演示(又名:youtube 3b1b)python 系统,发现颜色控制非常棘手。这是一个例子:
class color1(Scene):
def construct(self):
eq1 = MathTex( r'&{\left(\vec{u} \cdot \vec{v} \right)}^2 \\',
'&(', r'\vec{u}', r'\cdot', r'\vec{v}', r'){}^2 \\' )
eq1.set_color_by_tex_to_color_map( { "{u}": RED, "{v}": YELLOW } )
eq2 = MathTex( r'&{\color{blue}{\left(\vec{u} \cdot \vec{v} \right)}^2} \\' )
for item in eq1:
self.play( Write( item ) )
eq2.shift( 2 * DOWN )
for item in eq2:
self.play( Write( item ) )
self.wait( )
产生如下输出:
规则匹配整个字符串,所以如果你有两个想要匹配的东西(如 \vec{u} 和 \vec{v}),你不能将它们都放在一个字符串中,而是看起来必须将您的方程式线分成一组单独的字符串,以便颜色匹配规则起作用。此外,如果我将一条方程线分解为许多不同的 MathTex 参数以分别为它们着色,那么 self.play 中的渲染真的很慢(也许这可以解决。)
我希望我可以只使用 xcolor 语法来设置颜色,但这似乎被 Manim 的默认颜色所覆盖(即,该库默认情况下不使用黑色,而是使用白色,所以我假设它优先。)查看上面示例中的第三行,看看 xcolor {color{...}...} 是如何工作的。
有没有办法避免在 Manim 乳胶文本中设置默认颜色,以便 xcolor 标记在该上下文中起作用?
如果这是不可能的,当一个方程被分解成许多块进行着色时,有没有办法处理 self.play 的真正缓慢渲染?
编辑:想出了一个解决单独颜色项目的慢速播放问题的解决方法。这似乎是由于使用了 play(Write(...)),而像这样的东西没有这些延迟:
eq3 = MathTex( '(', r'\vec{u}', r'\cdot', r'\vec{v}', r'){}^2' )
eq3.set_color_by_tex_to_color_map( { "{u}": RED, "{v}": YELLOW } )
for item in eq3:
self.add( item )
解决方案
推荐阅读
- python - 无法连接服务器中的第二个客户端
- c# - 如何在单独的文件中创建类子类
- java - 如何改进这种 Java 二进制搜索方法以找到给定值的最佳百分位数?
- php - Wordpress 帖子更新不通过 wordpress 钩子更新 postmeta
- c# - 为什么我生成的带有接口的程序集实现为方法而不是属性?
- java - 如何在 Selenium WebDriver 中选择特定日期(何时:type = "date")?
- keras - 如何从变分自动编码器模型创建编码器模型?
- java - 由于 NullPointerException,TestNg 失败
- javascript - 模型似乎正在加载但不可见
- node.js - 响应数据较大时的 AWS Lambda NodeJs 响应错误