Подсветка встроенного кода в reStructuredText

130

Я знаю, что у reStructuredText есть эта директива:

.. code:: bash

    gedit pohl.m

который отображает блок кода. Есть ли способ получить подсветку синтаксиса для таких встроенных фрагментов:

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

Обратные кавычки помечают его как код, но я хотел бы выделить его с помощью пигментов, таких как блок. Это возможно?

Мартин Уединг
источник
7
Обратные кавычки обозначают эту часть текста как встроенный литерал , а не как блок кода. Обычно это просто публикуется моноширинным шрифтом. Я не уверен, как получить выделенные фрагменты синтаксиса встроенного кода, боюсь.
Chris

Ответы:

209

Посмотрев на это еще немного, я наткнулся на документ reStructuredText Interpreted Text Roles . Из этого документа:

В интерпретируемом тексте вокруг текста используются обратные кавычки (`). Явный маркер роли может по желанию появляться до или после текста, разделенного двоеточиями. Например:

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 0.8.1 (который является единственной версией , я должен испытания против).

Крис
источник
4
обратите внимание на эту проблему при использовании сфинкса: stackoverflow.com/questions/21591107/…
Донателло