sphinx,restructuredtext:为单个单词设置颜色

时间:2010-09-13 17:29:57

标签: html python-sphinx restructuredtext

有没有办法在sphinx中设置单个单词(或字符)的颜色?我很确定应该有一些标记标记,比如HTML的font标记。

5 个答案:

答案 0 :(得分:11)

如果您想在不与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有彩色字词: enter image description here

答案 1 :(得分:9)

在我的Sphinx驱动的website上,我使用了以下组合:

  • 包含角色定义的restructuredText文件,每种颜色一个 - 请参阅.special.rst(BitBucket链接)
  • 包含每个角色的颜色规则的CSS文件 - 请参阅hacks.css的第一行(BitBucket链接)

然后,在我需要颜色的每个rST文件中,我首先在顶部导入.special.rst,手动:

.. include:: .special.rst

或者使用Sphinx的rst_epilog文件中的conf.py配置变量:

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。

答案 2 :(得分:6)

这样可行,但将HTML留在单独的段落中。

.. raw:: html

    <font color="blue">Blue word,</font>

And a word without color

如果有人有更好的答案,我会接受。

答案 3 :(得分:3)

Sphinx 已经支持颜色,其s5defs.txt standard definition file旨在用于inclusion(但缺少CSS文件):

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

     rst_prolog = """
     .. include:: <s5defs.txt>
    
     """
    
  2. 按照Sphinx's instructions添加带有颜色的CSS (例如,采用hack.css中的@Næreen's answer):

  • 将您的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

答案 4 :(得分:0)

请快速注意一下,因为我登陆这里为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