有条件地包括扩展?

时间:2013-05-31 18:17:56

标签: python python-sphinx

有一个ifconfig sphinx扩展 - 它允许条件包含内容。我正在寻找一种有条件地包含扩展的方法。我最好的尝试只是为-D提供sphinx-build选项的扩展程序列表:

sphinx-build -b singlehtml -d _build/doctrees -D html_theme=empty -D "extensions=['sphinx.ext.autodoc', 'sphinx.ext.viewcode', 'sphinx.ext.numfig', 'sphinx.ext.ifconfig', 'cloud_sptheme.ext.table_styling', 'sphinx.ext.htmlmath']" . _build/wkA

但它不起作用。

问题是有条件地包含sphinx.ext.htmlmathsphinxcontrib.mathml

2 个答案:

答案 0 :(得分:4)

使用-t <tag> http://sphinx-doc.org/invocation.html#cmdoption-sphinx-build-t

e.g。像这样调用狮身人面像(见-t use_htmlmath):

sphinx-build -b singlehtml -d _build/doctrees \
   -D html_theme=empty -t use_htmlmath . _build/wkA

将此代码放在conf.py

if tags.has('use_htmlmath'):
    # use supplied =t use_htmlmath
    extensions.append('sphinx.ext.htmlmath')
else:
    #fall back
    extensions.append('sphinxcontrib-mathml')

答案 1 :(得分:1)

conf.py是一个python模块,extensions是一个列表,因此您只需根据条件将扩展名附加到extensions

extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest']

my_condition = 1

if my_condition == 1:
    extensions.append('sphinx.ext.htmlmath')
elif my_condition == 2:
    extensions.append('sphinxcontrib-mathml')
elif my_condition == 3:
    extensions.append('sphinx.ext.mathjax')
else:
    print "Didn't found a suitable extension"

但是,您必须在构建过程开始之前了解您的情况。