Сфинкс: используйте другую директиву для другого формата вывода - PullRequest
1 голос
/ 27 февраля 2020

Предположим, у вас есть документ reStructuredText и вы хотите экспортировать его в два формата, используя Sphinx 2.x: HTML и PDF.

Вы хотите поместить немного отличающееся содержимое в эти два формата. Например, текст «Я HTML» отображается в версии HTML, тогда как «Я PDF» отображается в версии PDF в том же месте документа.

Использование директивы замены, как показано ниже, даст вам "Я HTML" независимо от формата экспорта.

.. |foo| replace:: HTML

⋮

I am |foo|

Можете ли вы использовать другую директиву для другой формат экспорта?

Ответы [ 2 ]

2 голосов
/ 27 февраля 2020

Это немного неуклюже, но у меня работает:

.. role:: latex(raw)
   :format: latex

.. role:: html(raw)
   :format: html

.. |foo| replace:: :latex:`LaTeX text`:html:`HTML text`
.. |bar| replace:: :latex:`other latex text`:html:`other html text`
0 голосов
/ 28 февраля 2020

Решением может быть динамическое определение rst_prolog (или rst_epilog) на основе некоторого тега (может быть компоновщик тег например).

conf.py:

prolog_for_html = """
.. |document_type| replace:: HTML
"""

prolog_for_latex = """
.. |document_type| replace:: latex
"""

if tags.has('html_prolog'):
    rst_prolog = prolog_for_html
elif tags.has('latex_prolog'):
    rst_prolog = prolog_for_latex

document.rst

This is a |document_type| document.

Makefile

html latex:
    sphinx-build -t $@_prolog -b $@ src build/$@
...