webentwicklung-frage-antwort-db.com.de

Wie verwende ich Farbe in Text mit ReStructured Text (rst2html.py) oder wie füge ich HTML-Tags ohne Leerzeilen ein?

Wie kann ich Farbe mit neu strukturiertem Text verwenden? Beispielsweise wird **hello** in <strong>hello</strong> übersetzt. Wie kann ich ReStructure (rst2html.py) veranlassen, etwas in <font color="####">text</font> zu übersetzen?

Ich habe über ..raw :: html nachgedacht, aber es werden Leerzeilen eingefügt. Ich möchte HTML-Tags ohne Leerzeilen einfügen.

28
prosseek

Ich fand diese Methode funktioniert

Erstens haben Sie die Rolle.

.. role:: red

An example of using :red:`interpreted text`

Es wird wie folgt übersetzt.

<p>An example of using <span class="red">interpreted text</span></p>

Jetzt haben Sie die rote Klasse, Sie können CSS zum Ändern der Farben verwenden.

.red {
    color:red;
}
39
prosseek

Nun, ich bin jetzt ein neuer Benutzer, daher kann ich die Antwort anderer nicht kommentieren, dank der Richtlinien von stackoverflow hier. https://meta.stackexchange.com/questions/51926/new-users-cant-ask-for-clarifications-except-as-answers

Sienkiews Antwort ist gut, aber ich möchte den letzten Satz korrigieren.

Dort können Sie IS das Stylesheet in der RST-Datei angeben. Der Hinweis ist in Prosseeks Originalbeitrag zu finden, das ist die .. raw :: Direktive.

Wir können die folgenden Zeilen am Anfang unserer RST-Datei einfügen, um ihren Stil festzulegen.

.. raw:: html

    <style> .red {color:red} </style>
25
RayLuo

Die andere Antwort hier gibt einen Hinweis darauf, was ich tun wollte, setzt jedoch detaillierte Kenntnisse über Stylesheets in Docutils voraus. Hier ist eine Kochbucherklärung:

Deklarieren Sie die Rolle in Ihrer RST-Datei einmal und verwenden Sie sie dann:

    .. role:: red

    This text is :red:`colored red` and so is :red:`this`

Dann benötigen Sie eine Stylesheet-Datei. Verwenden Sie zunächst Python, um das Standard-Stylesheet aus dem docutils-Paket zu kopieren:

    python
    import os.path
    import shutil
    import docutils.writers.html4css1 as h
    shutil.copy(os.path.dirname(h.__file__)+"/html4css1.css","my.css")

Bearbeiten Sie dann my.css, um Ihre Anpassungen am Ende hinzuzufügen:

    .red {
            color: red;
    }

Erstellen Sie eine docutils-Konfigurationsdatei mit dem Namen "docutils.conf":

    [html4css1 writer]
    stylesheet-path: my.css
    embed-stylesheet: yes

verwenden Sie rst2html.py, um Ihr Dokument zu konvertieren:

    rst2html.py my_document.rst > my_document.html

Wenn Sie docutils.conf nicht verwenden möchten, können Sie das Stylesheet bei jeder Ausführung von rst2html angeben:

    rst2html.py --stylesheet my.css my_document.rst > my_document.html

AFAIK, es gibt keine Möglichkeit, das Stylesheet in der RST-Datei anzugeben.

10
sienkiew

Kombinieren Sie die Antworten von @ prosseek und @ RayLuo an einem Ort, um die Suche zu vereinfachen

Platzieren Sie oben in Ihrer RST-Datei

.. raw:: html

    <style> .red {color:red} </style>

.. role:: red

:red:`test - this text should be red`

SEITLICHER KOMMENTAR:

Natürlich werden viele Leute den Stil in einer separaten Datei haben wollen, wie @sienkiew sagt.

Aber nicht immer.

Z.B. Ich generiere das Obige aus einem Skript, das andere Benutzer ausführen können sollen, häufig aus einer Datei-URL. Abhängig von rst2html.py ist das schon schlimm genug - es ist schlimmer, wenn sich in einer Konfigurationsdatei etwas befindet, das nicht dem Standard entspricht.

Wenn es eine Möglichkeit gäbe, eine schwache lokale Definition für den Stil zu erstellen - z. "Wenn es keinen bereits definierten Stil .red gibt, verwenden Sie diesen, andernfalls verwenden Sie den bereits definierten Stil" - wäre schön. Die lokalen Definitionen der AFAIK sind jedoch strenger.

Dies lief mit rst2html.py (Docutils 0.13.1 [release], Python 3.6.4, on cygwin), aber andere RST-Tools wurden abgelehnt.

0
Krazy Glew

Funktioniert bei mir so:

.. raw:: html

    <style> .red {color:#aa0060; font-weight:bold; font-size:16px} </style>

.. role:: red

:red:`test - this text should be red``
0
Fernando