【问题标题】:sphinx, restructuredtext: set color for a single wordsphinx,restructuredtext:为单个单词设置颜色
【发布时间】:2011-04-11 19:10:19
【问题描述】:

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

【问题讨论】:

    标签: html python-sphinx restructuredtext


    【解决方案1】:

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

    .. raw:: html
    
        <font color="blue">Blue word,</font>
    
    And a word without color
    

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

    【讨论】:

      【解决方案2】:

      如果您想在不依赖 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 带有彩色文字:

      【讨论】:

      • 实际上 RsT 已经通过包含&lt;s5defs.txt&gt;“标准”定义文件(参见下面的my answer)来支持颜色角色。
      【解决方案3】:

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

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

      然后,在我需要颜色的每个 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。除此之外,一切正常。
      • 惊人的解决方案。正如@umbe1987 所说,重建 HTML 时会发生编译错误。我设法使用rst_prolog 而不是rst_epilog 修复它。区别在于rst_prolog 将文件包含在开头,而rst_epilog 将其包含在末尾(See rst_prolog in Sphinx docs)。
      【解决方案4】:

      只是一个简短的说明,因为我登陆这里为 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
      

      【讨论】:

        【解决方案5】:

        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 (例如采用@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:: 才是真正的罪魁祸首。删除它使一切都到位。 包括字体颜色!!
        • 感谢@shaan!固定。
        猜你喜欢
        • 1970-01-01
        • 2017-11-29
        • 1970-01-01
        • 2012-02-22
        • 1970-01-01
        • 2012-05-01
        • 2019-09-06
        • 1970-01-01
        • 2014-06-07
        相关资源
        最近更新 更多