Применение CSS и ролей для текстовых блоков вместо встроенных интервалов в Sphinx

Существует предыдущий вопрос, в котором объясняется, как добавить цветовой диапазон к некоторому reStructuredText.

Чтобы повторить процедуру:

Во-первых, у вас есть эта роль.

.. role:: red

An example of using :red:`interpreted text`

Это происходит следующим образом.

<p>An example of using <span class="red">interpreted text</span></p>

Теперь у вас есть красный класс, вы можете использовать CSS для изменения цветов.

.red {
    color:red;
}

Как это сделать, если вы хотите, чтобы текст охватывал несколько строк? Например:

.. role:: red

:red:`paragraph 1

      paragraph 2

      paragraph 3`

Если пункты 1, 2 и 3 будут "красными". Если я попытаюсь это сделать, я получаю предупреждающее сообщение:

ПРЕДУПРЕЖДЕНИЕ: встроенная интерпретированная текстовая или фразовая начальная строка без конечной строки.

Он не создает диапазон и вставляет в текст текст ": red:". Он просто не интерпретирует это как строку (как предполагает предупреждение).

В принципе, это можно сделать в reStructuredText, и если это возможно, то как?

Я использую Sphinx 1.1.3.

Ответ 1

Существует несколько способов сделать это, но один из них - использовать директиву class:

.. class:: red

    This is a paragraph.

    This is another paragraph.

Большинство docutils HTML-писателей помещают это в вывод html как атрибут класса html, который вы можете затем стилизовать с помощью CSS.

В Sphinx, в частности, вам, возможно, потребуется использовать rst-class вместо class по крайней мере в некоторых случаях. См.: http://sphinx.pocoo.org/rest.html#id3

Кроме того, многие элементы уровня блока в RestructuredText принимают параметр :class:, который делает почти то же самое.