添加示例¶
这是一个用于向文档添加示例的页面。 在发布示例之前,您应遵循以下一些准则。
示例指南¶
欢迎所有人向文档贡献示例。由于直观的示例是快速学习manim的宝贵资源,以下是一些指南。
什么造就了一个好例子¶
注意
一旦发布了新版本的manim,文档将是该版本的快照。发布后贡献的示例将仅显示在最新文档中。
示例应准备好复制并粘贴以供使用。
示例应简洁但仍易于理解。
示例不需要
from manim import *语句,这将在文档构建时自动添加。应该平衡动画和非动画示例。
由于manim制作动画,我们可以包含许多动画示例;然而,我们的RTD最多有20分钟的构建时间。动画示例应仅在必要时使用,因为最后一帧示例渲染更快。
许多示例(例如,绘图轴的大小、设置不透明度、制作文本等)也将作为图像工作。立即看到最终产品比等待动画揭示它要方便得多。
请确保在贡献示例时,示例能在当前主分支上运行。
如果使用的函数让人感到困惑,请确保在示例中添加注释以解释它们的作用。
示例的结构¶
示例可以组织成章节和子章节。
当你创建示例时,开头的示例章节应仅关注一个功能。当功能简单时,可以在一个示例下展示多个想法。
一旦解释了简单的功能,本章可能会包含基于这些简单想法的更复杂的示例。
编写示例¶
当您想要添加/编辑示例时,可以在docs/source/目录中找到它们,或者直接在manim源代码中(例如manim/mobject/mobject.py)。这些示例是用rst格式编写的,并使用manim指令(参见manim.utils.docbuild.manim_directive),.. manim::。每个示例都在其自己的块中,看起来像这样:
Formulas
========
.. manim:: Formula1
:save_last_frame:
class Formula1(Scene):
def construct(self):
t = MathTex(r"\int_a^b f'(x) dx = f(b) - f(a)")
self.add(t)
self.wait(1)
在文档的构建过程中,所有的rst文件都会被扫描,并且
manim指令(.. manim::)块被识别为将由当前版本的manim运行的场景。
以下是语法:
.. manim:: [SCENE_NAME]没有缩进,SCENE_NAME指的是下面类的名称。标志在下一行跟随(此处没有空行!),缩进级别为一个制表符。
所有可能的标志可以在manim.utils.docbuild.manim_directive找到。
在上面的例子中,Formula1 跟在 .. manim:: 后面是场景
指令期望渲染的内容;因此,在python代码中,类
具有相同的名称:class Formula1(Scene)。
注意
有时,当你在浏览器中重新加载示例时,它仍然在缓存中保留旧网站。如果是这种情况,请删除网站缓存,或在浏览器中打开一个新的隐身标签页,这样应该会显示最新的文档。
仅适用于本地构建的文档: 如果这仍然不起作用,你可能需要在重新构建文档之前删除docs/source/references的内容。