Inline-Code-Hervorhebung in reStructuredText

130

Ich weiß, dass reStructuredText diese Direktive hat:

.. code:: bash

    gedit pohl.m

Dadurch wird ein Codeblock gerendert. Gibt es eine Möglichkeit, die Syntax für Inline-Snippets wie diese hervorzuheben:

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

Die Backticks markieren es als Code, aber ich möchte es mit Pygementen wie dem Block hervorheben. Ist das möglich?

Martin Ueding
quelle
7
Die Backticks markieren diesen Teil des Textes als Inline-Literal und nicht als Codeblock. In der Regel wird dies nur in einer Monospace-Schriftart veröffentlicht. Ich bin mir nicht sicher, wie ich Inline-Code-Syntax-markierte Snippets erhalten soll, fürchte ich.
Chris

Antworten:

209

Nachdem ich mich etwas genauer damit befasst hatte, stieß ich auf das Dokument reStructuredText Interpreted Text Roles . Aus diesem Dokument:

Interpretierter Text verwendet Anführungszeichen (`) um den Text. Optional kann vor oder nach dem Text ein expliziter Rollenmarker angezeigt werden, der durch Doppelpunkte getrennt ist. Beispielsweise:

This is `interpreted text` using the default role.

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

Es scheint, dass es eine codeRolle gibt , also können Sie einfach tippen

:code:`a = b + c`

um einen Inline-Codeblock zu rendern. Um eine Syntaxhervorhebung zu erhalten, können Sie eine benutzerdefinierte Rolle definieren. Beispielsweise

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

die du dann so verwenden kannst:

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

Beachten Sie, dass die Rollendefinition vor Verweisen auf die Rolle platziert werden muss.

Beachten Sie, dass in dem Dokument, auf das ich verweise, die Version der Dokumente, auf die es verweist, nicht erwähnt wird. Die Code-Rolle ist in docutils 0.8.1 nicht verfügbar (dies ist die einzige Version, gegen die ich testen muss).

Chris
quelle
4
Bitte beachten Sie dieses Problem bei der Verwendung von Sphinx: stackoverflow.com/questions/21591107/…
Donatello