37

如何在 ReStructured Text 中使用颜色?例如,**hello**翻译成<strong>hello</strong>. 我怎样才能让 ReStructure(rst2html.py) 将某些东西翻译 成<font color="####">text</font>

我想过..raw :: html,但它引入了空白行。我想插入没有空行的 HTML 标签。

4

7 回答 7

51

我发现这种方法有效

首先,你有这个角色。

.. role:: red

An example of using :red:`interpreted text`

它翻译成如下。

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

现在,你有了 red 类,你可以使用 CSS 来改变颜色。

.red {
    color:red;
}
于 2011-01-12T14:24:49.990 回答
29

好吧,我现在是新用户,因此我不能评论其他人的答案,这要感谢 stackoverflow 的政策。https://meta.stackexchange.com/questions/51926/new-users-cant-ask-for-clarifications-except-as-answers

Sienkiew 的回答很好,但我想对其最后一句话进行更正。

有一种方法可以在 RST 文件中指定样式表。线索在 Prosseek 的原始帖子中,即 .. raw:: 指令。

我们可以在 RST 文件的开头添加以下几行来指定其样式。

.. raw:: html

    <style> .red {color:red} </style>
于 2011-04-28T07:52:26.007 回答
10

此处的另一个答案暗示了我想要做的事情,但它假设对 docutils 中的样式表有一些详细的了解。这是一个食谱解释:

在您的 RST 文件中,声明一次角色,然后使用它:

    .. role:: red

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

然后你需要一个样式表文件。首先,使用 Python 从 docutils 包中复制默认样式表:

    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;
    }

创建一个名为“docutils.conf”的 docutils 配置文件:

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

使用 rst2html.py 转换您的文档:

    rst2html.py my_document.rst > my_document.html

如果不想使用 docutils.conf,可以在每次运行 rst2html 时指定样式表:

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

AFAIK,无法在 RST 文件中指定样式表。

于 2011-03-30T17:29:28.897 回答
3

像这样为我工作:

.. raw:: html

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

.. role:: red

:red:`test - this text should be red``
于 2018-12-06T19:14:20.250 回答
2

Sphinx已经支持包含标准定义文件的颜色缺少 CSS 文件):s5defs.txt

  1. 在您的文件中创建/将此文本附加到rst_epilog sphinx 配置的值:docs/conf.py

    rst_prolog = """
    .. include:: <s5defs.txt>
    .. default-role::
    
    """
    
  2. 按照Sphinx 的说明添加带有颜色的 css(例如采用hack.css来自@Næreen 的答案):

    • 将您的 css 文件放入 eg 中_static/css/s4defs-roles.css
    • 将其路径附加到shtml_css_filessphinx 配置中:

      html_css_files = [
          'css/s4defs-roles.css',
      ]
      

然后你可以使用:

Some :red:`colored text` at last!

提示:如果您还希望样式出现在Latex输出中,请 阅读此 SO 。

于 2020-04-23T14:41:54.477 回答
1

将@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 工具被拒绝。

于 2018-11-08T18:28:35.807 回答
0

RST 文件可以通过docutilsSphinx渲染(事实上,Sphinx 也使用 docutils。)

狮身人面像

如果您需要完整的文档,请选择 Sphinx。您只需要设置一次样式,然后就可以在所有地方使用它。关心config.py, your_css,your_role

文档工具

如果你只是想生成一个简单的 HTML 文件,我觉得在 RST 中嵌入 CSS 更方便,下面是一个例子,

MyRST2html.py

很像rst2html.py,我只是想自己写脚本,方便破解源码(并从中学习更多。),然后你可以自定义它为你的酷风格

# MyRST2html.py
import docutils.core
from pathlib import Path

source_path = Path('demo.rst')
destination_path = Path('output.html')

if not 'save all data':
    docutils.core.publish_file(source_path=source_path, destination=destination_path, writer_name='html')
elif 'save the body data only':
    with open(source_path, 'r', encoding='utf-8') as f:
        html_bytes: bytes = docutils.core.publish_string(f.read(), source_path, writer_name='html')
    html = html_bytes.decode('utf-8')
    html_data = html[html.find('<body>'):html.find('</body>')]
    with open(destination_path, 'w', encoding='utf-8') as f:
        f.write(html_data)
        f.write('</body>')

演示.rst

.. raw:: html

    <style>
        .red {color:red; font-weight:bold;}
        .b {color:#0000FF; background-color:white;}
    </style>

.. role:: red
.. role:: b

==========
Example
==========

.. contents::

Color
==========

:red:`R`\G\ :b:`B`

click me |RGB Colors|_

.. |RGB Colors| replace:: :red:`R`\G\ :b:`B`
.. _`RGB Colors`: https://www.w3schools.com/colors/colors_rgb.asp

输出.html

<body>
<div class="document" id="example">
<h1 class="title">Example</h1>

<style>
    .red {color:red; font-weight:bold;}
    .b {color:#0000FF; background-color:white;}
</style><div class="contents topic" id="contents">
<p class="topic-title">Contents</p>
<ul class="simple">
<li><a class="reference internal" href="#color" id="id1">Color</a></li>
</ul>
</div>
<div class="section" id="color">
<h1><a class="toc-backref" href="#id1">Color</a></h1>
<p><span class="red">R</span>G<span class="b">B</span></p>
<p>click me <a class="reference external" href="https://www.w3schools.com/colors/colors_rgb.asp"><span class="red">R</span>G<span class="b">B</span></a></p>
</div>
</div>
</body>

笔记

如果您的 IDE 是PyCharm ,可以在Editor 和 Preview上看到结果

在此处输入图像描述

于 2020-09-24T06:36:19.273 回答