【发布时间】:2011-04-11 19:10:19
【问题描述】:
有没有办法设置sphinx中单个单词(或字符)的颜色?我很确定应该有一些标记标签,比如 HTML 的 font 标签。
【问题讨论】:
标签: html python-sphinx restructuredtext
有没有办法设置sphinx中单个单词(或字符)的颜色?我很确定应该有一些标记标签,比如 HTML 的 font 标签。
【问题讨论】:
标签: html python-sphinx restructuredtext
这可行,但将 HTML 留在单独的段落中。
.. raw:: html
<font color="blue">Blue word,</font>
And a word without color
如果有人有更好的答案,我会接受。
【讨论】:
如果您想在不依赖 html 的情况下执行此操作,请尝试将与正常正文文本不同的样式应用于您的单词。
在这个改编自 rst2pdf 手册的示例中,我在我正在使用的后端应用了现有的红色规则样式:
Before red.
.. role:: rubric
I like color :rubric:`rubric`.
After red.
单词的实际外观将取决于您选择的样式在生成文档时使用的样式表中的定义方式。 如果您想要蓝色文本,请制作蓝色文本样式并从普通文本样式派生它。 样式表是特定于后端的,您可能正在使用默认值。 要打印 rst2pdf.py 的默认值,请执行以下操作(来自 rst2pdf 手册):
rst2pdf --print-stylesheet
继续 rst2pdf 样式表的示例,将其添加到您的样式表以具有蓝色文本样式:
bluetext:
parent: bodytext
textColor: blue
在文档中你可以参考这个样式来得到一个蓝色的字。 请注意,此位是通用的,如果您在 html 或任何后端的样式表中定义蓝色样式,则应该生成蓝色文本。
Before blue.
.. role:: bluetext
I like color :bluetext:`blue`.
After blue.
生成的 pdf 带有彩色文字:
【讨论】:
<s5defs.txt>“标准”定义文件(参见下面的my answer)来支持颜色角色。
在我的 Sphinx 驱动的 website 上,我使用了以下组合:
然后,在我需要颜色的每个 rST 文件中,我首先在顶部导入 .special.rst,或者手动:
.. include:: .special.rst
或者使用 Sphinx 的 conf.py 文件中的 rst_epilog 配置变量:
rst_epilog = "\n.. include:: .special.rst\n"
然后每个角色都可以在纯 rST 语法中轻松使用:
This is :red:`red !` And :blue:`this part is blue`.
更多详情请见this page(法语,抱歉)。
它非常适用于 html 输出(和类似 html),但不适用于 PDF。请参阅first answer above 以生成带颜色的 PDF。
【讨论】:
WARNING: Problems with "include" directive path: 吗?我不知道如何指定.special.rst 位于conf.py 的项目根目录中。我试过/ 和~/ 但都不起作用。
conf.py 文件和所有rst 文件都在同一个文件夹中,因此无需指定任何内容。
make html 之后,以下尝试使用相同的命令构建总是以(例如红色)WARNING: Unknown interpreted text role "red". 警告结束。我必须做make clean html,然后再做一次make html。除此之外,一切正常。
rst_prolog 而不是rst_epilog 修复它。区别在于rst_prolog 将文件包含在开头,而rst_epilog 将其包含在末尾(See rst_prolog in Sphinx docs)。
只是一个简短的说明,因为我登陆这里为 html 寻找类似的东西。
这适用于我的 Sphinx v2.0.1。这使用了@adam-matan 报告的概念,但不会导致任何格式问题(即段落问题)。
参考:reStructuredText Directives
.. role:: raw-html(raw)
:format: html
:raw-html:`<font color="blue">Blue word,</font>` And a word without color
【讨论】:
Sphinx已经支持颜色,s5defs.txt standard definition file 用于 inclusion(但缺少 CSS 文件):
将此文本创建/附加到rst_epilog 的值
sphinx 配置,在您的docs/conf.py 文件中:
rst_prolog = """
.. include:: <s5defs.txt>
"""
关注 Sphinx's instructions 添加带有颜色的 css
(例如采用@Næreen's answer中的hack.css):
将您的 css 文件放入例如_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。
【讨论】:
rst-prolog 中的 .. default-role:: 在 conf.py 文件中,我的页面布局变得混乱。最初,我对.css 文件进行了重大更改。但最后我意识到.. default-role:: 才是真正的罪魁祸首。删除它使一切都到位。 包括字体颜色!!