ReStructuredText 中的内联代码高亮显示

我知道 ReStructuredText 有这样的指示:

.. code:: bash


gedit pohl.m

有没有什么方法可以为这样的内联代码段提供语法突显:

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

反勾将其标记为代码,但我想用类似块的 pygments 来突出显示它。这可能吗?

66856 次浏览

在深入研究这个问题之后,我偶然发现了文档 ReStructuredText 解释文本角色:

解释文本在文本周围使用反引号(‘)。显式角色标记可以选择出现在文本之前或之后,以冒号分隔。例如:

This is `interpreted text` using the default role.


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

似乎有一个 code角色,所以您可以简单地输入

:code:`a = b + c`

呈现一个内联代码块。要获得语法突显,你可以定义一个自定义角色。例如

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

你可以这样使用:

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

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

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

对我来说,我必须在狮身人面像的 配置目录(conf.py所在的位置)中创建一个 docutils.conf文件。 内容如下:

[restructuredtext parser]
syntax_highlight = short

有关上述内容的详细信息,请参阅 这个答案

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

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

在这个 highlight类中,正确的 Python 高亮显示是必要的。

有关上述内容的详细信息,请参阅 这个答案