欢迎访问宙启技术站
智能推送

使用sphinx_gallery.sorting.ExplicitOrder()根据自定义规则对示例进行排序

发布时间:2024-01-04 02:58:30

sphinx_gallery.sorting.ExplicitOrder()是一种用于自定义排序sphinx图库示例文件的方法。在自动生成文档时,Sphinx会按照示例文件的文件名或其他默认规则对示例进行排序。但有时候,我们可能希望根据特定的规则来对示例进行排序,以更好地组织和展示示例。

ExplicitOrder()允许我们根据自己定义的顺序列表来对示例进行排序。下面是一个使用ExplicitOrder()的示例,以说明如何按照自定义规则对示例进行排序。

首先,我们需要在Sphinx项目中的conf.py文件中导入sphinx_gallery.sorting模块,并创建一个自定义的排序函数。

# conf.py

import sphinx_gallery.sorting as sorting

def custom_order_key(example_path):
    # 自定义规则来生成示例的排序键值
    # 这里的示例规则是按示例文件名的长度进行排序,并且长的示例在前面
    name = example_path.stem
    return -len(name)

sphinx_gallery_conf = {
    'examples_dirs': 'examples',
    'gallery_dirs': 'gallery',
    'within_subsection_order': sorting.ExplicitOrder(
        ordering=[],
        key=custom_order_key
    ),
}

在上面的示例中,我们首先定义了一个名为custom_order_key的自定义排序函数。这个函数接收示例文件的路径作为输入,并根据自己的规则生成一个用于排序的键值。在这个例子中,我们使用了示例文件名的长度作为排序的依据,长度越长的示例排在前面。

然后,我们在sphinx_gallery_conf字典中的within_subsection_order键中使用sorting.ExplicitOrder()函数来指定示例的排序方式。在这里,我们把ordering参数设置为空列表,表示不需要定义固定的示例顺序。然后,把custom_order_key函数作为key参数传递给ExplicitOrder()函数,以便根据我们的自定义规则来对示例进行排序。

最后,我们只需配置相应的示例目录和图库目录即可将这个自定义排序应用到我们的项目中。

在运行Sphinx生成文档时,它将根据我们定义的规则对示例进行排序,并根据示例文件名的长度从长到短的顺序显示它们。

这样,我们就可以根据自己的需求,使用sphinx_gallery.sorting.ExplicitOrder()函数来按照自定义规则对示例进行排序了。根据示例文件的不同特征,我们可以使用不同的自定义排序函数来排序示例,以达到更好的组织和展示示例的效果。