如何在ReStructured Text中使用颜色?例如,**hello**
会转换为<strong>hello</strong>
。如何让ReStructure(rst2html.py)将某些内容翻译为<font color="####">text</font>
?
我想过..raw :: html,但它引入了空白行。我想插入没有空行的HTML标记。
答案 0 :(得分:39)
我发现这种方法有效
首先,你有角色。
.. 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;
}
答案 1 :(得分:25)
好吧,我现在是新用户,因此我无法评论其他人的答案,这要归功于stackoverflow的政策。 https://meta.stackexchange.com/questions/51926/new-users-cant-ask-for-clarifications-except-as-answers
Sienkiew的答案很好,但我想纠正其最后一句话。
可以在RST文件中指定样式表。线索在Prosseek的原始帖子中,即.. raw :: directive。
我们可以在RST文件的开头添加以下行来指定其样式。
.. raw:: html
<style> .red {color:red} </style>
答案 2 :(得分: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文件中指定样式表。
答案 3 :(得分:0)
将@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工具被拒绝。
答案 4 :(得分:0)
像这样为我工作:
.. raw:: html
<style> .red {color:#aa0060; font-weight:bold; font-size:16px} </style>
.. role:: red
:red:`test - this text should be red``
答案 5 :(得分:0)
Sphinx 已经支持颜色,其s5defs.txt
standard definition file旨在用于inclusion(但缺少CSS文件):
创建此文本/将其添加到rst_epilog
的值
sphinx配置,在您的docs/conf.py
文件中:
rst_prolog = """
.. include:: <s5defs.txt>
.. default-role::
"""
按照Sphinx's instructions添加带有颜色的CSS
(例如,采用hack.css
中的@Næreen's answer):
_static/css/s4defs-roles.css
; 将其路径附加到shtml_css_files
sphinx配置中:
html_css_files = [
'css/s4defs-roles.css',
]
然后您可以使用:
Some :red:`colored text` at last!
提示: 如果您还希望样式显示在 Latex 输出中,请阅读this SO。
答案 6 :(得分:0)
RST文件可以用docutils或Sphinx渲染(实际上,Sphinx也使用docutils。)
如果您需要完整的文档,请选择Sphinx。
您只需要设置一次样式,然后就可以在所有地方使用它。
与config.py
,your_css
,your_role
如果您只想生成一个简单的HTML文件,我认为在下面的示例中将CSS嵌入RST更加方便
它与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 and Preview上查看结果