如何在Sphinx扩展节点中读取conf.py设置?

3 投票
1 回答
1157 浏览
提问于 2025-04-17 16:07
from docutils.parsers.rst.directives.images import Figure
class MyFigure(Figure):
    def run(self):
        # here I need to read the 'thumbnails_folder' setting
        pass

def setup(app):
    app.add_config_value('thumbnails_folder', '_thumbnails', 'env')

我该如何在 .run() 中访问配置值呢?我看过 Sphinx-contrib 的源码,但没有找到我想要的做法,他们访问 conf.py 的方式我无法做到。那我是不是应该换个方法呢?

我想做的就是把这个

.. figure:: image/image.jpg

转换成这个:

.. image:: image/thumbnails/image.jpg
   :target: image/image.jpg

这是扩展代码

(缩略图是用 PIL 生成的)。还有把 :target: 放到可下载的文件里(我看到只有构建实例可以做到这一点)。

1 个回答

5

构建环境中保存了一个指向配置对象的引用。我们可以从这个对象中获取配置信息:

def run(self):
    env = self.state.document.settings.env  # sphinx.environment.BuildEnvironment 
    config = env.config                     # sphinx.config.Config
    folder = config["thumbnails_folder"] 
    ...

撰写回答