添加示例¶
这是为文档添加示例的页面。在发布示例之前,您应该遵循以下一些准则。
示例准则¶
欢迎所有人为文档贡献示例。由于直观的示例是快速学习 Manim 的宝贵资源,因此这里有一些准则。
优秀示例的特质¶
注意
Manim 新版本发布后,文档将是该版本的一个快照。发布后贡献的示例将只显示在最新文档中。
示例应能直接复制粘贴使用。
示例应简洁但易于理解。
示例不需要
from manim import *
语句,文档构建时会自动添加此语句。动画和非动画示例之间应保持平衡。
由于 Manim 制作动画,我们可以包含大量动画示例;然而,我们的 RTD(Read the Docs)构建时间最长为 20 分钟。动画示例只应在必要时使用,因为最后一帧示例渲染速度更快。
许多示例(例如绘图轴的大小、设置不透明度、制作文本等)也可以作为图片。立即看到最终产品比等待动画展示它方便得多。
请确保您贡献的示例在当前的 main 分支上能够运行。
如果使用的函数令人困惑,请务必在示例中添加注释来解释其功能。
示例的组织结构¶
示例可以组织成章节和子章节。
创建示例时,起始示例章节应只关注一个功能。当功能简单时,可以在一个示例下阐述多个概念。
简单功能解释清楚后,该章节可以包含更多基于简单概念的复杂示例。
编写示例¶
当您想添加/编辑示例时,它们可以在 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
中找到。
在上面的示例中,紧跟在 .. manim::
后面的 Formula1
是指令期望渲染的场景;因此,在 Python 代码中,该类的名称相同:class Formula1(Scene)
。
注意
有时,当您在浏览器中重新加载示例时,它的缓存中可能仍然存在旧的网站内容。如果是这种情况,请清除网站缓存,或在浏览器中打开新的无痕模式标签页,然后应该会显示最新的文档。仅适用于本地构建的文档:如果这仍然不起作用,您可能需要在重新构建文档之前删除 docs/source/references
的内容。