Сфинкс rst2pdf и ролевые директивы - PullRequest
2 голосов
/ 28 февраля 2020

В reStructuredText на Sphinx 2.x я хочу поместить содержимое, которое изменяется в зависимости от формата вывода.

В любой исходный документ, например, index.rst, добавьте следующие строки:

.. role:: pdf(raw)
   :format: pdf

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

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

.. |foo| replace::
   :pdf:`PDF!`
   :latex:`LaTeX!`
   :html:`HTML!`

I am |foo|

Я ожидаю, что он показывает "Я HTML!" , если формат вывода - HTML, "Я - LaTeX!" , если это LaTeX (даже после преобразования продукта в PDF с помощью pdflatex) и «Я PDF!» , если это PDF.

Я создаю HTML версию, используя make html, и вижу только «Я HTML!» в веб-браузере, как и ожидалось:

A make html result

Установить rst2pdf. Поместите следующие строки в conf.py:

extensions = [
    'rst2pdf.pdfbuilder'
]

pdf_documents = [(
    'index',
    u'testRst2Pdf',
    u'Test Title',
    u'Sarah Author')]

Создайте версию PDF с обновлением

sphinx-build -b pdf ./source/ ./build/

. Ниже приведен вывод. Нет ошибки. Я запустил это, используя WSL 1 (Ubuntu 18.04).

Running Sphinx v2.4.3
loading pickled environment... done
building [mo]: targets for 0 po files that are out of date
building [pdf]: targets for 1 source files that are out of date
updating environment: 0 added, 0 changed, 0 removed
looking for now-outdated files... none found
processing testRst2Pdf...
index
resolving references...
done
writing testRst2Pdf...
done
build succeeded.

Я вижу "Я PDF! LaTeX! HTML!" , который включает в себя все три элемента.

An rst2pdf result

Есть ли способ получить "Я PDF!" или "Я LaTeX!" в файле PDF?

Примечание.

...