首页 > 解决方案 > 新手生活:让 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))

任何帮助深表感谢。

标签: pythonmanim

解决方案


你为什么要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))

在此处输入图像描述


推荐阅读