Условно включить расширения?

Есть ifconfig расширение сфинкса - и оно позволяет условно включать контент. Я ищу способ условно включить расширения. Моя лучшая попытка - дать список расширений с -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.htmlmath или же sphinxcontrib.mathml,

2 ответа

Решение

Использование -t <tag> http://sphinx-doc.org/invocation.html

например, вызвать Сфинкс, как это (см. -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')

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"

Однако вы должны знать свое состояние до начала процесса сборки.

Другие вопросы по тегам