【问题标题】:Can I create a customised literal class in rst?我可以在 rst 中创建一个自定义的文字类吗?
【发布时间】:2020-02-29 22:09:31
【问题描述】:

我正在用 rST/Sphinx 编写一些编码教程,我想区分输入(即:代码块)和输出(到终端)。因为输出也需要是文字的,所以我不能简单地使用自定义类或容器,因为它们仍然会被解释并且不能正确显示(见下文)。如何创建可以应用于文字块子集的类或容器或其他东西?

请注意,这不需要什么花哨的东西 - 与我的“代码块”块相比,也许只是改变我的“输出”块的背景颜色。

我试过了:

创建一个名为“终端”的自定义类,但这仍会被解释并返回有关其内容的错误:

.. container:: terminal

    -----------------------------------------------
                  MY **EXAMPLE** GOES HERE   
    -----------------------------------------------

... 产生一个解释输出,该类被正确应用,但缺少水平线,“EXAMPLE”为粗体等。

在终端容器内嵌套文字块:

::

    .. container:: terminal

        -----------------------------------------------
                    MY **EXAMPLE** GOES HERE   
        -----------------------------------------------

... 生成格式化为输入代码的文字输出:

.. container:: terminal

    -----------------------------------------------
                MY **EXAMPLE** GOES HERE
    -----------------------------------------------

反过来嵌套:

.. container:: terminal

    ::

    -----------------------------------------------
            MY **EXAMPLE** GOES HERE
    -----------------------------------------------

... 生成一个带有 terminal 格式的 div 围绕一个带有文字块的嵌套 div,它保留了标准文字格式(我想覆盖它)。

我认为一定有一些非常简单的东西我错过了,但我真的看不到它!

【问题讨论】:

    标签: python-sphinx restructuredtext


    【解决方案1】:

    试试.. code-block:: bash,其中“bash”是您希望应用语法突出显示的语言的名称。 Available syntaxes 由 Pygments 作为“词法分析器”提供。

    .. code-block:: bash
    
        -----------------------------------------------
                      MY **EXAMPLE** GOES HERE   
        -----------------------------------------------
    

    如果您对 Sphinx 主题提供的语法突出显示不满意,可以使用 custom style 覆盖它。

    作为可能的示例,我更改了特定选择器的样式。在主题的 CSS 中添加类似的内容。

    div.highlight-text > table > tbody > tr > td.code > div > pre {
        background-color: #32cd32;
    }
    

    【讨论】:

    • 谢谢,但我也尝试过使用text 作为语言名称。它给出的结果与仅使用标准 :: 相同(我不想要任何语法突出显示,我只想更改背景颜色并删除所有解释)。
    • code-block 中没有对 reST 标记的解释。 text 因为语言只是纯文本,没有突出显示。正如我进一步提到的,您可以使用 CSS 应用您认为合适的自定义样式。
    • 你好。我已经尝试了您所建议的(据我所知),但它不起作用。我知道code-block 中没有对标记的解释,但也没有自定义格式的能力(即:不同的背景颜色)。如果我遵循第二种方式(链接很好,但同样,仅适用于解释块)我可以控制格式,但解释仍然存在。如果可能的话,请您发布您发现可以工作的代码,因为我只是不明白吗?
    • 你尝试了什么?你看过我链接的任何例子吗?
    • 是的,我都试过了。 NB 我不想要任何语法高亮,只想要文字。麻烦的是有两个问题: 1:创建文字文本。这可以使用代码块或 :: 指令解决,但如果您使用它们,我也无法设置文本样式。我最终得到一个围绕无样式文字的样式框。 2:对文本进行样式化。这是使用自定义类解决的......但我无法避免对降价的解释。我最终得到了样式化的、标记过的文本。您的解决方案 - 以及我迄今为止的所有解决方案 - 都适用于一个或其他问题,但不能同时解决这两个问题:(
    猜你喜欢
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多