Как использовать цвет в тексте с ReStructured Text (rst2html.py) или как вставить HTML-теги без пустых строк? - PullRequest
28 голосов
/ 12 января 2011

Как я могу использовать цвет с ReStructured Text?Например, **hello** переводится в <strong>hello</strong>.Как я могу заставить ReStructure (rst2html.py) перевести что-то в <font color="####">text</font>?

Я думал о ..raw :: html, но он вводит пустые строки.Я хочу вставить теги HTML без пустых строк.

Ответы [ 5 ]

40 голосов
/ 12 января 2011

Я нашел этот метод работает

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

.. 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;
}
25 голосов
/ 28 апреля 2011

Ну, я теперь новый пользователь, поэтому я не могу комментировать чужой ответ, благодаря политике stackoverflow здесь. https://meta.stackexchange.com/questions/51926/new-users-cant-ask-for-clarifications-except-as-answers

Ответ Сенкева хорош, но я хочу внести поправки в последнее предложение.

Существует способ указать таблицу стилей в файле RST. Подсказка в оригинальном сообщении Проссека, это директива .. raw ::.

Мы можем поместить следующие строки в начало нашего RST-файла, чтобы указать его стиль.

.. raw:: html

    <style> .red {color:red} </style>
10 голосов
/ 30 марта 2011

Другой ответ здесь намекает на то, что я хотел сделать, но он предполагает некоторые подробные знания о таблицах стилей в документах.Вот объяснение кулинарной книги:

В вашем RST-файле объявите роль один раз, затем используйте ее:

    .. role:: red

    This text is :red:`colored red` and so is :red:`this`

Затем вам нужен файл таблицы стилей.Сначала используйте Python, чтобы скопировать таблицу стилей по умолчанию из пакета documentstils:

    python
    import os.path
    import shutil
    import docutils.writers.html4css1 as h
    shutil.copy(os.path.dirname(h.__file__)+"/html4css1.css","my.css")

Затем отредактируйте my.css, добавив в конце ваши настройки:

    .red {
            color: red;
    }

Создайте документированиефайл конфигурации с именем «documentstils.conf»:

    [html4css1 writer]
    stylesheet-path: my.css
    embed-stylesheet: yes

используйте rst2html.py для преобразования вашего документа:

    rst2html.py my_document.rst > my_document.html

Если вы не хотите использовать documenttils.conf, вы можетеуказывайте таблицу стилей каждый раз, когда вы запускаете rst2html:

    rst2html.py --stylesheet my.css my_document.rst > my_document.html

AFAIK, невозможно указать таблицу стилей в файле RST.

0 голосов
/ 06 декабря 2018

У меня работает так:

.. raw:: html

    <style> .red {color:#aa0060; font-weight:bold; font-size:16px} </style>

.. role:: red

:red:`test - this text should be red``
0 голосов
/ 08 ноября 2018

Объединение ответов @ prosseek и @ RayLuo в одном месте - чтобы их было легче найти

Вверху вашего файла RST поместите

.. raw:: html

    <style> .red {color:red} </style>

.. role:: red

:red:`test - this text should be red`

Боковой комментарий:

Конечно, многие люди захотят стиль в отдельном файле, как говорит @sienkiew.

Но не всегда.

например. Я генерирую вышеупомянутое из сценария, который я хочу, чтобы другие пользователи могли запускать, часто из URL файла. В зависимости от rst2html.py это достаточно плохо - требовать чего-то нестандартного в конфигурационном файле хуже.

Если бы был способ создать слабое локальное определение стиля - например, «если стиль не определен .red уже определен, используйте это, но в противном случае используйте уже определенный стиль» - было бы неплохо. Но местные определения AFAIK сильнее.

Это работает с rst2html.py (Docutils 0.13.1 [release], Python 3.6.4, on cygwin), но другие инструменты RST отклонены.

...