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):

  1. Создайте / добавьте этот текст к значению rst_epilog конфигурация сфинкса, в вашем docs/conf.py файл:

     rst_prolog = """
     .. include:: <s5defs.txt>
    
     """
    
  2. Следуйте инструкциям 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
Другие вопросы по тегам