Multiple slides#
Deal with more slides.#
[1]:
from manim_presenter import *
config.media_embed = True
config.media_width = "100%"
_RV = "-v WARNING -qm --progress_bar None --disable_caching Example"
_RI = "-v WARNING -s --progress_bar None --disable_caching Example"
config.disable_caching = True
Manim Community v0.17.3
[2]:
%cat ./scripts/slides01.txt
<== p01
Dui ultricies volutpat at tristique amet lacus vivamus, in tempus orci pellentesque, dui euismod sit suscipit, viverra pulvinar nulla dui.
==>
<== p02
Tellus consectetur tortor, elementum amet ut dolor eu est nibh varius enim, ut felis tristique efficitur lectus vestibulum eu et ultrices nascetur consectetur praesent non eu non dictum sem.
==>
<== p03
Magna purus ac fermentum eleifend vitae nullam eros, molestie justo rutrum, eleifend ex tortor quis porttitor id aliquet nullam habitasse pharetra ligula posuere.
==>
<== p04
Velit libero nibh vel praesent arcu congue nullam massa enim est risus nulla ante nullam, velit metus nullam faucibus ac efficitur diam leo.
==>
[3]:
jt = lambda mob: JustifyText(mob, tex_width=8)
SLIDES = [
# SLIDES 1
{
"slide": "s01",
"arrange": [lambda mob: mob.arrange(DOWN, buff=1)],
"elements" : [
{
"name": "p01",
"type": jt,
},{
"name": "p02",
"type": jt,
}
],
},
# SLIDES 2
{
"slide": "s02",
"arrange": [lambda mob: mob.arrange(DOWN, buff=1)],
"elements" : [
{
"name": "p03",
"type": jt,
},{
"name": "p04",
"type": jt,
}
],
},
]
[4]:
class Example(Presentation):
file = "slides01.txt"
slides = SLIDES
preview_slide = "s01"
%manim $_RI

[5]:
class Example(Presentation):
file = "slides01.txt"
slides = SLIDES
preview_slide = "s02" # <- Change preview
%manim $_RI

Basic animations#
[6]:
class Example(Presentation):
file = "slides01.txt"
slides = [
{
"class": VGroup,
"create_same_time": Write,
"pause": 3,
"remove_same_time": FadeOut,
**SLIDES[0]
}
]
preview_anims = ["s01"] # <-
%manim $_RV
AnimWrapper
#
[7]:
class Example(Presentation):
file = "slides01.txt"
slides = [
{
"class": VGroup,
"create_same_time": Write,
"pause": 3,
"remove_same_time": FadeOut,
**SLIDES[0]
},{ # --- New slide
"class": VGroup,
"create_same_time": AnimWrapper(FadeIn, scale=2, run_time=2.5),
"pause": 2,
"remove_same_time": AnimWrapper(FadeOut, scale=2),
**SLIDES[1]
}
]
preview_anims = ["s02"] # <-
%manim $_RV
Warning
In create_same_time
and remove_same_time
the elements are saved within a Group
, so it only supports animations that support Groups
.
[8]:
class Example(Presentation):
file = "slides01.txt"
slides = [
{
"class": VGroup,
"create_same_time": Write,
"pause": 2,
"remove_same_time": FadeOut,
"pause_between_slides": 0.1, # <- Pause after "remove_same_time"
**SLIDES[0]
},{ # --- New slide
"class": VGroup,
"create_same_time": AnimWrapper(FadeIn, shift=UP, run_time=2.5),
"pause": 2,
"remove_same_time": AnimWrapper(FadeOut, scale=2),
**SLIDES[1]
}
]
preview_anims = ["s01", "s02"] # <-
%manim $_RV
Warning
For the create_same_time
animation you can change Group to another using class
.
[9]:
class Example(Presentation):
file = "_02.txt"
slides = [
{
"slide": "s01",
"class": Group, # <- Be careful
"create_same_time": FadeIn, # <- No Write because there are a ImageMobject
"pause": 1,
"remove_same_time": FadeOut,
"arrange": [lambda mob: mob.arrange(DOWN, buff=1)],
"elements" : [
{
"name": "image01",
"type": lambda mob: ImageMobject(mob).set(height=3),
},{
"name": "code01",
"type": lambda mob: Code(code=mob, language="python"),
},
],
},
]
%manim $_RV
Warning
You cannot change the Group of remove_same_time
, only create_same_time
with the class
key.
[10]:
class Example(Presentation):
file = "_01.txt"
slides = [
{
"slide": "s01",
"class": VGroup, # <- "create_same_time" group
"create_same_time": Write, # VGroup accepts Write
"pause": 1, # <- Between the create and remove animations
"remove_same_time": FadeOut,
"arrange": [lambda mob: mob.arrange(DOWN, buff=1)],
"elements" : [
{
"name": "text01",
"type": Text,
},{
"name": "paragraph01",
"type": Text,
},
],
},
]
%manim $_RV
Note
If we do not define the preview_slides
variable, all the slides will be rendered.
[11]:
class Example(Presentation):
file = "slides01.txt"
slides = [
{
"class": VGroup,
"create_same_time": Write,
"pause": 1,
"remove_same_time": FadeOut,
"pause_between_slides": 0.1, # <- Pause after "remove_same_time"
**SLIDES[0]
},{ # --- New slide
"class": VGroup,
"create_same_time": AnimWrapper(FadeIn, scale=2, run_time=2.5),
"pause": 1,
"remove_same_time": AnimWrapper(FadeOut, scale=2),
**SLIDES[1]
}
]
# preview_anims = ["s01", "s02"] # <-- Render all slides
%manim $_RV
To have more control over the animations you have to do it another way.