如何在 ReStructured Text 中使用颜色?例如,**hello**
翻译成<strong>hello</strong>
. 我怎样才能让 ReStructure(rst2html.py) 将某些东西翻译 成<font color="####">text</font>
?
我想过..raw :: html,但它引入了空白行。我想插入没有空行的 HTML 标签。
如何在 ReStructured Text 中使用颜色?例如,**hello**
翻译成<strong>hello</strong>
. 我怎样才能让 ReStructure(rst2html.py) 将某些东西翻译 成<font color="####">text</font>
?
我想过..raw :: html,但它引入了空白行。我想插入没有空行的 HTML 标签。
我发现这种方法有效
首先,你有这个角色。
.. 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;
}
好吧,我现在是新用户,因此我不能评论其他人的答案,这要感谢 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>
此处的另一个答案暗示了我想要做的事情,但它假设对 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 文件中指定样式表。
像这样为我工作:
.. raw:: html
<style> .red {color:#aa0060; font-weight:bold; font-size:16px} </style>
.. role:: red
:red:`test - this text should be red``
Sphinx已经支持包含标准定义文件的颜色(但缺少 CSS 文件):s5defs.txt
在您的文件中创建/将此文本附加到rst_epilog
sphinx 配置的值:docs/conf.py
rst_prolog = """
.. include:: <s5defs.txt>
.. default-role::
"""
按照Sphinx 的说明添加带有颜色的 css(例如采用hack.css
来自@Næreen 的答案):
_static/css/s4defs-roles.css
;将其路径附加到shtml_css_files
sphinx 配置中:
html_css_files = [
'css/s4defs-roles.css',
]
然后你可以使用:
Some :red:`colored text` at last!
提示:如果您还希望样式出现在Latex输出中,请 阅读此 SO 。
将@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 工具被拒绝。
RST 文件可以通过docutils或Sphinx渲染(事实上,Sphinx 也使用 docutils。)
如果您需要完整的文档,请选择 Sphinx。您只需要设置一次样式,然后就可以在所有地方使用它。关心config.py
, your_css
,your_role
如果你只是想生成一个简单的 HTML 文件,我觉得在 RST 中嵌入 CSS 更方便,下面是一个例子,
很像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>')
.. 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
<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上看到结果