【问题标题】:Inline code highlighting in reStructuredTextreStructuredText 中的内联代码突出显示
【发布时间】:2012-06-07 21:37:55
【问题描述】:

我知道 reStructuredText 有这个指令:

.. code:: bash

    gedit pohl.m

渲染一个代码块。有没有办法像这样为内联 sn-ps 获得语法高亮显示:

Do edit the file, type ``gedit pohl.m`` into a terminal.

反引号将其标记为代码,但我想用像块这样的 pygments 突出显示它。这可能吗?

【问题讨论】:

  • 反引号将该部分文本标记为inline literal,而不是代码块。通常这只会以等宽字体发布。我不知道如何让内联代码语法突出显示 sn-ps 恐怕。

标签: restructuredtext


【解决方案1】:

在对此进行了更多研究后,我偶然发现了文档reStructuredText Interpreted Text Roles。来自本文档:

解释的文本在文本周围使用反引号 (`)。一个明确的角色标记可以可选地出现在文本之前或之后,用冒号分隔。例如:

This is `interpreted text` using the default role.

This is :title:`interpreted text` using an explicit role.

好像有code role,直接输入即可

:code:`a = b + c`

渲染内联代码块。要获得语法突出显示,您可以定义自定义角色。例如

.. role:: bash(code)
   :language: bash

然后你可以像这样使用它:

Here is some awesome bash code :bash:`a = b + c`.

请注意,角色定义必须放在对角色的引用之前。

注意,我链接到的文档没有提及它所引用的 docutils 版本。代码角色在 docutils 0.8.1(这是我必须测试的唯一版本)中可用。

【讨论】:

【解决方案2】:

对我来说,我必须在 Sphinx 的 configuration directoryconf.py 所在的位置)中创建一个 docutils.conf 文件。 内容如下:

[restructuredtext parser]
syntax_highlight = short

有关上述内容的更多信息,请参阅this 回答

为了全局设置角色,在conf.py 文件中,我创建了一个rst_prolog 变量。其中的字符串将包含在每个读取的源文件的开头。

rst_prolog = """
.. role:: python(code)
    :language: python
    :class: highlight
"""

在这个 highlight 类中,对于正确的 Python 突出显示是必要的。

有关上述内容的更多信息,请参阅this 回答

【讨论】:

    猜你喜欢
    • 2017-03-28
    • 2017-05-02
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多