我可以在rst中创建自定义文字类吗?

时间:2019-11-04 15:02:22

标签: python-sphinx restructuredtext

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

请注意,这不必花哨-只需更改“输出”块与“代码块”块相比的背景颜色即可。

我尝试过:

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

.. container:: terminal

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

...产生解释的输出,正确应用了该类,但水平线缺失,“示例”为粗体等。

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

::

    .. container:: terminal

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

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

.. container:: terminal

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

反之亦然:

.. container:: terminal

    ::

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

...产生一个带有terminal格式的div,该div带有带有文字块的嵌套div,该div保留了标准的文字格式(我想重写)。

我认为我必须缺少一些非常简单的东西,但我真的看不到!

1 个答案:

答案 0 :(得分:0)

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

.. code-block:: bash

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

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

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

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

Custom Sphinx Style