2016-11-14 2 views
2

Ich versuche, Inline-Code-Snippets markiert während der Verwendung von Sphinx.Inline-Code-Hervorhebung in Sphinx (ReST)

Ich habe mir die Lösung unter Inline code highlighting in reStructuredText angesehen, aber es funktioniert nicht für mich. Ich benutze Sphinx 1.4.8.

Gibt es eine weitere einfache und elegante Möglichkeit, den Inline-Code zu markieren? Wenn eine vollständige Lösung fehlt, d. H. Eine, die echte sprachbasierte Hervorhebung unterstützt, würde ich mich freuen, wenn ich im gesamten Dokument eine nicht-schwarze Farbe für meinen Inline-Code festlegen könnte. Ist das möglich?

Edit1: Hier ist mein Code:

.. role:: py(code) 
    :language: python 

here is some inline code :py:`def func():` 

Die Textzeile hier gerendert wird alles in schwarz statt Stichwort 'def' in eine andere Farbe. Hervorhebung funktioniert perfekt für Code-Blöcke, aber nicht inline.

Edit2:

Humbalan Vorschlag hat mir geholfen, diese fast zu lösen. Ich habe folgende $SPHINX_PROJECT_DIR/_templates/layout.html:

{# layout.html #} 
{# Import the theme's layout. #} 
{% extends "!layout.html" %} 
{% set css_files = css_files + ['_static/style.css'] %} 

Dann habe ich $SPHINX_PROJECT_DIR/_templates/style.css mit folgendem Inhalt span.pre außer Kraft zu setzen:

span.pre{ 
    color: red; 
    border: 1px solid black; 
    padding: 2px; 
    background: #feeaea 
} 

Ich bin näher an die Lösung aber noch nicht so weit. Ich erhalte folgende Ausgabe jetzt:

enter image description here

+1

Bitte erklären, was bedeutet, "es funktioniert nicht" und Code schreiben. – Humbalan

+0

Ihr "Edit2" sagt uns nochmal, was Sie * nicht wollen.aber bitte beschreiben Sie, welches Ergebnis Sie haben möchten. Aus meiner Sicht hast du das, was du programmiert hast: roter Text, schwarzer Rand mit 2px Abstand zum Text und ein Hintergrund der definierten Farbe. – Humbalan

Antwort

0

Dies ist, wie ich Code-Schnipsel in meinem doc markieren:

.. sourcecode:: python 

    a code line 
    another code line 

Hilft Ihnen?


Edit:

habe ich einige der Forschung als auch ich in einer Antwort interessiert. Für mich scheint es, dass der graue Code in einigen (oder allen?) Themen standardmäßig ist, testete ich sphinxdoc und bizstyle. Wenn Sie den HTML-Code des Snippets überprüfen (zB mit Firefox Debugger) Sie dies, wenn man sphinxdoc verwenden

<p>here is some inline code 
<code class="code py python docutils literal"> 
<span class="keyword"> 
    <span class="pre">def</span> 
</span> 
<span class="name function"> 
    <span class="pre">func</span> 
</span> 
<span class="punctuation"> 
    <span class="pre">():</span> 
</span> 
</code> 
</p> 

Hier können Sie sehen, dass Sie einen Stil für „def“ definieren könnte, ein anderes für " func "und eine dritte für"(): "in einer layout.css deines sphinx projektes. Beispiel:

code.py.python.docutils.literal { background-color: Bisque; padding: 5px; border: 1px solid maroon; } 
code.py.python.docutils.literal span.keyword { background-color: red; color:white; } 
code.py.python.docutils.literal span.name.function { background-color: pink; color:green; } 
code.py.python.docutils.literal span.punctuation { background-color: yellow; color:brown; } 

Ergebnis:

syntax highlight with role

+0

Danke für die Antwort. Leider nicht. Wie gesagt, die Hervorhebung funktioniert wie vorgesehen in Codeblöcken, aber ich möchte farbigen Text in Inline-Code erhalten, der normalerweise mit zwei führenden und zwei hinteren Backticks markiert ist. –

+0

OK, ich verstehe. Wenn Sie mit: py: 'myfunc' markieren, funktioniert die Hervorhebung nur, wenn es tatsächlich eine dokumentierte Methode (oder Funktion) mit dem Namen" myfunc "gibt. Und wenn diese Methode in einem anderen Modul ist, müssen Sie den Pfad wie folgt angeben: py: meth: 'module.class.myfunc'. – Humbalan

+0

Sorry, ich wusste nicht, wie ich den Charakter zeigen soll, der "myfunc" enthält. Also ich sehe Text mit einem grauen Backgrounc es ist die Syntax wie in deinem Beispiel oben ": py: ..." – Humbalan