[英]How can I customize the event of sphinx.application.Sphinx.connect?
[英]How can I configure Sphinx to conditionally exclude some pages?
使用 Sphinx 生成文档时,我希望能够生成我的文档的两个版本:一个包含所有内容,一个只包含一组特定的页面。 实现这一目标的最佳方法是什么?
我可以编写一个构建脚本来移动文件来实现这一点,但是如果有一种方法可以告诉 sphinx 在特定构建期间排除或包含特定文档,那就太好了。
也许我的答案来得有点晚,但我设法通过配置文件中的排除模式使用 Sphinx 做到了这一点。
我的文档部分用于用户,部分用于管理员。
有些页面的文件名包含admin
一词,和您一样,我想构建两个版本:一个包含所有内容(管理文档),另一个包含所有“管理”页面(用户文档)。
要排除所有子文件夹中的所有“管理”页面,您必须将此行添加到配置文件conf.py
:
exclude_patterns = ['**/*admin*']
那是容易的部分。
我的问题是我不知道如何在不使用两个不同配置文件的情况下运行两次构建,一次使用排除模式,另一次不使用排除模式。
我自己没有找到解决方案,所以我在 SO 上问了一个问题并得到了答案:
所以我的配置文件中有这个排除模式:
exclude_patterns = ['**/*admin*']
if tags.has('adminmode'):
exclude_patterns = []
现在我可以在不传递任何内容的情况下运行构建,这将排除“admin”文件:
make clean
make html
⇒ 这是我的用户文档
...我可以设置“adminmode”标签,它不会排除任何东西:
(Windows 命令行语法)
set SPHINXOPTS=-t adminmode
make clean
make html
⇒ 这是我的管理文档。
奖金:
我可以使用相同的标签来忽略页面上的某些特定内容,方法是包括基于标签的内容。
例子:
regular documentation
=====================
This paragraph and its headline will always be visible.
.. only:: adminmode
secret admin stuff
------------------
This paragraph will be visible in the admin docs only.
This will (again) always be visible.
sphinx.ext.ifconfig怎么样? 您在conf.py
文件中设置配置值。 由于这是一个常规的 Python 文件,您可以根据需要使您的包含标准变得智能和自动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.