python - 新手生活:让 manim 运行 tikz 时遇到问题
问题描述
我已经观看了有关如何让 manim 使用 tikz 的视频,并遵循了几个线程来解决问题,但似乎没有任何帮助。
我修改了 tex_template.tex 以包含必要的包并将文档类更改为“preview,dvisvgm”。
我还修改了 tex_file_writing.py 以包含
"--libgs='/usr/local/Cellar/ghostscript/9.26_1/lib/libgs.dylib'"
在 dvi_to_svg 部分。
尽管如此,我仍然得到:异常:转换为 dvi 的乳胶错误。尝试跑步时
from manimlib.imports import *
class OutFit(Scene):
def construct(self):
TreeDiagram = TexMobject(r"""
\begin{tikzpicture}[level distance=5em, level 1/.style={sibling distance=5cm},
level 2/.style={sibling distance=2.5cm}, level 3/.style={sibling distance=1cm},
every node/.style = {shape=rectangle, rounded corners,
draw, align=center,
top color=white, bottom color=blue!20}]]
\node {Start}
child { node {$s_1$}
child { node {$p_1$}
child { node{$f_1$}}
child {node{$f_2$}}}
child { node {$p_2$}
child { node{$f_1$}}
child {node{$f_2$}}}}
child { node {$s_2$}
child { node {$p_1$}
child {node {$f_1$}}
child {node {$f_2$}}}
child { node {$p_2$}
child {node {$f_1$}}
child {node {$f_2$}}}}
child { node {$s_3$}
child { node {$p_1$}
child {node {$f_1$}}
child {node {$f_2$}}}
child { node {$p_2$}
child {node {$f_1$}}
child {node {$f_2$}}}};
\end{tikzpicture}""")
self.play(Write(TreeDiagram))
任何帮助深表感谢。
解决方案
你为什么要TexMobject
改用TextMobject
?提问前请多加注意。您还需要包含在 manimlib/tex_template.tex 文件中的 tikz 包。
无论如何,不建议这样做,因为您正在滥用 LaTeX 函数,最好和最优化的是创建一个生成所需树的类,但是您必须自己编写该类,因为它不存在这样的类包含在Manim中,并不难。
class OutFit(Scene):
def construct(self):
tree_diagram = TextMobject(r"""
\begin{tikzpicture}[level distance=5em, level 1/.style={sibling distance=5cm},
level 2/.style={sibling distance=2.5cm}, level 3/.style={sibling distance=1cm}]
\node {Start}
child { node {$s_1$}
child { node {$p_1$}
child { node{$f_1$}}
child {node{$f_2$}}}
child { node {$p_2$}
child { node{$f_1$}}
child {node{$f_2$}}}}
child { node {$s_2$}
child { node {$p_1$}
child {node {$f_1$}}
child {node {$f_2$}}}
child { node {$p_2$}
child {node {$f_1$}}
child {node {$f_2$}}}}
child { node {$s_3$}
child { node {$p_1$}
child {node {$f_1$}}
child {node {$f_2$}}}
child { node {$p_2$}
child {node {$f_1$}}
child {node {$f_2$}}}};
\end{tikzpicture}""",stroke_width=1,fill_opacity=0)
tree_diagram.set_width(FRAME_WIDTH-1)
self.play(Write(tree_diagram))
推荐阅读
- swift - 无法从 Firebase Storage swift 4.2 下载文件
- r - 用多天的不同时间戳数据绘制多个 geom_lines
- javascript - Vue 父组件无法捕获子组件发出的事件
- javascript - 如何检索函数返回的值?
- excel - 从 VB.Net 将多个系列数据添加到 Excel 图表
- sql - 如何使用“案例”标记一列中具有相同值的 2 个不同行
- javascript - 满足条件时禁用按键事件侦听器
- bash - 如何通过多个键查找匹配项并提取连续两行匹配项的值?
- python - 在 3D 动画中在摄像机前绘制新球体
- php - PHP - 需要使用来自 API 的 3 个非常不同的 id 来获得相同的东西