sphinx, restructuredtext: установить цвет для одного слова
Есть ли способ установить цвет отдельных слов (или символов) в сфинксе? Я почти уверен, что должен быть какой-то тег разметки, например HTML font
тег.
3 ответа
Если вы хотите сделать это без привязки к html, попробуйте применить к своему слову стиль, отличный от обычного основного текста.
В этом примере, адаптированном из руководства по rst2pdf, я применяю существующий стиль рубрики, красный в бэкэнде, который я использую:
Before red.
.. role:: rubric
I like color :rubric:`rubric`.
After red.
Фактический вид слова будет зависеть от того, как выбранный вами стиль определен в таблице стилей, которую вы используете при создании документа. Если вы хотите синий текст, создайте синий текстовый стиль и выведите его из обычного текстового стиля. Таблица стилей специфична для бэкэнда, и вы можете использовать ее по умолчанию. Чтобы напечатать значение по умолчанию для rst2pdf.py, сделайте это (из руководства по rst2pdf):
rst2pdf --print-stylesheet
Продолжая пример для таблицы стилей rst2pdf, добавьте это в свою таблицу стилей, чтобы иметь синий текстовый стиль:
bluetext:
parent: bodytext
textColor: blue
В документе вы можете сослаться на этот стиль, чтобы получить синее слово. Обратите внимание, что этот бит является общим и должен выделяться синим текстом, если вы определяете синий стиль в своем html или любой другой таблице стилей бэкэнда.
Before blue.
.. role:: bluetext
I like color :bluetext:`blue`.
After blue.
Сгенерированный PDF имеет цветные слова:
На моем веб - сайте с поддержкой Sphinx я использую комбинацию:
- Файл restructuredText, содержащий определения ролей, по одному для каждого цвета - см. .Special.rst (ссылка BitBucket)
- Файл CSS, содержащий правила цвета для каждой роли - см. Первые строки hacks.css (ссылка BitBucket)
Затем в каждом файле RST, где мне нужны цвета, я сначала импортирую .special.rst
вверху, либо вручную:
.. include:: .special.rst
Или с rst_epilog
конфигурационная переменная в сфинксе conf.py
файл:
rst_epilog = "\n.. include:: .special.rst\n"
И тогда каждая роль может быть легко использована в чистом синтаксисе rST:
This is :red:`red !` And :blue:`this part is blue`.
Более подробная информация приведена на этой странице (на французском языке, извините).
Он отлично работает для вывода html (и как html), но не для PDF. Обратитесь к первому ответу выше для создания PDF с цветами.
Sphinx уже поддерживает цвета с s5defs.txt
файл стандартного определения, предназначенный для включения (но отсутствует файл CSS):
Создайте / добавьте этот текст к значению
rst_epilog
конфигурация сфинкса, в вашемdocs/conf.py
файл:rst_prolog = """ .. include:: <s5defs.txt> """
Следуйте инструкциям Sphinx, чтобы добавить CSS с цветами (например, используйте
hack.css
из ответа @Næreen):
Поместите свой файл css, например,
_static/css/s4defs-roles.css
;добавить его путь в
shtml_css_files
Конфигурация сфинкса:html_css_files = ['css/s4defs-roles.css']
Затем вы можете использовать:
Some :red:`colored text` at last!
СОВЕТ: прочтите этот SO, если вы хотите, чтобы стиль отображался и в выводе Latex.
Это работает, но оставляет HTML в отдельном абзаце.
.. raw:: html
<font color="blue">Blue word,</font>
And a word without color
Если у кого-то есть лучший ответ, я приму его.
Просто быстрое примечание, потому что я приземлился здесь в поисках чего-то похожего на html
,
Это работает на Sphinx v2.0.1 для меня. Это использует концепцию, о которой сообщает @adam-matan, но не вызывает проблем с форматированием (т. Е. Проблема с абзацами).
ссылка: reStructuredText Директивы
.. role:: raw-html(raw)
:format: html
:raw-html:`<font color="blue">Blue word,</font>` And a word without color