Inline code highlighting in reStructuredText

Martin Ueding picture Martin Ueding · Jun 3, 2012 · Viewed 52.5k times · Source

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?

Answer

Chris picture Chris · Sep 11, 2012

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).