Как управлять каждым элементом в списке латекса в Manim - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь манипулировать каждым элементом в латексном списке (например, изменять цвет, устанавливать анимацию движения) в Manim, но это не позволяет мне сделать это. Я могу разбить латексную формулу на части, но почему я не могу сделать то же самое со списком латекса?

Это мой код:

class TitleAndListOfContent(Scene):
    def construct(self):
        list_of_content = TextMobject(
            '\\begin {itemize}',
            '\\item a',
            '\\item b',
            '\\item c',
            '\\end {itemize}',
        )
        self.play(Write(list_of_content))
        self.wait()

и трассировка:

Traceback (most recent call last):
  File ".../manim/manimlib/extract_scene.py", line 155, in main
    scene = SceneClass(**scene_kwargs)
  File ".../manim/manimlib/scene/scene.py", line 75, in __init__
    self.construct()
  File "my_scene.py", line 33, in construct
    '\\end {itemize}',
  File ".../manim/manimlib/mobject/svg/tex_mobject.py", line 148, in __init__
    self, self.arg_separator.join(tex_strings), **kwargs
  File ".../manim/manimlib/mobject/svg/tex_mobject.py", line 44, in __init__
    self.template_tex_file_body
  File ".../manim/manimlib/utils/tex_file_writing.py", line 21, in tex_to_svg_file
    dvi_file = tex_to_dvi(tex_file)
  File ".../manim/manimlib/utils/tex_file_writing.py", line 72, in tex_to_dvi
    "See log output above or the log file: %s" % log_file)
Exception: Xelatex error converting to xdv. See log output above or the log file: media/Tex/a64dc4dc7f5621bd.log

Для справки, визуальный эффект, которого я пытаюсь достичь, выглядит примерно так: https://youtu.be/BOMNd-bRQ4A?t=31

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Я открыл проблему в репозитории GitHub и нашел гораздо более многообещающее решение с использованием класса BulletedList. Я думаю, что при использовании решения Sony $\\bullet$ все элементы будут центрированы (или их нужно будет переставлять вручную), и мы хотим, чтобы элементы выровнялись по левому краю.

0 голосов
/ 06 августа 2020

Я новичок в маниме, и у меня не получалось заставить его работать, когда я пытался (поэтому я не знаю, почему). Однако есть обходной путь, который вы можете использовать.

В математическом режиме вы можете использовать команду $\\bullet$, которая создает точку спереди. Итак, адаптируем вашу программу:

        list_of_content = TextMobject(
        '$\\bullet$ a \\\\',
        '$\\bullet$ b \\\\',
        '$\\bullet$ c \\\\'
        )

Запомните разрывы строк, чтобы все было не в одной строке.

...