Inline code highlighting in reStructuredText

Restructuredtext

Restructuredtext Problem Overview


I know reStructuredText has this directive:

.. code:: bash

    gedit pohl.m

which renders a code block. Is there some way to get syntax highlighting for inline snippets like this:

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

The backticks mark it as code, but I'd like to highlight it with pygments like the block. Is this possible?

Restructuredtext Solutions


Solution 1 - Restructuredtext

Having looked into this some more I stumbled upon the document reStructuredText Interpreted Text Roles. From this document:

> Interpreted text uses backquotes () around the text. An explicit role marker may optionally appear before or after the text, delimited with colons. For example: > > This is interpreted text using the default role. > > This is :title:interpreted text` using an explicit role.

It seems that there is a code role, so you can simply type

:code:`a = b + c`

to render an inline code block. To get syntax highlighting you can define a custom role. For example

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

which you can then use like so:

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

Note that the role definition must be placed before references to the role.

Note, the document I link to makes no mention of the version of docutils to which it refers. The code role is not available in docutils 0.8.1 (which is the only version I have to test against).

Solution 2 - Restructuredtext

For me I had to create a docutils.conf file in the Sphinx's configuration directory (where conf.py resides). It had the following contents:

[restructuredtext parser]
syntax_highlight = short

See this answer for more information on the above

To set the role globally, in the conf.py file, I created a rst_prolog variable. The string inside it will be included at the beginning of every source file that is read.

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

In this highlight class was necessary for proper Python highlighting.

See this answer for more information on the above

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMartin UedingView Question on Stackoverflow
Solution 1 - RestructuredtextChrisView Answer on Stackoverflow
Solution 2 - Restructuredtextanirudh sharmaView Answer on Stackoverflow